public void shutdown() throws InterruptedException { try { logger.info("Shutting down Riposte..."); List<ChannelFuture> channelCloseFutures = new ArrayList<>(); for (Channel ch : channels) { // execute shutdown hooks if (serverConfig.serverShutdownHooks() != null) { for (ServerShutdownHook hook : serverConfig.serverShutdownHooks()) { hook.executeServerShutdownHook(serverConfig, ch); } } channelCloseFutures.add(ch.close()); } for (ChannelFuture chf : channelCloseFutures) { chf.sync(); } } finally { eventLoopGroups.forEach(EventExecutorGroup::shutdownGracefully); logger.info("...Riposte shutdown complete"); } } }
@Test public void initChannel_executes_pipelineCreateHooks() { // given HttpChannelInitializer hci = basicHttpChannelInitializerNoUtilityHandlers(); List<PipelineCreateHook> hooks = Arrays.asList(mock(PipelineCreateHook.class), mock(PipelineCreateHook.class)); Whitebox.setInternalState(hci, "pipelineCreateHooks", hooks); // when hci.initChannel(socketChannelMock); // then hooks.forEach(hook -> verify(hook).executePipelineCreateHook(channelPipelineMock)); }
hook.executePreServerStartupHook(b); hook.executePostServerStartupHook(serverConfig, ch);
hook.executePreServerStartupHook(b); hook.executePostServerStartupHook(serverConfig, ch);
public void shutdown() throws InterruptedException { try { logger.info("Shutting down Riposte..."); List<ChannelFuture> channelCloseFutures = new ArrayList<>(); for (Channel ch : channels) { // execute shutdown hooks if (serverConfig.serverShutdownHooks() != null) { for (ServerShutdownHook hook : serverConfig.serverShutdownHooks()) { hook.executeServerShutdownHook(serverConfig, ch); } } channelCloseFutures.add(ch.close()); } for (ChannelFuture chf : channelCloseFutures) { chf.sync(); } } finally { eventLoopGroups.forEach(EventExecutorGroup::shutdownGracefully); logger.info("...Riposte shutdown complete"); } } }