@Override public String toString() { return format( hostname, port ); }
public boolean isIPv6() { return isIPv6( hostname ); }
@Test void shouldSupportPortOnly() { SocketAddress socketAddress = SocketAddressParser.deriveSocketAddress( "setting.name", ":123", "my.domain", 456, SocketAddress::new ); assertEquals( "my.domain", socketAddress.getHostname() ); assertEquals( 123, socketAddress.getPort() ); assertEquals( "my.domain:123", socketAddress.toString() ); assertFalse( socketAddress.isWildcard() ); }
@Test void shouldSupportDomainNameWithPort() { SocketAddress socketAddress = SocketAddressParser.socketAddress( "my.domain:123", SocketAddress::new ); assertEquals( "my.domain", socketAddress.getHostname() ); assertEquals( 123, socketAddress.getPort() ); assertEquals( "my.domain:123", socketAddress.toString() ); }
@Test void shouldCreateAdvertisedSocketAddressWithLeadingWhitespace() { // given String addressString = whitespace( 1 ) + "localhost:9999"; // when SocketAddress address = SocketAddressParser.socketAddress( addressString, SocketAddress::new ); // then assertEquals( "localhost", address.getHostname() ); assertEquals( 9999, address.getPort() ); }
@Test void shouldNotAllowNullAsHostname() { assertThrows( IllegalArgumentException.class, () -> new SocketAddress( null, 1 ) ); }
private <T extends SocketAddress> Object[] buildRow( Pair<T,ProtocolStack> connectionInfo, String orientation ) { T socketAddress = connectionInfo.first(); ProtocolStack protocolStack = connectionInfo.other(); return new Object[] { orientation, socketAddress.toString(), protocolStack.applicationProtocol().category(), (long) protocolStack.applicationProtocol().implementation(), modifierString( protocolStack ) }; }
fChannel = bootstrap.connect( destination.socketAddress() ); channel = fChannel.channel(); cappedLogger.warn( "Failed to connect to: " + destination.socketAddress() + ". Retrying in " + millis + " ms" ); f.channel().eventLoop().schedule( this::tryConnect, millis, MILLISECONDS ); connectionBackoff.increment();
@Test void shouldNotUseDefaultsWhenSettingValueSupplied() { SocketAddress socketAddress = SocketAddressParser.deriveSocketAddress( "setting.name", "[fe80:3:4::6]:456", "fe80:1:2::4", 123, SocketAddress::new ); assertEquals( "fe80:3:4::6", socketAddress.getHostname() ); assertEquals( 456, socketAddress.getPort() ); assertEquals( "[fe80:3:4::6]:456", socketAddress.toString() ); assertFalse( socketAddress.isWildcard() ); }
@Test void shouldCreateAdvertisedSocketAddressWithTrailingWhitespace() { // given String addressString = "localhost:9999" + whitespace( 2 ); // when SocketAddress address = SocketAddressParser.socketAddress( addressString, SocketAddress::new ); // then assertEquals( "localhost", address.getHostname() ); assertEquals( 9999, address.getPort() ); }
@Test void shouldNotAllowEndBracket() { assertThrows( IllegalArgumentException.class, () -> new SocketAddress( "]", 3 ) ); } }
@Test void shouldSupportIPv6AddressWithBrackets() { SocketAddress socketAddress = SocketAddressParser.socketAddress( "[fe80:1:2:3:4::5]:123", SocketAddress::new ); assertEquals( "fe80:1:2:3:4::5", socketAddress.getHostname() ); assertEquals( 123, socketAddress.getPort() ); assertEquals( "[fe80:1:2:3:4::5]:123", socketAddress.toString() ); assertFalse( socketAddress.isWildcard() ); }
@Override public String clientAddress() { return format( clientAddress ); }
private <T extends SocketAddress> Stream<Object[]> toOutputRows( Supplier<Stream<Pair<T,ProtocolStack>>> installedProtocols, String orientation ) { Comparator<Pair<T,ProtocolStack>> connectionInfoComparator = Comparator.comparing( ( Pair<T,ProtocolStack> entry ) -> entry.first().getHostname() ) .thenComparing( entry -> entry.first().getPort() ); return installedProtocols.get() .sorted( connectionInfoComparator ) .map( entry -> buildRow( entry, orientation ) ); }
@Test void shouldNotAllowStartBracket() { assertThrows( IllegalArgumentException.class, () -> new SocketAddress( "[", 2 ) ); }
public static String format( String hostname, int port ) { return String.format( isIPv6( hostname ) ? "[%s]:%s" : "%s:%s", hostname, port ); }
@Test void shouldSupportDefaultWildcard() { SocketAddress socketAddress = SocketAddressParser.deriveSocketAddress( "setting.name", null, "0.0.0.0", 456, SocketAddress::new ); assertEquals( "0.0.0.0", socketAddress.getHostname() ); assertEquals( 456, socketAddress.getPort() ); assertEquals( "0.0.0.0:456", socketAddress.toString() ); assertTrue( socketAddress.isWildcard() ); }
@Override public String requestURI() { return serverAddress == null ? requestPath : protocol + "://" + format( serverAddress ) + requestPath; }
private SocketAddress toSocketAddress( SocketChannel channel ) { InetSocketAddress inetSocketAddress = channel.remoteAddress(); return new SocketAddress( inetSocketAddress.getHostString(), inetSocketAddress.getPort() ); } }
public boolean isIPv6() { return isIPv6( hostname ); }