Skip to content

Commit beb1d8e

Browse files
committed
[FAB-3403] increase unit test coverage for rwsetutil
This CR - Includes unit tests for covering the corner cases which in turn increases the test coverage for package fabric/core/ledger/kvledger/txmgmt/rwsetutil - Enables debug messages (setting in TestMain) during unit testing - Fixes the package name in the logger to the correct one Change-Id: I84ed2531d0ea8e79622c0dda9e12b934bcb8fb76 Signed-off-by: manish <[email protected]>
1 parent 1195f2f commit beb1d8e

File tree

5 files changed

+85
-3
lines changed

5 files changed

+85
-3
lines changed

core/ledger/kvledger/txmgmt/rwsetutil/query_results_helper.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,8 @@ func (m *merkleTree) done() error {
228228

229229
func (m *merkleTree) getSummery() *kvrwset.QueryReadsMerkleSummary {
230230
return &kvrwset.QueryReadsMerkleSummary{MaxDegree: m.maxDegree,
231-
MaxLevel: uint32(m.maxLevel),
232-
MaxLevelHashes: hashesToBytes(m.tree[m.maxLevel])}
231+
MaxLevel: uint32(m.getMaxLevel()),
232+
MaxLevelHashes: hashesToBytes(m.getMaxLevelHashes())}
233233
}
234234

235235
func (m *merkleTree) getMaxLevel() MerkleTreeLevel {

core/ledger/kvledger/txmgmt/rwsetutil/query_results_helper_test.go

+62
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,68 @@ func TestQueryResultHelper_Hash_ThreeLevel(t *testing.T) {
123123
MaxLevelHashes: hashesToBytes([]Hash{level3_1, level3_2})})
124124
}
125125

