diff options
Diffstat (limited to 'jetty-websocket/javax-websocket-server-impl')
-rw-r--r-- | jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/ExtensionStackProcessingTest.java | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/ExtensionStackProcessingTest.java b/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/ExtensionStackProcessingTest.java index 30c2e9fd1a..3096f47a43 100644 --- a/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/ExtensionStackProcessingTest.java +++ b/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/ExtensionStackProcessingTest.java @@ -39,7 +39,12 @@ import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.websocket.api.extensions.ExtensionFactory; +import org.eclipse.jetty.websocket.api.extensions.OutgoingFrames; +import org.eclipse.jetty.websocket.client.io.WebSocketClientConnection; +import org.eclipse.jetty.websocket.common.extensions.ExtensionStack; +import org.eclipse.jetty.websocket.common.extensions.compress.DeflateFrameExtension; import org.eclipse.jetty.websocket.jsr356.JsrExtension; +import org.eclipse.jetty.websocket.jsr356.JsrSession; import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer; import org.eclipse.jetty.websocket.jsr356.server.samples.echo.BasicEchoEndpoint; import org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter; @@ -83,7 +88,55 @@ public class ExtensionStackProcessingTest { server.stop(); } - + + @Test + public void testDeflateFrameExtension() throws Exception + { + Assume.assumeTrue("Server has deflate-frame extension registered",serverExtensionFactory.isAvailable("deflate-frame")); + + ClientEndpointConfig config = ClientEndpointConfig.Builder.create() + .extensions(Arrays.<Extension>asList(new JsrExtension("deflate-frame"))) + .build(); + + final String content = "deflate_me"; + final CountDownLatch messageLatch = new CountDownLatch(1); + URI uri = URI.create("ws://localhost:" + connector.getLocalPort()); + Session session = client.connectToServer(new EndpointAdapter() + { + @Override + public void onMessage(String message) + { + Assert.assertEquals(content, message); + messageLatch.countDown(); + } + }, config, uri); + + // Make sure everything is wired properly. + OutgoingFrames firstOut = ((JsrSession)session).getOutgoingHandler(); + Assert.assertTrue(firstOut instanceof ExtensionStack); + ExtensionStack extensionStack = (ExtensionStack)firstOut; + Assert.assertTrue(extensionStack.isRunning()); + OutgoingFrames secondOut = extensionStack.getNextOutgoing(); + Assert.assertTrue(secondOut instanceof DeflateFrameExtension); + DeflateFrameExtension deflateExtension = (DeflateFrameExtension)secondOut; + Assert.assertTrue(deflateExtension.isRunning()); + OutgoingFrames thirdOut = deflateExtension.getNextOutgoing(); + Assert.assertTrue(thirdOut instanceof WebSocketClientConnection); + + final CountDownLatch latch = new CountDownLatch(1); + session.getAsyncRemote().sendText(content, new SendHandler() + { + @Override + public void onResult(SendResult result) + { + latch.countDown(); + } + }); + + Assert.assertTrue(latch.await(5, TimeUnit.SECONDS)); + Assert.assertTrue(messageLatch.await(5, TimeUnit.SECONDS)); + } + @Test public void testPerMessageDeflateExtension() throws Exception { |