Issue #207 - adding addMessageHandler(<lambda>) tests
This commit is contained in:
parent
0672f621e5
commit
2ee819c2c6
|
@ -18,13 +18,23 @@
|
||||||
|
|
||||||
package org.eclipse.jetty.websocket.jsr356;
|
package org.eclipse.jetty.websocket.jsr356;
|
||||||
|
|
||||||
|
import static org.hamcrest.CoreMatchers.is;
|
||||||
|
import static org.junit.Assert.assertThat;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import javax.websocket.ClientEndpointConfig;
|
import javax.websocket.ClientEndpointConfig;
|
||||||
import javax.websocket.DeploymentException;
|
import javax.websocket.DeploymentException;
|
||||||
import javax.websocket.MessageHandler;
|
import javax.websocket.MessageHandler;
|
||||||
|
|
||||||
|
import org.eclipse.jetty.util.BufferUtil;
|
||||||
import org.eclipse.jetty.websocket.api.WebSocketPolicy;
|
import org.eclipse.jetty.websocket.api.WebSocketPolicy;
|
||||||
|
import org.eclipse.jetty.websocket.common.frames.BinaryFrame;
|
||||||
|
import org.eclipse.jetty.websocket.common.frames.ContinuationFrame;
|
||||||
|
import org.eclipse.jetty.websocket.common.frames.TextFrame;
|
||||||
import org.eclipse.jetty.websocket.common.io.LocalWebSocketConnection;
|
import org.eclipse.jetty.websocket.common.io.LocalWebSocketConnection;
|
||||||
import org.eclipse.jetty.websocket.common.scopes.SimpleContainerScope;
|
import org.eclipse.jetty.websocket.common.scopes.SimpleContainerScope;
|
||||||
import org.eclipse.jetty.websocket.common.test.LeakTrackingBufferPoolRule;
|
import org.eclipse.jetty.websocket.common.test.LeakTrackingBufferPoolRule;
|
||||||
|
@ -46,17 +56,17 @@ public class JsrSessionTest
|
||||||
|
|
||||||
private ClientContainer container;
|
private ClientContainer container;
|
||||||
private JsrSession session;
|
private JsrSession session;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void initSession() throws Exception
|
public void initSession() throws Exception
|
||||||
{
|
{
|
||||||
String id = JsrSessionTest.class.getSimpleName();
|
String id = JsrSessionTest.class.getSimpleName();
|
||||||
URI requestURI = URI.create("ws://localhost/" + id);
|
URI requestURI = URI.create("ws://localhost/" + id);
|
||||||
|
|
||||||
WebSocketPolicy policy = WebSocketPolicy.newClientPolicy();
|
WebSocketPolicy policy = WebSocketPolicy.newClientPolicy();
|
||||||
|
|
||||||
// Container
|
// Container
|
||||||
container = new ClientContainer(new SimpleContainerScope(policy,bufferPool));
|
container = new ClientContainer(new SimpleContainerScope(policy, bufferPool));
|
||||||
container.start();
|
container.start();
|
||||||
LocalWebSocketConnection connection = new LocalWebSocketConnection(bufferPool);
|
LocalWebSocketConnection connection = new LocalWebSocketConnection(bufferPool);
|
||||||
ClientEndpointConfig config = new EmptyClientEndpointConfig();
|
ClientEndpointConfig config = new EmptyClientEndpointConfig();
|
||||||
|
@ -73,20 +83,20 @@ public class JsrSessionTest
|
||||||
session.stop();
|
session.stop();
|
||||||
container.stop();
|
container.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMessageHandlerBinary() throws DeploymentException
|
public void testMessageHandlerBinary() throws DeploymentException
|
||||||
{
|
{
|
||||||
session.addMessageHandler(new ByteBufferPartialHandler());
|
session.addMessageHandler(new ByteBufferPartialHandler());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMessageHandlerBoth() throws DeploymentException
|
public void testMessageHandlerBoth() throws DeploymentException
|
||||||
{
|
{
|
||||||
session.addMessageHandler(new StringWholeHandler());
|
session.addMessageHandler(new StringWholeHandler());
|
||||||
session.addMessageHandler(new ByteArrayWholeHandler());
|
session.addMessageHandler(new ByteArrayWholeHandler());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMessageHandlerReplaceTextHandler() throws DeploymentException
|
public void testMessageHandlerReplaceTextHandler() throws DeploymentException
|
||||||
{
|
{
|
||||||
|
@ -96,10 +106,64 @@ public class JsrSessionTest
|
||||||
session.removeMessageHandler(strHandler); // remove original TEXT handler
|
session.removeMessageHandler(strHandler); // remove original TEXT handler
|
||||||
session.addMessageHandler(new LongMessageHandler()); // add new TEXT handler
|
session.addMessageHandler(new LongMessageHandler()); // add new TEXT handler
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMessageHandlerText() throws DeploymentException
|
public void testMessageHandlerText() throws DeploymentException
|
||||||
{
|
{
|
||||||
session.addMessageHandler(new StringWholeHandler());
|
session.addMessageHandler(new StringWholeHandler());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test Java 8 Lamba of {@link javax.websocket.MessageHandler.Whole}
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMessageHandler_11_Whole() throws DeploymentException
|
||||||
|
{
|
||||||
|
final List<String> received = new ArrayList<>();
|
||||||
|
|
||||||
|
// Whole Message
|
||||||
|
session.addMessageHandler(String.class, (msg) -> received.add(msg));
|
||||||
|
|
||||||
|
session.open();
|
||||||
|
|
||||||
|
session.incomingFrame(new TextFrame().setPayload("G'day").setFin(true));
|
||||||
|
session.incomingFrame(new TextFrame().setPayload("Hello World").setFin(true));
|
||||||
|
|
||||||
|
assertThat("Received msgs", received.size(), is(2));
|
||||||
|
assertThat("Received Message[0]", received.get(0), is("G'day"));
|
||||||
|
assertThat("Received Message[1]", received.get(1), is("Hello World"));
|
||||||
|
|
||||||
|
session.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test Java 8 Lamba of {@link javax.websocket.MessageHandler.Partial}
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMessageHandler_11_Partial() throws DeploymentException
|
||||||
|
{
|
||||||
|
final List<Object[]> received = new ArrayList<>();
|
||||||
|
|
||||||
|
// Partial Message
|
||||||
|
session.addMessageHandler(ByteBuffer.class, (partialMsg, isLast) ->
|
||||||
|
{
|
||||||
|
ByteBuffer copy = ByteBuffer.allocate(partialMsg.remaining());
|
||||||
|
copy.put(partialMsg);
|
||||||
|
copy.flip();
|
||||||
|
received.add(new Object[]{copy, isLast});
|
||||||
|
});
|
||||||
|
|
||||||
|
session.open();
|
||||||
|
|
||||||
|
session.incomingFrame(new BinaryFrame().setPayload("G'day").setFin(false));
|
||||||
|
session.incomingFrame(new ContinuationFrame().setPayload(" World").setFin(true));
|
||||||
|
|
||||||
|
assertThat("Received partial", received.size(), is(2));
|
||||||
|
assertThat("Received Message[0].buffer", BufferUtil.toUTF8String((ByteBuffer) received.get(0)[0]), is("G'day"));
|
||||||
|
assertThat("Received Message[0].last", received.get(0)[1], is(false));
|
||||||
|
assertThat("Received Message[1].buffer", BufferUtil.toUTF8String((ByteBuffer) received.get(1)[0]), is(" World"));
|
||||||
|
assertThat("Received Message[1].last", received.get(1)[1], is(true));
|
||||||
|
|
||||||
|
session.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue