Skip to content

Commit 3cb9d49

Browse files
committed
FAB-3401: Improve unit tests for kvledger/history pkgs
Added unit test for ShouldRecover and CommitLostBlock methods Change-Id: I3365e7e08a849d93a1168549c97913861c323418 Signed-off-by: Balaji Viswanathan <[email protected]>
1 parent a97886a commit 3cb9d49

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

core/ledger/kvledger/history/historydb/historyleveldb/historyleveldb_test.go

+31
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ func TestSavepoint(t *testing.T) {
4646
testutil.AssertNoError(t, err, "Error upon historyDatabase.GetLastSavepoint()")
4747
testutil.AssertNil(t, savepoint)
4848

49+
// ShouldRecover should return true when no savepoint is found and recovery from block 0
50+
status, blockNum, err := env.testHistoryDB.ShouldRecover(0)
51+
testutil.AssertNoError(t, err, "Error upon historyDatabase.ShouldRecover()")
52+
testutil.AssertEquals(t, status, true)
53+
testutil.AssertEquals(t, blockNum, uint64(0))
54+
4955
bg, gb := testutil.NewBlockGenerator(t, "testLedger", false)
5056
testutil.AssertNoError(t, env.testHistoryDB.Commit(gb), "")
5157
// read the savepoint, it should now exist and return a Height object with BlockNum 0
@@ -63,6 +69,31 @@ func TestSavepoint(t *testing.T) {
6369
savepoint, err = env.testHistoryDB.GetLastSavepoint()
6470
testutil.AssertNoError(t, err, "Error upon historyDatabase.GetLastSavepoint()")
6571
testutil.AssertEquals(t, savepoint.BlockNum, uint64(1))
72+
73+
// Should Recover should return false
74+
status, blockNum, err = env.testHistoryDB.ShouldRecover(1)
75+
testutil.AssertNoError(t, err, "Error upon historyDatabase.ShouldRecover()")
76+
testutil.AssertEquals(t, status, false)
77+
testutil.AssertEquals(t, blockNum, uint64(2))
78+
79+
// create the next block (block 2)
80+
simulator, _ = env.txmgr.NewTxSimulator()
81+
simulator.SetState("ns1", "key1", []byte("value2"))
82+
simulator.Done()
83+
simRes, _ = simulator.GetTxSimulationResults()
84+
block2 := bg.NextBlock([][]byte{simRes})
85+
86+
// assume that the peer failed to commit this block to historyDB and is being recovered now
87+
env.testHistoryDB.CommitLostBlock(block2)
88+
savepoint, err = env.testHistoryDB.GetLastSavepoint()
89+
testutil.AssertNoError(t, err, "Error upon historyDatabase.GetLastSavepoint()")
90+
testutil.AssertEquals(t, savepoint.BlockNum, uint64(2))
91+
92+
//Pass high blockNum, ShouldRecover should return true with 3 as blocknum to recover from
93+
status, blockNum, err = env.testHistoryDB.ShouldRecover(10)
94+
testutil.AssertNoError(t, err, "Error upon historyDatabase.ShouldRecover()")
95+
testutil.AssertEquals(t, status, true)
96+
testutil.AssertEquals(t, blockNum, uint64(3))
6697
}
6798

6899
func TestHistory(t *testing.T) {

0 commit comments

Comments
 (0)