Skip to content

Commit 0132f13

Browse files
kyrie-ylcryyl
authored andcommitted
add UT tests
1 parent e9be0d4 commit 0132f13

File tree

1 file changed

+45
-4
lines changed

1 file changed

+45
-4
lines changed

core/blockchain_notries_test.go

+45-4
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ type requestRoot struct {
4343
diffHash common.Hash
4444
}
4545

46+
type verifFailedStatus struct {
47+
status types.VerifyStatus
48+
blockNumber uint64
49+
}
50+
4651
// mockVerifyPeer is a mocking struct that simulates p2p signals for verification tasks.
4752
type mockVerifyPeer struct {
4853
callback func(*requestRoot)
@@ -75,7 +80,7 @@ func newMockRemoteVerifyPeer(peers []VerifyPeer) *mockVerifyPeers {
7580
return &mockVerifyPeers{peers}
7681
}
7782

78-
func makeTestBackendWithRemoteValidator(blocks int) (*testBackend, *testBackend, []*types.Block, error) {
83+
func makeTestBackendWithRemoteValidator(blocks int, mode VerifyMode, failed *verifFailedStatus) (*testBackend, *testBackend, []*types.Block, error) {
7984
signer := types.HomesteadSigner{}
8085

8186
// Create a database pre-initialize with a genesis block
@@ -105,7 +110,7 @@ func makeTestBackendWithRemoteValidator(blocks int) (*testBackend, *testBackend,
105110
}
106111

107112
fastnode, err := NewBlockChain(db2, nil, params.TestChainConfig, engine2, vm.Config{},
108-
nil, nil, EnableBlockValidator(params.TestChainConfig, engine2, FullVerify, newMockRemoteVerifyPeer(peers)))
113+
nil, nil, EnableBlockValidator(params.TestChainConfig, engine2, mode, newMockRemoteVerifyPeer(peers)))
109114
if err != nil {
110115
return nil, nil, nil, err
111116
}
@@ -156,9 +161,15 @@ func makeTestBackendWithRemoteValidator(blocks int) (*testBackend, *testBackend,
156161

157162
peer.setCallBack(func(req *requestRoot) {
158163
if fastnode.validator != nil && fastnode.validator.RemoteVerifyManager() != nil {
164+
resp := verifier.GetRootByDiffHash(req.blockNumber, req.blockHash, req.diffHash)
165+
if failed != nil && req.blockNumber == failed.blockNumber {
166+
resp.Status = failed.status
167+
} else {
168+
resp.Status = types.StatusFullVerified
169+
}
159170
fastnode.validator.RemoteVerifyManager().
160171
HandleRootResponse(
161-
verifier.GetRootByDiffHash(req.blockNumber, req.blockHash, req.diffHash), "mock")
172+
resp, peer.ID())
162173
}
163174
})
164175
if _, err := verifier.InsertChain(bs); err != nil {
@@ -176,12 +187,42 @@ func makeTestBackendWithRemoteValidator(blocks int) (*testBackend, *testBackend,
176187
}
177188

178189
func TestFastNode(t *testing.T) {
179-
_, fastnode, blocks, err := makeTestBackendWithRemoteValidator(10240)
190+
// test full mode and succeed
191+
_, fastnode, blocks, err := makeTestBackendWithRemoteValidator(10240, FullVerify, nil)
180192
if err != nil {
181193
t.Fatalf(err.Error())
182194
}
183195
_, err = fastnode.chain.InsertChain(blocks)
184196
if err != nil {
185197
t.Fatalf(err.Error())
186198
}
199+
// test full mode and failed
200+
failed := &verifFailedStatus{status: types.StatusDiffHashMismatch, blockNumber: 2048}
201+
_, fastnode, blocks, err = makeTestBackendWithRemoteValidator(10240, FullVerify, failed)
202+
if err != nil {
203+
t.Fatalf(err.Error())
204+
}
205+
_, err = fastnode.chain.InsertChain(blocks)
206+
if err == nil || fastnode.chain.CurrentBlock().NumberU64() != failed.blockNumber+10 {
207+
t.Fatalf("blocks insert should be failed at height %d", failed.blockNumber+11)
208+
}
209+
// test insecure mode and succeed
210+
_, fastnode, blocks, err = makeTestBackendWithRemoteValidator(10240, InsecureVerify, nil)
211+
if err != nil {
212+
t.Fatalf(err.Error())
213+
}
214+
_, err = fastnode.chain.InsertChain(blocks)
215+
if err != nil {
216+
t.Fatalf(err.Error())
217+
}
218+
// test insecure mode and failed
219+
failed = &verifFailedStatus{status: types.StatusImpossibleFork, blockNumber: 2048}
220+
_, fastnode, blocks, err = makeTestBackendWithRemoteValidator(10240, FullVerify, failed)
221+
if err != nil {
222+
t.Fatalf(err.Error())
223+
}
224+
_, err = fastnode.chain.InsertChain(blocks)
225+
if err == nil || fastnode.chain.CurrentBlock().NumberU64() != failed.blockNumber+10 {
226+
t.Fatalf("blocks insert should be failed at height %d", failed.blockNumber+11)
227+
}
187228
}

0 commit comments

Comments
 (0)