@Test public void disposeOnlyOnce() { PooledConnectionProvider.Pool pool = new PooledConnectionProvider.Pool( new Bootstrap().group(new DefaultEventLoopGroup()), (b, handler, checker) -> channelPool, ChannelOperations.OnSetup.empty() ); PooledConnectionProvider poolResources = new PooledConnectionProvider("test", (b, handler, checker) -> channelPool); //"register" our fake Pool poolResources.channelPools.put( new PooledConnectionProvider.PoolKey( InetSocketAddress.createUnresolved("localhost", 80), -1), pool); poolResources.dispose(); assertThat(closed.get()).as("pool closed by dispose()").isEqualTo(1); Mono<Void> disposer = poolResources.disposeLater(); disposer.subscribe(); poolResources.disposeLater().subscribe(); poolResources.dispose(); assertThat(closed.get()).as("pool closed only once").isEqualTo(1); }
PoolKey holder = new PoolKey(bootstrap.config().remoteAddress(), handler != null ? handler.hashCode() : -1);
PoolKey holder = new PoolKey(bootstrap.config().remoteAddress(), handler != null ? handler.hashCode() : -1);
@Test public void disposeLaterDefers() { PooledConnectionProvider.Pool pool = new PooledConnectionProvider.Pool( new Bootstrap().group(new DefaultEventLoopGroup()), (b, handler, checker) -> channelPool, ChannelOperations.OnSetup.empty()); PooledConnectionProvider poolResources = new PooledConnectionProvider("test", (b, handler, checker) -> channelPool); //"register" our fake Pool poolResources.channelPools.put( new PooledConnectionProvider.PoolKey( InetSocketAddress.createUnresolved("localhost", 80), -1), pool); Mono<Void> disposer = poolResources.disposeLater(); assertThat(closed.get()).as("pool closed by disposeLater()").isEqualTo(0); disposer.subscribe(); assertThat(closed.get()).as("pool closed by disposer subscribe()").isEqualTo(1); }