Skip to content

Commit 77125f2

Browse files
committed
Remove duplicate code snippet from tests
Preparation of ledger mgr initializer is a decently large code snippet that gets duplicated across tests packages. Further, this may keep growing as we pass on new dependencies. Most of the tests do not bother for almost all the dependencies and blindly copy the code snippet. This CR moves this code to a common place. FAB-15771 #done Change-Id: I03ae2aa15ab2407c5307f97b73aa6d70525ec0d6 Signed-off-by: manish <manish.sethi@gmail.com>
1 parent 84dcf80 commit 77125f2

File tree

10 files changed

+81
-219
lines changed

10 files changed

+81
-219
lines changed

core/chaincode/chaincode_support_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ import (
1919
"testing"
2020
"time"
2121

22+
"github.com/hyperledger/fabric/core/ledger/ledgermgmt"
23+
"github.com/hyperledger/fabric/core/ledger/ledgermgmt/ledgermgmttest"
24+
2225
docker "github.com/fsouza/go-dockerclient"
2326
"github.com/golang/protobuf/proto"
2427
"github.com/hyperledger/fabric/common/crypto/tlsgen"
@@ -163,7 +166,9 @@ func initMockPeer(chainIDs ...string) (*peer.Peer, *ChaincodeSupport, func(), er
163166
panic(fmt.Sprintf("failed to create temporary directory: %s", err))
164167
}
165168

166-
peerInstance.LedgerMgr = constructLedgerMgrWithTestDefaults(filepath.Join(tempdir, "ledgersData"))
169+
peerInstance.LedgerMgr = ledgermgmt.NewLedgerMgr(
170+
ledgermgmttest.NewInitializer(filepath.Join(tempdir, "ledgersData")),
171+
)
167172

168173
cleanup := func() {
169174
peerInstance.LedgerMgr.Close()

core/chaincode/exectransaction_test.go

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ import (
2323
"testing"
2424
"time"
2525

26+
"github.com/hyperledger/fabric/core/ledger/ledgermgmt/ledgermgmttest"
27+
2628
docker "github.com/fsouza/go-dockerclient"
2729
"github.com/golang/protobuf/proto"
2830
"github.com/hyperledger/fabric/bccsp/factory"
@@ -99,7 +101,11 @@ func initPeer(chainIDs ...string) (*cm.Lifecycle, net.Listener, *ChaincodeSuppor
99101
panic(fmt.Sprintf("failed to create temporary directory: %s", err))
100102
}
101103

102-
peerInstance.LedgerMgr = constructLedgerMgrWithTestDefaults(filepath.Join(tempdir, "ledgersData"))
104+
lgrInitializer := ledgermgmttest.NewInitializer(filepath.Join(tempdir, "ledgersData"))
105+
lgrInitializer.Config.HistoryDBConfig = &ledger.HistoryDBConfig{
106+
Enabled: true,
107+
}
108+
peerInstance.LedgerMgr = ledgermgmt.NewLedgerMgr(lgrInitializer)
103109
ccprovider.SetChaincodesPath(tempdir)
104110
ca, _ := tlsgen.NewCA()
105111
pr := platforms.NewRegistry(&golang.Platform{})
@@ -1272,25 +1278,3 @@ func newPolicyChecker(peerInstance *peer.Peer) policy.PolicyChecker {
12721278
&mocks.MockMSPPrincipalGetter{Principal: []byte("Admin")},
12731279
)
12741280
}
1275-
1276-
func constructLedgerMgrWithTestDefaults(testDir string) *ledgermgmt.LedgerMgr {
1277-
testDefaults := &ledgermgmt.Initializer{
1278-
Config: &ledger.Config{
1279-
RootFSPath: testDir,
1280-
StateDBConfig: &ledger.StateDBConfig{},
1281-
PrivateDataConfig: &ledger.PrivateDataConfig{
1282-
MaxBatchSize: 5000,
1283-
BatchesInterval: 1000,
1284-
PurgeInterval: 100,
1285-
},
1286-
HistoryDBConfig: &ledger.HistoryDBConfig{
1287-
Enabled: true,
1288-
},
1289-
},
1290-
PlatformRegistry: platforms.NewRegistry(&golang.Platform{}),
1291-
MetricsProvider: &disabled.Provider{},
1292-
DeployedChaincodeInfoProvider: &ledgermock.DeployedChaincodeInfoProvider{},
1293-
}
1294-
1295-
return ledgermgmt.NewLedgerMgr(testDefaults)
1296-
}

core/committer/txvalidator/v14/txvalidator_test.go

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,13 @@ import (
1414
"github.com/golang/protobuf/proto"
1515
"github.com/hyperledger/fabric/common/configtx/test"
1616
"github.com/hyperledger/fabric/common/ledger/testutil"
17-
"github.com/hyperledger/fabric/common/metrics/disabled"
1817
"github.com/hyperledger/fabric/common/mocks/config"
1918
"github.com/hyperledger/fabric/common/semaphore"
2019
util2 "github.com/hyperledger/fabric/common/util"
21-
"github.com/hyperledger/fabric/core/chaincode/platforms"
22-
"github.com/hyperledger/fabric/core/chaincode/platforms/golang"
2320
"github.com/hyperledger/fabric/core/common/sysccprovider"
24-
"github.com/hyperledger/fabric/core/ledger"
2521
ledger2 "github.com/hyperledger/fabric/core/ledger"
2622
"github.com/hyperledger/fabric/core/ledger/ledgermgmt"
27-
"github.com/hyperledger/fabric/core/ledger/mock"
23+
"github.com/hyperledger/fabric/core/ledger/ledgermgmt/ledgermgmttest"
2824
"github.com/hyperledger/fabric/core/ledger/util"
2925
ledgerUtil "github.com/hyperledger/fabric/core/ledger/util"
3026
mocktxvalidator "github.com/hyperledger/fabric/core/mocks/txvalidator"
@@ -416,24 +412,7 @@ func constructLedgerMgrWithTestDefaults(t *testing.T, testDir string) (*ledgermg
416412
if err != nil {
417413
t.Fatalf("Failed to create ledger directory: %s", err)
418414
}
419-
420-
testDefaults := &ledgermgmt.Initializer{
421-
Config: &ledger.Config{
422-
RootFSPath: testDir,
423-
StateDBConfig: &ledger.StateDBConfig{},
424-
PrivateDataConfig: &ledger.PrivateDataConfig{
425-
MaxBatchSize: 5000,
426-
BatchesInterval: 1000,
427-
PurgeInterval: 100,
428-
},
429-
HistoryDBConfig: &ledger.HistoryDBConfig{},
430-
},
431-
PlatformRegistry: platforms.NewRegistry(&golang.Platform{}),
432-
MetricsProvider: &disabled.Provider{},
433-
DeployedChaincodeInfoProvider: &mock.DeployedChaincodeInfoProvider{},
434-
}
435-
436-
ledgerMgr := ledgermgmt.NewLedgerMgr(testDefaults)
415+
ledgerMgr := ledgermgmt.NewLedgerMgr(ledgermgmttest.NewInitializer(testDir))
437416
cleanup := func() {
438417
ledgerMgr.Close()
439418
os.RemoveAll(testDir)

core/committer/txvalidator/v14/validator_test.go

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,10 @@ import (
2121
commonerrors "github.com/hyperledger/fabric/common/errors"
2222
ledger2 "github.com/hyperledger/fabric/common/ledger"
2323
"github.com/hyperledger/fabric/common/ledger/testutil"
24-
"github.com/hyperledger/fabric/common/metrics/disabled"
2524
mockconfig "github.com/hyperledger/fabric/common/mocks/config"
2625
"github.com/hyperledger/fabric/common/mocks/scc"
2726
"github.com/hyperledger/fabric/common/semaphore"
2827
"github.com/hyperledger/fabric/common/util"
29-
"github.com/hyperledger/fabric/core/chaincode/platforms"
30-
"github.com/hyperledger/fabric/core/chaincode/platforms/golang"
3128
"github.com/hyperledger/fabric/core/committer/txvalidator"
3229
vp "github.com/hyperledger/fabric/core/committer/txvalidator/plugin"
3330
txvalidatorv14 "github.com/hyperledger/fabric/core/committer/txvalidator/v14"
@@ -39,7 +36,7 @@ import (
3936
"github.com/hyperledger/fabric/core/ledger"
4037
"github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/rwsetutil"
4138
"github.com/hyperledger/fabric/core/ledger/ledgermgmt"
42-
ledgermock "github.com/hyperledger/fabric/core/ledger/mock"
39+
"github.com/hyperledger/fabric/core/ledger/ledgermgmt/ledgermgmttest"
4340
lutils "github.com/hyperledger/fabric/core/ledger/util"
4441
mocktxvalidator "github.com/hyperledger/fabric/core/mocks/txvalidator"
4542
mocks2 "github.com/hyperledger/fabric/discovery/support/mocks"
@@ -1962,24 +1959,7 @@ func constructLedgerMgrWithTestDefaults(t *testing.T, testDir string) (*ledgermg
19621959
if err != nil {
19631960
t.Fatalf("Failed to create ledger directory: %s", err)
19641961
}
1965-
1966-
testDefaults := &ledgermgmt.Initializer{
1967-
Config: &ledger.Config{
1968-
RootFSPath: testDir,
1969-
StateDBConfig: &ledger.StateDBConfig{},
1970-
PrivateDataConfig: &ledger.PrivateDataConfig{
1971-
MaxBatchSize: 5000,
1972-
BatchesInterval: 1000,
1973-
PurgeInterval: 100,
1974-
},
1975-
HistoryDBConfig: &ledger.HistoryDBConfig{},
1976-
},
1977-
PlatformRegistry: platforms.NewRegistry(&golang.Platform{}),
1978-
MetricsProvider: &disabled.Provider{},
1979-
DeployedChaincodeInfoProvider: &ledgermock.DeployedChaincodeInfoProvider{},
1980-
}
1981-
1982-
ledgerMgr := ledgermgmt.NewLedgerMgr(testDefaults)
1962+
ledgerMgr := ledgermgmt.NewLedgerMgr(ledgermgmttest.NewInitializer(testDir))
19831963
cleanup := func() {
19841964
ledgerMgr.Close()
19851965
os.RemoveAll(testDir)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
Copyright IBM Corp. All Rights Reserved.
3+
4+
SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
package ledgermgmttest
8+
9+
import (
10+
"github.com/hyperledger/fabric/common/metrics/disabled"
11+
"github.com/hyperledger/fabric/core/chaincode/platforms"
12+
"github.com/hyperledger/fabric/core/chaincode/platforms/golang"
13+
"github.com/hyperledger/fabric/core/ledger"
14+
"github.com/hyperledger/fabric/core/ledger/ledgermgmt"
15+
"github.com/hyperledger/fabric/core/ledger/mock"
16+
)
17+
18+
// NewInitializer returns an instance of ledgermgmt Initializer
19+
// with minimum fields populated so as not to cause a failure during construction of LedgerMgr.
20+
// This is intended to be used for creating an instance of LedgerMgr for testing
21+
func NewInitializer(testLedgerDir string) *ledgermgmt.Initializer {
22+
return &ledgermgmt.Initializer{
23+
Config: &ledger.Config{
24+
RootFSPath: testLedgerDir,
25+
// empty StateDBConfig means leveldb
26+
StateDBConfig: &ledger.StateDBConfig{},
27+
HistoryDBConfig: &ledger.HistoryDBConfig{
28+
Enabled: false,
29+
},
30+
PrivateDataConfig: &ledger.PrivateDataConfig{
31+
MaxBatchSize: 5000,
32+
BatchesInterval: 1000,
33+
PurgeInterval: 100,
34+
},
35+
},
36+
PlatformRegistry: platforms.NewRegistry(&golang.Platform{}),
37+
MetricsProvider: &disabled.Provider{},
38+
DeployedChaincodeInfoProvider: &mock.DeployedChaincodeInfoProvider{},
39+
}
40+
}

core/peer/mock_helpers.go

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,12 @@ package peer
88

99
import (
1010
configtxtest "github.com/hyperledger/fabric/common/configtx/test"
11-
"github.com/hyperledger/fabric/common/metrics/disabled"
1211
mockchannelconfig "github.com/hyperledger/fabric/common/mocks/config"
1312
mockconfigtx "github.com/hyperledger/fabric/common/mocks/configtx"
1413
mockpolicies "github.com/hyperledger/fabric/common/mocks/policies"
15-
"github.com/hyperledger/fabric/core/chaincode/platforms"
16-
"github.com/hyperledger/fabric/core/chaincode/platforms/golang"
1714
"github.com/hyperledger/fabric/core/ledger"
1815
"github.com/hyperledger/fabric/core/ledger/ledgermgmt"
19-
"github.com/hyperledger/fabric/core/ledger/mock"
16+
"github.com/hyperledger/fabric/core/ledger/ledgermgmt/ledgermgmttest"
2017
"github.com/hyperledger/fabric/protos/common"
2118
)
2219

@@ -53,25 +50,12 @@ func CreateMockChannel(p *Peer, cid string) error {
5350
}
5451

5552
func constructLedgerMgrWithTestDefaults(ledgersDataDir string) (*ledgermgmt.LedgerMgr, error) {
56-
testDefaults := &ledgermgmt.Initializer{
57-
CustomTxProcessors: map[common.HeaderType]ledger.CustomTxProcessor{
58-
common.HeaderType_CONFIG: &ConfigTxProcessor{},
59-
},
60-
Config: &ledger.Config{
61-
RootFSPath: ledgersDataDir,
62-
StateDBConfig: &ledger.StateDBConfig{},
63-
PrivateDataConfig: &ledger.PrivateDataConfig{
64-
MaxBatchSize: 5000,
65-
BatchesInterval: 1000,
66-
PurgeInterval: 100,
67-
},
68-
HistoryDBConfig: &ledger.HistoryDBConfig{
69-
Enabled: true,
70-
},
71-
},
72-
PlatformRegistry: platforms.NewRegistry(&golang.Platform{}),
73-
MetricsProvider: &disabled.Provider{},
74-
DeployedChaincodeInfoProvider: &mock.DeployedChaincodeInfoProvider{},
53+
ledgerInitializer := ledgermgmttest.NewInitializer(ledgersDataDir)
54+
ledgerInitializer.CustomTxProcessors = map[common.HeaderType]ledger.CustomTxProcessor{
55+
common.HeaderType_CONFIG: &ConfigTxProcessor{},
56+
}
57+
ledgerInitializer.Config.HistoryDBConfig = &ledger.HistoryDBConfig{
58+
Enabled: true,
7559
}
76-
return ledgermgmt.NewLedgerMgr(testDefaults), nil
60+
return ledgermgmt.NewLedgerMgr(ledgerInitializer), nil
7761
}

core/scc/cscc/configure_test.go

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,12 @@ import (
2121
"github.com/hyperledger/fabric/common/policies"
2222
"github.com/hyperledger/fabric/core/aclmgmt"
2323
"github.com/hyperledger/fabric/core/chaincode"
24-
"github.com/hyperledger/fabric/core/chaincode/platforms"
25-
"github.com/hyperledger/fabric/core/chaincode/platforms/golang"
2624
"github.com/hyperledger/fabric/core/chaincode/shim"
2725
"github.com/hyperledger/fabric/core/comm"
2826
"github.com/hyperledger/fabric/core/common/ccprovider"
2927
"github.com/hyperledger/fabric/core/deliverservice"
30-
"github.com/hyperledger/fabric/core/ledger"
3128
"github.com/hyperledger/fabric/core/ledger/ledgermgmt"
32-
"github.com/hyperledger/fabric/core/ledger/mock"
29+
"github.com/hyperledger/fabric/core/ledger/ledgermgmt/ledgermgmttest"
3330
"github.com/hyperledger/fabric/core/peer"
3431
"github.com/hyperledger/fabric/core/policy"
3532
"github.com/hyperledger/fabric/core/scc/cscc/mocks"
@@ -202,10 +199,7 @@ func TestConfigerInvokeJoinChainCorrectParams(t *testing.T) {
202199
require.NoError(t, err, "error in creating test dir")
203200
defer os.Remove(testDir)
204201

205-
ledgerMgr, err := constructLedgerMgrWithTestDefaults(testDir)
206-
if err != nil {
207-
t.Fatalf("Failed to initialize peer: %s", err)
208-
}
202+
ledgerMgr := ledgermgmt.NewLedgerMgr(ledgermgmttest.NewInitializer(testDir))
209203
defer ledgerMgr.Close()
210204

211205
peerEndpoint := "127.0.0.1:13611"
@@ -398,25 +392,3 @@ func mockConfigBlock() []byte {
398392
}
399393
return blockBytes
400394
}
401-
402-
func constructLedgerMgrWithTestDefaults(testDir string) (*ledgermgmt.LedgerMgr, error) {
403-
testDefaults := &ledgermgmt.Initializer{
404-
Config: &ledger.Config{
405-
RootFSPath: testDir,
406-
StateDBConfig: &ledger.StateDBConfig{},
407-
PrivateDataConfig: &ledger.PrivateDataConfig{
408-
MaxBatchSize: 5000,
409-
BatchesInterval: 1000,
410-
PurgeInterval: 100,
411-
},
412-
HistoryDBConfig: &ledger.HistoryDBConfig{
413-
Enabled: true,
414-
},
415-
},
416-
PlatformRegistry: platforms.NewRegistry(&golang.Platform{}),
417-
MetricsProvider: &disabled.Provider{},
418-
DeployedChaincodeInfoProvider: &mock.DeployedChaincodeInfoProvider{},
419-
}
420-
421-
return ledgermgmt.NewLedgerMgr(testDefaults), nil
422-
}

core/scc/lscc/lscc_test.go

Lines changed: 8 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818

1919
"github.com/golang/protobuf/proto"
2020
"github.com/hyperledger/fabric/common/cauthdsl"
21-
"github.com/hyperledger/fabric/common/metrics/disabled"
2221
"github.com/hyperledger/fabric/common/mocks/config"
2322
mscc "github.com/hyperledger/fabric/common/mocks/scc"
2423
"github.com/hyperledger/fabric/common/policies"
@@ -32,9 +31,8 @@ import (
3231
"github.com/hyperledger/fabric/core/chaincode/shim/shimtest"
3332
"github.com/hyperledger/fabric/core/common/ccprovider"
3433
cutil "github.com/hyperledger/fabric/core/container/util"
35-
"github.com/hyperledger/fabric/core/ledger"
3634
"github.com/hyperledger/fabric/core/ledger/ledgermgmt"
37-
ledgermock "github.com/hyperledger/fabric/core/ledger/mock"
35+
"github.com/hyperledger/fabric/core/ledger/ledgermgmt/ledgermgmttest"
3836
"github.com/hyperledger/fabric/core/mocks/scc/lscc"
3937
"github.com/hyperledger/fabric/core/policy"
4038
policymocks "github.com/hyperledger/fabric/core/policy/mocks"
@@ -50,6 +48,7 @@ import (
5048
"github.com/hyperledger/fabric/protoutil"
5149
"github.com/pkg/errors"
5250
"github.com/stretchr/testify/assert"
51+
"github.com/stretchr/testify/require"
5352
)
5453

5554
func constructDeploymentSpec(name string, path string, version string, initArgs [][]byte, createInvalidIndex bool, createFS bool, scc *LifeCycleSysCC) (*pb.ChaincodeDeploymentSpec, error) {
@@ -108,8 +107,12 @@ func getMSPIDs(cid string) []string {
108107
// TestInstall tests the install function with various inputs
109108
func TestInstall(t *testing.T) {
110109
// Initialize ledgermgmt that inturn initializes internal components (such as cceventmgmt on which this test depends)
111-
_, cleanup := constructLedgerMgrWithTestDefaults(t, "lscc")
112-
defer cleanup()
110+
tempdir, err := ioutil.TempDir("", "lscc-test")
111+
require.NoError(t, err, "failed to create temporary directory")
112+
defer os.RemoveAll(tempdir)
113+
ledgerMgr := ledgermgmt.NewLedgerMgr(ledgermgmttest.NewInitializer(tempdir))
114+
defer ledgerMgr.Close()
115+
113116
scc := New(NewMockProvider(), mockAclProvider, platforms.NewRegistry(&golang.Platform{}), getMSPIDs, nil)
114117
scc.Support = &lscc.MockSupport{}
115118
stub := shimtest.NewMockStub("lscc", scc)
@@ -1192,29 +1195,3 @@ func TestMain(m *testing.M) {
11921195

11931196
os.Exit(m.Run())
11941197
}
1195-
1196-
func constructLedgerMgrWithTestDefaults(t *testing.T, testDir string) (*ledgermgmt.LedgerMgr, func()) {
1197-
testDir, err := ioutil.TempDir("", testDir)
1198-
if err != nil {
1199-
t.Fatalf("Failed to create ledger directory: %s", err)
1200-
}
1201-
1202-
testDefaults := &ledgermgmt.Initializer{
1203-
Config: &ledger.Config{
1204-
RootFSPath: testDir,
1205-
StateDBConfig: &ledger.StateDBConfig{},
1206-
PrivateDataConfig: &ledger.PrivateDataConfig{},
1207-
HistoryDBConfig: &ledger.HistoryDBConfig{},
1208-
},
1209-
PlatformRegistry: platforms.NewRegistry(&golang.Platform{}),
1210-
MetricsProvider: &disabled.Provider{},
1211-
DeployedChaincodeInfoProvider: &ledgermock.DeployedChaincodeInfoProvider{},
1212-
}
1213-
1214-
ledgerMgr := ledgermgmt.NewLedgerMgr(testDefaults)
1215-
cleanup := func() {
1216-
ledgerMgr.Close()
1217-
os.RemoveAll(testDir)
1218-
}
1219-
return ledgerMgr, cleanup
1220-
}

0 commit comments

Comments
 (0)