@Test public void blacklistIncompatiblePeerWhoIssuesDisconnect() { final PeerBlacklist blacklist = new PeerBlacklist(); final PeerConnection peer = generatePeerConnection(); assertThat(blacklist.contains(peer)).isFalse(); blacklist.onDisconnect(peer, DisconnectReason.INCOMPATIBLE_P2P_PROTOCOL_VERSION, true); assertThat(blacklist.contains(peer)).isTrue(); }
@Test public void doesNotBlacklistPeerForNormalDisconnect() { final PeerBlacklist blacklist = new PeerBlacklist(); final PeerConnection peer = generatePeerConnection(); assertThat(blacklist.contains(peer)).isFalse(); blacklist.onDisconnect(peer, DisconnectReason.TOO_MANY_PEERS, false); assertThat(blacklist.contains(peer)).isFalse(); }
@Test public void doesNotBlacklistPeerForOurBadBehavior() { final PeerBlacklist blacklist = new PeerBlacklist(); final PeerConnection peer = generatePeerConnection(); assertThat(blacklist.contains(peer)).isFalse(); blacklist.onDisconnect(peer, DisconnectReason.BREACH_OF_PROTOCOL, true); assertThat(blacklist.contains(peer)).isFalse(); }
@Test public void blacklistPeerForBadBehavior() { final PeerBlacklist blacklist = new PeerBlacklist(); final PeerConnection peer = generatePeerConnection(); assertThat(blacklist.contains(peer)).isFalse(); blacklist.onDisconnect(peer, DisconnectReason.BREACH_OF_PROTOCOL, false); assertThat(blacklist.contains(peer)).isTrue(); }
@Test public void blacklistIncompatiblePeer() { final PeerBlacklist blacklist = new PeerBlacklist(); final PeerConnection peer = generatePeerConnection(); assertThat(blacklist.contains(peer)).isFalse(); blacklist.onDisconnect(peer, DisconnectReason.INCOMPATIBLE_P2P_PROTOCOL_VERSION, false); assertThat(blacklist.contains(peer)).isTrue(); }
blacklist.onDisconnect(peer1, DisconnectReason.BREACH_OF_PROTOCOL, false); assertThat(blacklist.contains(peer1)).isTrue(); assertThat(blacklist.contains(peer2)).isFalse(); blacklist.onDisconnect(peer2, DisconnectReason.BREACH_OF_PROTOCOL, false); assertThat(blacklist.contains(peer1)).isTrue(); assertThat(blacklist.contains(peer2)).isTrue(); blacklist.onDisconnect(peer3, DisconnectReason.BREACH_OF_PROTOCOL, false); assertThat(blacklist.contains(peer1)).isFalse(); assertThat(blacklist.contains(peer2)).isTrue(); blacklist.onDisconnect(peer1, DisconnectReason.BREACH_OF_PROTOCOL, false); assertThat(blacklist.contains(peer1)).isTrue(); assertThat(blacklist.contains(peer2)).isFalse(); blacklist.onDisconnect(peer2, DisconnectReason.BREACH_OF_PROTOCOL, false); assertThat(blacklist.contains(peer1)).isTrue(); assertThat(blacklist.contains(peer2)).isTrue();
@Test public void blacklistIncompatiblePeer() throws Exception { // Start an agent with no bootstrap peers. final PeerBlacklist blacklist = new PeerBlacklist(); final MockPeerDiscoveryAgent agent = helper.startDiscoveryAgent(Collections.emptyList(), blacklist); // Setup peer final MockPeerDiscoveryAgent otherNode = helper.startDiscoveryAgent(); final PeerConnection wirePeer = createAnonymousPeerConnection(otherNode.getId()); // Bond to peer bondViaIncomingPing(agent, otherNode); assertThat(agent.getPeers()).hasSize(1); // Disconnect blacklist.onDisconnect(wirePeer, DisconnectReason.INCOMPATIBLE_P2P_PROTOCOL_VERSION, false); agent.onDisconnect(wirePeer, DisconnectReason.INCOMPATIBLE_P2P_PROTOCOL_VERSION, false); // Confirm peer was removed assertThat(agent.getPeers()).hasSize(0); // Bond again bondViaIncomingPing(agent, otherNode); // Check peer was not allowed to connect assertThat(agent.getPeers()).hasSize(0); }
@Test public void doesNotBlacklistPeerForOurBadBehavior() throws Exception { // Start an agent with no bootstrap peers. final PeerBlacklist blacklist = new PeerBlacklist(); final MockPeerDiscoveryAgent agent = helper.startDiscoveryAgent(Collections.emptyList(), blacklist); // Setup peer final MockPeerDiscoveryAgent otherNode = helper.startDiscoveryAgent(); final PeerConnection wirePeer = createAnonymousPeerConnection(otherNode.getId()); // Bond to peer bondViaIncomingPing(agent, otherNode); assertThat(agent.getPeers()).hasSize(1); // Disconnect with problematic reason blacklist.onDisconnect(wirePeer, DisconnectReason.BREACH_OF_PROTOCOL, true); agent.onDisconnect(wirePeer, DisconnectReason.BREACH_OF_PROTOCOL, true); // Confirm peer was removed assertThat(agent.getPeers()).hasSize(0); // Bond again bondViaIncomingPing(agent, otherNode); // Check peer was allowed to connect assertThat(agent.getPeers()).hasSize(1); }
@Test public void blacklistPeerForBadBehavior() { // Start an agent with no bootstrap peers. final PeerBlacklist blacklist = new PeerBlacklist(); final MockPeerDiscoveryAgent agent = helper.startDiscoveryAgent(Collections.emptyList(), blacklist); // Setup peer final MockPeerDiscoveryAgent otherNode = helper.startDiscoveryAgent(); final PeerConnection wirePeer = createAnonymousPeerConnection(otherNode.getId()); // Bond to peer bondViaIncomingPing(agent, otherNode); assertThat(agent.getPeers()).hasSize(1); // Disconnect with problematic reason blacklist.onDisconnect(wirePeer, DisconnectReason.BREACH_OF_PROTOCOL, false); agent.onDisconnect(wirePeer, DisconnectReason.BREACH_OF_PROTOCOL, false); // Confirm peer was removed assertThat(agent.getPeers()).hasSize(0); // Bond again bondViaIncomingPing(agent, otherNode); // Check peer was not allowed to connect assertThat(agent.getPeers()).hasSize(0); }
@Test public void doesNotBlacklistPeerForNormalDisconnect() { // Start an agent with no bootstrap peers. final PeerBlacklist blacklist = new PeerBlacklist(); final MockPeerDiscoveryAgent agent = helper.startDiscoveryAgent(Collections.emptyList(), blacklist); // Setup peer final MockPeerDiscoveryAgent otherNode = helper.startDiscoveryAgent(); final PeerConnection wirePeer = createAnonymousPeerConnection(otherNode.getId()); // Bond to peer bondViaIncomingPing(agent, otherNode); assertThat(agent.getPeers()).hasSize(1); // Disconnect with innocuous reason blacklist.onDisconnect(wirePeer, DisconnectReason.TOO_MANY_PEERS, false); agent.onDisconnect(wirePeer, DisconnectReason.TOO_MANY_PEERS, false); // Confirm peer was removed assertThat(agent.getPeers()).hasSize(0); // Bond again bondViaIncomingPing(agent, otherNode); // Check peer was allowed to connect assertThat(agent.getPeers()).hasSize(1); }
@Test public void blacklistIncompatiblePeerWhoIssuesDisconnect() throws Exception { // Start an agent with no bootstrap peers. final PeerBlacklist blacklist = new PeerBlacklist(); final MockPeerDiscoveryAgent agent = helper.startDiscoveryAgent(Collections.emptyList(), blacklist); // Setup peer final MockPeerDiscoveryAgent otherNode = helper.startDiscoveryAgent(); final PeerConnection wirePeer = createAnonymousPeerConnection(otherNode.getId()); // Bond to peer bondViaIncomingPing(agent, otherNode); assertThat(agent.getPeers()).hasSize(1); // Disconnect blacklist.onDisconnect(wirePeer, DisconnectReason.INCOMPATIBLE_P2P_PROTOCOL_VERSION, true); agent.onDisconnect(wirePeer, DisconnectReason.INCOMPATIBLE_P2P_PROTOCOL_VERSION, true); // Confirm peer was removed assertThat(agent.getPeers()).hasSize(0); // Bond again bondViaIncomingPing(agent, otherNode); // Check peer was not allowed to connect assertThat(agent.getPeers()).hasSize(0); }