From d2dcb46f3d10dfd37f25eb0c9c4ad7b53511941b Mon Sep 17 00:00:00 2001 From: Danno Ferrin Date: Fri, 30 Nov 2018 23:37:45 -0700 Subject: [PATCH] [MINOR] no fixed ports in tests (#340) * [MINOR] no fixed ports in tests First enable "0" port in PeerDiscoveryAgent so it binds to an open port. Then change the test to use two PeerDiscoveryAgents The change to zero is accomplished by populating the endpoint with the actual bound socket instead of the value passed in. If it is zero the value will change otherwise it will be the value passed in. --- .../p2p/discovery/PeerDiscoveryAgent.java | 2 +- .../p2p/discovery/PeerDiscoveryAgentTest.java | 33 +++++++++++-------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/ethereum/p2p/src/main/java/tech/pegasys/pantheon/ethereum/p2p/discovery/PeerDiscoveryAgent.java b/ethereum/p2p/src/main/java/tech/pegasys/pantheon/ethereum/p2p/discovery/PeerDiscoveryAgent.java index cc5786d3c1..df01fca322 100644 --- a/ethereum/p2p/src/main/java/tech/pegasys/pantheon/ethereum/p2p/discovery/PeerDiscoveryAgent.java +++ b/ethereum/p2p/src/main/java/tech/pegasys/pantheon/ethereum/p2p/discovery/PeerDiscoveryAgent.java @@ -171,7 +171,7 @@ public class PeerDiscoveryAgent implements DisconnectCallback { completion.completeExceptionally(cause); return; } - initialize(res.result(), tcpPort); + initialize(res.result(), res.result().localAddress().port()); this.isActive = true; completion.complete(null); }); diff --git a/ethereum/p2p/src/test/java/tech/pegasys/pantheon/ethereum/p2p/discovery/PeerDiscoveryAgentTest.java b/ethereum/p2p/src/test/java/tech/pegasys/pantheon/ethereum/p2p/discovery/PeerDiscoveryAgentTest.java index d1335bbd54..12d78a4ca9 100644 --- a/ethereum/p2p/src/test/java/tech/pegasys/pantheon/ethereum/p2p/discovery/PeerDiscoveryAgentTest.java +++ b/ethereum/p2p/src/test/java/tech/pegasys/pantheon/ethereum/p2p/discovery/PeerDiscoveryAgentTest.java @@ -14,7 +14,6 @@ package tech.pegasys.pantheon.ethereum.p2p.discovery; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; -import static tech.pegasys.pantheon.util.bytes.BytesValue.fromHexString; import tech.pegasys.pantheon.crypto.SECP256K1; import tech.pegasys.pantheon.ethereum.p2p.api.MessageData; @@ -130,29 +129,37 @@ public class PeerDiscoveryAgentTest extends AbstractPeerDiscoveryTest { @Test public void shouldEvictPeerOnDisconnect() { final Vertx vertx = Vertx.vertx(); - final SECP256K1.KeyPair keyPair = SECP256K1.KeyPair.generate(); - final BytesValue id = - fromHexString( - "c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b"); - final DefaultPeer peer = new DiscoveryPeer(id, "127.0.0.1", 30303); - final PeerDiscoveryAgent peerDiscoveryAgent = + final SECP256K1.KeyPair keyPair1 = SECP256K1.KeyPair.generate(); + final PeerDiscoveryAgent peerDiscoveryAgent1 = new PeerDiscoveryAgent( vertx, - keyPair, + keyPair1, + DiscoveryConfiguration.create().setBindHost("127.0.0.1").setBindPort(0), + () -> true, + new PeerBlacklist()); + peerDiscoveryAgent1.start(0).join(); + final DefaultPeer peer = peerDiscoveryAgent1.getAdvertisedPeer(); + + final SECP256K1.KeyPair keyPair2 = SECP256K1.KeyPair.generate(); + final PeerDiscoveryAgent peerDiscoveryAgent2 = + new PeerDiscoveryAgent( + vertx, + keyPair2, DiscoveryConfiguration.create() .setBindHost("127.0.0.1") + .setBindPort(0) .setBootstrapPeers(Lists.newArrayList(peer)), () -> true, new PeerBlacklist()); - peerDiscoveryAgent.start(30303).join(); + peerDiscoveryAgent2.start(0).join(); - assertThat(peerDiscoveryAgent.getPeers().size()).isEqualTo(1); + assertThat(peerDiscoveryAgent2.getPeers().size()).isEqualTo(1); - final PeerConnection peerConnection = createAnonymousPeerConnection(id); - peerDiscoveryAgent.onDisconnect(peerConnection, DisconnectReason.REQUESTED, true); + final PeerConnection peerConnection = createAnonymousPeerConnection(peer.getId()); + peerDiscoveryAgent2.onDisconnect(peerConnection, DisconnectReason.REQUESTED, true); - assertThat(peerDiscoveryAgent.getPeers().size()).isEqualTo(0); + assertThat(peerDiscoveryAgent2.getPeers().size()).isEqualTo(0); } @Test