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: [email protected]
For additional commands, e-mail: [email protected]