This is an automated email from the ASF dual-hosted git repository.

coheigea pushed a commit to branch 3.3.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit 1525974f5b6de5dc9a6c9a8ca81daa91317e19c3
Author: Colm O hEigeartaigh <cohei...@apache.org>
AuthorDate: Thu Aug 22 11:44:01 2019 +0100

    CXF-8086,CXF-8087 - Fix flaky jaxrs system tests
    
    (cherry picked from commit d47f3a587d4982b9eeccd8b974fbde6bc996530f)
---
 ...=> AbstractJAXRSClientServerWebSocketTest.java} |  17 +-
 ...JAXRSClientServerWebSocketNoAtmosphereTest.java |   4 +-
 ...lientServerWebSocketSpringNoAtmosphereTest.java |   2 +-
 .../JAXRSClientServerWebSocketSpringTest.java      |   5 +-
 ...erverWebSocketSpringWebAppNoAtmosphereTest.java |  58 ++-
 ...JAXRSClientServerWebSocketSpringWebAppTest.java |   5 +-
 .../websocket/JAXRSClientServerWebSocketTest.java  | 450 +--------------------
 7 files changed, 70 insertions(+), 471 deletions(-)

diff --git 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketTest.java
 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/AbstractJAXRSClientServerWebSocketTest.java
similarity index 97%
copy from 
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketTest.java
copy to 
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/AbstractJAXRSClientServerWebSocketTest.java
index 12ab68f..96dca4b 100644
--- 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketTest.java
+++ 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/AbstractJAXRSClientServerWebSocketTest.java
@@ -23,12 +23,10 @@ import java.util.List;
 import java.util.UUID;
 
 import org.apache.cxf.jaxrs.client.WebClient;
