github.com/osdi23p228/fabric@v0.0.0-20221218062954-77808885f5db/core/ledger/pvtdatastorage/test_exports.go (about) 1 /* 2 Copyright IBM Corp. 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/osdi23p228/fabric/core/ledger" 16 "github.com/osdi23p228/fabric/core/ledger/pvtdatapolicy" 17 "github.com/stretchr/testify/assert" 18 "github.com/stretchr/testify/require" 19 ) 20 21 func pvtDataConf() *PrivateDataConfig { 22 return &PrivateDataConfig{ 23 PrivateDataConfig: &ledger.PrivateDataConfig{ 24 BatchesInterval: 1000, 25 MaxBatchSize: 5000, 26 PurgeInterval: 2, 27 DeprioritizedDataReconcilerInterval: 120 * time.Minute, 28 }, 29 StorePath: "", 30 } 31 } 32 33 // StoreEnv provides the store env for testing 34 type StoreEnv struct { 35 t testing.TB 36 TestStoreProvider *Provider 37 TestStore *Store 38 ledgerid string 39 btlPolicy pvtdatapolicy.BTLPolicy 40 conf *PrivateDataConfig 41 } 42 43 // NewTestStoreEnv construct a StoreEnv for testing 44 func NewTestStoreEnv( 45 t *testing.T, 46 ledgerid string, 47 btlPolicy pvtdatapolicy.BTLPolicy, 48 conf *PrivateDataConfig) *StoreEnv { 49 storeDir, err := ioutil.TempDir("", "pdstore") 50 if err != nil { 51 t.Fatalf("Failed to create private data storage directory: %s", err) 52 } 53 conf.StorePath = storeDir 54 testStoreProvider, err := NewProvider(conf) 55 require.NoError(t, err) 56 testStore, err := testStoreProvider.OpenStore(ledgerid) 57 testStore.Init(btlPolicy) 58 require.NoError(t, err) 59 return &StoreEnv{t, testStoreProvider, testStore, ledgerid, btlPolicy, conf} 60 } 61 62 // CloseAndReopen closes and opens the store provider 63 func (env *StoreEnv) CloseAndReopen() { 64 var err error 65 env.TestStoreProvider.Close() 66 env.TestStoreProvider, err = NewProvider(env.conf) 67 assert.NoError(env.t, err) 68 env.TestStore, err = env.TestStoreProvider.OpenStore(env.ledgerid) 69 env.TestStore.Init(env.btlPolicy) 70 assert.NoError(env.t, err) 71 } 72 73 // Cleanup cleansup the store env after testing 74 func (env *StoreEnv) Cleanup() { 75 env.TestStoreProvider.Close() 76 env.TestStore.db.Close() 77 if err := os.RemoveAll(env.conf.StorePath); err != nil { 78 env.t.Errorf("error while removing path %s, %v", env.conf.StorePath, err) 79 } 80 }