@@ -25,10 +25,12 @@ import (
25
25
26
26
// TestEnv - an interface that a test environment implements
27
27
type TestEnv interface {
28
+ StartExternalResource ()
28
29
Init (t testing.TB )
29
30
GetDBHandle (id string ) DB
30
31
GetName () string
31
32
Cleanup ()
33
+ StopExternalResource ()
32
34
}
33
35
34
36
// Tests will be run against each environment in this array
@@ -69,6 +71,16 @@ func (env *LevelDBCommonStorageTestEnv) Init(t testing.TB) {
69
71
env .dbPath = dbPath
70
72
}
71
73
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
+
72
84
// GetDBHandle implements corresponding function from interface TestEnv
73
85
func (env * LevelDBCommonStorageTestEnv ) GetDBHandle (id string ) DB {
74
86
db , err := env .provider .GetDBHandle (id )
@@ -100,6 +112,22 @@ type CouchDBCommonStorageTestEnv struct {
100
112
couchCleanup func ()
101
113
}
102
114
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
+
103
131
func (env * CouchDBCommonStorageTestEnv ) setupCouch () string {
104
132
externalCouch , set := os .LookupEnv ("COUCHDB_ADDR" )
105
133
if set {
@@ -123,9 +151,7 @@ func (env *CouchDBCommonStorageTestEnv) Init(t testing.TB) {
123
151
t .Fatalf ("Failed to create redo log directory: %s" , err )
124
152
}
125
153
126
- if env .couchAddress == "" {
127
- env .couchAddress = env .setupCouch ()
128
- }
154
+ env .StartExternalResource ()
129
155
130
156
stateDBConfig := & StateDBConfig {
131
157
StateDBConfig : & ledger.StateDBConfig {
@@ -173,10 +199,7 @@ func (env *CouchDBCommonStorageTestEnv) GetName() string {
173
199
174
200
// Cleanup implements corresponding function from interface TestEnv
175
201
func (env * CouchDBCommonStorageTestEnv ) Cleanup () {
176
- csdbProvider , _ := env .provider .(* CommonStorageDBProvider )
177
- statecouchdb .CleanupDB (env .t , csdbProvider .VersionedDBProvider )
178
202
os .RemoveAll (env .redoPath )
179
203
env .bookkeeperTestEnv .Cleanup ()
180
204
env .provider .Close ()
181
- env .couchCleanup ()
182
205
}
0 commit comments