Add testcase to try to reproduce #2144

This commit is contained in:
Norman Maurer 2014-01-23 07:04:42 +01:00
parent 2b63d2d0cd
commit cac449a5e4

View File

@ -24,6 +24,7 @@ import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.DefaultEventLoopGroup;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.util.internal.logging.InternalLogger;
import io.netty.util.internal.logging.InternalLoggerFactory;
import org.junit.Test;
@ -144,6 +145,39 @@ public class LocalChannelTest {
clientGroup.terminationFuture().sync();
}
@Test
public void testServerCloseChannelSameEventLoop() throws Exception {
LocalAddress addr = new LocalAddress(LOCAL_ADDR_ID);
LocalEventLoopGroup group = new LocalEventLoopGroup(1);
final CountDownLatch latch = new CountDownLatch(1);
ServerBootstrap sb = new ServerBootstrap()
.group(group)
.channel(LocalServerChannel.class)
.childHandler(new SimpleChannelInboundHandler<Object>() {
@Override
protected void messageReceived(ChannelHandlerContext ctx, Object msg) throws Exception {
ctx.close();
latch.countDown();
}
});
sb.bind(addr).sync();
Bootstrap b = new Bootstrap()
.group(group)
.channel(LocalChannel.class)
.handler(new SimpleChannelInboundHandler<Object>() {
@Override
protected void messageReceived(ChannelHandlerContext ctx, Object msg) throws Exception {
// discard
}
});
Channel channel = b.connect(addr).sync().channel();
channel.writeAndFlush(new Object());
latch.await();
group.shutdownGracefully();
group.terminationFuture().sync();
}
static class TestHandler extends ChannelHandlerAdapter {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {