use of org.eclipse.jetty.websocket.api.extensions.ExtensionConfig in project jetty.project by eclipse.
the class DeflateFrameExtensionTest method testGeneratedTwoFrames.
@Test
public void testGeneratedTwoFrames() throws IOException {
WebSocketPolicy policy = WebSocketPolicy.newClientPolicy();
DeflateFrameExtension ext = new DeflateFrameExtension();
ext.setBufferPool(bufferPool);
ext.setPolicy(policy);
ext.setConfig(new ExtensionConfig(ext.getName()));
Generator generator = new Generator(policy, bufferPool, true);
generator.configureFromExtensions(Collections.singletonList(ext));
OutgoingNetworkBytesCapture capture = new OutgoingNetworkBytesCapture(generator);
ext.setNextOutgoingFrames(capture);
ext.outgoingFrame(new TextFrame().setPayload("Hello"), null, BatchMode.OFF);
ext.outgoingFrame(new TextFrame().setPayload("There"), null, BatchMode.OFF);
capture.assertBytes(0, "c107f248cdc9c90700");
}
use of org.eclipse.jetty.websocket.api.extensions.ExtensionConfig in project jetty.project by eclipse.
the class PerMessageDeflateExtensionTest method testOutgoingPing.
/**
* Outgoing PING (Control Frame) should pass through extension unmodified
* @throws IOException on test failure
*/
@Test
public void testOutgoingPing() throws IOException {
PerMessageDeflateExtension ext = new PerMessageDeflateExtension();
ext.setBufferPool(bufferPool);
ext.setPolicy(WebSocketPolicy.newServerPolicy());
ExtensionConfig config = ExtensionConfig.parse("permessage-deflate");
ext.setConfig(config);
// Setup capture of outgoing frames
OutgoingFramesCapture capture = new OutgoingFramesCapture();
// Wire up stack
ext.setNextOutgoingFrames(capture);
String payload = "Are you there?";
Frame ping = new PingFrame().setPayload(payload);
ext.outgoingFrame(ping, null, BatchMode.OFF);
capture.assertFrameCount(1);
capture.assertHasFrame(OpCode.PING, 1);
WebSocketFrame actual = capture.getFrames().getFirst();
Assert.assertThat("Frame.opcode", actual.getOpCode(), is(OpCode.PING));
Assert.assertThat("Frame.fin", actual.isFin(), is(true));
Assert.assertThat("Frame.rsv1", actual.isRsv1(), is(false));
Assert.assertThat("Frame.rsv2", actual.isRsv2(), is(false));
Assert.assertThat("Frame.rsv3", actual.isRsv3(), is(false));
ByteBuffer expected = BufferUtil.toBuffer(payload, StandardCharsets.UTF_8);
Assert.assertThat("Frame.payloadLength", actual.getPayloadLength(), is(expected.remaining()));
ByteBufferAssert.assertEquals("Frame.payload", expected, actual.getPayload().slice());
}
use of org.eclipse.jetty.websocket.api.extensions.ExtensionConfig in project jetty.project by eclipse.
the class PerMessageDeflateExtensionTest method testIncomingPing.
/**
* Incoming PING (Control Frame) should pass through extension unmodified
*/
@Test
public void testIncomingPing() {
PerMessageDeflateExtension ext = new PerMessageDeflateExtension();
ext.setBufferPool(bufferPool);
ext.setPolicy(WebSocketPolicy.newServerPolicy());
ExtensionConfig config = ExtensionConfig.parse("permessage-deflate");
ext.setConfig(config);
// Setup capture of incoming frames
IncomingFramesCapture capture = new IncomingFramesCapture();
// Wire up stack
ext.setNextIncomingFrames(capture);
String payload = "Are you there?";
Frame ping = new PingFrame().setPayload(payload);
ext.incomingFrame(ping);
capture.assertFrameCount(1);
capture.assertHasFrame(OpCode.PING, 1);
WebSocketFrame actual = capture.getFrames().poll();
Assert.assertThat("Frame.opcode", actual.getOpCode(), is(OpCode.PING));
Assert.assertThat("Frame.fin", actual.isFin(), is(true));
Assert.assertThat("Frame.rsv1", actual.isRsv1(), is(false));
Assert.assertThat("Frame.rsv2", actual.isRsv2(), is(false));
Assert.assertThat("Frame.rsv3", actual.isRsv3(), is(false));
ByteBuffer expected = BufferUtil.toBuffer(payload, StandardCharsets.UTF_8);
Assert.assertThat("Frame.payloadLength", actual.getPayloadLength(), is(expected.remaining()));
ByteBufferAssert.assertEquals("Frame.payload", expected, actual.getPayload().slice());
}
use of org.eclipse.jetty.websocket.api.extensions.ExtensionConfig in project jetty.project by eclipse.
the class ExtensionStackTest method testStartIdentity.
@Test
public void testStartIdentity() throws Exception {
ExtensionStack stack = createExtensionStack();
try {
// 1 extension
List<ExtensionConfig> configs = new ArrayList<>();
configs.add(ExtensionConfig.parse("identity"));
stack.negotiate(configs);
// Setup Listeners
DummyIncomingFrames session = new DummyIncomingFrames("Session");
DummyOutgoingFrames connection = new DummyOutgoingFrames("Connection");
stack.setNextOutgoing(connection);
stack.setNextIncoming(session);
// Start
stack.start();
// Dump
LOG.debug("{}", stack.dump());
// Should be no change to handlers
Extension actualIncomingExtension = assertIsExtension("Incoming", stack.getNextIncoming(), IdentityExtension.class);
Extension actualOutgoingExtension = assertIsExtension("Outgoing", stack.getNextOutgoing(), IdentityExtension.class);
Assert.assertEquals(actualIncomingExtension, actualOutgoingExtension);
} finally {
stack.stop();
}
}
use of org.eclipse.jetty.websocket.api.extensions.ExtensionConfig in project jetty.project by eclipse.
the class ExtensionStackTest method testStartIdentityTwice.
@Test
public void testStartIdentityTwice() throws Exception {
ExtensionStack stack = createExtensionStack();
try {
// 1 extension
List<ExtensionConfig> configs = new ArrayList<>();
configs.add(ExtensionConfig.parse("identity; id=A"));
configs.add(ExtensionConfig.parse("identity; id=B"));
stack.negotiate(configs);
// Setup Listeners
DummyIncomingFrames session = new DummyIncomingFrames("Session");
DummyOutgoingFrames connection = new DummyOutgoingFrames("Connection");
stack.setNextOutgoing(connection);
stack.setNextIncoming(session);
// Start
stack.start();
// Dump
LOG.debug("{}", stack.dump());
// Should be no change to handlers
IdentityExtension actualIncomingExtension = assertIsExtension("Incoming", stack.getNextIncoming(), IdentityExtension.class);
IdentityExtension actualOutgoingExtension = assertIsExtension("Outgoing", stack.getNextOutgoing(), IdentityExtension.class);
Assert.assertThat("Incoming[identity].id", actualIncomingExtension.getParam("id"), is("A"));
Assert.assertThat("Outgoing[identity].id", actualOutgoingExtension.getParam("id"), is("B"));
} finally {
stack.stop();
}
}
Aggregations