Search in sources :

Example 96 with Peer

use of org.hyperledger.besu.ethereum.p2p.peers.Peer in project besu by hyperledger.

the class RlpxAgentTest method connect_failsWhenMaxPeersConnected.

@Test
public void connect_failsWhenMaxPeersConnected() {
    // Saturate connections
    startAgentWithMaxPeers(1);
    agent.connect(createPeer());
    final Peer peer = createPeer();
    final CompletableFuture<PeerConnection> connection = agent.connect(peer);
    assertThat(connection).isDone();
    assertThat(connection).isCompletedExceptionally();
    assertThatThrownBy(connection::get).hasCauseInstanceOf(IllegalStateException.class).hasMessageContaining("Max peer connections established (1). Cannot connect to peer");
    assertPeerConnectionNotTracked(peer);
    assertThat(agent.getConnectionCount()).isEqualTo(1);
}
Also used : MockPeerConnection(org.hyperledger.besu.ethereum.p2p.rlpx.connections.MockPeerConnection) PeerConnection(org.hyperledger.besu.ethereum.p2p.rlpx.connections.PeerConnection) Peer(org.hyperledger.besu.ethereum.p2p.peers.Peer) PeerTestHelper.createPeer(org.hyperledger.besu.ethereum.p2p.peers.PeerTestHelper.createPeer) DefaultPeer(org.hyperledger.besu.ethereum.p2p.peers.DefaultPeer) DiscoveryPeer(org.hyperledger.besu.ethereum.p2p.discovery.DiscoveryPeer) Test(org.junit.Test)

Example 97 with Peer

use of org.hyperledger.besu.ethereum.p2p.peers.Peer in project besu by hyperledger.

the class RlpxAgentTest method connect_failsIfPeerIsNotListening.

@Test
public void connect_failsIfPeerIsNotListening() {
    startAgent();
    final Peer peer = DefaultPeer.fromEnodeURL(enodeBuilder().disableListening().build());
    final CompletableFuture<PeerConnection> connection = agent.connect(peer);
    assertThat(connection).isDone();
    assertThat(connection).isCompletedExceptionally();
    assertThatThrownBy(connection::get).hasCauseInstanceOf(IllegalArgumentException.class).hasMessageContaining("Attempt to connect to peer with no listening port");
    assertPeerConnectionNotTracked(peer);
}
Also used : MockPeerConnection(org.hyperledger.besu.ethereum.p2p.rlpx.connections.MockPeerConnection) PeerConnection(org.hyperledger.besu.ethereum.p2p.rlpx.connections.PeerConnection) Peer(org.hyperledger.besu.ethereum.p2p.peers.Peer) PeerTestHelper.createPeer(org.hyperledger.besu.ethereum.p2p.peers.PeerTestHelper.createPeer) DefaultPeer(org.hyperledger.besu.ethereum.p2p.peers.DefaultPeer) DiscoveryPeer(org.hyperledger.besu.ethereum.p2p.discovery.DiscoveryPeer) Test(org.junit.Test)

Example 98 with Peer

use of org.hyperledger.besu.ethereum.p2p.peers.Peer in project besu by hyperledger.

the class RlpxAgentTest method getPeerConnection_established.

@Test
public void getPeerConnection_established() {
    startAgent();
    final Peer peer = createPeer();
    final CompletableFuture<PeerConnection> future = agent.connect(peer);
    assertThat(future).isDone();
    assertThat(agent.getPeerConnection(peer)).contains(future);
}
Also used : MockPeerConnection(org.hyperledger.besu.ethereum.p2p.rlpx.connections.MockPeerConnection) PeerConnection(org.hyperledger.besu.ethereum.p2p.rlpx.connections.PeerConnection) Peer(org.hyperledger.besu.ethereum.p2p.peers.Peer) PeerTestHelper.createPeer(org.hyperledger.besu.ethereum.p2p.peers.PeerTestHelper.createPeer) DefaultPeer(org.hyperledger.besu.ethereum.p2p.peers.DefaultPeer) DiscoveryPeer(org.hyperledger.besu.ethereum.p2p.discovery.DiscoveryPeer) Test(org.junit.Test)

