use of com.netflix.spectator.api.NoopRegistry in project zuul by Netflix.
the class ServerTest method getListeningSockets.
@Test
public void getListeningSockets() throws Exception {
ServerStatusManager ssm = mock(ServerStatusManager.class);
Map<NamedSocketAddress, ChannelInitializer<?>> initializers = new HashMap<>();
final List<NioSocketChannel> nioChannels = Collections.synchronizedList(new ArrayList<NioSocketChannel>());
ChannelInitializer<Channel> init = new ChannelInitializer<Channel>() {
@Override
protected void initChannel(final Channel ch) {
LOGGER.info("Channel: " + ch.getClass().getName() + ", isActive=" + ch.isActive() + ", isOpen=" + ch.isOpen());
if (ch instanceof NioSocketChannel) {
nioChannels.add((NioSocketChannel) ch);
}
}
};
initializers.put(new NamedSocketAddress("test", new InetSocketAddress(0)), init);
// The port to channel map keys on the port, post bind. This should be unique even if InetAddress is same
initializers.put(new NamedSocketAddress("test2", new InetSocketAddress(0)), init);
ClientConnectionsShutdown ccs = new ClientConnectionsShutdown(new DefaultChannelGroup(GlobalEventExecutor.INSTANCE), GlobalEventExecutor.INSTANCE, /* discoveryClient= */
null);
EventLoopGroupMetrics elgm = new EventLoopGroupMetrics(Spectator.globalRegistry());
EventLoopConfig elc = new EventLoopConfig() {
@Override
public int eventLoopCount() {
return 1;
}
@Override
public int acceptorCount() {
return 1;
}
};
Server s = new Server(new NoopRegistry(), ssm, initializers, ccs, elgm, elc);
s.start();
List<NamedSocketAddress> addrs = s.getListeningAddresses();
assertEquals(2, addrs.size());
for (NamedSocketAddress address : addrs) {
assertTrue(address.unwrap() instanceof InetSocketAddress);
final int port = ((InetSocketAddress) address.unwrap()).getPort();
assertNotEquals(port, 0);
checkConnection(port);
}
await().atMost(1, SECONDS).until(() -> nioChannels.size() == 2);
s.stop();
assertEquals(2, nioChannels.size());
for (NioSocketChannel ch : nioChannels) {
assertTrue("isShutdown", ch.isShutdown());
}
}
Aggregations