You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2014/03/15 16:18:43 UTC

svn commit: r1577877 - in /tomcat/tc7.0.x/trunk/test/org/apache/tomcat/websocket: TestWebSocketFrameClient.java TestWebSocketFrameClientSSL.java

Author: kkolinko
Date: Sat Mar 15 15:18:42 2014
New Revision: 1577877

URL: http://svn.apache.org/r1577877
Log:
Backport of r1577073 from tomcat/trunk:
Split the test SSL/non-SSL.

Added:
    tomcat/tc7.0.x/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java
      - copied, changed from r1577876, tomcat/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java
Modified:
    tomcat/tc7.0.x/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClient.java

Modified: tomcat/tc7.0.x/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClient.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClient.java?rev=1577877&r1=1577876&r2=1577877&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClient.java (original)
+++ tomcat/tc7.0.x/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClient.java Sat Mar 15 15:18:42 2014
@@ -16,16 +16,13 @@
  */
 package org.apache.tomcat.websocket;
 
-import java.io.File;
 import java.net.URI;
-import java.net.URL;
 import java.util.Queue;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
 import javax.websocket.ClientEndpointConfig;
 import javax.websocket.ContainerProvider;
-import javax.websocket.MessageHandler;
 import javax.websocket.Session;
 import javax.websocket.WebSocketContainer;
 
@@ -37,9 +34,7 @@ import org.apache.catalina.deploy.Applic
 import org.apache.catalina.servlets.DefaultServlet;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
-import org.apache.tomcat.util.net.TesterSupport;
 import org.apache.tomcat.websocket.TesterMessageCountClient.BasicText;
-import org.apache.tomcat.websocket.TesterMessageCountClient.SleepingText;
 import org.apache.tomcat.websocket.TesterMessageCountClient.TesterProgrammaticEndpoint;
 
 public class TestWebSocketFrameClient extends TomcatBaseTest {
@@ -87,127 +82,4 @@ public class TestWebSocketFrameClient ex
             Assert.assertEquals(TesterFirehoseServer.MESSAGE, message);
         }
     }
