Skip to content

Commit 4a443aa

Browse files
committed
ETCM-760: Adapt tests
1 parent 6f3c055 commit 4a443aa

File tree

11 files changed

+71
-46
lines changed

11 files changed

+71
-46
lines changed

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

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import akka.util.{ByteString, Timeout}
1010
import io.iohk.ethereum.blockchain.sync.regular.BlockBroadcast.BlockToBroadcast
1111
import io.iohk.ethereum.blockchain.sync.regular.{BlockBroadcast, BlockBroadcasterActor}
1212
import io.iohk.ethereum.blockchain.sync.regular.BlockBroadcasterActor.BroadcastBlock
13-
import io.iohk.ethereum.blockchain.sync.{BlockchainHostActor, TestSyncConfig}
13+
import io.iohk.ethereum.blockchain.sync.{BlockchainHostActor, CacheBasedBlacklist, TestSyncConfig}
1414
import io.iohk.ethereum.db.components.{RocksDbDataSourceComponent, Storages}
1515
import io.iohk.ethereum.db.dataSource.{RocksDbConfig, RocksDbDataSource}
1616
import io.iohk.ethereum.db.storage.pruning.{ArchivePruning, PruningMode}
@@ -27,15 +27,7 @@ import io.iohk.ethereum.network.handshaker.{EtcHandshaker, EtcHandshakerConfigur
2727
import io.iohk.ethereum.network.p2p.EthereumMessageDecoder
2828
import io.iohk.ethereum.network.rlpx.AuthHandshaker
2929
import io.iohk.ethereum.network.rlpx.RLPxConnectionHandler.RLPxConfiguration
30-
import io.iohk.ethereum.network.{
31-
EtcPeerManagerActor,
32-
ForkResolver,
33-
KnownNodesManager,
34-
PeerEventBusActor,
35-
PeerManagerActor,
36-
PeerStatisticsActor,
37-
ServerActor
38-
}
30+
import io.iohk.ethereum.network.{EtcPeerManagerActor, ForkResolver, KnownNodesManager, PeerEventBusActor, PeerManagerActor, PeerStatisticsActor, ServerActor}
3931
import io.iohk.ethereum.nodebuilder.PruningConfigBuilder
4032
import io.iohk.ethereum.sync.util.SyncCommonItSpec._
4133
import io.iohk.ethereum.sync.util.SyncCommonItSpecUtils._
@@ -179,6 +171,8 @@ abstract class CommonFakePeer(peerName: String, fakePeerCustomConfig: FakePeerCu
179171
lazy val peerStatistics =
180172
system.actorOf(PeerStatisticsActor.props(peerEventBus, slotDuration = 1.minute, slotCount = 30))
181173

174+
lazy val blacklist: CacheBasedBlacklist = CacheBasedBlacklist.empty(1000)
175+
182176
lazy val peerManager: ActorRef = system.actorOf(
183177
PeerManagerActor.props(
184178
peerDiscoveryManager,
@@ -190,6 +184,7 @@ abstract class CommonFakePeer(peerName: String, fakePeerCustomConfig: FakePeerCu
190184
authHandshaker,
191185
EthereumMessageDecoder,
192186
discoveryConfig,
187+
blacklist,
193188
Config.Network.protocolVersion
194189
),
195190
"peer-manager"
@@ -231,7 +226,7 @@ abstract class CommonFakePeer(peerName: String, fakePeerCustomConfig: FakePeerCu
231226
lazy val broadcaster = new BlockBroadcast(etcPeerManager)
232227

233228
lazy val broadcasterActor = system.actorOf(
234-
BlockBroadcasterActor.props(broadcaster, peerEventBus, etcPeerManager, testSyncConfig, system.scheduler)
229+
BlockBroadcasterActor.props(broadcaster, peerEventBus, etcPeerManager, blacklist, testSyncConfig, system.scheduler)
235230
)
236231

237232
private def getMptForBlock(block: Block) = {

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,13 @@ import monix.eval.Task
1717
import scala.annotation.tailrec
1818
import scala.concurrent.duration._
1919
import scala.util.Try
20-
import io.iohk.ethereum.blockchain.sync.CacheBasedBlacklist
2120
object FastSyncItSpecUtils {
2221

2322
class FakePeer(peerName: String, fakePeerCustomConfig: FakePeerCustomConfig)
2423
extends CommonFakePeer(peerName, fakePeerCustomConfig) {
2524

2625
lazy val validators = new MockValidatorsAlwaysSucceed
2726

28-
val maxSize = 1000
29-
val blacklist = CacheBasedBlacklist.empty(maxSize)
30-
3127
lazy val fastSync = system.actorOf(
3228
FastSync.props(
3329
storagesInstance.storages.fastSyncStateStorage,

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ object RegularSyncItSpecUtils {
6262

6363
lazy val checkpointBlockGenerator: CheckpointBlockGenerator = new CheckpointBlockGenerator
6464
lazy val peersClient: ActorRef =
65-
system.actorOf(PeersClient.props(etcPeerManager, peerEventBus, testSyncConfig, system.scheduler), "peers-client")
65+
system.actorOf(PeersClient.props(etcPeerManager, peerEventBus, blacklist, testSyncConfig, system.scheduler), "peers-client")
6666

6767
lazy val ledger: Ledger =
6868
new LedgerImpl(bl, blockchainConfig, syncConfig, buildEthashConsensus(), Scheduler.global)
@@ -78,7 +78,7 @@ object RegularSyncItSpecUtils {
7878

7979
val broadcasterRef: ActorRef = system.actorOf(
8080
BlockBroadcasterActor
81-
.props(new BlockBroadcast(etcPeerManager), peerEventBus, etcPeerManager, syncConfig, system.scheduler),
81+
.props(new BlockBroadcast(etcPeerManager), peerEventBus, etcPeerManager, blacklist, syncConfig, system.scheduler),
8282
"block-broadcaster"
8383
)
8484

@@ -109,6 +109,7 @@ object RegularSyncItSpecUtils {
109109
ledger,
110110
bl,
111111
validators.blockValidator,
112+
blacklist,
112113
testSyncConfig,
113114
ommersPool,
114115
pendingTransactionsManager,

src/it/scala/io/iohk/ethereum/txExecTest/util/DumpChainApp.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ package io.iohk.ethereum.txExecTest.util
22

33
import java.time.Clock
44
import java.util.concurrent.atomic.AtomicReference
5+
56
import akka.actor.ActorSystem
67
import akka.util.ByteString
78
import com.typesafe.config.ConfigFactory
9+
import io.iohk.ethereum.blockchain.sync.CacheBasedBlacklist
810
import io.iohk.ethereum.db.components.Storages.PruningModeComponent
911
import io.iohk.ethereum.db.components.{RocksDbDataSourceComponent, Storages}
1012
import io.iohk.ethereum.db.dataSource.{DataSourceBatchUpdate, RocksDbDataSource}
@@ -100,6 +102,8 @@ object DumpChainApp extends App with NodeKeyBuilder with SecureRandomBuilder wit
100102

101103
val peerStatistics = actorSystem.actorOf(PeerStatisticsActor.props(peerMessageBus, 1.minute, 30)(Clock.systemUTC()))
102104

105+
val blacklist: CacheBasedBlacklist = CacheBasedBlacklist.empty(100)
106+
103107
val peerManager = actorSystem.actorOf(
104108
PeerManagerActor.props(
105109
peerDiscoveryManager = actorSystem.deadLetters, // TODO: fixme
@@ -111,6 +115,7 @@ object DumpChainApp extends App with NodeKeyBuilder with SecureRandomBuilder wit
111115
authHandshaker = authHandshaker,
112116
messageDecoder = EthereumMessageDecoder,
113117
discoveryConfig = discoveryConfig,
118+
blacklist = blacklist,
114119
bestProtocolVersion = Config.Network.protocolVersion
115120
),
116121
"peer-manager"

src/test/scala/io/iohk/ethereum/blockchain/sync/BlockBroadcastSpec.scala

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package io.iohk.ethereum.blockchain.sync
22

33
import java.net.InetSocketAddress
4+
45
import akka.actor.ActorSystem
56
import akka.testkit.{TestKit, TestProbe}
7+
import io.iohk.ethereum.blockchain.sync.PeerListSupportNg.PeerWithInfo
68
import io.iohk.ethereum.blockchain.sync.regular.BlockBroadcast
79
import io.iohk.ethereum.blockchain.sync.regular.BlockBroadcast.BlockToBroadcast
810
import io.iohk.ethereum.domain.{Block, BlockBody, BlockHeader, ChainWeight}
@@ -30,7 +32,7 @@ class BlockBroadcastSpec
3032
NewBlock(Block(blockHeader, BlockBody(Nil, Nil)), initialPeerInfo.chainWeight.increaseTotalDifficulty(2))
3133

3234
//when
33-
blockBroadcast.broadcastBlock(BlockToBroadcast(newBlock.block, newBlock.chainWeight), Map(peer -> initialPeerInfo))
35+
blockBroadcast.broadcastBlock(BlockToBroadcast(newBlock.block, newBlock.chainWeight), Map(peer.id -> PeerWithInfo(peer, initialPeerInfo)))
3436

3537
//then
3638
etcPeerManagerProbe.expectMsg(EtcPeerManagerActor.SendMessage(newBlock, peer.id))
@@ -52,7 +54,7 @@ class BlockBroadcastSpec
5254
//when
5355
blockBroadcast.broadcastBlock(
5456
BlockToBroadcast(newBlock.block, ChainWeight.totalDifficultyOnly(newBlock.totalDifficulty)),
55-
Map(peer -> peerInfo)
57+
Map(peer.id -> PeerWithInfo(peer, peerInfo))
5658
)
5759

5860
//then
@@ -69,7 +71,7 @@ class BlockBroadcastSpec
6971
NewBlock(Block(blockHeader, BlockBody(Nil, Nil)), initialPeerInfo.chainWeight.increaseTotalDifficulty(-2))
7072

7173
//when
72-
blockBroadcast.broadcastBlock(BlockToBroadcast(newBlock.block, newBlock.chainWeight), Map(peer -> initialPeerInfo))
74+
blockBroadcast.broadcastBlock(BlockToBroadcast(newBlock.block, newBlock.chainWeight), Map(peer.id -> PeerWithInfo(peer, initialPeerInfo)))
7375

7476
//then
7577
etcPeerManagerProbe.expectNoMessage()
@@ -83,7 +85,7 @@ class BlockBroadcastSpec
8385
NewBlock(Block(blockHeader, BlockBody(Nil, Nil)), initialPeerInfo.chainWeight.increaseTotalDifficulty(-2))
8486

8587
//when
86-
blockBroadcast.broadcastBlock(BlockToBroadcast(newBlock.block, newBlock.chainWeight), Map(peer -> initialPeerInfo))
88+
blockBroadcast.broadcastBlock(BlockToBroadcast(newBlock.block, newBlock.chainWeight), Map(peer.id -> PeerWithInfo(peer, initialPeerInfo)))
8789

8890
//then
8991
etcPeerManagerProbe.expectMsg(EtcPeerManagerActor.SendMessage(newBlock, peer.id))
@@ -99,7 +101,7 @@ class BlockBroadcastSpec
99101
NewBlock(Block(blockHeader, BlockBody(Nil, Nil)), initialPeerInfo.chainWeight.increaseTotalDifficulty(-2))
100102

101103
//when
102-
blockBroadcast.broadcastBlock(BlockToBroadcast(newBlock.block, newBlock.chainWeight), Map(peer -> initialPeerInfo))
104+
blockBroadcast.broadcastBlock(BlockToBroadcast(newBlock.block, newBlock.chainWeight), Map(peer.id -> PeerWithInfo(peer, initialPeerInfo)))
103105

104106
//then
105107
etcPeerManagerProbe.expectNoMessage()
@@ -122,7 +124,7 @@ class BlockBroadcastSpec
122124
//when
123125
val peers = Seq(peer, peer2, peer3, peer4)
124126
val peersIds = peers.map(_.id)
125-
val peersWithInfo = peers.map(_ -> initialPeerInfo).toMap
127+
val peersWithInfo = peers.map(peer => peer.id -> PeerWithInfo(peer, initialPeerInfo)).toMap
126128
blockBroadcast.broadcastBlock(BlockToBroadcast(firstBlock.block, firstBlock.chainWeight), peersWithInfo)
127129

128130
//then

src/test/scala/io/iohk/ethereum/blockchain/sync/EtcPeerManagerFake.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import akka.testkit.TestActor.AutoPilot
44
import akka.testkit.TestProbe
55
import akka.util.ByteString
66
import cats.effect.concurrent.Deferred
7-
import io.iohk.ethereum.blockchain.sync.PeerListSupport.PeersMap
7+
import io.iohk.ethereum.blockchain.sync.PeerListSupportNg.PeerWithInfo
88
import io.iohk.ethereum.domain.{Block, BlockHeader}
9-
import io.iohk.ethereum.network.EtcPeerManagerActor
10-
import io.iohk.ethereum.network.EtcPeerManagerActor.SendMessage
9+
import io.iohk.ethereum.network.{EtcPeerManagerActor, Peer, PeerId}
10+
import io.iohk.ethereum.network.EtcPeerManagerActor.{PeerInfo, SendMessage}
1111
import io.iohk.ethereum.network.PeerEventBusActor.PeerEvent.MessageFromPeer
1212
import io.iohk.ethereum.network.p2p.messages.PV62.{BlockBodies, BlockHeaders, GetBlockBodies, GetBlockHeaders}
1313
import io.iohk.ethereum.network.p2p.messages.PV63.{GetNodeData, GetReceipts, NodeData, Receipts}
@@ -19,7 +19,7 @@ import monix.reactive.subjects.{ReplaySubject, Subject}
1919

2020
class EtcPeerManagerFake(
2121
syncConfig: SyncConfig,
22-
peers: PeersMap,
22+
peers: Map[Peer, PeerInfo],
2323
blocks: List[Block],
2424
getMptNodes: List[ByteString] => List[ByteString]
2525
)(implicit system: ActorSystem, scheduler: Scheduler) {
@@ -82,7 +82,7 @@ class EtcPeerManagerFake(
8282
.map(_._1)
8383
.combineLatestMap(requestedReceipts)((blocks, _) => blocks) // a big simplification, but should be sufficient here
8484

85-
val fetchedState = responses.collect { case MessageFromPeer(NodeData(values), peerId) =>
85+
val fetchedState = responses.collect { case MessageFromPeer(NodeData(values), _) =>
8686
values
8787
}
8888

@@ -92,7 +92,7 @@ object EtcPeerManagerFake {
9292
requests: Subject[SendMessage, SendMessage],
9393
responses: Subject[MessageFromPeer, MessageFromPeer],
9494
peersConnected: Deferred[Task, Unit],
95-
peers: PeersMap,
95+
peers: Map[Peer, PeerInfo],
9696
blocks: List[Block],
9797
getMptNodes: List[ByteString] => List[ByteString]
9898
)(implicit scheduler: Scheduler)

src/test/scala/io/iohk/ethereum/blockchain/sync/PeersClientSpec.scala

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.iohk.ethereum.blockchain.sync
22

33
import java.net.InetSocketAddress
4+
45
import akka.actor.ActorSystem
56
import akka.testkit.TestProbe
67
import akka.util.ByteString
8+
import io.iohk.ethereum.blockchain.sync.PeerListSupportNg.PeerWithInfo
79
import io.iohk.ethereum.domain.ChainWeight
810
import io.iohk.ethereum.network.EtcPeerManagerActor.{PeerInfo, RemoteStatus}
911
import io.iohk.ethereum.network.{Peer, PeerId}
@@ -16,35 +18,35 @@ class PeersClientSpec extends AnyFlatSpec with Matchers with ScalaCheckPropertyC
1618
"PeerClient" should "determined the best peer based on it latest checkpoint number and total difficulty" in {
1719
import Peers._
1820

19-
val table = Table[Map[Peer, PeerInfo], Option[Peer], String](
21+
val table = Table[Map[PeerId, PeerWithInfo], Option[Peer], String](
2022
("PeerInfo map", "Expected best peer", "Scenario info (selected peer)"),
2123
(
2224
Map(),
2325
None,
2426
"No peers"
2527
),
2628
(
27-
Map(peer1 -> peerInfo(0, 100, fork = false)),
29+
Map(peer1.id -> PeerWithInfo(peer1, peerInfo(0, 100, fork = false))),
2830
None,
2931
"Single peer"
3032
),
3133
(
32-
Map(peer1 -> peerInfo(0, 100, fork = false), peer2 -> peerInfo(0, 50, fork = true)),
34+
Map(peer1.id -> PeerWithInfo(peer1, peerInfo(0, 100, fork = false)), peer2.id -> PeerWithInfo(peer2, peerInfo(0, 50, fork = true))),
3335
Some(peer2),
3436
"Peer2 with lower TD but following the ETC fork"
3537
),
3638
(
37-
Map(peer1 -> peerInfo(0, 100), peer2 -> peerInfo(0, 101)),
39+
Map(peer1.id -> PeerWithInfo(peer1, peerInfo(0, 100)), peer2.id -> PeerWithInfo(peer2, peerInfo(0, 101))),
3840
Some(peer2),
3941
"Peer2 with higher TD"
4042
),
4143
(
42-
Map(peer1 -> peerInfo(0, 100), peer2 -> peerInfo(0, 101), peer3 -> peerInfo(1, 50)),
44+
Map(peer1.id -> PeerWithInfo(peer1, peerInfo(0, 100)), peer2.id -> PeerWithInfo(peer2, peerInfo(0, 101)), peer3.id -> PeerWithInfo(peer3, peerInfo(1, 50))),
4345
Some(peer3),
4446
"Peer3 with lower TD but higher checkpoint number"
4547
),
4648
(
47-
Map(peer1 -> peerInfo(0, 100), peer2 -> peerInfo(4, 101), peer3 -> peerInfo(4, 50)),
49+
Map(peer1.id -> PeerWithInfo(peer1, peerInfo(0, 100)), peer2.id -> PeerWithInfo(peer2, peerInfo(4, 101)), peer3.id -> PeerWithInfo(peer3, peerInfo(4, 50))),
4850
Some(peer2),
4951
"Peer2 with equal checkpoint number and higher TD"
5052
)

src/test/scala/io/iohk/ethereum/blockchain/sync/regular/BlockFetcherSpec.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import io.iohk.ethereum.{BlockHelpers, Timeouts}
2424
import org.scalatest.freespec.AnyFreeSpecLike
2525
import org.scalatest.matchers.should.Matchers
2626

27+
import io.iohk.ethereum.blockchain.sync.Blacklist.BlacklistReason
28+
2729
import scala.concurrent.ExecutionContext.Implicits.global
2830
import scala.concurrent.duration._
2931

@@ -96,7 +98,7 @@ class BlockFetcherSpec
9698
peersClient.expectNoMessage()
9799

98100
// Failure of the second request should make the fetcher resume with his requests
99-
peersClient.send(refExpectingReply, PeersClient.RequestFailed(fakePeer, ""))
101+
peersClient.send(refExpectingReply, PeersClient.RequestFailed(fakePeer, BlacklistReason.RegularSyncRequestFailed("")))
100102

101103
peersClient.expectMsgClass(classOf[BlacklistPeer])
102104
peersClient.expectMsgPF() { case PeersClient.Request(msg, _, _) if msg == firstGetBlockHeadersRequest => () }

src/test/scala/io/iohk/ethereum/blockchain/sync/regular/RegularSyncFixtures.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import akka.util.{ByteString, Timeout}
1010
import cats.Eq
1111
import cats.implicits._
1212
import io.iohk.ethereum.BlockHelpers
13-
import io.iohk.ethereum.blockchain.sync.PeerListSupport.PeersMap
1413
import io.iohk.ethereum.blockchain.sync._
1514
import io.iohk.ethereum.consensus.blocks.CheckpointBlockGenerator
1615
import io.iohk.ethereum.domain.BlockHeaderImplicits._
@@ -50,7 +49,7 @@ trait RegularSyncFixtures { self: Matchers with AsyncMockFactory =>
5049
implicit override lazy val system: ActorSystem = _system
5150
override lazy val syncConfig: SyncConfig =
5251
defaultSyncConfig.copy(blockHeadersPerRequest = 2, blockBodiesPerRequest = 2)
53-
val handshakedPeers: PeersMap = (0 to 5).toList.map((peerId _).andThen(getPeer)).fproduct(getPeerInfo(_)).toMap
52+
val handshakedPeers: Map[Peer, PeerInfo] = (0 to 5).toList.map((peerId _).andThen(getPeer)).fproduct(getPeerInfo(_)).toMap
5453
val defaultPeer: Peer = peerByNumber(0)
5554

5655
val etcPeerManager: TestProbe = TestProbe()
@@ -59,6 +58,7 @@ trait RegularSyncFixtures { self: Matchers with AsyncMockFactory =>
5958
val pendingTransactionsManager: TestProbe = TestProbe()
6059
val checkpointBlockGenerator: CheckpointBlockGenerator = new CheckpointBlockGenerator()
6160
val peersClient: TestProbe = TestProbe()
61+
val blacklist: CacheBasedBlacklist = CacheBasedBlacklist.empty(100)
6262

6363
lazy val regularSync: ActorRef = system.actorOf(
6464
RegularSync
@@ -69,6 +69,7 @@ trait RegularSyncFixtures { self: Matchers with AsyncMockFactory =>
6969
ledger,
7070
blockchain,
7171
validators.blockValidator,
72+
blacklist,
7273
syncConfig,
7374
ommersPool.ref,
7475
pendingTransactionsManager.ref,

src/test/scala/io/iohk/ethereum/blockchain/sync/regular/RegularSyncSpec.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import akka.util.ByteString
77
import cats.data.NonEmptyList
88
import cats.effect.Resource
99
import cats.syntax.traverse._
10+
import io.iohk.ethereum.blockchain.sync.Blacklist.BlacklistReason
1011
import io.iohk.ethereum.blockchain.sync.SyncProtocol.Status
1112
import io.iohk.ethereum.blockchain.sync.SyncProtocol.Status.Progress
1213
import io.iohk.ethereum.blockchain.sync.regular.RegularSync.NewCheckpoint
@@ -107,8 +108,8 @@ class RegularSyncSpec
107108
regularSync ! SyncProtocol.Start
108109

109110
peersClient.expectMsgType[PeersClient.Request[GetBlockHeaders]]
110-
peersClient.reply(PeersClient.RequestFailed(defaultPeer, "a random reason"))
111-
peersClient.expectMsg(PeersClient.BlacklistPeer(defaultPeer.id, "a random reason"))
111+
peersClient.reply(PeersClient.RequestFailed(defaultPeer, BlacklistReason.RegularSyncRequestFailed("a random reason")))
112+
peersClient.expectMsg(PeersClient.BlacklistPeer(defaultPeer.id, BlacklistReason.RegularSyncRequestFailed("a random reason")))
112113
})
113114

114115
//TODO: To be re-enabled with ETCM-370
@@ -231,7 +232,6 @@ class RegularSyncSpec
231232
defaultPeer.id
232233
)
233234
)
234-
235235
awaitCond(ledger.bestBlock == alternativeBlocks.last, 5.seconds)
236236
}
237237
)

0 commit comments

Comments
 (0)