Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2015-11-18 04:53:36 +0000
committerGreg Wilkins2015-11-18 04:53:36 +0000
commit4ed4fda1739814eb443d778511f6e05588914f20 (patch)
tree6e7a5878acbc860c765ffe875584ec8d1bf3935b /jetty-servlet
parent0d647fc95aa587354b871725a37eb2ba96f26ca6 (diff)
parent8ed34b339588cd4d3937cdd443cc00ee46b4f2f1 (diff)
downloadorg.eclipse.jetty.project-4ed4fda1739814eb443d778511f6e05588914f20.tar.gz
org.eclipse.jetty.project-4ed4fda1739814eb443d778511f6e05588914f20.tar.xz
org.eclipse.jetty.project-4ed4fda1739814eb443d778511f6e05588914f20.zip
Merge remote-tracking branch 'origin/jetty-9.3.x'
Diffstat (limited to 'jetty-servlet')
-rw-r--r--jetty-servlet/pom.xml7
-rw-r--r--jetty-servlet/src/test/java/org/eclipse/jetty/servlet/GzipHandlerTest.java201
2 files changed, 208 insertions, 0 deletions
diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml
index 342323834d..b3db655a84 100644
--- a/jetty-servlet/pom.xml
+++ b/jetty-servlet/pom.xml
@@ -53,5 +53,12 @@
<artifactId>jetty-test-helper</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-http</artifactId>
+ <version>${project.version}</version>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/GzipHandlerTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/GzipHandlerTest.java
new file mode 100644
index 0000000000..3ba305d8da
--- /dev/null
+++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/GzipHandlerTest.java
@@ -0,0 +1,201 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2015 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+//
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+//
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+//
+
+package org.eclipse.jetty.servlet;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.util.zip.GZIPInputStream;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.jetty.http.HttpTester;
+import org.eclipse.jetty.server.LocalConnector;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.gzip.GzipHandler;
+import org.eclipse.jetty.util.IO;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class GzipHandlerTest
+{
+ private static String __content =
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In quis felis nunc. "+
+ "Quisque suscipit mauris et ante auctor ornare rhoncus lacus aliquet. Pellentesque "+
+ "habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. "+
+ "Vestibulum sit amet felis augue, vel convallis dolor. Cras accumsan vehicula diam "+
+ "at faucibus. Etiam in urna turpis, sed congue mi. Morbi et lorem eros. Donec vulputate "+
+ "velit in risus suscipit lobortis. Aliquam id urna orci, nec sollicitudin ipsum. "+
+ "Cras a orci turpis. Donec suscipit vulputate cursus. Mauris nunc tellus, fermentum "+
+ "eu auctor ut, mollis at diam. Quisque porttitor ultrices metus, vitae tincidunt massa "+
+ "sollicitudin a. Vivamus porttitor libero eget purus hendrerit cursus. Integer aliquam "+
+ "consequat mauris quis luctus. Cras enim nibh, dignissim eu faucibus ac, mollis nec neque. "+
+ "Aliquam purus mauris, consectetur nec convallis lacinia, porta sed ante. Suspendisse "+
+ "et cursus magna. Donec orci enim, molestie a lobortis eu, imperdiet vitae neque.";
+
+ private static String __icontent = "BEFORE"+__content+"AFTER";
+
+ private Server _server;
+ private LocalConnector _connector;
+
+ @Before
+ public void init() throws Exception
+ {
+ _server = new Server();
+ _connector = new LocalConnector(_server);
+ _server.addConnector(_connector);
+
+ GzipHandler gzipHandler = new GzipHandler();
+
+ ServletContextHandler context = new ServletContextHandler(gzipHandler,"/ctx");
+ ServletHandler servlets = context.getServletHandler();
+
+ _server.setHandler(gzipHandler);
+ gzipHandler.setHandler(context);
+ context.setHandler(servlets);
+ servlets.addServletWithMapping(TestServlet.class,"/content");
+ servlets.addServletWithMapping(ForwardServlet.class,"/forward");
+ servlets.addServletWithMapping(IncludeServlet.class,"/include");
+
+ _server.start();
+ }
+
+ public static class TestServlet extends HttpServlet
+ {
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException
+ {
+ PrintWriter writer = response.getWriter();
+ writer.write(__content);
+ }
+ }
+
+ public static class ForwardServlet extends HttpServlet
+ {
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
+ {
+ getServletContext().getRequestDispatcher("/content").forward(request,response);
+ }
+ }
+
+ public static class IncludeServlet extends HttpServlet
+ {
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
+ {
+ response.getWriter().write("BEFORE");
+ getServletContext().getRequestDispatcher("/content").include(request,response);
+ response.getWriter().write("AFTER");
+ }
+ }
+
+ @After
+ public void destroy() throws Exception
+ {
+ _server.stop();
+ _server.join();
+ }
+
+ @Test
+ public void testGzipHandler() throws Exception
+ {
+ // generated and parsed test
+ HttpTester.Request request = HttpTester.newRequest();
+ HttpTester.Response response;
+
+ request.setMethod("GET");
+ request.setVersion("HTTP/1.0");
+ request.setHeader("Host","tester");
+ request.setHeader("accept-encoding","gzip");
+ request.setURI("/ctx/content");
+
+ response = HttpTester.parseResponse(_connector.getResponses(request.generate()));
+
+ assertTrue(response.get("Content-Encoding").equalsIgnoreCase("gzip"));
+ assertEquals(HttpServletResponse.SC_OK,response.getStatus());
+
+ InputStream testIn = new GZIPInputStream(new ByteArrayInputStream(response.getContentBytes()));
+ ByteArrayOutputStream testOut = new ByteArrayOutputStream();
+ IO.copy(testIn,testOut);
+
+ assertEquals(__content, testOut.toString("UTF8"));
+
+ }
+
+ @Test
+ public void testForwardGzipHandler() throws Exception
+ {
+ // generated and parsed test
+ HttpTester.Request request = HttpTester.newRequest();
+ HttpTester.Response response;
+
+ request.setMethod("GET");
+ request.setVersion("HTTP/1.0");
+ request.setHeader("Host","tester");
+ request.setHeader("accept-encoding","gzip");
+ request.setURI("/ctx/forward");
+
+ response = HttpTester.parseResponse(_connector.getResponses(request.generate()));
+
+ assertTrue(response.get("Content-Encoding").equalsIgnoreCase("gzip"));
+ assertEquals(HttpServletResponse.SC_OK,response.getStatus());
+
+ InputStream testIn = new GZIPInputStream(new ByteArrayInputStream(response.getContentBytes()));
+ ByteArrayOutputStream testOut = new ByteArrayOutputStream();
+ IO.copy(testIn,testOut);
+
+ assertEquals(__content, testOut.toString("UTF8"));
+ }
+
+ @Test
+ public void testIncludeGzipHandler() throws Exception
+ {
+ // generated and parsed test
+ HttpTester.Request request = HttpTester.newRequest();
+ HttpTester.Response response;
+
+ request.setMethod("GET");
+ request.setVersion("HTTP/1.0");
+ request.setHeader("Host","tester");
+ request.setHeader("accept-encoding","gzip");
+ request.setURI("/ctx/include");
+
+ response = HttpTester.parseResponse(_connector.getResponses(request.generate()));
+
+ assertTrue(response.get("Content-Encoding").equalsIgnoreCase("gzip"));
+ assertEquals(HttpServletResponse.SC_OK,response.getStatus());
+
+ InputStream testIn = new GZIPInputStream(new ByteArrayInputStream(response.getContentBytes()));
+ ByteArrayOutputStream testOut = new ByteArrayOutputStream();
+ IO.copy(testIn,testOut);
+
+ assertEquals(__icontent, testOut.toString("UTF8"));
+ }
+}

Back to the top