Author: markt Date: Mon Jul 17 20:53:20 2017 New Revision: 1802210 URL: http://svn.apache.org/viewvc?rev=1802210&view=rev Log: Add handling for are now, hopefully, consistent connection reset results for NIO2 on Windows.
Modified: tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_4_2.java tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_5_1.java tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_6_2.java Modified: tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_4_2.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_4_2.java?rev=1802210&r1=1802209&r2=1802210&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_4_2.java (original) +++ tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_4_2.java Mon Jul 17 20:53:20 2017 @@ -16,9 +16,15 @@ */ package org.apache.coyote.http2; +import java.net.SocketException; + import org.junit.Assert; +import org.junit.Assume; import org.junit.Test; +import org.apache.catalina.connector.Connector; +import org.apache.catalina.startup.Tomcat; + /** * Unit tests for Section 4.2 of * <a href="https://tools.ietf.org/html/rfc7540">RFC 7540</a>. @@ -55,11 +61,22 @@ public class TestHttp2Section_4_2 extend os.write(settings); - // Read GOAWAY frame - parser.readFrame(true); + try { + // Read GOAWAY frame + parser.readFrame(true); + + Assert.assertTrue(output.getTrace(), output.getTrace().startsWith( + "0-Goaway-[1]-[" + Http2Error.FRAME_SIZE_ERROR.getCode() + "]-[")); + } catch (SocketException se) { + // On some platform / Connector combinations (e.g. Windows / NIO2), + // the TCP connection close will be processed before the client gets + // a chance to read the connection close frame. + Tomcat tomcat = getTomcatInstance(); + Connector connector = tomcat.getConnector(); - Assert.assertTrue(output.getTrace(), output.getTrace().startsWith( - "0-Goaway-[1]-[" + Http2Error.FRAME_SIZE_ERROR.getCode() + "]-[")); + Assume.assumeTrue("This test is only expected to trigger an exception with NIO2", + connector.getProtocolHandlerClassName().contains("Nio2")); + } } @Test Modified: tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_5_1.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_5_1.java?rev=1802210&r1=1802209&r2=1802210&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_5_1.java (original) +++ tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_5_1.java Mon Jul 17 20:53:20 2017 @@ -16,11 +16,16 @@ */ package org.apache.coyote.http2; +import java.net.SocketException; import java.nio.ByteBuffer; import org.junit.Assert; +import org.junit.Assume; import org.junit.Test; +import org.apache.catalina.connector.Connector; +import org.apache.catalina.startup.Tomcat; + /** * Unit tests for Section 5.§ of * <a href="https://tools.ietf.org/html/rfc7540">RFC 7540</a>. @@ -135,11 +140,22 @@ public class TestHttp2Section_5_1 extend buildSimpleGetRequestPart1(frameHeader, headersPayload, 4); writeFrame(frameHeader, headersPayload); - // headers - parser.readFrame(true); - - Assert.assertTrue(output.getTrace(), output.getTrace().startsWith( - "0-Goaway-[1]-[" + Http2Error.PROTOCOL_ERROR.getCode() + "]-[")); + try { + // headers + parser.readFrame(true); + + Assert.assertTrue(output.getTrace(), output.getTrace().startsWith( + "0-Goaway-[1]-[" + Http2Error.PROTOCOL_ERROR.getCode() + "]-[")); + } catch (SocketException se) { + // On some platform / Connector combinations (e.g. Windows / NIO2), + // the TCP connection close will be processed before the client gets + // a chance to read the connection close frame. + Tomcat tomcat = getTomcatInstance(); + Connector connector = tomcat.getConnector(); + + Assume.assumeTrue("This test is only expected to trigger an exception with NIO2", + connector.getProtocolHandlerClassName().contains("Nio2")); + } } Modified: tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_6_2.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_6_2.java?rev=1802210&r1=1802209&r2=1802210&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_6_2.java (original) +++ tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_6_2.java Mon Jul 17 20:53:20 2017 @@ -16,11 +16,16 @@ */ package org.apache.coyote.http2; +import java.net.SocketException; import java.nio.ByteBuffer; import org.junit.Assert; +import org.junit.Assume; import org.junit.Test; +import org.apache.catalina.connector.Connector; +import org.apache.catalina.startup.Tomcat; + /** * Unit tests for Section 6.2 of * <a href="https://tools.ietf.org/html/rfc7540">RFC 7540</a>. @@ -41,11 +46,22 @@ public class TestHttp2Section_6_2 extend buildSimpleGetRequestPart1(frameHeader, headersPayload, 0); writeFrame(frameHeader, headersPayload); - // Go away - parser.readFrame(true); - - Assert.assertTrue(output.getTrace(), output.getTrace().startsWith( - "0-Goaway-[1]-[" + Http2Error.PROTOCOL_ERROR.getCode() + "]-[")); + try { + // Go away + parser.readFrame(true); + + Assert.assertTrue(output.getTrace(), output.getTrace().startsWith( + "0-Goaway-[1]-[" + Http2Error.PROTOCOL_ERROR.getCode() + "]-[")); + } catch (SocketException se) { + // On some platform / Connector combinations (e.g. Windows / NIO2), + // the TCP connection close will be processed before the client gets + // a chance to read the connection close frame. + Tomcat tomcat = getTomcatInstance(); + Connector connector = tomcat.getConnector(); + + Assume.assumeTrue("This test is only expected to trigger an exception with NIO2", + connector.getProtocolHandlerClassName().contains("Nio2")); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org