-import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
 import org.apache.cxf.systest.jaxrs.Book;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.cxf.transport.websocket.WebSocketConstants;
 
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -37,15 +35,7 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-public class JAXRSClientServerWebSocketTest extends 
AbstractBusClientServerTestBase {
-    private static final String PORT = BookServerWebSocket.PORT;
-
-    @BeforeClass
-    public static void startServers() throws Exception {
-        AbstractResourceInfo.clearAllMaps();
-        assertTrue("server did not launch correctly", launchServer(new 
BookServerWebSocket()));
-        createStaticBus();
-    }
+abstract class AbstractJAXRSClientServerWebSocketTest extends 
AbstractBusClientServerTestBase {
 
     @Test
     public void testBookWithWebSocket() throws Exception {
@@ -480,9 +470,8 @@ public class JAXRSClientServerWebSocketTest extends 
AbstractBusClientServerTestB
         }
     }
 
-    protected String getPort() {
-        return PORT;
-    }
+    abstract String getPort();
+
     protected String getContext() {
         return "";
     }
diff --git 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketNoAtmosphereTest.java
 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketNoAtmosphereTest.java
index f0c5cb7..32d363b 100644
--- 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketNoAtmosphereTest.java
+++ 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketNoAtmosphereTest.java
@@ -29,7 +29,7 @@ import static org.junit.Assert.assertTrue;
 /**
  * JAXRSClientServerWebSocketTest without atmosphere
  */
-public class JAXRSClientServerWebSocketNoAtmosphereTest extends 
JAXRSClientServerWebSocketTest {
+public class JAXRSClientServerWebSocketNoAtmosphereTest extends 
AbstractJAXRSClientServerWebSocketTest {
     private static final String PORT = BookServerWebSocket.PORT2;
 
     @BeforeClass
@@ -42,7 +42,7 @@ public class JAXRSClientServerWebSocketNoAtmosphereTest 
extends JAXRSClientServe
 
     @AfterClass
     public static void cleanup() {
-        
//System.clearProperty("org.apache.cxf.transport.websocket.atmosphere.disabled");
+        
System.clearProperty("org.apache.cxf.transport.websocket.atmosphere.disabled");
     }
 
     protected String getPort() {
diff --git 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringNoAtmosphereTest.java
 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringNoAtmosphereTest.java
index da72cc1..3d99b3a 100644
--- 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringNoAtmosphereTest.java
+++ 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringNoAtmosphereTest.java
@@ -44,7 +44,7 @@ public class JAXRSClientServerWebSocketSpringNoAtmosphereTest 
extends JAXRSClien
 
     @AfterClass
     public static void cleanup() {
-        
//System.clearProperty("org.apache.cxf.transport.websocket.atmosphere.disabled");
+        
System.clearProperty("org.apache.cxf.transport.websocket.atmosphere.disabled");
     }
 
     protected String getPort() {
diff --git 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringTest.java
 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringTest.java
index 588dfd9..a06f7f3 100644
--- 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringTest.java
+++ 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.cxf.systest.jaxrs.websocket;
 
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
@@ -27,10 +28,12 @@ import org.junit.BeforeClass;
 /**
  * JAXRSClientServerWebSocket test with jaxrs:server using the embedded jetty 
server.
  */
-public class JAXRSClientServerWebSocketSpringTest extends 
JAXRSClientServerWebSocketTest {
+public class JAXRSClientServerWebSocketSpringTest extends 
AbstractJAXRSClientServerWebSocketTest {
     private static final String PORT = BookServerWebSocket.PORT_SPRING;
+
     @BeforeClass
     public static void startServers() throws Exception {
+        AbstractResourceInfo.clearAllMaps();
 
         @SuppressWarnings({ "unused", "resource" })
         ApplicationContext appctxt =
diff --git 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppNoAtmosphereTest.java
 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppNoAtmosphereTest.java
index 6d1ade5..937b5d1 100644
--- 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppNoAtmosphereTest.java
+++ 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppNoAtmosphereTest.java
@@ -19,27 +19,79 @@
 
 package org.apache.cxf.systest.jaxrs.websocket;
 
+import java.net.URISyntaxException;
+
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
+import org.apache.cxf.systest.jaxrs.Book;
+import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.handler.DefaultHandler;
+import org.eclipse.jetty.server.handler.HandlerCollection;
+import org.eclipse.jetty.webapp.WebAppContext;
+
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
 
 /**
  * JAXRSClientServerWebSocketSpringWebAppTest without atmosphere
  */
-public class JAXRSClientServerWebSocketSpringWebAppNoAtmosphereTest extends 
JAXRSClientServerWebSocketSpringWebAppTest {
+public class JAXRSClientServerWebSocketSpringWebAppNoAtmosphereTest extends 
AbstractJAXRSClientServerWebSocketTest {
     private static final String PORT = BookServerWebSocket.PORT2_WAR;
+    private static org.eclipse.jetty.server.Server server;
 
     @BeforeClass
     public static void startServers() throws Exception {
         
System.setProperty("org.apache.cxf.transport.websocket.atmosphere.disabled", 
"true");
+        AbstractResourceInfo.clearAllMaps();
+
         startServers(PORT);
     }
 
+    protected static void startServers(String port) throws Exception {
+        server = new org.eclipse.jetty.server.Server(Integer.parseInt(port));
+
+        WebAppContext webappcontext = new WebAppContext();
+        String contextPath = null;
+        try {
+            contextPath = JAXRSClientServerWebSocketSpringWebAppTest.class
+                .getResource("/jaxrs_websocket").toURI().getPath();
+        } catch (URISyntaxException e1) {
+            e1.printStackTrace();
+        }
+        webappcontext.setContextPath("/webapp");
+
+        webappcontext.setWar(contextPath);
+        HandlerCollection handlers = new HandlerCollection();
+        handlers.setHandlers(new Handler[] {webappcontext, new 
DefaultHandler()});
+        server.setHandler(handlers);
+        server.start();
+    }
+
     @AfterClass
-    public static void cleanup() {
-        
//System.clearProperty("org.apache.cxf.transport.websocket.atmosphere.disabled");
+    public static void stopServers() throws Exception {
+        server.stop();
+        server.destroy();
+        
System.clearProperty("org.apache.cxf.transport.websocket.atmosphere.disabled");
+    }
+
+    @Test
+    public void testGetBookHTTP() throws Exception {
+        String address = "http://localhost:"; + getPort() + getContext() + 
"/http/web/bookstore/books/1";
+        WebClient wc = WebClient.create(address);
+        wc.accept("application/xml");
+        Book book = wc.get(Book.class);
+        assertEquals(1L, book.getId());
     }
 
     protected String getPort() {
         return PORT;
     }
+
+    @Override
+    protected String getContext() {
+        return "/webapp";
+    }
 }
diff --git 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppTest.java
 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppTest.java
index dc8c5a7..bb84c92 100644
--- 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppTest.java
+++ 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppTest.java
@@ -22,6 +22,7 @@ package org.apache.cxf.systest.jaxrs.websocket;
 import java.net.URISyntaxException;
 
 import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
 import org.apache.cxf.systest.jaxrs.Book;
 import org.eclipse.jetty.server.Handler;
 import org.eclipse.jetty.server.handler.DefaultHandler;
@@ -37,12 +38,14 @@ import static org.junit.Assert.assertEquals;
 /**
  * JAXRSClientServerWebSocket test with jaxrs:server using the jetty webapp 
server.
  */
-public class JAXRSClientServerWebSocketSpringWebAppTest extends 
JAXRSClientServerWebSocketTest {
+public class JAXRSClientServerWebSocketSpringWebAppTest extends 
AbstractJAXRSClientServerWebSocketTest {
     private static final String PORT = BookServerWebSocket.PORT_WAR;
     private static org.eclipse.jetty.server.Server server;
 
     @BeforeClass
     public static void startServers() throws Exception {
+        AbstractResourceInfo.clearAllMaps();
+
         startServers(PORT);
     }
 
diff --git 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketTest.java
 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketTest.java
index 12ab68f..ee8eab2 100644
--- 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketTest.java
+++ 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketTest.java
@@ -19,25 +19,13 @@
 
 package org.apache.cxf.systest.jaxrs.websocket;
 
-import java.util.List;
-import java.util.UUID;
-
-import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
-import org.apache.cxf.systest.jaxrs.Book;
-import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
-import org.apache.cxf.transport.websocket.WebSocketConstants;
 
 import org.junit.BeforeClass;
-import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
-public class JAXRSClientServerWebSocketTest extends 
AbstractBusClientServerTestBase {
+public class JAXRSClientServerWebSocketTest extends 
AbstractJAXRSClientServerWebSocketTest {
     private static final String PORT = BookServerWebSocket.PORT;
 
     @BeforeClass
@@ -47,443 +35,7 @@ public class JAXRSClientServerWebSocketTest extends 
AbstractBusClientServerTestB
         createStaticBus();
     }
 
-    @Test
-    public void testBookWithWebSocket() throws Exception {
-        String address = "ws://localhost:" + getPort() + getContext() + 
"/websocket/web/bookstore";
-
-        WebSocketTestClient wsclient = new WebSocketTestClient(address);
-        wsclient.connect();
-        try {
-            // call the GET service
-            wsclient.sendMessage(("GET " +  getContext() + 
"/websocket/web/bookstore/booknames").getBytes());
-            assertTrue("one book must be returned", wsclient.await(30000));
-            List<WebSocketTestClient.Response> received = 
wsclient.getReceivedResponses();
-            assertEquals(1, received.size());
-            WebSocketTestClient.Response resp = received.get(0);
-            assertEquals(200, resp.getStatusCode());
-            assertEquals("text/plain", resp.getContentType());
-            String value = resp.getTextEntity();
-            assertEquals("CXF in Action", value);
-
-            // call the same GET service in the text mode
-            wsclient.reset(1);
-            wsclient.sendTextMessage("GET " +  getContext() + 
"/websocket/web/bookstore/booknames");
-            assertTrue("one book must be returned", wsclient.await(3));
-            received = wsclient.getReceivedResponses();
-            assertEquals(1, received.size());
-            resp = received.get(0);
-            assertEquals(200, resp.getStatusCode());
-            assertEquals("text/plain", resp.getContentType());
-            value = resp.getTextEntity();
-            assertEquals("CXF in Action", value);
-
-            // call another GET service
-            wsclient.reset(1);
-            wsclient.sendMessage(("GET " +  getContext() + 
"/websocket/web/bookstore/books/123").getBytes());
-            assertTrue("response expected", wsclient.await(3));
-            received = wsclient.getReceivedResponses();
-            resp = received.get(0);
-            assertEquals(200, resp.getStatusCode());
-            assertEquals("application/xml", resp.getContentType());
-            value = resp.getTextEntity();
-            assertTrue(value.startsWith("<?xml ") && 
value.endsWith("</Book>"));
-
-            // call the POST service
-            wsclient.reset(1);
-            wsclient.sendMessage(
-                ("POST " +  getContext() + 
"/websocket/web/bookstore/booksplain\r\nContent-Type: text/plain\r\n\r\n123")
-                    .getBytes());
-            assertTrue("response expected", wsclient.await(3));
-            received = wsclient.getReceivedResponses();
-            resp = received.get(0);
-            assertEquals(200, resp.getStatusCode());
-            assertEquals("text/plain", resp.getContentType());
-            value = resp.getTextEntity();
-            assertEquals("123", value);
-
-            // call the same POST service in the text mode
-            wsclient.reset(1);
-            wsclient.sendTextMessage(
-                "POST " +  getContext() + 
"/websocket/web/bookstore/booksplain\r\nContent-Type: text/plain\r\n\r\n123");
-            assertTrue("response expected", wsclient.await(3));
-            received = wsclient.getReceivedResponses();
-            resp = received.get(0);
-            assertEquals(200, resp.getStatusCode());
-            assertEquals("text/plain", resp.getContentType());
-            value = resp.getTextEntity();
-            assertEquals("123", value);
-
-            // call the GET service returning a continous stream output
-            wsclient.reset(6);
-            wsclient.sendMessage(("GET " +  getContext() + 
"/websocket/web/bookstore/bookbought").getBytes());
-            assertTrue("response expected", wsclient.await(5));
-            received = wsclient.getReceivedResponses();
-            assertEquals(6, received.size());
-            resp = received.get(0);
-            assertEquals(200, resp.getStatusCode());
-            assertEquals("application/octet-stream", resp.getContentType());
-            value = resp.getTextEntity();
-            assertTrue(value.startsWith("Today:"));
-            for (int r = 2, i = 1; i < 6; r *= 2, i++) {
-                // subsequent data should not carry the headers nor the status.
-                resp = received.get(i);
-                assertEquals(0, resp.getStatusCode());
-                assertEquals(r, Integer.parseInt(resp.getTextEntity()));
-            }
-        } finally {
-            wsclient.close();
-        }
-    }
-
-    @Test
-    public void testGetBookStream() throws Exception {
-        String address = "ws://localhost:" + getPort() + getContext() + 
"/websocket/web/bookstore";
-
-        WebSocketTestClient wsclient = new WebSocketTestClient(address);
-        wsclient.connect();
-        try {
-            wsclient.reset(5);
-            wsclient.sendMessage(
-                ("GET " +  getContext() + 
"/websocket/web/bookstore/bookstream\r\nAccept: application/json\r\n\r\n")
-                .getBytes());
-            assertTrue("response expected", wsclient.await(5));
-            List<WebSocketTestClient.Response> received = 
wsclient.getReceivedResponses();
-            assertEquals(5, received.size());
-            WebSocketTestClient.Response resp = received.get(0);
-            assertEquals(200, resp.getStatusCode());
-            assertEquals("application/json", resp.getContentType());
-            String value = resp.getTextEntity();
-            assertEquals(value, getBookJson(1));
-            for (int i = 2; i <= 5; i++) {
-                // subsequent data should not carry the headers nor the status.
-                resp = received.get(i - 1);
-                assertEquals(0, resp.getStatusCode());
-                assertEquals(resp.getTextEntity(), getBookJson(i));
-            }
-        } finally {
-            wsclient.close();
-        }
-    }
-
-    @Test
-    public void testGetBookStreamWithIDReferences() throws Exception {
-        String address = "ws://localhost:" + getPort() + getContext() + 
"/websocket/web/bookstore";
-
-        WebSocketTestClient wsclient = new WebSocketTestClient(address);
-        wsclient.connect();
-        try {
-            wsclient.reset(5);
-            String reqid = UUID.randomUUID().toString();
-            wsclient.sendMessage(
-                ("GET " +  getContext() + 
"/websocket/web/bookstore/bookstream\r\nAccept: application/json\r\n"
-                    + WebSocketConstants.DEFAULT_REQUEST_ID_KEY + ": " + reqid 
+ "\r\n\r\n")
-                .getBytes());
-            assertTrue("response expected", wsclient.await(5));
-            List<WebSocketTestClient.Response> received = 
wsclient.getReceivedResponses();
-            assertEquals(5, received.size());
-            WebSocketTestClient.Response resp = received.get(0);
-            assertEquals(200, resp.getStatusCode());
-            assertEquals("application/json", resp.getContentType());
-            String value = resp.getTextEntity();
-            assertEquals(value, getBookJson(1));
-            for (int i = 2; i <= 5; i++) {
-                // subsequent data should not carry the status but the id 
header
-                resp = received.get(i - 1);
-                assertEquals(0, resp.getStatusCode());
-                assertEquals(reqid, resp.getId());
-                assertEquals(resp.getTextEntity(), getBookJson(i));
-            }
-        } finally {
-            wsclient.close();
-        }
-    }
-
-    private String getBookJson(int index) {
-        return "{\"Book\":{\"id\":" + index + ",\"name\":\"WebSocket" + index 
+ "\"}}";
-    }
-
-    @Test
-    public void testBookWithWebSocketAndHTTP() throws Exception {
-        String address = "ws://localhost:" + getPort() + getContext() + 
"/websocket/web/bookstore";
-
-        WebSocketTestClient wsclient = new WebSocketTestClient(address);
-        wsclient.connect();
-        try {
-            // call the GET service
-            wsclient.sendMessage(("GET " +  getContext() + 
"/websocket/web/bookstore/booknames").getBytes());
-            assertTrue("one book must be returned", wsclient.await(3));
-            List<Object> received = wsclient.getReceived();
-            assertEquals(1, received.size());
-            WebSocketTestClient.Response resp = new 
WebSocketTestClient.Response(received.get(0));
-            assertEquals(200, resp.getStatusCode());
-            assertEquals("text/plain", resp.getContentType());
-            String value = resp.getTextEntity();
-            assertEquals("CXF in Action", value);
-
-            testGetBookHTTPFromWebSocketEndpoint();
-
-        } finally {
-            wsclient.close();
-        }
-    }
-
-    @Test
-    public void testGetBookHTTPFromWebSocketEndpoint() throws Exception {
-        String address = "http://localhost:"; + getPort() + getContext() + 
"/websocket/web/bookstore/books/1";
-        WebClient wc = WebClient.create(address);
-        wc.accept("application/xml");
-        Book book = wc.get(Book.class);
-        assertEquals(1L, book.getId());
-    }
-
-    @Test
-    public void testBookWithWebSocketServletStream() throws Exception {
-        String address = "ws://localhost:" + getPort() + getContext() + 
"/websocket/web/bookstore";
-
-        WebSocketTestClient wsclient = new WebSocketTestClient(address);
-        wsclient.connect();
-        try {
-            wsclient.sendMessage(("GET " +  getContext() + 
"/websocket/web/bookstore/booknames/servletstream")
-                                 .getBytes());
-            assertTrue("one book must be returned", wsclient.await(3));
-            List<WebSocketTestClient.Response> received = 
wsclient.getReceivedResponses();
-            assertEquals(1, received.size());
-            WebSocketTestClient.Response resp = received.get(0);
-            assertEquals(200, resp.getStatusCode());
-            assertEquals("text/plain", resp.getContentType());
-            String value = resp.getTextEntity();
-            assertEquals("CXF in Action", value);
-        } finally {
-            wsclient.close();
-        }
-    }
-
-    @Test
-    public void testWrongMethod() throws Exception {
-        String address = "ws://localhost:" + getPort() + getContext() + 
"/websocket/web/bookstore";
-
-        WebSocketTestClient wsclient = new WebSocketTestClient(address);
-        wsclient.connect();
-        try {
-            // call the GET service using POST
-            wsclient.reset(1);
-            wsclient.sendMessage(("POST " +  getContext() + 
"/websocket/web/bookstore/booknames").getBytes());
-            assertTrue("error response expected", wsclient.await(3));
-            List<WebSocketTestClient.Response> received = 
wsclient.getReceivedResponses();
-            assertEquals(1, received.size());
-            WebSocketTestClient.Response resp = received.get(0);
-            assertEquals(405, resp.getStatusCode());
-        } finally {
-            wsclient.close();
-        }
-    }
-
-    @Test
-    public void testPathRestriction() throws Exception {
-        String address = "ws://localhost:" + getPort() + getContext() + 
"/websocket/web/bookstore";
-
-        WebSocketTestClient wsclient = new WebSocketTestClient(address);
-        wsclient.connect();
-        try {
-            // call the GET service over the different path
-            wsclient.sendMessage(("GET " +  getContext() + 
"/websocket/bookstore2").getBytes());
-            assertTrue("error response expected", wsclient.await(3));
-            List<WebSocketTestClient.Response> received = 
wsclient.getReceivedResponses();
-            assertEquals(1, received.size());
-            WebSocketTestClient.Response resp = received.get(0);
-            assertEquals(400, resp.getStatusCode());
-        } finally {
-            wsclient.close();
-        }
-    }
-
-    @Test
-    public void testCallsWithIDReferences() throws Exception {
-        String address = "ws://localhost:" + getPort() + getContext() + 
"/websocket/web/bookstore";
-
-        WebSocketTestClient wsclient = new WebSocketTestClient(address);
-        wsclient.connect();
-        try {
-            // call the POST service without requestId
-            wsclient.sendTextMessage(
-                "POST " +  getContext() + 
"/websocket/web/bookstore/booksplain\r\nContent-Type: text/plain\r\n\r\n459");
-            assertTrue("response expected", wsclient.await(3));
-            List<WebSocketTestClient.Response> received = 
wsclient.getReceivedResponses();
-            WebSocketTestClient.Response resp = received.get(0);
-            assertEquals(200, resp.getStatusCode());
-            assertEquals("text/plain", resp.getContentType());
-            String value = resp.getTextEntity();
-            assertEquals("459", value);
-            String id = resp.getId();
-            assertNull("response id is incorrect", id);
-
-            // call the POST service twice with a unique requestId
-            wsclient.reset(2);
-            String reqid1 = UUID.randomUUID().toString();
-            String reqid2 = UUID.randomUUID().toString();
-            wsclient.sendTextMessage(
-                "POST " +  getContext() + 
"/websocket/web/bookstore/booksplain\r\nContent-Type: text/plain\r\n"
-                + WebSocketConstants.DEFAULT_REQUEST_ID_KEY + ": " + reqid1 + 
"\r\n\r\n549");
-            wsclient.sendTextMessage(
-                "POST " +  getContext() + 
"/websocket/web/bookstore/booksplain\r\nContent-Type: text/plain\r\n"
-                + WebSocketConstants.DEFAULT_REQUEST_ID_KEY + ": " + reqid2 + 
"\r\n\r\n495");
-            assertTrue("response expected", wsclient.await(3));
-            received = wsclient.getReceivedResponses();
-            for (WebSocketTestClient.Response r : received) {
-                assertEquals(200, r.getStatusCode());
-                assertEquals("text/plain", r.getContentType());
-                value = r.getTextEntity();
-                id = r.getId();
-                if (reqid1.equals(id)) {
-                    assertEquals("549", value);
-                } else if (reqid2.equals(id)) {
-                    assertEquals("495", value);
-                } else {
-                    fail("unexpected responseId: " + id);
-                }
-            }
-        } finally {
-            wsclient.close();
-        }
-    }
-
-    @Test
-    public void testCallsInParallel() throws Exception {
-        String address = "ws://localhost:" + getPort() + getContext() + 
"/websocket/web/bookstore";
-
-        WebSocketTestClient wsclient = new WebSocketTestClient(address);
-        wsclient.connect();
-        try {
-            // call the GET service that takes a long time to response
-            wsclient.reset(2);
-            wsclient.sendTextMessage(
-                "GET " +  getContext() + "/websocket/web/bookstore/hold/3000");
-            wsclient.sendTextMessage(
-                "GET " +  getContext() + "/websocket/web/bookstore/hold/3000");
-            // each call takes 3 seconds but executed in parallel, so waiting 
4 secs is sufficient
-            assertTrue("response expected", wsclient.await(4));
-            List<WebSocketTestClient.Response> received = 
wsclient.getReceivedResponses();
-            assertEquals(2, received.size());
-        } finally {
-            wsclient.close();
-        }
-    }
-
-    @Test
-    public void testStreamRegisterAndUnregister() throws Exception {
-        String address = "ws://localhost:" + getPort() + getContext() + 
"/websocket/web/bookstore";
-
-        WebSocketTestClient wsclient1 = new WebSocketTestClient(address);
-        WebSocketTestClient wsclient2 = new WebSocketTestClient(address);
-        wsclient1.connect();
-        wsclient2.connect();
-        try {
-            String regkey = UUID.randomUUID().toString();
-
-            EventCreatorRunner runner = new EventCreatorRunner(wsclient2, 
regkey, 1000, 1000);
-            new Thread(runner).start();
-
-            // register for the event stream with requestId ane expect to get 
2 messages
-            wsclient1.reset(3);
-            wsclient1.sendTextMessage(
-                "GET " +  getContext() + 
"/websocket/web/bookstore/events/register\r\n"
-                    + WebSocketConstants.DEFAULT_REQUEST_ID_KEY + ": " + 
regkey + "\r\n\r\n");
-            assertFalse("only 2 responses expected", wsclient1.await(5));
-            List<WebSocketTestClient.Response> received = 
wsclient1.getReceivedResponses();
-            assertEquals(2, received.size());
-
-            // the first response is the registration confirmation
-            WebSocketTestClient.Response resp = received.get(0);
-            assertEquals(200, resp.getStatusCode());
-            assertEquals("text/plain", resp.getContentType());
-            String value = resp.getTextEntity();
-            assertTrue(value.startsWith("Registered " + regkey));
-            String id = resp.getId();
-            assertEquals("unexpected responseId", regkey, id);
-
-            // the second response is the event news
-            resp = received.get(1);
-            assertEquals(0, resp.getStatusCode());
-            value = resp.getTextEntity();
-            assertEquals("News: event Hello created", value);
-            id = resp.getId();
-            assertEquals("unexpected responseId", regkey, id);
-
-            String[] values = runner.getValues();
-            assertTrue(runner.isCompleted());
-            assertEquals("Hello created", values[0]);
-            assertTrue(values[1].startsWith("Unregistered: " + regkey));
-            assertEquals("Hola created", values[2]);
-        } finally {
-            wsclient1.close();
-            wsclient2.close();
-        }
-    }
-
-    private class EventCreatorRunner implements Runnable {
-        private WebSocketTestClient wsclient;
-        private String key;
-        private long delay1;
-        private long delay2;
-        private String[] values = new String[3];
-        private boolean completed;
-
-        EventCreatorRunner(WebSocketTestClient wsclient, String key, long 
delay1, long delay2) {
-            this.wsclient = wsclient;
-            this.key = key;
-            this.delay1 = delay1;
-            this.delay2 = delay2;
-        }
-
-        public void run() {
-            try {
-                Thread.sleep(delay1);
-                // creating an event and the event stream will see this event
-                wsclient.sendTextMessage(
-                    "GET " +  getContext() + 
"/websocket/web/bookstore/events/create/Hello\r\n\r\n");
-                assertTrue("response expected", wsclient.await(3));
-                List<WebSocketTestClient.Response> received = 
wsclient.getReceivedResponses();
-                WebSocketTestClient.Response resp = received.get(0);
-                values[0] = resp.getTextEntity();
-
-                Thread.sleep(delay2);
-                wsclient.reset(1);
-                // unregistering the event stream
-                wsclient.sendTextMessage(
-                    "GET " +  getContext() + 
"/websocket/web/bookstore/events/unregister/" + key + "\r\n\r\n");
-                assertTrue("response expected", wsclient.await(3));
-                received = wsclient.getReceivedResponses();
-                resp = received.get(0);
-                values[1] = resp.getTextEntity();
-
-                wsclient.reset(1);
-                // creating another event and the event stream will not see 
this event
-                wsclient.sendTextMessage(
-                    "GET " +  getContext() + 
"/websocket/web/bookstore/events/create/Hola\r\n\r\n");
-                assertTrue("response expected", wsclient.await(3));
-                received = wsclient.getReceivedResponses();
-                resp = received.get(0);
-                values[2] = resp.getTextEntity();
-            } catch (InterruptedException e) {
-                // ignore
-            } finally {
-                completed = true;
-            }
-        }
-
-        public String[] getValues() {
-            return values;
-        }
-
-        public boolean isCompleted() {
-            return completed;
-        }
-    }
-
     protected String getPort() {
         return PORT;
     }
-    protected String getContext() {
-        return "";
-    }
 }

Reply via email to