@@ -73,14 +73,33 @@ class RegularSyncItSpec extends FlatSpecBase with Matchers with BeforeAndAfter {
73
73
_ <- peer2.startRegularSync().delayExecution(50 .milliseconds)
74
74
_ <- peer2.importBlocksUntil(blockNumer)(IdentityUpdate )
75
75
_ <- peer1.connectToPeers(Set (peer2.node))
76
- _ <- peer1.startRegularSync().delayExecution(50 .milliseconds)
76
+ _ <- peer1.startRegularSync().delayExecution(500 .milliseconds)
77
77
_ <- peer2.mineNewBlock()(IdentityUpdate ).delayExecution(50 .milliseconds)
78
78
_ <- peer1.waitForRegularSyncLoadLastBlock(blockNumerOnTop)
79
79
} yield {
80
80
assert(peer1.bl.getBestBlockNumber() == peer2.bl.getBestBlockNumber())
81
81
}
82
82
}
83
83
84
+ it should " should sync peers with divergent chains will be forced to resolve branches" in customTestCaseResourceM(FakePeer .start2FakePeersRes()) {
85
+ case (peer1, peer2) =>
86
+ val blockNumer : BigInt = 2000
87
+ for {
88
+ _ <- peer2.startRegularSync().delayExecution(50 .milliseconds)
89
+ _ <- peer2.importBlocksUntil(blockNumer)(IdentityUpdate )
90
+ _ <- peer1.startRegularSync().delayExecution(50 .milliseconds)
91
+ _ <- peer1.importBlocksUntil(blockNumer)(IdentityUpdate )
92
+ _ <- peer2.mineNewBlock()(IdentityUpdate ).delayExecution(50 .milliseconds)
93
+ _ <- peer2.waitForRegularSyncLoadLastBlock(blockNumer + 1 )
94
+ _ <- peer1.mineNewBlock()(IdentityUpdate ).delayExecution(50 .milliseconds)
95
+ _ <- peer1.waitForRegularSyncLoadLastBlock(blockNumer + 1 )
96
+ _ <- peer1.connectToPeers(Set (peer2.node)).delayExecution(50 .milliseconds)
97
+ _ <- peer2.connectToPeers(Set (peer1.node)).delayExecution(50 .milliseconds)
98
+ } yield {
99
+ assert(peer1.bl.getBestBlockNumber() == peer2.bl.getBestBlockNumber())
100
+ }
101
+ }
102
+
84
103
}
85
104
86
105
object RegularSyncItSpec {
0 commit comments