Skip to content

Commit 71a8897

Browse files
committed
[FAB-3406] Improve unit-test for statedb/stateleveldb
Increase the test coverage from 83% to 92%. Change-Id: Ia9ac8b10dc92efa51a6a87eda3c07fa629120c15 Signed-off-by: senthil <[email protected]>
1 parent ecc29dd commit 71a8897

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

core/ledger/kvledger/txmgmt/statedb/commontests/test_common.go

+29
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,35 @@ import (
2525
"github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/version"
2626
)
2727

28+
// TestGetStateMultipleKeys tests read for given multiple keys
29+
func TestGetStateMultipleKeys(t *testing.T, dbProvider statedb.VersionedDBProvider) {
30+
db, err := dbProvider.GetDBHandle("testgetmultiplekeys")
31+
testutil.AssertNoError(t, err, "")
32+
33+
// Test that savepoint is nil for a new state db
34+
sp, err := db.GetLatestSavePoint()
35+
testutil.AssertNoError(t, err, "Error upon GetLatestSavePoint()")
36+
testutil.AssertNil(t, sp)
37+
38+
batch := statedb.NewUpdateBatch()
39+
expectedValues := make([]*statedb.VersionedValue, 2)
40+
vv1 := statedb.VersionedValue{Value: []byte("value1"), Version: version.NewHeight(1, 1)}
41+
expectedValues[0] = &vv1
42+
vv2 := statedb.VersionedValue{Value: []byte("value2"), Version: version.NewHeight(1, 2)}
43+
expectedValues[1] = &vv2
44+
vv3 := statedb.VersionedValue{Value: []byte("value3"), Version: version.NewHeight(1, 3)}
45+
vv4 := statedb.VersionedValue{Value: []byte{}, Version: version.NewHeight(1, 4)}
46+
batch.Put("ns1", "key1", vv1.Value, vv1.Version)
47+
batch.Put("ns1", "key2", vv2.Value, vv2.Version)
48+
batch.Put("ns2", "key3", vv3.Value, vv3.Version)
49+
batch.Put("ns2", "key4", vv4.Value, vv4.Version)
50+
savePoint := version.NewHeight(2, 5)
51+
db.ApplyUpdates(batch, savePoint)
52+
53+
actualValues, _ := db.GetStateMultipleKeys("ns1", []string{"key1", "key2"})
54+
testutil.AssertEquals(t, actualValues, expectedValues)
55+
}
56+
2857
// TestBasicRW tests basic read-write
2958
func TestBasicRW(t *testing.T, dbProvider statedb.VersionedDBProvider) {
3059
db, err := dbProvider.GetDBHandle("testbasicrw")

core/ledger/kvledger/txmgmt/statedb/stateleveldb/stateleveldb_test.go

+29
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,32 @@ func testCompositeKey(t *testing.T, dbName string, ns string, key string) {
8080
testutil.AssertEquals(t, ns1, ns)
8181
testutil.AssertEquals(t, key1, key)
8282
}
83+
84+
// TestQueryOnLevelDB tests queries on levelDB.
85+
func TestQueryOnLevelDB(t *testing.T) {
86+
env := NewTestVDBEnv(t)
87+
defer env.Cleanup()
88+
db, err := env.DBProvider.GetDBHandle("testquery")
89+
testutil.AssertNoError(t, err, "")
90+
db.Open()
91+
defer db.Close()
92+
batch := statedb.NewUpdateBatch()
93+
jsonValue1 := "{\"asset_name\": \"marble1\",\"color\": \"blue\",\"size\": 1,\"owner\": \"tom\"}"
94+
batch.Put("ns1", "key1", []byte(jsonValue1), version.NewHeight(1, 1))
95+
96+
savePoint := version.NewHeight(2, 22)
97+
db.ApplyUpdates(batch, savePoint)
98+
99+
// query for owner=jerry, use namespace "ns1"
100+
// As queries are not supported in levelDB, call to ExecuteQuery()
101+
// should return a error message
102+
itr, err := db.ExecuteQuery("ns1", "{\"selector\":{\"owner\":\"jerry\"}}")
103+
testutil.AssertError(t, err, "ExecuteQuery not supported for leveldb")
104+
testutil.AssertNil(t, itr)
105+
}
106+
107+
func TestGetStateMultipleKeys(t *testing.T) {
108+
env := NewTestVDBEnv(t)
109+
defer env.Cleanup()
110+
commontests.TestGetStateMultipleKeys(t, env.DBProvider)
111+
}

0 commit comments

Comments
 (0)