diff options
author | Kun Zhang <zhangkun83@users.noreply.github.com> | 2018-10-03 16:43:37 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-03 16:43:37 -0700 |
commit | fbfc3a40d073237a3da625e4da300bc7343b26d8 (patch) | |
tree | 106dd93d5bc07e8fc35685734d5c6a292f63aa49 /netty | |
parent | 31328652d42320a1faeed67ee237abaf78b13b28 (diff) | |
download | grpc-grpc-java-fbfc3a40d073237a3da625e4da300bc7343b26d8.tar.gz |
core: add Grpc.TRANSPORT_ATTR_LOCAL_ADDR (#4906)
Resolves #4135
Diffstat (limited to 'netty')
-rw-r--r-- | netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java | 5 | ||||
-rw-r--r-- | netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java b/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java index 3decd6626..684a67f3e 100644 --- a/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java +++ b/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java @@ -90,6 +90,7 @@ public final class ProtocolNegotiators { // Set sttributes before replace to be sure we pass it before accepting any requests. handler.handleProtocolNegotiationCompleted(Attributes.newBuilder() .set(Grpc.TRANSPORT_ATTR_REMOTE_ADDR, ctx.channel().remoteAddress()) + .set(Grpc.TRANSPORT_ATTR_LOCAL_ADDR, ctx.channel().localAddress()) .build(), /*securityInfo=*/ null); // Just replace this handler with the gRPC handler. @@ -163,6 +164,7 @@ public final class ProtocolNegotiators { Attributes.newBuilder() .set(Grpc.TRANSPORT_ATTR_SSL_SESSION, session) .set(Grpc.TRANSPORT_ATTR_REMOTE_ADDR, ctx.channel().remoteAddress()) + .set(Grpc.TRANSPORT_ATTR_LOCAL_ADDR, ctx.channel().localAddress()) .build(), new InternalChannelz.Security(new InternalChannelz.Tls(session))); // Replace this handler with the GRPC handler. @@ -673,6 +675,7 @@ public final class ProtocolNegotiators { Attributes.newBuilder() .set(Grpc.TRANSPORT_ATTR_SSL_SESSION, session) .set(Grpc.TRANSPORT_ATTR_REMOTE_ADDR, ctx.channel().remoteAddress()) + .set(Grpc.TRANSPORT_ATTR_LOCAL_ADDR, ctx.channel().localAddress()) .set(CallCredentials.ATTR_SECURITY_LEVEL, SecurityLevel.PRIVACY_AND_INTEGRITY) .build(), new InternalChannelz.Security(new InternalChannelz.Tls(session))); @@ -721,6 +724,7 @@ public final class ProtocolNegotiators { Attributes .newBuilder() .set(Grpc.TRANSPORT_ATTR_REMOTE_ADDR, ctx.channel().remoteAddress()) + .set(Grpc.TRANSPORT_ATTR_LOCAL_ADDR, ctx.channel().localAddress()) .set(CallCredentials.ATTR_SECURITY_LEVEL, SecurityLevel.NONE) .build(), /*securityInfo=*/ null); @@ -764,6 +768,7 @@ public final class ProtocolNegotiators { Attributes .newBuilder() .set(Grpc.TRANSPORT_ATTR_REMOTE_ADDR, ctx.channel().remoteAddress()) + .set(Grpc.TRANSPORT_ATTR_LOCAL_ADDR, ctx.channel().localAddress()) .set(CallCredentials.ATTR_SECURITY_LEVEL, SecurityLevel.NONE) .build(), /*securityInfo=*/ null); diff --git a/netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java b/netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java index 509af3300..bd3c1e3a2 100644 --- a/netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java +++ b/netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java @@ -77,12 +77,14 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.InetSocketAddress; +import java.net.SocketAddress; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; +import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import javax.net.ssl.SSLHandshakeException; @@ -105,6 +107,8 @@ public class NettyClientTransportTest { private ManagedClientTransport.Listener clientTransportListener; private final List<NettyClientTransport> transports = new ArrayList<>(); + private final LinkedBlockingQueue<Attributes> serverTransportAttributesList = + new LinkedBlockingQueue<>(); private final NioEventLoopGroup group = new NioEventLoopGroup(1); private final EchoServerListener serverListener = new EchoServerListener(); private final InternalChannelz channelz = new InternalChannelz(); @@ -536,6 +540,11 @@ public class NettyClientTransportTest { assertNotNull(rpc.stream.getAttributes().get(Grpc.TRANSPORT_ATTR_SSL_SESSION)); assertEquals(address, rpc.stream.getAttributes().get(Grpc.TRANSPORT_ATTR_REMOTE_ADDR)); + Attributes serverTransportAttrs = serverTransportAttributesList.poll(1, TimeUnit.SECONDS); + assertNotNull(serverTransportAttrs); + SocketAddress clientAddr = serverTransportAttrs.get(Grpc.TRANSPORT_ATTR_REMOTE_ADDR); + assertNotNull(clientAddr); + assertEquals(clientAddr, rpc.stream.getAttributes().get(Grpc.TRANSPORT_ATTR_LOCAL_ADDR)); } @Test @@ -749,7 +758,7 @@ public class NettyClientTransportTest { } } - private static final class EchoServerListener implements ServerListener { + private final class EchoServerListener implements ServerListener { final List<NettyServerTransport> transports = new ArrayList<>(); final List<EchoServerStreamListener> streamListeners = Collections.synchronizedList(new ArrayList<EchoServerStreamListener>()); @@ -769,6 +778,7 @@ public class NettyClientTransportTest { @Override public Attributes transportReady(Attributes transportAttrs) { + serverTransportAttributesList.add(transportAttrs); return transportAttrs; } |