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 }