Skip to content

Commit

Permalink
Merge "[FAB-3403] increase unit test coverage for rwsetutil"
Browse files Browse the repository at this point in the history
  • Loading branch information
C0rWin authored and Gerrit Code Review committed May 1, 2017
2 parents 16cb17a + beb1d8e commit 48cd487
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 3 deletions.
4 changes: 2 additions & 2 deletions core/ledger/kvledger/txmgmt/rwsetutil/query_results_helper.go
Expand Up @@ -228,8 +228,8 @@ func (m *merkleTree) done() error {

func (m *merkleTree) getSummery() *kvrwset.QueryReadsMerkleSummary {
return &kvrwset.QueryReadsMerkleSummary{MaxDegree: m.maxDegree,
MaxLevel: uint32(m.maxLevel),
MaxLevelHashes: hashesToBytes(m.tree[m.maxLevel])}
MaxLevel: uint32(m.getMaxLevel()),
MaxLevelHashes: hashesToBytes(m.getMaxLevelHashes())}
}

func (m *merkleTree) getMaxLevel() MerkleTreeLevel {
Expand Down
62 changes: 62 additions & 0 deletions core/ledger/kvledger/txmgmt/rwsetutil/query_results_helper_test.go
Expand Up @@ -123,6 +123,68 @@ func TestQueryResultHelper_Hash_ThreeLevel(t *testing.T) {
MaxLevelHashes: hashesToBytes([]Hash{level3_1, level3_2})})
}

func TestQueryResultHelper_Hash_MaxLevelIncrementNeededInDone(t *testing.T) {
maxDegree := 2
kvReads := buildTestKVReads(t, 24)
r, h := buildTestResults(t, true, maxDegree, kvReads)
level1_1 := computeTestHashKVReads(t, kvReads[0:3])
level1_2 := computeTestHashKVReads(t, kvReads[3:6])
level1_3 := computeTestHashKVReads(t, kvReads[6:9])
level1_4 := computeTestHashKVReads(t, kvReads[9:12])
level1_5 := computeTestHashKVReads(t, kvReads[12:15])
level1_6 := computeTestHashKVReads(t, kvReads[15:18])
level1_7 := computeTestHashKVReads(t, kvReads[18:21])
level1_8 := computeTestHashKVReads(t, kvReads[21:24])

level2_1 := computeTestCombinedHash(t, level1_1, level1_2, level1_3)
level2_2 := computeTestCombinedHash(t, level1_4, level1_5, level1_6)
level2_3 := computeTestCombinedHash(t, level1_7, level1_8)

level3_1 := computeTestCombinedHash(t, level2_1, level2_2, level2_3)

testutil.AssertNil(t, r)
testutil.AssertEquals(t, h, &kvrwset.QueryReadsMerkleSummary{
MaxDegree: uint32(maxDegree),
MaxLevel: 3,
MaxLevelHashes: hashesToBytes([]Hash{level3_1})})
}

