Author: markt
Date: Mon May 26 22:54:20 2014
New Revision: 1597662

URL: http://svn.apache.org/r1597662
Log:
Refactor test to enable a clean server shutdown. This prevents the web 
application class loader complaining about a still running thread on server 
stop.

Modified:
    tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java

Modified: 
tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java?rev=1597662&r1=1597661&r2=1597662&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java 
(original)
+++ tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java 
Mon May 26 22:54:20 2014
@@ -361,6 +361,9 @@ public class TestWsWebSocketContainer ex
 
         long timeout = System.currentTimeMillis() - lastSend;
 
+        // Clear the server side block and prevent and further blocks to allow
+        // the server to shutdown cleanly
+        BlockingPojo.clearBlock();
 
         String msg = "Time out was [" + timeout + "] ms";
 
@@ -462,6 +465,8 @@ public class TestWsWebSocketContainer ex
                     (ServerContainer) sce.getServletContext().getAttribute(
                             
Constants.SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE);
             try {
+                // Reset blocking state
+                BlockingPojo.resetBlock();
                 sc.addEndpoint(BlockingPojo.class);
             } catch (DeploymentException e) {
                 throw new IllegalStateException(e);
@@ -472,11 +477,35 @@ public class TestWsWebSocketContainer ex
 
     @ServerEndpoint("/block")
     public static class BlockingPojo {
+
+        private static Object monitor = new Object();
+        // Enable blockign by default
+        private static boolean block = true;
+
+        /**
+         * Clear any current block.
+         */
+        public static void clearBlock() {
+            synchronized (monitor) {
+                BlockingPojo.block = false;
+                monitor.notifyAll();
+            }
+        }
+
+        public static void resetBlock() {
+            synchronized (monitor) {
+                block = true;
+            }
+        }
         @SuppressWarnings("unused")
         @OnMessage
         public void echoTextMessage(Session session, String msg, boolean last) 
{
             try {
-                Thread.sleep(60000);
+                synchronized (monitor) {
+                    while (block) {
+                        monitor.wait();
+                    }
+                }
             } catch (InterruptedException e) {
                 // Ignore
             }
@@ -488,7 +517,11 @@ public class TestWsWebSocketContainer ex
         public void echoBinaryMessage(Session session, ByteBuffer msg,
                 boolean last) {
             try {
-                Thread.sleep(TIMEOUT_MS * 10);
+                synchronized (monitor) {
+                    while (block) {
+                        monitor.wait();
+                    }
+                }
             } catch (InterruptedException e) {
                 // Ignore
             }



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

Reply via email to