Repository: incubator-edgent Updated Branches: refs/heads/develop f46dd81a5 -> 62384ddce
[Edgent-438] improve WebSocketClientTest's skip-if-cant-connect Project: http://git-wip-us.apache.org/repos/asf/incubator-edgent/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-edgent/commit/718ff63b Tree: http://git-wip-us.apache.org/repos/asf/incubator-edgent/tree/718ff63b Diff: http://git-wip-us.apache.org/repos/asf/incubator-edgent/diff/718ff63b Branch: refs/heads/develop Commit: 718ff63b5ec1194d138233e7f8481bb205818132 Parents: f46dd81 Author: Dale LaBossiere <dlab...@us.ibm.com> Authored: Mon Nov 20 17:21:50 2017 -0500 Committer: Dale LaBossiere <dlab...@us.ibm.com> Committed: Mon Nov 20 17:21:50 2017 -0500 ---------------------------------------------------------------------- .../WebSocketClientConnectTestHelper.java | 46 ++++++++++++++++++++ .../javax/websocket/WebSocketClientTest.java | 26 ++++------- 2 files changed, 55 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/718ff63b/connectors/websocket/src/test/java/org/apache/edgent/test/connectors/wsclient/javax/websocket/WebSocketClientConnectTestHelper.java ---------------------------------------------------------------------- diff --git a/connectors/websocket/src/test/java/org/apache/edgent/test/connectors/wsclient/javax/websocket/WebSocketClientConnectTestHelper.java b/connectors/websocket/src/test/java/org/apache/edgent/test/connectors/wsclient/javax/websocket/WebSocketClientConnectTestHelper.java new file mode 100644 index 0000000..f6ffc12 --- /dev/null +++ b/connectors/websocket/src/test/java/org/apache/edgent/test/connectors/wsclient/javax/websocket/WebSocketClientConnectTestHelper.java @@ -0,0 +1,46 @@ +package org.apache.edgent.test.connectors.wsclient.javax.websocket; + +import java.net.URI; +import java.util.Properties; + +import javax.websocket.ClientEndpoint; +import javax.websocket.ContainerProvider; +import javax.websocket.OnError; +import javax.websocket.Session; +import javax.websocket.WebSocketContainer; + +import org.eclipse.jetty.util.component.LifeCycle; + +@ClientEndpoint +public class WebSocketClientConnectTestHelper { + + @OnError + public void onError(Session client, Throwable t) { + System.err.println("Unable to connect to WebSocket server: "+t.getMessage()); + } + + public static void connectToServer(Properties config) throws Exception { + // Verify we can create a real websocket connection to the server. + // + // We do the following instead of a simple socket connect + // because in at least one location, the websocket connect/upgrade + // fails with: expecting 101 got 403 (Forbidden). + // There's something about that location that's not + // allowing a websocket to be created to the (public) server. + // Everything works fine from other locations. + // + String wsUri = config.getProperty("ws.uri"); + URI uri = new URI(wsUri); + WebSocketContainer container = ContainerProvider.getWebSocketContainer(); + try { + Session session = container.connectToServer(WebSocketClientConnectTestHelper.class, uri); + session.close(); + } + finally { + if (container instanceof LifeCycle) { + ((LifeCycle)container).stop(); + } + } + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/718ff63b/connectors/websocket/src/test/java/org/apache/edgent/test/connectors/wsclient/javax/websocket/WebSocketClientTest.java ---------------------------------------------------------------------- diff --git a/connectors/websocket/src/test/java/org/apache/edgent/test/connectors/wsclient/javax/websocket/WebSocketClientTest.java b/connectors/websocket/src/test/java/org/apache/edgent/test/connectors/wsclient/javax/websocket/WebSocketClientTest.java index 4ef65c9..b256bfe 100644 --- a/connectors/websocket/src/test/java/org/apache/edgent/test/connectors/wsclient/javax/websocket/WebSocketClientTest.java +++ b/connectors/websocket/src/test/java/org/apache/edgent/test/connectors/wsclient/javax/websocket/WebSocketClientTest.java @@ -23,8 +23,6 @@ import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeTrue; -import java.net.InetSocketAddress; -import java.net.Socket; import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.HashMap; @@ -772,21 +770,15 @@ public class WebSocketClientTest extends ConnectorTestBase { } private void skipTestIfCantConnect(Properties config) throws Exception { - String wsUri = config.getProperty("ws.uri"); - // Skip tests if the WebSocket server can't be contacted. - try { - URI uri = new URI(wsUri); - int port = uri.getPort(); - if (port == -1) - port = uri.getScheme().equals("ws") ? 80 : 443; - Socket s = new Socket(); - s.connect(new InetSocketAddress(uri.getHost(), port), 5*1000/*cn-timeout-msec*/); - s.close(); - } catch (Exception e) { - System.err.println("Unable to connect to WebSocket server "+wsUri+" : "+e.getMessage()); - e.printStackTrace(); - assumeTrue(false); - } + String wsUri = config.getProperty("ws.uri"); + try { + WebSocketClientConnectTestHelper.connectToServer(config); + } catch (Exception e) { + System.err.println("Unable to connect to WebSocket server "+wsUri+" : "+e.getMessage()); + e.printStackTrace(); + System.err.println("skipTestIfCantConnect(): SKIPPING TEST"); + assumeTrue(false); + } } @Test