func TestQueryResultHelper_Hash_FirstLevelSkipNeededInDone(t *testing.T) {
maxDegree := 2
kvReads := buildTestKVReads(t, 45)
r, h := buildTestResults(t, true, maxDegree, kvReads)
level1_1 := computeTestHashKVReads(t, kvReads[0:3])
level1_2 := computeTestHashKVReads(t, kvReads[3:6])
level1_3 := computeTestHashKVReads(t, kvReads[6:9])
level1_4 := computeTestHashKVReads(t, kvReads[9:12])
level1_5 := computeTestHashKVReads(t, kvReads[12:15])
level1_6 := computeTestHashKVReads(t, kvReads[15:18])
level1_7 := computeTestHashKVReads(t, kvReads[18:21])
level1_8 := computeTestHashKVReads(t, kvReads[21:24])
level1_9 := computeTestHashKVReads(t, kvReads[24:27])
level1_10 := computeTestHashKVReads(t, kvReads[27:30])
level1_11 := computeTestHashKVReads(t, kvReads[30:33])
level1_12 := computeTestHashKVReads(t, kvReads[33:36])
level1_13 := computeTestHashKVReads(t, kvReads[36:39])
level1_14 := computeTestHashKVReads(t, kvReads[39:42])
level1_15 := computeTestHashKVReads(t, kvReads[42:45])

level2_1 := computeTestCombinedHash(t, level1_1, level1_2, level1_3)
level2_2 := computeTestCombinedHash(t, level1_4, level1_5, level1_6)
level2_3 := computeTestCombinedHash(t, level1_7, level1_8, level1_9)
level2_4 := computeTestCombinedHash(t, level1_10, level1_11, level1_12)
level2_5 := computeTestCombinedHash(t, level1_13, level1_14, level1_15)

level3_1 := computeTestCombinedHash(t, level2_1, level2_2, level2_3)
level3_2 := computeTestCombinedHash(t, level2_4, level2_5)

testutil.AssertNil(t, r)
testutil.AssertEquals(t, h, &kvrwset.QueryReadsMerkleSummary{
MaxDegree: uint32(maxDegree),
MaxLevel: 3,
MaxLevelHashes: hashesToBytes([]Hash{level3_1, level3_2})})
}

func buildTestResults(t *testing.T, enableHashing bool, maxDegree int, kvReads []*kvrwset.KVRead) ([]*kvrwset.KVRead, *kvrwset.QueryReadsMerkleSummary) {
helper, _ := NewRangeQueryResultsHelper(enableHashing, uint32(maxDegree))
for _, kvRead := range kvReads {
Expand Down
2 changes: 1 addition & 1 deletion core/ledger/kvledger/txmgmt/rwsetutil/rwset_builder.go
Expand Up @@ -23,7 +23,7 @@ import (
"github.com/hyperledger/fabric/protos/ledger/rwset/kvrwset"
)

var logger = flogging.MustGetLogger("rwset")
var logger = flogging.MustGetLogger("rwsetutil")

type nsRWs struct {
readMap map[string]*kvrwset.KVRead //for mvcc validation
Expand Down
7 changes: 7 additions & 0 deletions core/ledger/kvledger/txmgmt/rwsetutil/rwset_builder_test.go
Expand Up @@ -17,13 +17,20 @@ limitations under the License.
package rwsetutil

import (
"os"
"testing"

"github.com/hyperledger/fabric/common/flogging"
"github.com/hyperledger/fabric/common/ledger/testutil"
"github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/version"
"github.com/hyperledger/fabric/protos/ledger/rwset/kvrwset"
)

func TestMain(m *testing.M) {
flogging.SetModuleLevel("rwsetutil", "debug")
os.Exit(m.Run())
}

func TestRWSetHolder(t *testing.T) {
rwSetBuilder := NewRWSetBuilder()

Expand Down
13 changes: 13 additions & 0 deletions core/ledger/kvledger/txmgmt/rwsetutil/rwset_proto_util_test.go
Expand Up @@ -21,6 +21,7 @@ import (

"github.com/davecgh/go-spew/spew"
"github.com/hyperledger/fabric/common/ledger/testutil"
"github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/version"
"github.com/hyperledger/fabric/protos/ledger/rwset/kvrwset"
)

Expand Down Expand Up @@ -63,3 +64,15 @@ func TestTxRWSetMarshalUnmarshal(t *testing.T) {
t.Logf("txRwSet=%s, txRwSet1=%s", spew.Sdump(txRwSet), spew.Sdump(txRwSet1))
testutil.AssertEquals(t, txRwSet1, txRwSet)
}

func TestVersionConversion(t *testing.T) {
protoVer := &kvrwset.Version{BlockNum: 5, TxNum: 2}
internalVer := version.NewHeight(5, 2)
// convert proto to internal
testutil.AssertNil(t, NewVersion(nil))
testutil.AssertEquals(t, NewVersion(protoVer), internalVer)

// convert internal to proto
testutil.AssertNil(t, newProtoVersion(nil))
testutil.AssertEquals(t, newProtoVersion(internalVer), protoVer)
}

0 comments on commit 48cd487

Please sign in to comment.