Author: markt Date: Wed May 22 23:52:28 2013 New Revision: 1485512 URL: http://svn.apache.org/r1485512 Log: Refactor passing of the latch to improve robustness on test failure. Once the session is closed, user properties are no longer accessible.
Modified: tomcat/trunk/test/org/apache/tomcat/websocket/TestWsRemoteEndpoint.java tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java tomcat/trunk/test/org/apache/tomcat/websocket/TesterSingleMessageClient.java Modified: tomcat/trunk/test/org/apache/tomcat/websocket/TestWsRemoteEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/websocket/TestWsRemoteEndpoint.java?rev=1485512&r1=1485511&r2=1485512&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/websocket/TestWsRemoteEndpoint.java (original) +++ tomcat/trunk/test/org/apache/tomcat/websocket/TestWsRemoteEndpoint.java Wed May 22 23:52:28 2013 @@ -38,6 +38,7 @@ import org.apache.catalina.startup.Tomca import org.apache.tomcat.websocket.TesterSingleMessageClient.AsyncHandler; import org.apache.tomcat.websocket.TesterSingleMessageClient.AsyncText; import org.apache.tomcat.websocket.TesterSingleMessageClient.TesterAnnotatedEndpoint; +import org.apache.tomcat.websocket.TesterSingleMessageClient.TesterEndpoint; import org.apache.tomcat.websocket.TesterSingleMessageClient.TesterProgrammaticEndpoint; public class TestWsRemoteEndpoint extends TomcatBaseTest { @@ -92,7 +93,9 @@ public class TestWsRemoteEndpoint extend } CountDownLatch latch = new CountDownLatch(1); - wsSession.getUserProperties().put("latch", latch); + TesterEndpoint tep = + (TesterEndpoint) wsSession.getUserProperties().get("endpoint"); + tep.setLatch(latch); AsyncHandler<?> handler = new AsyncText(latch); wsSession.addMessageHandler(handler); 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=1485512&r1=1485511&r2=1485512&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java (original) +++ tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java Wed May 22 23:52:28 2013 @@ -52,6 +52,7 @@ import org.apache.tomcat.util.net.Tester import org.apache.tomcat.websocket.TesterSingleMessageClient.BasicBinary; import org.apache.tomcat.websocket.TesterSingleMessageClient.BasicHandler; import org.apache.tomcat.websocket.TesterSingleMessageClient.BasicText; +import org.apache.tomcat.websocket.TesterSingleMessageClient.TesterEndpoint; import org.apache.tomcat.websocket.TesterSingleMessageClient.TesterProgrammaticEndpoint; import org.apache.tomcat.websocket.server.Constants; import org.apache.tomcat.websocket.server.WsListener; @@ -235,7 +236,9 @@ public class TestWsWebSocketContainer ex TesterEchoServer.Config.PATH_BASIC)); BasicHandler<?> handler; CountDownLatch latch = new CountDownLatch(1); - wsSession.getUserProperties().put("latch", latch); + TesterEndpoint tep = + (TesterEndpoint) wsSession.getUserProperties().get("endpoint"); + tep.setLatch(latch); if (isTextMessage) { handler = new BasicText(latch); } else { Modified: tomcat/trunk/test/org/apache/tomcat/websocket/TesterSingleMessageClient.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/websocket/TesterSingleMessageClient.java?rev=1485512&r1=1485511&r2=1485512&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/websocket/TesterSingleMessageClient.java (original) +++ tomcat/trunk/test/org/apache/tomcat/websocket/TesterSingleMessageClient.java Wed May 22 23:52:28 2013 @@ -33,21 +33,31 @@ import javax.websocket.Session; public class TesterSingleMessageClient { - public static class TesterProgrammaticEndpoint extends Endpoint { + public interface TesterEndpoint { + void setLatch(CountDownLatch latch); + } + + public static class TesterProgrammaticEndpoint + extends Endpoint implements TesterEndpoint { + + private CountDownLatch latch = null; + + @Override + public void setLatch(CountDownLatch latch) { + this.latch = latch; + } @Override public void onClose(Session session, CloseReason closeReason) { - clearLatch(session); + clearLatch(); } @Override public void onError(Session session, Throwable throwable) { - clearLatch(session); + clearLatch(); } - private void clearLatch(Session session) { - CountDownLatch latch = - (CountDownLatch) session.getUserProperties().get("latch"); + private void clearLatch() { if (latch != null) { while (latch.getCount() > 0) { latch.countDown(); @@ -57,27 +67,31 @@ public class TesterSingleMessageClient { @Override public void onOpen(Session session, EndpointConfig config) { - // NO-OP + session.getUserProperties().put("endpoint", this); } } @ClientEndpoint - public static class TesterAnnotatedEndpoint { + public static class TesterAnnotatedEndpoint implements TesterEndpoint { + + private CountDownLatch latch = null; + + @Override + public void setLatch(CountDownLatch latch) { + this.latch = latch; + } @OnClose - public void onClose(Session session) { - clearLatch(session); + public void onClose() { + clearLatch(); } @OnError - public void onError(Session session, - @SuppressWarnings("unused") Throwable throwable) { - clearLatch(session); + public void onError(@SuppressWarnings("unused") Throwable throwable) { + clearLatch(); } - private void clearLatch(Session session) { - CountDownLatch latch = - (CountDownLatch) session.getUserProperties().get("latch"); + private void clearLatch() { if (latch != null) { while (latch.getCount() > 0) { latch.countDown(); @@ -86,8 +100,8 @@ public class TesterSingleMessageClient { } @OnOpen - public void onOpen() { - // NO-OP + public void onOpen(Session session) { + session.getUserProperties().put("endpoint", this); } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org