Skip to content

Commit b430f81

Browse files
DereckLuodenyeart
authored andcommitted
[FAB-16125] fix allow ledger test to succeed when no tests are run
- fixed allow ledger test to succeed when no tests are run. - extract out initialization and cleanup for couchDB. Signed-off-by: Chongxin Luo <[email protected]>
1 parent 76765db commit b430f81

File tree

2 files changed

+37
-7
lines changed

2 files changed

+37
-7
lines changed

core/ledger/kvledger/txmgmt/privacyenabledstate/db_test.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import (
2727
func TestMain(m *testing.M) {
2828
exitCode := m.Run()
2929
for _, testEnv := range testEnvs {
30-
testEnv.Cleanup()
30+
testEnv.StopExternalResource()
3131
}
3232
os.Exit(exitCode)
3333
}
@@ -84,6 +84,7 @@ func TestDB(t *testing.T) {
8484

8585
func testDB(t *testing.T, env TestEnv) {
8686
env.Init(t)
87+
defer env.Cleanup()
8788
db := env.GetDBHandle(generateLedgerID(t))
8889

8990
updates := NewUpdateBatch()
@@ -149,6 +150,7 @@ func TestGetStateMultipleKeys(t *testing.T) {
149150

150151
func testGetStateMultipleKeys(t *testing.T, env TestEnv) {
151152
env.Init(t)
153+
defer env.Cleanup()
152154
db := env.GetDBHandle(generateLedgerID(t))
153155

154156
updates := NewUpdateBatch()
@@ -191,6 +193,7 @@ func TestGetStateRangeScanIterator(t *testing.T) {
191193

192194
func testGetStateRangeScanIterator(t *testing.T, env TestEnv) {
193195
env.Init(t)
196+
defer env.Cleanup()
194197
db := env.GetDBHandle(generateLedgerID(t))
195198

196199
updates := NewUpdateBatch()
@@ -251,6 +254,7 @@ func TestQueryOnCouchDB(t *testing.T) {
251254

252255
func testQueryOnCouchDB(t *testing.T, env TestEnv) {
253256
env.Init(t)
257+
defer env.Cleanup()
254258
db := env.GetDBHandle(generateLedgerID(t))
255259
updates := NewUpdateBatch()
256260

@@ -331,6 +335,7 @@ func TestLongDBNameOnCouchDB(t *testing.T) {
331335

332336
func testLongDBNameOnCouchDB(t *testing.T, env TestEnv) {
333337
env.Init(t)
338+
defer env.Cleanup()
334339

335340
// Creates metadataDB (i.e., chainDB)
336341
// Allowed pattern for chainName: [a-z][a-z0-9.-]
@@ -441,6 +446,7 @@ func createCollectionConfig(collectionName string) *peer.CollectionConfig {
441446

442447
func testHandleChainCodeDeploy(t *testing.T, env TestEnv) {
443448
env.Init(t)
449+
defer env.Cleanup()
444450
db := env.GetDBHandle(generateLedgerID(t))
445451

446452
coll1 := createCollectionConfig("collectionMarbles")
@@ -545,6 +551,7 @@ func TestMetadataRetrieval(t *testing.T) {
545551

546552
func testMetadataRetrieval(t *testing.T, env TestEnv) {
547553
env.Init(t)
554+
defer env.Cleanup()
548555
db := env.GetDBHandle(generateLedgerID(t))
549556

550557
updates := NewUpdateBatch()

core/ledger/kvledger/txmgmt/privacyenabledstate/test_exports.go

+29-6
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@ import (
2525

2626
// TestEnv - an interface that a test environment implements
2727
type TestEnv interface {
28+
StartExternalResource()
2829
Init(t testing.TB)
2930
GetDBHandle(id string) DB
3031
GetName() string
3132
Cleanup()
33+
StopExternalResource()
3234
}
3335

3436
// Tests will be run against each environment in this array
@@ -69,6 +71,16 @@ func (env *LevelDBCommonStorageTestEnv) Init(t testing.TB) {
6971
env.dbPath = dbPath
7072
}
7173

74+
// StartExternalResource will be an empty implementation for levelDB test environment.
75+
func (env *LevelDBCommonStorageTestEnv) StartExternalResource() {
76+
// empty implementation
77+
}
78+
79+
// StopExternalResource will be an empty implementation for levelDB test environment.
80+
func (env *LevelDBCommonStorageTestEnv) StopExternalResource() {
81+
// empty implementation
82+
}
83+
7284
// GetDBHandle implements corresponding function from interface TestEnv
7385
func (env *LevelDBCommonStorageTestEnv) GetDBHandle(id string) DB {
7486
db, err := env.provider.GetDBHandle(id)
@@ -100,6 +112,22 @@ type CouchDBCommonStorageTestEnv struct {
100112
couchCleanup func()
101113
}
102114

115+
// StartExternalResource starts external couchDB resources.
116+
func (env *CouchDBCommonStorageTestEnv) StartExternalResource() {
117+
if env.couchAddress == "" {
118+
env.couchAddress = env.setupCouch()
119+
}
120+
}
121+
122+
// StopExternalResource stops external couchDB resources.
123+
func (env *CouchDBCommonStorageTestEnv) StopExternalResource() {
124+
csdbProvider, _ := env.provider.(*CommonStorageDBProvider)
125+
if csdbProvider != nil {
126+
statecouchdb.CleanupDB(env.t, csdbProvider.VersionedDBProvider)
127+
env.couchCleanup()
128+
}
129+
}
130+
103131
func (env *CouchDBCommonStorageTestEnv) setupCouch() string {
104132
externalCouch, set := os.LookupEnv("COUCHDB_ADDR")
105133
if set {
@@ -123,9 +151,7 @@ func (env *CouchDBCommonStorageTestEnv) Init(t testing.TB) {
123151
t.Fatalf("Failed to create redo log directory: %s", err)
124152
}
125153

126-
if env.couchAddress == "" {
127-
env.couchAddress = env.setupCouch()
128-
}
154+
env.StartExternalResource()
129155

130156
stateDBConfig := &StateDBConfig{
131157
StateDBConfig: &ledger.StateDBConfig{
@@ -173,10 +199,7 @@ func (env *CouchDBCommonStorageTestEnv) GetName() string {
173199

174200
// Cleanup implements corresponding function from interface TestEnv
175201
func (env *CouchDBCommonStorageTestEnv) Cleanup() {
176-
csdbProvider, _ := env.provider.(*CommonStorageDBProvider)
177-
statecouchdb.CleanupDB(env.t, csdbProvider.VersionedDBProvider)
178202
os.RemoveAll(env.redoPath)
179203
env.bookkeeperTestEnv.Cleanup()
180204
env.provider.Close()
181-
env.couchCleanup()
182205
}

0 commit comments

Comments
 (0)