-
-
-    @Test
-    public void testConnectToServerEndpointSSL() throws Exception {
-
-        Tomcat tomcat = getTomcatInstance();
-        // Must have a real docBase - just use temp
-        Context ctx =
-            tomcat.addContext("", System.getProperty("java.io.tmpdir"));
-        ctx.addApplicationListener(new ApplicationListener(
-                TesterFirehoseServer.Config.class.getName(), false));
-        Tomcat.addServlet(ctx, "default", new DefaultServlet());
-        ctx.addServletMapping("/", "default");
-
-
-        TesterSupport.initSsl(tomcat);
-
-        tomcat.start();
-
-        WebSocketContainer wsContainer =
-                ContainerProvider.getWebSocketContainer();
-        ClientEndpointConfig clientEndpointConfig =
-                ClientEndpointConfig.Builder.create().build();
-        URL truststoreUrl = this.getClass().getClassLoader().getResource(
-                "org/apache/tomcat/util/net/ca.jks");
-        File truststoreFile = new File(truststoreUrl.toURI());
-        clientEndpointConfig.getUserProperties().put(
-                WsWebSocketContainer.SSL_TRUSTSTORE_PROPERTY,
-                truststoreFile.getAbsolutePath());
-        Session wsSession = wsContainer.connectToServer(
-                TesterProgrammaticEndpoint.class,
-                clientEndpointConfig,
-                new URI("wss://localhost:" + getPort() +
-                        TesterFirehoseServer.Config.PATH));
-        CountDownLatch latch =
-                new CountDownLatch(TesterFirehoseServer.MESSAGE_COUNT);
-        BasicText handler = new BasicText(latch);
-        wsSession.addMessageHandler(handler);
-        wsSession.getBasicRemote().sendText("Hello");
-
-        System.out.println("Sent Hello message, waiting for data");
-
-        // Ignore the latch result as the message count test below will tell us
-        // if the right number of messages arrived
-        handler.getLatch().await(TesterFirehoseServer.WAIT_TIME_MILLIS,
-                TimeUnit.MILLISECONDS);
-
-        Queue<String> messages = handler.getMessages();
-        Assert.assertEquals(
-                TesterFirehoseServer.MESSAGE_COUNT, messages.size());
-        for (String message : messages) {
-            Assert.assertEquals(TesterFirehoseServer.MESSAGE, message);
-        }
-    }
-
-
-    @Test
-    public void testBug56032() throws Exception {
-        // TODO Investigate options to get this test to pass with the HTTP BIO
-        //      connector.
-        if (getTomcatInstance().getConnector().getProtocol().equals("HTTP/1.1")) {
-            return;
-        }
-
-        Tomcat tomcat = getTomcatInstance();
-        // Must have a real docBase - just use temp
-        Context ctx =
-            tomcat.addContext("", System.getProperty("java.io.tmpdir"));
-        ctx.addApplicationListener(new ApplicationListener(
-                TesterFirehoseServer.Config.class.getName(), false));
-        Tomcat.addServlet(ctx, "default", new DefaultServlet());
-        ctx.addServletMapping("/", "default");
-
-        TesterSupport.initSsl(tomcat);
-
-        tomcat.start();
-
-        WebSocketContainer wsContainer =
-                ContainerProvider.getWebSocketContainer();
-        ClientEndpointConfig clientEndpointConfig =
-                ClientEndpointConfig.Builder.create().build();
-        clientEndpointConfig.getUserProperties().put(
-                WsWebSocketContainer.SSL_TRUSTSTORE_PROPERTY,
-                "test/org/apache/tomcat/util/net/ca.jks");
-        Session wsSession = wsContainer.connectToServer(
-                TesterProgrammaticEndpoint.class,
-                clientEndpointConfig,
-                new URI("wss://localhost:" + getPort() +
-                        TesterFirehoseServer.Config.PATH));
-
-        // Process incoming messages very slowly
-        MessageHandler handler = new SleepingText(5000);
-        wsSession.addMessageHandler(handler);
-        wsSession.getBasicRemote().sendText("Hello");
-
-        // Wait long enough for the buffers to fill and the send to timeout
-        int count = 0;
-        int limit = TesterFirehoseServer.WAIT_TIME_MILLIS / 100;
-
-        System.err.println("Waiting for server to report an error");
-        while (TesterFirehoseServer.Endpoint.getErrorCount() == 0 && count < limit) {
-            Thread.sleep(100);
-            count ++;
-        }
-
-        if (TesterFirehoseServer.Endpoint.getErrorCount() == 0) {
-            Assert.fail("No error reported by Endpoint when timeout was expected");
-        }
-
-        // Wait up to another 20 seconds for the connection to be closed
-        System.err.println("Waiting for connection to be closed");
-        count = 0;
-        limit = (TesterFirehoseServer.SEND_TIME_OUT_MILLIS * 4) / 100;
-        while (TesterFirehoseServer.Endpoint.getOpenConnectionCount() != 0 && count < limit) {
-            Thread.sleep(100);
-            count ++;
-        }
-
-        int openConnectionCount = TesterFirehoseServer.Endpoint.getOpenConnectionCount();
-        if (openConnectionCount != 0) {
-            Assert.fail("There are [" + openConnectionCount + "] connections still open");
-        }
-    }
 }

Copied: tomcat/tc7.0.x/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java (from r1577876, tomcat/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java)
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java?p2=tomcat/tc7.0.x/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java&p1=tomcat/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java&r1=1577876&r2=1577877&rev=1577877&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java (original)
+++ tomcat/tc7.0.x/trunk/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java Sat Mar 15 15:18:42 2014
@@ -16,7 +16,9 @@
  */
 package org.apache.tomcat.websocket;
 
+import java.io.File;
 import java.net.URI;
+import java.net.URL;
 import java.util.Queue;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -28,14 +30,13 @@ import javax.websocket.Session;
 import javax.websocket.WebSocketContainer;
 
 import org.junit.Assert;
-import org.junit.Assume;
 import org.junit.Test;
 
 import org.apache.catalina.Context;
+import org.apache.catalina.deploy.ApplicationListener;
 import org.apache.catalina.servlets.DefaultServlet;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
