Skip to content

Commit b09854f

Browse files
author
Michal Mrozek
committed
[ETCM-198] Add test
1 parent 6e68253 commit b09854f

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

src/it/scala/io/iohk/ethereum/sync/FastSyncItSpec.scala

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,34 @@ class FastSyncItSpec extends FlatSpecBase with Matchers with BeforeAndAfterAll {
148148
assert(peer1.bl.getBestBlockNumber() == peer2.bl.getBestBlockNumber() - peer2.testSyncConfig.pivotBlockOffset)
149149
}
150150
}
151+
152+
it should "follow the longest chains" in customTestCaseResourceM(
153+
FakePeer.start4FakePeersRes()
154+
) { case (peer1, peer2, peer3, peer4) =>
155+
for {
156+
_ <- peer2.importBlocksUntil(1000)(IdentityUpdate)
157+
_ <- peer3.importBlocksUntil(1000)(IdentityUpdate)
158+
_ <- peer4.importBlocksUntil(1000)(IdentityUpdate)
159+
160+
_ <- peer2.importBlocksUntil(2000)(IdentityUpdate)
161+
_ <- peer3.importBlocksUntil(3000)(updateStateAtBlock(1001, endAccount = 3000))
162+
_ <- peer4.importBlocksUntil(3000)(updateStateAtBlock(1001, endAccount = 3000))
163+
164+
_ <- peer1.connectToPeers(Set(peer2.node, peer3.node, peer4.node))
165+
_ <- peer1.startFastSync().delayExecution(50.milliseconds)
166+
_ <- peer1.waitForFastSyncFinish()
167+
} yield {
168+
val trie = peer1.getBestBlockTrie()
169+
val synchronizingPeerHaveAllData = peer1.containsExpectedDataUpToAccountAtBlock(3000, 1001)
170+
// due to the fact that function generating state is deterministic both peer3 and peer4 ends up with exactly same
171+
// state, so peer1 can get whole trie from both of them.
172+
assert(peer1.bl.getBestBlockNumber() == peer3.bl.getBestBlockNumber() - peer3.testSyncConfig.pivotBlockOffset)
173+
assert(peer1.bl.getBestBlockNumber() == peer4.bl.getBestBlockNumber() - peer4.testSyncConfig.pivotBlockOffset)
174+
assert(trie.isDefined)
175+
assert(synchronizingPeerHaveAllData)
176+
}
177+
}
178+
151179
}
152180

153181
object FastSyncItSpec {

src/it/scala/io/iohk/ethereum/sync/util/FastSyncItSpecUtils.scala

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,19 @@ object FastSyncItSpecUtils {
144144
peer3 <- start1FakePeerRes(fakePeerCustomConfig3, "Peer3")
145145
} yield (peer1, peer2, peer3)
146146
}
147-
}
148147

148+
def start4FakePeersRes(
149+
fakePeerCustomConfig1: FakePeerCustomConfig = defaultConfig,
150+
fakePeerCustomConfig2: FakePeerCustomConfig = defaultConfig,
151+
fakePeerCustomConfig3: FakePeerCustomConfig = defaultConfig,
152+
fakePeerCustomConfig4: FakePeerCustomConfig = defaultConfig
153+
): Resource[Task, (FakePeer, FakePeer, FakePeer, FakePeer)] = {
154+
for {
155+
peer1 <- start1FakePeerRes(fakePeerCustomConfig1, "Peer1")
156+
peer2 <- start1FakePeerRes(fakePeerCustomConfig2, "Peer2")
157+
peer3 <- start1FakePeerRes(fakePeerCustomConfig3, "Peer3")
158+
peer4 <- start1FakePeerRes(fakePeerCustomConfig4, "Peer3")
159+
} yield (peer1, peer2, peer3, peer4)
160+
}
161+
}
149162
}

0 commit comments

Comments
 (0)