@Override public String toString() { return shortId() + "@" + selfPeer.getEndpoint().getHost() + ':' + selfPeer.getEndpoint().getTcpPort(); }
private static Packet mockPingPacket(final Peer from, final Peer to) { final Packet packet = mock(Packet.class); final PingPacketData pingPacketData = PingPacketData.create(from.getEndpoint(), to.getEndpoint()); when(packet.getPacketData(any())).thenReturn(Optional.of(pingPacketData)); final BytesValue id = from.getId(); when(packet.getNodeId()).thenReturn(id); when(packet.getType()).thenReturn(PacketType.PING); when(packet.getHash()).thenReturn(Bytes32.ZERO); return packet; }
public static Packet mockPongPacket(final Peer from, final BytesValue pingHash) { final Packet packet = mock(Packet.class); final PongPacketData pongPacketData = PongPacketData.create(from.getEndpoint(), pingHash); when(packet.getPacketData(any())).thenReturn(Optional.of(pongPacketData)); final BytesValue id = from.getId(); when(packet.getNodeId()).thenReturn(id); when(packet.getType()).thenReturn(PacketType.PONG); when(packet.getHash()).thenReturn(Bytes32.ZERO); return packet; }
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 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()); }
@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 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()); }
@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()); } } }
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; }
assertThat(NetworkUtility.isValidPort(p.getEndpoint().getUdpPort())).isTrue(); assertThat(isInetAddress(p.getEndpoint().getHost())).isTrue(); assertThat(p.getId().extractArray()).hasSize(64);