public Endpoint endpoint() { checkNotNull( port, "Must either pass port to ctor, or call createNetwork() first to set the port"); return new Endpoint( InetAddress.getLoopbackAddress().getHostAddress(), port, OptionalInt.of(port)); }
@Test public void createFromURIWithoutPortUsesDefault() { final Peer peer = DefaultPeer.fromURI( "enode://c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b@172.20.0.4"); assertEquals( fromHexString( "c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b"), peer.getId()); assertEquals("172.20.0.4", peer.getEndpoint().getHost()); assertEquals(30303, peer.getEndpoint().getUdpPort()); assertEquals(30303, peer.getEndpoint().getTcpPort().getAsInt()); }
private PacketData matchPingDataForPeer(final DiscoveryPeer peer) { return argThat((PacketData data) -> ((PingPacketData) data).getTo().equals(peer.getEndpoint())); }
@Override public String toString() { return shortId() + "@" + selfPeer.getEndpoint().getHost() + ':' + selfPeer.getEndpoint().getTcpPort(); }
private List<DiscoveryPeer> createPeersInLastBucket(final Peer host, final int n) { final List<DiscoveryPeer> newPeers = new ArrayList<DiscoveryPeer>(n); // Flipping the most significant bit of the keccak256 will place the peer // in the last bucket for the corresponding host peer. final Bytes32 keccak256 = host.keccak256(); final MutableBytesValue template = MutableBytesValue.create(keccak256.size()); byte msb = keccak256.get(0); msb ^= MOST_SIGNFICANT_BIT_MASK; template.set(0, msb); for (int i = 0; i < n; i++) { template.setInt(template.size() - 4, i); final Bytes32 newKeccak256 = Bytes32.leftPad(template.copy()); final DiscoveryPeer newPeer = mock(DiscoveryPeer.class); when(newPeer.keccak256()).thenReturn(newKeccak256); final MutableBytesValue newId = MutableBytesValue.create(64); UInt256.of(i).getBytes().copyTo(newId, newId.size() - UInt256Value.SIZE); when(newPeer.getId()).thenReturn(newId); when(newPeer.getEndpoint()) .thenReturn( new Endpoint( host.getEndpoint().getHost(), 100 + counter.incrementAndGet(), OptionalInt.empty())); newPeers.add(newPeer); } return newPeers; }
@Test public void createPeer() { final BytesValue id = fromHexString( "c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b"); final String host = "127.0.0.1"; final int port = 30303; final DiscoveryPeer peer = new DiscoveryPeer(id, host, port); assertEquals(id, peer.getId()); assertEquals(host, peer.getEndpoint().getHost()); assertEquals(port, peer.getEndpoint().getUdpPort()); }
@Test public void createFromURI() { final Peer peer = DefaultPeer.fromURI( "enode://c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b@172.20.0.4:30403"); assertEquals( fromHexString( "c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b"), peer.getId()); assertEquals("172.20.0.4", peer.getEndpoint().getHost()); assertEquals(30403, peer.getEndpoint().getUdpPort()); assertEquals(30403, peer.getEndpoint().getTcpPort().getAsInt()); }
private Peer mockPeer() { final Peer peer = mock(Peer.class); final BytesValue id = SECP256K1.KeyPair.generate().getPublicKey().getEncodedBytes(); when(peer.getId()).thenReturn(id); when(peer.getEndpoint()).thenReturn(new Endpoint("127.0.0.1", 30303, OptionalInt.of(30303))); return peer; } }
@Test public void createPeerFromURIWithDifferentUdpAndTcpPorts() { final Peer peer = DefaultPeer.fromURI( "enode://c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b@172.20.0.4:12345?discport=22222"); assertEquals( fromHexString( "c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b"), peer.getId()); assertEquals("172.20.0.4", peer.getEndpoint().getHost()); assertEquals(22222, peer.getEndpoint().getUdpPort()); assertEquals(12345, peer.getEndpoint().getTcpPort().getAsInt()); }
@Test public void shouldDecodeValidPongPacket() { final Packet packet = decode(VALID_PONG_PACKET); final PongPacketData packetData = packet.getPacketData(PongPacketData.class).get(); assertThat(packet.getType()).isSameAs(PacketType.PONG); assertThat(packetData.getTo()) .isEqualTo(new Endpoint("180.181.122.26", 1025, OptionalInt.of(30303))); assertThat(packetData.getPingHash()) .isEqualTo( BytesValue.fromHexString( "0x46896547d3b4259aa1a67bd26e7ec58ab4be650c5552ef0360caf9dae489d53b")); assertThat(packetData.getExpiration()).isEqualTo(1535585736); assertThat(packet.getNodeId()) .isEqualTo( BytesValue.fromHexString( "0x669f45b66acf3b804c26ce13cfdd1f7e3d0ff4ed85060841b9af3af6dbfbacd05181e1c9363161446a307f3ca24e707856a01e4bf1eed5e1aefc14011a5c1c1c")); assertThat(packet.getHash()) .isEqualTo( BytesValue.fromHexString( "0xa1581c1705e744976d0341011c4490b3ab0b48283407ae5cf7526b9487174896")); }
@Test public void createFromIpv6URI() { final Peer peer = DefaultPeer.fromURI( "enode://c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b@[2001:0DB8:85A3:0000::8A2E:370:7334]:30403"); assertEquals( fromHexString( "c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b"), peer.getId()); // We expect bracket unwrapping, zero group removal via double colon, and leading zeros // trimmed, and lowercase hex digits. assertEquals("2001:db8:85a3::8a2e:370:7334", peer.getEndpoint().getHost()); assertEquals(30403, peer.getEndpoint().getUdpPort()); assertEquals(30403, peer.getEndpoint().getTcpPort().getAsInt()); }
@Test public void createPeerFromURIWithDifferentUdpAndTcpPorts_InvalidTcpPort() { final Peer[] peers = new Peer[] { DefaultPeer.fromURI( "enode://c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b@172.20.0.4:12345?discport=99999"), DefaultPeer.fromURI( "enode://c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b@172.20.0.4:12345?discport=99999000") }; for (final Peer peer : peers) { assertEquals( fromHexString( "c7849b663d12a2b5bf05b1ebf5810364f4870d5f1053fbd7500d38bc54c705b453d7511ca8a4a86003d34d4c8ee0bbfcd387aa724f5b240b3ab4bbb994a1e09b"), peer.getId()); assertEquals("172.20.0.4", peer.getEndpoint().getHost()); assertEquals(12345, peer.getEndpoint().getUdpPort()); assertEquals(12345, peer.getEndpoint().getTcpPort().getAsInt()); } } }
assertThat(isInetAddress(ping.getTo().getHost())).isTrue(); assertThat(isInetAddress(ping.getFrom().getHost())).isTrue(); assertThat(ping.getTo().getUdpPort()).isPositive(); assertThat(ping.getFrom().getUdpPort()).isPositive(); ping.getTo().getTcpPort().ifPresent(p -> assertThat(p).isPositive()); ping.getFrom().getTcpPort().ifPresent(p -> assertThat(p).isPositive()); assertThat(ping.getExpiration()).isPositive(); break; assertThat(isInetAddress(pong.getTo().getHost())).isTrue(); assertThat(pong.getTo().getUdpPort()).isPositive(); pong.getTo().getTcpPort().ifPresent(p -> assertThat(p).isPositive()); assertThat(pong.getPingHash().extractArray()).hasSize(32); assertThat(pong.getExpiration()).isPositive(); assertThat(NetworkUtility.isValidPort(p.getEndpoint().getUdpPort())).isTrue(); assertThat(isInetAddress(p.getEndpoint().getHost())).isTrue(); assertThat(p.getId().extractArray()).hasSize(64);
new DefaultPeer( localId, new Endpoint( InetAddress.getLoopbackAddress().getHostAddress(), localListenPort,
new DefaultPeer( listenId, new Endpoint( InetAddress.getLoopbackAddress().getHostAddress(), listenPort,
new DefaultPeer( listenId, new Endpoint( InetAddress.getLoopbackAddress().getHostAddress(), listenPort,
new DefaultPeer( listenId, new Endpoint( InetAddress.getLoopbackAddress().getHostAddress(), listenPort,