Search in sources :

Example 11 with SocketStats

use of io.grpc.InternalChannelz.SocketStats in project grpc-java by grpc.

the class NettyServerTest method channelzListenSocket.

@Test
public void channelzListenSocket() throws Exception {
    InetSocketAddress addr = new InetSocketAddress(0);
    NettyServer ns = new NettyServer(Arrays.asList(addr), new ReflectiveChannelFactory<>(NioServerSocketChannel.class), new HashMap<ChannelOption<?>, Object>(), new HashMap<ChannelOption<?>, Object>(), new FixedObjectPool<>(eventLoop), new FixedObjectPool<>(eventLoop), false, ProtocolNegotiators.plaintext(), Collections.<ServerStreamTracer.Factory>emptyList(), TransportTracer.getDefaultFactory(), // ignore
    1, // ignore
    false, // ignore
    1, // ignore
    1, // ignore
    1, // ignore
    1, // ignore
    1, // ignore
    1, // ignore
    1, // ignore
    1, // ignore
    true, // ignore
    0, Attributes.EMPTY, channelz);
    final SettableFuture<Void> shutdownCompleted = SettableFuture.create();
    ns.start(new ServerListener() {

        @Override
        public ServerTransportListener transportCreated(ServerTransport transport) {
            return new NoopServerTransportListener();
        }

        @Override
        public void serverShutdown() {
            shutdownCompleted.set(null);
        }
    });
    assertThat(((InetSocketAddress) ns.getListenSocketAddress()).getPort()).isGreaterThan(0);
    // SocketStats won't be available until the event loop task of adding SocketStats created by
    // ns.start() complete. So submit a noop task and await until it's drained.
    eventLoop.submit(new Runnable() {

        @Override
        public void run() {
        }
    }).await(5, TimeUnit.SECONDS);
    InternalInstrumented<SocketStats> listenSocket = ns.getListenSocketStats();
    assertSame(listenSocket, channelz.getSocket(id(listenSocket)));
    // very basic sanity check of the contents
    SocketStats socketStats = listenSocket.getStats().get();
    assertEquals(ns.getListenSocketAddress(), socketStats.local);
    assertNull(socketStats.remote);
    // by default, there are some socket options set on the listen socket
    assertThat(socketStats.socketOptions.others).isNotEmpty();
    // Cleanup
    ns.shutdown();
    shutdownCompleted.get();
    // listen socket is removed
    assertNull(channelz.getSocket(id(listenSocket)));
}
Also used : NioServerSocketChannel(io.netty.channel.socket.nio.NioServerSocketChannel) ChannelOption(io.netty.channel.ChannelOption) ServerStreamTracer(io.grpc.ServerStreamTracer) ServerTransport(io.grpc.internal.ServerTransport) InetSocketAddress(java.net.InetSocketAddress) SocketStats(io.grpc.InternalChannelz.SocketStats) ServerTransportListener(io.grpc.internal.ServerTransportListener) ServerListener(io.grpc.internal.ServerListener) Test(org.junit.Test)

Aggregations

SocketStats (io.grpc.InternalChannelz.SocketStats)11 Test (org.junit.Test)6 ServerStats (io.grpc.InternalChannelz.ServerStats)3 ServerTransportListener (io.grpc.internal.ServerTransportListener)3 ChannelOption (io.netty.channel.ChannelOption)3 InetSocketAddress (java.net.InetSocketAddress)3 SocketAddress (java.net.SocketAddress)3 ServerSocketsList (io.grpc.InternalChannelz.ServerSocketsList)2 InternalInstrumented (io.grpc.InternalInstrumented)2 Metadata (io.grpc.Metadata)2 ServerStreamTracer (io.grpc.ServerStreamTracer)2 ServerListener (io.grpc.internal.ServerListener)2 ServerTransport (io.grpc.internal.ServerTransport)2 NioServerSocketChannel (io.netty.channel.socket.nio.NioServerSocketChannel)2 CallOptions (io.grpc.CallOptions)1 ClientStreamTracer (io.grpc.ClientStreamTracer)1 StreamInfo (io.grpc.ClientStreamTracer.StreamInfo)1 InternalMetadata (io.grpc.InternalMetadata)1 Subchannel (io.grpc.LoadBalancer.Subchannel)1 MethodDescriptor (io.grpc.MethodDescriptor)1