diff --git a/testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketHalfClosedTest.java b/testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketHalfClosedTest.java index 6e09aa439f1..8b0035a75ed 100644 --- a/testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketHalfClosedTest.java +++ b/testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketHalfClosedTest.java @@ -363,7 +363,7 @@ private static void testAutoCloseFalseDoesShutdownOutput(boolean allowHalfClosed Bootstrap cb) throws InterruptedException { final int expectedBytes = 100; final CountDownLatch serverReadExpectedLatch = new CountDownLatch(1); - final CountDownLatch doneLatch = new CountDownLatch(1); + final CountDownLatch doneLatch = new CountDownLatch(2); final AtomicReference causeRef = new AtomicReference(); Channel serverChannel = null; Channel clientChannel = null; @@ -375,9 +375,9 @@ private static void testAutoCloseFalseDoesShutdownOutput(boolean allowHalfClosed .childOption(ChannelOption.AUTO_CLOSE, false) .childOption(ChannelOption.SO_LINGER, 0); - final SimpleChannelInboundHandler leaderHandler = new AutoCloseFalseLeader(expectedBytes, + final AutoCloseFalseLeader leaderHandler = new AutoCloseFalseLeader(expectedBytes, serverReadExpectedLatch, doneLatch, causeRef); - final SimpleChannelInboundHandler followerHandler = new AutoCloseFalseFollower(expectedBytes, + final AutoCloseFalseFollower followerHandler = new AutoCloseFalseFollower(expectedBytes, serverReadExpectedLatch, doneLatch, causeRef); sb.childHandler(new ChannelInitializer() { @Override @@ -398,6 +398,7 @@ protected void initChannel(Channel ch) throws Exception { doneLatch.await(); assertNull(causeRef.get()); + assertTrue(leaderHandler.seenOutputShutdown); } finally { if (clientChannel != null) { clientChannel.close().sync(); @@ -479,7 +480,7 @@ private static final class AutoCloseFalseLeader extends SimpleChannelInboundHand private final CountDownLatch doneLatch; private final AtomicReference causeRef; private int bytesRead; - private boolean seenOutputShutdown; + boolean seenOutputShutdown; AutoCloseFalseLeader(int expectedBytes, CountDownLatch followerCloseLatch, CountDownLatch doneLatch, AtomicReference causeRef) { @@ -515,10 +516,6 @@ public void operationComplete(ChannelFuture future) throws Exception { protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws Exception { bytesRead += msg.readableBytes(); if (bytesRead >= expectedBytes) { - if (!seenOutputShutdown) { - causeRef.set(new IllegalStateException( - ChannelOutputShutdownEvent.class.getSimpleName() + " event was not seen")); - } doneLatch.countDown(); } } @@ -527,6 +524,7 @@ protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws Excep public void userEventTriggered(ChannelHandlerContext ctx, Object evt) { if (evt instanceof ChannelOutputShutdownEvent) { seenOutputShutdown = true; + doneLatch.countDown(); } } diff --git a/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollETSocketHalfClosed.java b/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollETSocketHalfClosedTest.java similarity index 90% rename from transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollETSocketHalfClosed.java rename to transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollETSocketHalfClosedTest.java index f12335bab2c..336f0e40e50 100644 --- a/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollETSocketHalfClosed.java +++ b/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollETSocketHalfClosedTest.java @@ -23,12 +23,7 @@ import java.util.List; -public class EpollETSocketHalfClosed extends SocketHalfClosedTest { - @Override - public int maxReadCompleteWithNoDataAfterInputShutdown() { - return 1; - } - +public class EpollETSocketHalfClosedTest extends SocketHalfClosedTest { @Override protected List> newFactories() { return EpollSocketTestPermutation.INSTANCE.socketWithoutFastOpen(); diff --git a/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollLTSocketHalfClosed.java b/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollLTSocketHalfClosedTest.java similarity index 90% rename from transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollLTSocketHalfClosed.java rename to transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollLTSocketHalfClosedTest.java index 3df9affd8cb..154d7e79839 100644 --- a/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollLTSocketHalfClosed.java +++ b/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollLTSocketHalfClosedTest.java @@ -23,12 +23,7 @@ import java.util.List; -public class EpollLTSocketHalfClosed extends SocketHalfClosedTest { - @Override - public int maxReadCompleteWithNoDataAfterInputShutdown() { - return 1; - } - +public class EpollLTSocketHalfClosedTest extends SocketHalfClosedTest { @Override protected List> newFactories() { return EpollSocketTestPermutation.INSTANCE.socketWithoutFastOpen(); diff --git a/transport-native-kqueue/src/test/java/io/netty/channel/kqueue/KQueueETSocketHalfClosedTest.java b/transport-native-kqueue/src/test/java/io/netty/channel/kqueue/KQueueETSocketHalfClosedTest.java index eae245a3b01..af5a6b0fc67 100644 --- a/transport-native-kqueue/src/test/java/io/netty/channel/kqueue/KQueueETSocketHalfClosedTest.java +++ b/transport-native-kqueue/src/test/java/io/netty/channel/kqueue/KQueueETSocketHalfClosedTest.java @@ -23,11 +23,6 @@ import java.util.List; public class KQueueETSocketHalfClosedTest extends SocketHalfClosedTest { - @Override - public int maxReadCompleteWithNoDataAfterInputShutdown() { - return 1; - } - @Override protected List> newFactories() { return KQueueSocketTestPermutation.INSTANCE.socket();