Example 99 with Peer

use of org.hyperledger.besu.ethereum.p2p.peers.Peer in project besu by hyperledger.

the class RlpxConnectionTest method disconnect_pendingOutboundConnection.

@Test
public void disconnect_pendingOutboundConnection() {
    final Peer peer = createPeer();
    final CompletableFuture<PeerConnection> future = new CompletableFuture<>();
    final RlpxConnection conn = RlpxConnection.outboundConnection(peer, future);
    final DisconnectReason reason = DisconnectReason.REQUESTED;
    conn.disconnect(reason);
    assertThat(conn.isFailedOrDisconnected()).isFalse();
    // Resolve future
    final PeerConnection peerConnection = peerConnection(peer);
    future.complete(peerConnection);
    // Check disconnect was issued
    verify(peerConnection).disconnect(reason);
    assertThat(conn.isFailedOrDisconnected()).isTrue();
}
Also used : CompletableFuture(java.util.concurrent.CompletableFuture) DisconnectReason(org.hyperledger.besu.ethereum.p2p.rlpx.wire.messages.DisconnectMessage.DisconnectReason) PeerTestHelper.createPeer(org.hyperledger.besu.ethereum.p2p.peers.PeerTestHelper.createPeer) Peer(org.hyperledger.besu.ethereum.p2p.peers.Peer) Test(org.junit.Test)

Example 100 with Peer

use of org.hyperledger.besu.ethereum.p2p.peers.Peer in project besu by hyperledger.

the class RlpxConnectionTest method getPeerConnection_pendingOutboundConnection.

@Test
public void getPeerConnection_pendingOutboundConnection() {
    final Peer peer = createPeer();
    final CompletableFuture<PeerConnection> future = new CompletableFuture<>();
    final RlpxConnection conn = RlpxConnection.outboundConnection(peer, future);
    assertThatThrownBy(conn::getPeerConnection).isInstanceOf(ConnectionNotEstablishedException.class);
}
Also used : CompletableFuture(java.util.concurrent.CompletableFuture) PeerTestHelper.createPeer(org.hyperledger.besu.ethereum.p2p.peers.PeerTestHelper.createPeer) Peer(org.hyperledger.besu.ethereum.p2p.peers.Peer) Test(org.junit.Test)

Aggregations

Peer (org.hyperledger.besu.ethereum.p2p.peers.Peer)108 Test (org.junit.Test)102 DefaultPeer (org.hyperledger.besu.ethereum.p2p.peers.DefaultPeer)73 PeerTestHelper.createPeer (org.hyperledger.besu.ethereum.p2p.peers.PeerTestHelper.createPeer)59 DiscoveryPeer (org.hyperledger.besu.ethereum.p2p.discovery.DiscoveryPeer)54 PeerConnection (org.hyperledger.besu.ethereum.p2p.rlpx.connections.PeerConnection)51 MockPeerConnection (org.hyperledger.besu.ethereum.p2p.rlpx.connections.MockPeerConnection)41 CompletableFuture (java.util.concurrent.CompletableFuture)25 Bytes (org.apache.tuweni.bytes.Bytes)21 EnodeURL (org.hyperledger.besu.plugin.data.EnodeURL)16 DisconnectReason (org.hyperledger.besu.ethereum.p2p.rlpx.wire.messages.DisconnectMessage.DisconnectReason)14 PeerPermissions (org.hyperledger.besu.ethereum.p2p.permissions.PeerPermissions)10 MockPeerDiscoveryAgent (org.hyperledger.besu.ethereum.p2p.discovery.internal.MockPeerDiscoveryAgent)8 Optional (java.util.Optional)7 NodeKey (org.hyperledger.besu.crypto.NodeKey)7 IncomingPacket (org.hyperledger.besu.ethereum.p2p.discovery.internal.MockPeerDiscoveryAgent.IncomingPacket)7 PeerPermissionsDenylist (org.hyperledger.besu.ethereum.p2p.permissions.PeerPermissionsDenylist)6 PeerInfo (org.hyperledger.besu.ethereum.p2p.rlpx.wire.PeerInfo)6 ArrayList (java.util.ArrayList)5 List (java.util.List)5