diff --git a/jetty-io/src/test/java/org/eclipse/jetty/io/EndPointTest.java b/jetty-io/src/test/java/org/eclipse/jetty/io/EndPointTest.java deleted file mode 100644 index 794ab2d69a7..00000000000 --- a/jetty-io/src/test/java/org/eclipse/jetty/io/EndPointTest.java +++ /dev/null @@ -1,157 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// All rights reserved. This program and the accompanying materials -// are made available under the terms of the Eclipse Public License v1.0 -// and Apache License v2.0 which accompanies this distribution. -// -// The Eclipse Public License is available at -// http://www.eclipse.org/legal/epl-v10.html -// -// The Apache License v2.0 is available at -// http://www.opensource.org/licenses/apache2.0.php -// -// You may elect to redistribute this code under either of these licenses. -// ======================================================================== -// - -package org.eclipse.jetty.io; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.nio.ByteBuffer; - -import org.eclipse.jetty.util.BufferUtil; -import org.junit.Test; - -public abstract class EndPointTest -{ - public static class EndPointPair - { - public T client; - public T server; - } - - protected abstract EndPointPair newConnection() throws Exception; - - - @Test - public void testClientServerExchange() throws Exception - { - EndPointPair c = newConnection(); - ByteBuffer buffer = BufferUtil.allocate(4096); - - // Client sends a request - c.client.flush(BufferUtil.toBuffer("request")); - - // Server receives the request - int len = c.server.fill(buffer); - assertEquals(7,len); - assertEquals("request",BufferUtil.toString(buffer)); - - // Client and server are open - assertTrue(c.client.isOpen()); - assertFalse(c.client.isOutputShutdown()); - assertTrue(c.server.isOpen()); - assertFalse(c.server.isOutputShutdown()); - - // Server sends response and closes output - c.server.flush(BufferUtil.toBuffer("response")); - c.server.shutdownOutput(); - - // client server are open, server is oshut - assertTrue(c.client.isOpen()); - assertFalse(c.client.isOutputShutdown()); - assertTrue(c.server.isOpen()); - assertTrue(c.server.isOutputShutdown()); - - // Client reads response - BufferUtil.clear(buffer); - len = c.client.fill(buffer); - assertEquals(8,len); - assertEquals("response",BufferUtil.toString(buffer)); - - // Client and server are open, server is oshut - assertTrue(c.client.isOpen()); - assertFalse(c.client.isOutputShutdown()); - assertTrue(c.server.isOpen()); - assertTrue(c.server.isOutputShutdown()); - - // Client reads -1 - BufferUtil.clear(buffer); - len = c.client.fill(buffer); - assertEquals(-1,len); - - // Client and server are open, server is oshut, client is ishut - assertTrue(c.client.isOpen()); - assertFalse(c.client.isOutputShutdown()); - assertTrue(c.server.isOpen()); - assertTrue(c.server.isOutputShutdown()); - - // Client shutsdown output, which is a close because already ishut - c.client.shutdownOutput(); - - // Client is closed. Server is open and oshut - assertFalse(c.client.isOpen()); - assertTrue(c.client.isOutputShutdown()); - assertTrue(c.server.isOpen()); - assertTrue(c.server.isOutputShutdown()); - - // Server reads close - BufferUtil.clear(buffer); - len = c.server.fill(buffer); - assertEquals(-1,len); - - // Client and Server are closed - assertFalse(c.client.isOpen()); - assertTrue(c.client.isOutputShutdown()); - assertFalse(c.server.isOpen()); - assertTrue(c.server.isOutputShutdown()); - - } - - - - @Test - public void testClientClose() throws Exception - { - EndPointPair c = newConnection(); - ByteBuffer buffer = BufferUtil.allocate(4096); - - c.client.flush(BufferUtil.toBuffer("request")); - int len = c.server.fill(buffer); - assertEquals(7,len); - assertEquals("request",BufferUtil.toString(buffer)); - - assertTrue(c.client.isOpen()); - assertFalse(c.client.isOutputShutdown()); - assertTrue(c.server.isOpen()); - assertFalse(c.server.isOutputShutdown()); - - c.client.close(); - - assertFalse(c.client.isOpen()); - assertTrue(c.client.isOutputShutdown()); - assertTrue(c.server.isOpen()); - assertFalse(c.server.isOutputShutdown()); - - len = c.server.fill(buffer); - assertEquals(-1,len); - - assertFalse(c.client.isOpen()); - assertTrue(c.client.isOutputShutdown()); - assertTrue(c.server.isOpen()); - assertFalse(c.server.isOutputShutdown()); - - c.server.shutdownOutput(); - - assertFalse(c.client.isOpen()); - assertTrue(c.client.isOutputShutdown()); - assertFalse(c.server.isOpen()); - assertTrue(c.server.isOutputShutdown()); - } - -} diff --git a/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointInterestsTest.java b/jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointInterestsTest.java similarity index 99% rename from jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointInterestsTest.java rename to jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointInterestsTest.java index 1a6ad99f879..04e17c9e4a0 100644 --- a/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointInterestsTest.java +++ b/jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointInterestsTest.java @@ -43,7 +43,7 @@ import org.junit.After; import org.junit.Assert; import org.junit.Test; -public class SelectChannelEndPointInterestsTest +public class SocketChannelEndPointInterestsTest { private QueuedThreadPool threadPool; private Scheduler scheduler; diff --git a/jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointTest.java b/jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointTest.java index 691b7ee1e68..be6b4560ae9 100644 --- a/jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointTest.java +++ b/jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointTest.java @@ -18,14 +18,27 @@ package org.eclipse.jetty.io; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.nio.ByteBuffer; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; +import org.eclipse.jetty.util.BufferUtil; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.Test; -public class SocketChannelEndPointTest extends EndPointTest +public class SocketChannelEndPointTest { + public static class EndPointPair + { + public SocketChannelEndPoint client; + public SocketChannelEndPoint server; + } + static ServerSocketChannel connector; @BeforeClass @@ -42,25 +55,126 @@ public class SocketChannelEndPointTest extends EndPointTest newConnection() throws Exception + private EndPointPair newConnection() throws Exception { - EndPointPair c = new EndPointPair<>(); + EndPointPair c = new EndPointPair(); c.client=new SocketChannelEndPoint(SocketChannel.open(connector.socket().getLocalSocketAddress()),null,null,null); c.server=new SocketChannelEndPoint(connector.accept(),null,null,null); return c; } - @Override - public void testClientClose() throws Exception - { - super.testClientClose(); - } - - @Override + @Test public void testClientServerExchange() throws Exception { - super.testClientServerExchange(); + EndPointPair c = newConnection(); + ByteBuffer buffer = BufferUtil.allocate(4096); + + // Client sends a request + c.client.flush(BufferUtil.toBuffer("request")); + + // Server receives the request + int len = c.server.fill(buffer); + assertEquals(7,len); + assertEquals("request",BufferUtil.toString(buffer)); + + // Client and server are open + assertTrue(c.client.isOpen()); + assertFalse(c.client.isOutputShutdown()); + assertTrue(c.server.isOpen()); + assertFalse(c.server.isOutputShutdown()); + + // Server sends response and closes output + c.server.flush(BufferUtil.toBuffer("response")); + c.server.shutdownOutput(); + + // client server are open, server is oshut + assertTrue(c.client.isOpen()); + assertFalse(c.client.isOutputShutdown()); + assertTrue(c.server.isOpen()); + assertTrue(c.server.isOutputShutdown()); + + // Client reads response + BufferUtil.clear(buffer); + len = c.client.fill(buffer); + assertEquals(8,len); + assertEquals("response",BufferUtil.toString(buffer)); + + // Client and server are open, server is oshut + assertTrue(c.client.isOpen()); + assertFalse(c.client.isOutputShutdown()); + assertTrue(c.server.isOpen()); + assertTrue(c.server.isOutputShutdown()); + + // Client reads -1 + BufferUtil.clear(buffer); + len = c.client.fill(buffer); + assertEquals(-1,len); + + // Client and server are open, server is oshut, client is ishut + assertTrue(c.client.isOpen()); + assertFalse(c.client.isOutputShutdown()); + assertTrue(c.server.isOpen()); + assertTrue(c.server.isOutputShutdown()); + + // Client shutsdown output, which is a close because already ishut + c.client.shutdownOutput(); + + // Client is closed. Server is open and oshut + assertFalse(c.client.isOpen()); + assertTrue(c.client.isOutputShutdown()); + assertTrue(c.server.isOpen()); + assertTrue(c.server.isOutputShutdown()); + + // Server reads close + BufferUtil.clear(buffer); + len = c.server.fill(buffer); + assertEquals(-1,len); + + // Client and Server are closed + assertFalse(c.client.isOpen()); + assertTrue(c.client.isOutputShutdown()); + assertFalse(c.server.isOpen()); + assertTrue(c.server.isOutputShutdown()); } + + @Test + public void testClientClose() throws Exception + { + EndPointPair c = newConnection(); + ByteBuffer buffer = BufferUtil.allocate(4096); + + c.client.flush(BufferUtil.toBuffer("request")); + int len = c.server.fill(buffer); + assertEquals(7,len); + assertEquals("request",BufferUtil.toString(buffer)); + + assertTrue(c.client.isOpen()); + assertFalse(c.client.isOutputShutdown()); + assertTrue(c.server.isOpen()); + assertFalse(c.server.isOutputShutdown()); + + c.client.close(); + + assertFalse(c.client.isOpen()); + assertTrue(c.client.isOutputShutdown()); + assertTrue(c.server.isOpen()); + assertFalse(c.server.isOutputShutdown()); + + len = c.server.fill(buffer); + assertEquals(-1,len); + + assertFalse(c.client.isOpen()); + assertTrue(c.client.isOutputShutdown()); + assertTrue(c.server.isOpen()); + assertFalse(c.server.isOutputShutdown()); + + c.server.shutdownOutput(); + + assertFalse(c.client.isOpen()); + assertTrue(c.client.isOutputShutdown()); + assertFalse(c.server.isOpen()); + assertTrue(c.server.isOutputShutdown()); + } + }