Made tests more reliable by waiting for the websocket connection to be established
and for onOpen() to be called.
This commit is contained in:
parent
e7b787996f
commit
06f0498a48
|
@ -15,8 +15,6 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.jetty.websocket;
|
package org.eclipse.jetty.websocket;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.*;
|
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
@ -24,7 +22,6 @@ import org.eclipse.jetty.server.Connector;
|
||||||
import org.eclipse.jetty.server.Server;
|
import org.eclipse.jetty.server.Server;
|
||||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||||
import org.eclipse.jetty.servlet.ServletHolder;
|
import org.eclipse.jetty.servlet.ServletHolder;
|
||||||
import org.eclipse.jetty.util.log.StdErrLog;
|
|
||||||
import org.eclipse.jetty.websocket.helper.CaptureSocket;
|
import org.eclipse.jetty.websocket.helper.CaptureSocket;
|
||||||
import org.eclipse.jetty.websocket.helper.SafariD00;
|
import org.eclipse.jetty.websocket.helper.SafariD00;
|
||||||
import org.eclipse.jetty.websocket.helper.WebSocketCaptureServlet;
|
import org.eclipse.jetty.websocket.helper.WebSocketCaptureServlet;
|
||||||
|
@ -32,9 +29,11 @@ import org.junit.After;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.is;
|
||||||
|
import static org.hamcrest.Matchers.notNullValue;
|
||||||
|
|
||||||
public class SafariWebsocketDraft0Test
|
public class SafariWebsocketDraft0Test
|
||||||
{
|
{
|
||||||
private Server server;
|
private Server server;
|
||||||
|
@ -76,7 +75,7 @@ public class SafariWebsocketDraft0Test
|
||||||
serverUri = new URI(String.format("ws://%s:%d/",host,port));
|
serverUri = new URI(String.format("ws://%s:%d/",host,port));
|
||||||
// System.out.printf("Server URI: %s%n",serverUri);
|
// System.out.printf("Server URI: %s%n",serverUri);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSendTextMessages() throws Exception
|
public void testSendTextMessages() throws Exception
|
||||||
{
|
{
|
||||||
|
@ -96,10 +95,11 @@ public class SafariWebsocketDraft0Test
|
||||||
|
|
||||||
CaptureSocket socket = servlet.captures.get(0);
|
CaptureSocket socket = servlet.captures.get(0);
|
||||||
Assert.assertThat("CaptureSocket",socket,notNullValue());
|
Assert.assertThat("CaptureSocket",socket,notNullValue());
|
||||||
Assert.assertThat("CaptureSocket.isConnected", socket.isConnected(), is(true));
|
Assert.assertThat("CaptureSocket.isConnected", socket.awaitConnected(1000), is(true));
|
||||||
|
|
||||||
// Give servlet 500 millisecond to process messages
|
// Give servlet time to process messages
|
||||||
threadSleep(1,TimeUnit.SECONDS);
|
threadSleep(1,TimeUnit.SECONDS);
|
||||||
|
|
||||||
// Should have captured 5 messages.
|
// Should have captured 5 messages.
|
||||||
Assert.assertThat("CaptureSocket.messages.size",socket.messages.size(),is(5));
|
Assert.assertThat("CaptureSocket.messages.size",socket.messages.size(),is(5));
|
||||||
}
|
}
|
||||||
|
@ -109,13 +109,13 @@ public class SafariWebsocketDraft0Test
|
||||||
safari.disconnect();
|
safari.disconnect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void threadSleep(int dur, TimeUnit unit) throws InterruptedException
|
public static void threadSleep(int dur, TimeUnit unit) throws InterruptedException
|
||||||
{
|
{
|
||||||
long ms = TimeUnit.MILLISECONDS.convert(dur,unit);
|
long ms = TimeUnit.MILLISECONDS.convert(dur,unit);
|
||||||
Thread.sleep(ms);
|
Thread.sleep(ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void stopServer() throws Exception
|
public void stopServer() throws Exception
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,8 +15,6 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.jetty.websocket;
|
package org.eclipse.jetty.websocket;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.*;
|
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
@ -32,6 +30,9 @@ import org.junit.Assert;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.is;
|
||||||
|
import static org.hamcrest.Matchers.notNullValue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WebSocketCommTest - to test reported undelivered messages in bug <a
|
* WebSocketCommTest - to test reported undelivered messages in bug <a
|
||||||
* href="https://jira.codehaus.org/browse/JETTY-1463">JETTY-1463</a>
|
* href="https://jira.codehaus.org/browse/JETTY-1463">JETTY-1463</a>
|
||||||
|
@ -109,11 +110,11 @@ public class WebSocketCommTest
|
||||||
|
|
||||||
CaptureSocket socket = servlet.captures.get(0);
|
CaptureSocket socket = servlet.captures.get(0);
|
||||||
Assert.assertThat("CaptureSocket",socket,notNullValue());
|
Assert.assertThat("CaptureSocket",socket,notNullValue());
|
||||||
Assert.assertThat("CaptureSocket.isConnected",socket.isConnected(),is(true));
|
Assert.assertThat("CaptureSocket.isConnected",socket.awaitConnected(1000),is(true));
|
||||||
|
|
||||||
// Give servlet 500 millisecond to process messages
|
// Give servlet time to process messages
|
||||||
TimeUnit.MILLISECONDS.sleep(500);
|
TimeUnit.MILLISECONDS.sleep(500);
|
||||||
|
|
||||||
// Should have captured 5 messages.
|
// Should have captured 5 messages.
|
||||||
Assert.assertThat("CaptureSocket.messages.size",socket.messages.size(),is(5));
|
Assert.assertThat("CaptureSocket.messages.size",socket.messages.size(),is(5));
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,12 +17,14 @@ package org.eclipse.jetty.websocket.helper;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import org.eclipse.jetty.websocket.WebSocket;
|
import org.eclipse.jetty.websocket.WebSocket;
|
||||||
|
|
||||||
public class CaptureSocket implements WebSocket, WebSocket.OnTextMessage
|
public class CaptureSocket implements WebSocket.OnTextMessage
|
||||||
{
|
{
|
||||||
private Connection conn;
|
private final CountDownLatch latch = new CountDownLatch(1);
|
||||||
public List<String> messages;
|
public List<String> messages;
|
||||||
|
|
||||||
public CaptureSocket()
|
public CaptureSocket()
|
||||||
|
@ -30,13 +32,9 @@ public class CaptureSocket implements WebSocket, WebSocket.OnTextMessage
|
||||||
messages = new ArrayList<String>();
|
messages = new ArrayList<String>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isConnected()
|
public boolean awaitConnected(long timeout) throws InterruptedException
|
||||||
{
|
{
|
||||||
if (conn == null)
|
return latch.await(timeout, TimeUnit.MILLISECONDS);
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return conn.isOpen();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onMessage(String data)
|
public void onMessage(String data)
|
||||||
|
@ -47,11 +45,10 @@ public class CaptureSocket implements WebSocket, WebSocket.OnTextMessage
|
||||||
|
|
||||||
public void onOpen(Connection connection)
|
public void onOpen(Connection connection)
|
||||||
{
|
{
|
||||||
this.conn = connection;
|
latch.countDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onClose(int closeCode, String message)
|
public void onClose(int closeCode, String message)
|
||||||
{
|
{
|
||||||
this.conn = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,8 +15,6 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.jetty.websocket.helper;
|
package org.eclipse.jetty.websocket.helper;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.*;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
@ -32,6 +30,8 @@ import org.eclipse.jetty.io.ByteArrayBuffer;
|
||||||
import org.eclipse.jetty.util.TypeUtil;
|
import org.eclipse.jetty.util.TypeUtil;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.is;
|
||||||
|
|
||||||
public class SafariD00
|
public class SafariD00
|
||||||
{
|
{
|
||||||
private URI uri;
|
private URI uri;
|
||||||
|
@ -48,7 +48,7 @@ public class SafariD00
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open the Socket to the destination endpoint and
|
* Open the Socket to the destination endpoint and
|
||||||
*
|
*
|
||||||
* @return the open java Socket.
|
* @return the open java Socket.
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
|
@ -65,7 +65,7 @@ public class SafariD00
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Issue an Http websocket (Draft-0) upgrade request using the Safari particulars.
|
* Issue an Http websocket (Draft-0) upgrade request using the Safari particulars.
|
||||||
*
|
*
|
||||||
* @throws UnsupportedEncodingException
|
* @throws UnsupportedEncodingException
|
||||||
*/
|
*/
|
||||||
public void issueHandshake() throws IOException
|
public void issueHandshake() throws IOException
|
||||||
|
@ -96,6 +96,8 @@ public class SafariD00
|
||||||
InputStreamReader reader = new InputStreamReader(in);
|
InputStreamReader reader = new InputStreamReader(in);
|
||||||
BufferedReader br = new BufferedReader(reader);
|
BufferedReader br = new BufferedReader(reader);
|
||||||
|
|
||||||
|
socket.setSoTimeout(5000);
|
||||||
|
|
||||||
boolean foundEnd = false;
|
boolean foundEnd = false;
|
||||||
String line;
|
String line;
|
||||||
while (!foundEnd)
|
while (!foundEnd)
|
||||||
|
|
Loading…
Reference in New Issue