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);
}
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);
}
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);
}
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();
}
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);
}
Aggregations