### Question:
NettyClientChannelManager { void releaseChannel(Channel channel, String serverAddress) { if (channel == null || serverAddress == null) { return; } try { synchronized (channelLocks.get(serverAddress)) { Channel ch = channels.get(serverAddress); if (ch == null) { nettyClientKeyPool.returnObject(poolKeyMap.get(serverAddress), channel); return; } if (ch.compareTo(channel) == 0) { if (LOGGER.isInfoEnabled()) { LOGGER.info("return to pool, rm channel:{}", channel); } destroyChannel(serverAddress, channel); } else { nettyClientKeyPool.returnObject(poolKeyMap.get(serverAddress), channel); } } } catch (Exception exx) { LOGGER.error(exx.getMessage()); } } NettyClientChannelManager(final NettyPoolableFactory keyPoolableFactory, final Function<String, NettyPoolKey> poolKeyFunction,
                                     final NettyClientConfig clientConfig);   }### Answer:
@Test @SuppressWarnings("unchecked") void assertReleaseChannelWhichCacheIsEmpty() throws Exception { setNettyClientKeyPool(); setUpReleaseChannel(); channelManager.releaseChannel(channel, "127.0.0.1:8091"); verify(keyedObjectPool).returnObject(nettyPoolKey, channel); }