### Question:
DeFiProducerManager extends ProducerManager { @Override public void unregisterProducer(final String group, final ClientChannelInfo clientChannelInfo) { super.unregisterProducer(group, clientChannelInfo); producerChannelTable.remove(clientChannelInfo.getClientId()); } @SuppressWarnings("unchecked")  DeFiProducerManager(); @Override void scanNotActiveChannel(); @Override void doChannelCloseEvent(final String remoteAddr, final Channel channel); @Override void registerProducer(final String group, final ClientChannelInfo clientChannelInfo); @Override void unregisterProducer(final String group, final ClientChannelInfo clientChannelInfo); ClientChannelInfo getClientChannel(String clientId); HashMap<String, HashMap<Channel, ClientChannelInfo>> getGroupChannelTable(); ConcurrentHashMap<String, ClientChannelInfo> getProducerChannelTable();  }### Answer:
@Test public void unregisterProducer() throws Exception { deFiProducerManager.registerProducer(group, clientInfo); HashMap<Channel, ClientChannelInfo> channelMap = deFiProducerManager.getGroupChannelTable().get(group); assertThat(channelMap).isNotNull(); assertThat(channelMap.get(channel)).isEqualTo(clientInfo); assertThat(deFiProducerManager.getProducerChannelTable().get(clientInfo.getClientId())).isNotNull(); assertThat(deFiProducerManager.getProducerChannelTable().get(clientInfo.getClientId())).isEqualTo(clientInfo); deFiProducerManager.unregisterProducer(group, clientInfo); channelMap = deFiProducerManager.getGroupChannelTable().get(group); assertThat(channelMap).isNull(); assertThat(deFiProducerManager.getProducerChannelTable().get(clientInfo.getClientId())).isNull(); assertThat(deFiProducerManager.getProducerChannelTable().get(clientInfo.getClientId())).isNull(); }