126+
func TestQueryResultHelper_Hash_MaxLevelIncrementNeededInDone(t *testing.T) {
127+
maxDegree := 2
128+
kvReads := buildTestKVReads(t, 24)
129+
r, h := buildTestResults(t, true, maxDegree, kvReads)
130+
level1_1 := computeTestHashKVReads(t, kvReads[0:3])
131+
level1_2 := computeTestHashKVReads(t, kvReads[3:6])
132+
level1_3 := computeTestHashKVReads(t, kvReads[6:9])
133+
level1_4 := computeTestHashKVReads(t, kvReads[9:12])
134+
level1_5 := computeTestHashKVReads(t, kvReads[12:15])
135+
level1_6 := computeTestHashKVReads(t, kvReads[15:18])
136+
level1_7 := computeTestHashKVReads(t, kvReads[18:21])
137+
level1_8 := computeTestHashKVReads(t, kvReads[21:24])
138+
139+
level2_1 := computeTestCombinedHash(t, level1_1, level1_2, level1_3)
140+
level2_2 := computeTestCombinedHash(t, level1_4, level1_5, level1_6)
141+
level2_3 := computeTestCombinedHash(t, level1_7, level1_8)
142+
143+
level3_1 := computeTestCombinedHash(t, level2_1, level2_2, level2_3)
144+
145+
testutil.AssertNil(t, r)
146+
testutil.AssertEquals(t, h, &kvrwset.QueryReadsMerkleSummary{
147+
MaxDegree: uint32(maxDegree),
148+
MaxLevel: 3,
149+
MaxLevelHashes: hashesToBytes([]Hash{level3_1})})
150+
}
151+
152+
func TestQueryResultHelper_Hash_FirstLevelSkipNeededInDone(t *testing.T) {
153+
maxDegree := 2
154+
kvReads := buildTestKVReads(t, 45)
155+
r, h := buildTestResults(t, true, maxDegree, kvReads)
156+
level1_1 := computeTestHashKVReads(t, kvReads[0:3])
157+
level1_2 := computeTestHashKVReads(t, kvReads[3:6])
158+
level1_3 := computeTestHashKVReads(t, kvReads[6:9])
159+
level1_4 := computeTestHashKVReads(t, kvReads[9:12])
160+
level1_5 := computeTestHashKVReads(t, kvReads[12:15])
161+
level1_6 := computeTestHashKVReads(t, kvReads[15:18])
162+
level1_7 := computeTestHashKVReads(t, kvReads[18:21])
163+
level1_8 := computeTestHashKVReads(t, kvReads[21:24])
164+
level1_9 := computeTestHashKVReads(t, kvReads[24:27])
165+
level1_10 := computeTestHashKVReads(t, kvReads[27:30])
166+
level1_11 := computeTestHashKVReads(t, kvReads[30:33])
167+
level1_12 := computeTestHashKVReads(t, kvReads[33:36])
168+
level1_13 := computeTestHashKVReads(t, kvReads[36:39])
169+
level1_14 := computeTestHashKVReads(t, kvReads[39:42])
170+
level1_15 := computeTestHashKVReads(t, kvReads[42:45])
171+
172+
level2_1 := computeTestCombinedHash(t, level1_1, level1_2, level1_3)
173+
level2_2 := computeTestCombinedHash(t, level1_4, level1_5, level1_6)
174+
level2_3 := computeTestCombinedHash(t, level1_7, level1_8, level1_9)
175+
level2_4 := computeTestCombinedHash(t, level1_10, level1_11, level1_12)
176+
level2_5 := computeTestCombinedHash(t, level1_13, level1_14, level1_15)
177+
178+
level3_1 := computeTestCombinedHash(t, level2_1, level2_2, level2_3)
179+
level3_2 := computeTestCombinedHash(t, level2_4, level2_5)
180+
181+
testutil.AssertNil(t, r)
182+
testutil.AssertEquals(t, h, &kvrwset.QueryReadsMerkleSummary{
183+
MaxDegree: uint32(maxDegree),
184+
MaxLevel: 3,
185+
MaxLevelHashes: hashesToBytes([]Hash{level3_1, level3_2})})
186+
}
187+
126188
func buildTestResults(t *testing.T, enableHashing bool, maxDegree int, kvReads []*kvrwset.KVRead) ([]*kvrwset.KVRead, *kvrwset.QueryReadsMerkleSummary) {
127189
helper, _ := NewRangeQueryResultsHelper(enableHashing, uint32(maxDegree))
128190
for _, kvRead := range kvReads {

core/ledger/kvledger/txmgmt/rwsetutil/rwset_builder.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
"github.com/hyperledger/fabric/protos/ledger/rwset/kvrwset"
2424
)
2525

26-
var logger = flogging.MustGetLogger("rwset")
26+
var logger = flogging.MustGetLogger("rwsetutil")
2727

2828
type nsRWs struct {
2929
readMap map[string]*kvrwset.KVRead //for mvcc validation

core/ledger/kvledger/txmgmt/rwsetutil/rwset_builder_test.go

+7
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,20 @@ limitations under the License.
1717
package rwsetutil
1818

1919
import (
20+
"os"
2021
"testing"
2122

23+
"github.com/hyperledger/fabric/common/flogging"
2224
"github.com/hyperledger/fabric/common/ledger/testutil"
2325
"github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/version"
2426
"github.com/hyperledger/fabric/protos/ledger/rwset/kvrwset"
2527
)
2628

29+
func TestMain(m *testing.M) {
30+
flogging.SetModuleLevel("rwsetutil", "debug")
31+
os.Exit(m.Run())
32+
}
33+
2734
func TestRWSetHolder(t *testing.T) {
2835
rwSetBuilder := NewRWSetBuilder()
2936

core/ledger/kvledger/txmgmt/rwsetutil/rwset_proto_util_test.go

+13
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121

2222
"github.com/davecgh/go-spew/spew"
2323
"github.com/hyperledger/fabric/common/ledger/testutil"
24+
"github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/version"
2425
"github.com/hyperledger/fabric/protos/ledger/rwset/kvrwset"
2526
)
2627

@@ -63,3 +64,15 @@ func TestTxRWSetMarshalUnmarshal(t *testing.T) {
6364
t.Logf("txRwSet=%s, txRwSet1=%s", spew.Sdump(txRwSet), spew.Sdump(txRwSet1))
6465
testutil.AssertEquals(t, txRwSet1, txRwSet)
6566
}
67+
68+
func TestVersionConversion(t *testing.T) {
69+
protoVer := &kvrwset.Version{BlockNum: 5, TxNum: 2}
70+
internalVer := version.NewHeight(5, 2)
71+
// convert proto to internal
72+
testutil.AssertNil(t, NewVersion(nil))
73+
testutil.AssertEquals(t, NewVersion(protoVer), internalVer)
74+
75+
// convert internal to proto
76+
testutil.AssertNil(t, newProtoVersion(nil))
77+
testutil.AssertEquals(t, newProtoVersion(internalVer), protoVer)
78+
}

0 commit comments

Comments
 (0)