-import org.apache.tomcat.util.descriptor.web.ApplicationListener;
 import org.apache.tomcat.util.net.TesterSupport;
 import org.apache.tomcat.websocket.TesterMessageCountClient.BasicText;
 import org.apache.tomcat.websocket.TesterMessageCountClient.SleepingText;
@@ -45,15 +46,7 @@ public class TestWebSocketFrameClientSSL
 
 
     @Test
-    public void testConnectToServerEndpoint() throws Exception {
-        // FIXME Skip NIO2 since its CPU use on non blocking writes to
-        //       do the encryption inline apparently messes up
-        //       the websockets writes, which deadlock until timedout.
-        //       Reenable later when investigated and fixed.
-        Assume.assumeFalse(
-                "Skip this test on NIO2. FIXME: investigate.",
-                getTomcatInstance().getConnector().getProtocol()
-                        .equals("org.apache.coyote.http11.Http11Nio2Protocol"));
+    public void testConnectToServerEndpointSSL() throws Exception {
 
         Tomcat tomcat = getTomcatInstance();
         // Must have a real docBase - just use temp
@@ -64,6 +57,7 @@ public class TestWebSocketFrameClientSSL
         Tomcat.addServlet(ctx, "default", new DefaultServlet());
         ctx.addServletMapping("/", "default");
 
+
         TesterSupport.initSsl(tomcat);
 
         tomcat.start();
@@ -72,9 +66,12 @@ public class TestWebSocketFrameClientSSL
                 ContainerProvider.getWebSocketContainer();
         ClientEndpointConfig clientEndpointConfig =
                 ClientEndpointConfig.Builder.create().build();
+        URL truststoreUrl = this.getClass().getClassLoader().getResource(
+                "org/apache/tomcat/util/net/ca.jks");
+        File truststoreFile = new File(truststoreUrl.toURI());
         clientEndpointConfig.getUserProperties().put(
                 WsWebSocketContainer.SSL_TRUSTSTORE_PROPERTY,
-                "test/org/apache/tomcat/util/net/ca.jks");
+                truststoreFile.getAbsolutePath());
         Session wsSession = wsContainer.connectToServer(
                 TesterProgrammaticEndpoint.class,
                 clientEndpointConfig,
@@ -106,10 +103,9 @@ public class TestWebSocketFrameClientSSL
     public void testBug56032() throws Exception {
         // TODO Investigate options to get this test to pass with the HTTP BIO
         //      connector.
-        Assume.assumeFalse(
-                "Skip this test on BIO. TODO: investigate options to make it pass with HTTP BIO connector",
-                getTomcatInstance().getConnector().getProtocol()
-                        .equals("org.apache.coyote.http11.Http11Protocol"));
+        if (getTomcatInstance().getConnector().getProtocol().equals("HTTP/1.1")) {
+            return;
+        }
 
         Tomcat tomcat = getTomcatInstance();
         // Must have a real docBase - just use temp
@@ -146,7 +142,7 @@ public class TestWebSocketFrameClientSSL
         int count = 0;
         int limit = TesterFirehoseServer.WAIT_TIME_MILLIS / 100;
 
-        System.out.println("Waiting for server to report an error");
+        System.err.println("Waiting for server to report an error");
         while (TesterFirehoseServer.Endpoint.getErrorCount() == 0 && count < limit) {
             Thread.sleep(100);
             count ++;
@@ -156,11 +152,10 @@ public class TestWebSocketFrameClientSSL
             Assert.fail("No error reported by Endpoint when timeout was expected");
         }
 
-        // Wait up to another 10 seconds for the connection to be closed -
-        // should be a lot faster.
-        System.out.println("Waiting for connection to be closed");
+        // Wait up to another 20 seconds for the connection to be closed
+        System.err.println("Waiting for connection to be closed");
         count = 0;
-        limit = (TesterFirehoseServer.SEND_TIME_OUT_MILLIS * 2) / 100;
+        limit = (TesterFirehoseServer.SEND_TIME_OUT_MILLIS * 4) / 100;
         while (TesterFirehoseServer.Endpoint.getOpenConnectionCount() != 0 && count < limit) {
             Thread.sleep(100);
             count ++;
@@ -171,4 +166,5 @@ public class TestWebSocketFrameClientSSL
             Assert.fail("There are [" + openConnectionCount + "] connections still open");
         }
     }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org