github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/core/ledger/pvtdatastorage/test_exports.go (about)

     1  /*
     2  Copyright hechain. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package pvtdatastorage
     8  
     9  import (
    10  	"io/ioutil"
    11  	"os"
    12  	"testing"
    13  	"time"
    14  
    15  	"github.com/hechain20/hechain/core/ledger"
    16  	"github.com/hechain20/hechain/core/ledger/pvtdatapolicy"
    17  	"github.com/stretchr/testify/require"
    18  )
    19  
    20  func pvtDataConf() *PrivateDataConfig {
    21  	return &PrivateDataConfig{
    22  		PrivateDataConfig: &ledger.PrivateDataConfig{
    23  			BatchesInterval:                     1000,
    24  			MaxBatchSize:                        5000,
    25  			PurgeInterval:                       2,
    26  			DeprioritizedDataReconcilerInterval: 120 * time.Minute,
    27  		},
    28  		StorePath: "",
    29  	}
    30  }
    31  
    32  // StoreEnv provides the  store env for testing
    33  type StoreEnv struct {
    34  	t                 testing.TB
    35  	TestStoreProvider *Provider
    36  	TestStore         *Store
    37  	ledgerid          string
    38  	btlPolicy         pvtdatapolicy.BTLPolicy
    39  	conf              *PrivateDataConfig
    40  }
    41  
    42  // NewTestStoreEnv construct a StoreEnv for testing
    43  func NewTestStoreEnv(
    44  	t *testing.T,
    45  	ledgerid string,
    46  	btlPolicy pvtdatapolicy.BTLPolicy,
    47  	conf *PrivateDataConfig) *StoreEnv {
    48  	storeDir, err := ioutil.TempDir("", "pdstore")
    49  	if err != nil {
    50  		t.Fatalf("Failed to create private data storage directory: %s", err)
    51  	}
    52  	conf.StorePath = storeDir
    53  	testStoreProvider, err := NewProvider(conf)
    54  	require.NoError(t, err)
    55  	testStore, err := testStoreProvider.OpenStore(ledgerid)
    56  	testStore.Init(btlPolicy)
    57  	require.NoError(t, err)
    58  	return &StoreEnv{t, testStoreProvider, testStore, ledgerid, btlPolicy, conf}
    59  }
    60  
    61  // CloseAndReopen closes and opens the store provider
    62  func (env *StoreEnv) CloseAndReopen() {
    63  	var err error
    64  	env.TestStoreProvider.Close()
    65  	env.TestStoreProvider, err = NewProvider(env.conf)
    66  	require.NoError(env.t, err)
    67  	env.TestStore, err = env.TestStoreProvider.OpenStore(env.ledgerid)
    68  	env.TestStore.Init(env.btlPolicy)
    69  	require.NoError(env.t, err)
    70  }
    71  
    72  // Cleanup cleansup the  store env after testing
    73  func (env *StoreEnv) Cleanup() {
    74  	env.TestStoreProvider.Close()
    75  	env.TestStore.db.Close()
    76  	if err := os.RemoveAll(env.conf.StorePath); err != nil {
    77  		env.t.Errorf("error while removing path %s, %v", env.conf.StorePath, err)
    78  	}
    79  }