Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletTester.java')
-rw-r--r--jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletTester.java260
1 files changed, 260 insertions, 0 deletions
diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletTester.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletTester.java
new file mode 100644
index 0000000000..6b9d1b4873
--- /dev/null
+++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletTester.java
@@ -0,0 +1,260 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2016 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 java.net.InetAddress;
+import java.nio.ByteBuffer;
+import java.util.EnumSet;
+import java.util.Enumeration;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import javax.servlet.DispatcherType;
+import javax.servlet.Filter;
+import javax.servlet.Servlet;
+
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.LocalConnector;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.util.Attributes;
+import org.eclipse.jetty.util.BufferUtil;
+import org.eclipse.jetty.util.component.ContainerLifeCycle;
+import org.eclipse.jetty.util.log.Log;
+import org.eclipse.jetty.util.log.Logger;
+import org.eclipse.jetty.util.resource.Resource;
+
+public class ServletTester extends ContainerLifeCycle
+{
+ private static final Logger LOG = Log.getLogger(ServletTester.class);
+
+ private final Server _server=new Server();
+ private final LocalConnector _connector=new LocalConnector(_server);
+ private final ServletContextHandler _context;
+
+ public Server getServer()
+ {
+ return _server;
+ }
+
+ public LocalConnector getConnector()
+ {
+ return _connector;
+ }
+
+ public void setVirtualHosts(String[] vhosts)
+ {
+ _context.setVirtualHosts(vhosts);
+ }
+
+ public void addVirtualHosts(String[] virtualHosts)
+ {
+ _context.addVirtualHosts(virtualHosts);
+ }
+
+ public ServletHolder addServlet(String className, String pathSpec)
+ {
+ return _context.addServlet(className,pathSpec);
+ }
+
+ public ServletHolder addServlet(Class<? extends Servlet> servlet, String pathSpec)
+ {
+ return _context.addServlet(servlet,pathSpec);
+ }
+
+ public void addServlet(ServletHolder servlet, String pathSpec)
+ {
+ _context.addServlet(servlet,pathSpec);
+ }
+
+ public void addFilter(FilterHolder holder, String pathSpec, EnumSet<DispatcherType> dispatches)
+ {
+ _context.addFilter(holder,pathSpec,dispatches);
+ }
+
+ public FilterHolder addFilter(Class<? extends Filter> filterClass, String pathSpec, EnumSet<DispatcherType> dispatches)
+ {
+ return _context.addFilter(filterClass,pathSpec,dispatches);
+ }
+
+ public FilterHolder addFilter(String filterClass, String pathSpec, EnumSet<DispatcherType> dispatches)
+ {
+ return _context.addFilter(filterClass,pathSpec,dispatches);
+ }
+
+ public Object getAttribute(String name)
+ {
+ return _context.getAttribute(name);
+ }
+
+ public Enumeration<String> getAttributeNames()
+ {
+ return _context.getAttributeNames();
+ }
+
+ public Attributes getAttributes()
+ {
+ return _context.getAttributes();
+ }
+
+ public String getContextPath()
+ {
+ return _context.getContextPath();
+ }
+
+ public String getInitParameter(String name)
+ {
+ return _context.getInitParameter(name);
+ }
+
+ public String setInitParameter(String name, String value)
+ {
+ return _context.setInitParameter(name,value);
+ }
+
+ public Enumeration<String> getInitParameterNames()
+ {
+ return _context.getInitParameterNames();
+ }
+
+ public Map<String, String> getInitParams()
+ {
+ return _context.getInitParams();
+ }
+
+ public void removeAttribute(String name)
+ {
+ _context.removeAttribute(name);
+ }
+
+ public void setAttribute(String name, Object value)
+ {
+ _context.setAttribute(name,value);
+ }
+
+ public void setContextPath(String contextPath)
+ {
+ _context.setContextPath(contextPath);
+ }
+
+ public Resource getBaseResource()
+ {
+ return _context.getBaseResource();
+ }
+
+ public String getResourceBase()
+ {
+ return _context.getResourceBase();
+ }
+
+ public void setResourceBase(String resourceBase)
+ {
+ _context.setResourceBase(resourceBase);
+ }
+
+ public ServletTester()
+ {
+ this("/",ServletContextHandler.SECURITY|ServletContextHandler.SESSIONS);
+ }
+
+ public ServletTester(String ctxPath)
+ {
+ this(ctxPath,ServletContextHandler.SECURITY|ServletContextHandler.SESSIONS);
+ }
+
+ public ServletTester(String contextPath,int options)
+ {
+ _context=new ServletContextHandler(_server,contextPath,options);
+ _server.setConnectors(new Connector[]{_connector});
+ addBean(_server);
+ }
+
+ public ServletContextHandler getContext()
+ {
+ return _context;
+ }
+
+ public String getResponses(String request) throws Exception
+ {
+ if (LOG.isDebugEnabled())
+ {
+ LOG.debug("Request: {}",request);
+ }
+ return _connector.getResponses(request);
+ }
+
+ public String getResponses(String request, long idleFor,TimeUnit units) throws Exception
+ {
+ if (LOG.isDebugEnabled())
+ {
+ LOG.debug("Request: {}",request);
+ }
+ return _connector.getResponses(request, idleFor, units);
+ }
+
+ public ByteBuffer getResponses(ByteBuffer request) throws Exception
+ {
+ if (LOG.isDebugEnabled())
+ {
+ LOG.debug("Request (Buffer): {}",BufferUtil.toUTF8String(request));
+ }
+ return _connector.getResponses(request);
+ }
+
+ public ByteBuffer getResponses(ByteBuffer requestsBuffer,long idleFor,TimeUnit units) throws Exception
+ {
+ if (LOG.isDebugEnabled())
+ {
+ LOG.debug("Requests (Buffer): {}",BufferUtil.toUTF8String(requestsBuffer));
+ }
+ return _connector.getResponses(requestsBuffer, idleFor, units);
+ }
+
+ /** Create a port based connector.
+ * This methods adds a port connector to the server
+ * @param localhost true if connector should use localhost, false for default host behavior.
+ * @return A URL to access the server via the connector.
+ * @throws Exception on test failure
+ */
+ public String createConnector(boolean localhost) throws Exception
+ {
+ ServerConnector connector = new ServerConnector(_server);
+ if (localhost)
+ connector.setHost("127.0.0.1");
+ _server.addConnector(connector);
+ if (_server.isStarted())
+ connector.start();
+ else
+ connector.open();
+
+ return "http://"+(localhost?"127.0.0.1":
+ InetAddress.getLocalHost().getHostAddress()
+ )+":"+connector.getLocalPort();
+ }
+
+ public LocalConnector createLocalConnector()
+ {
+ LocalConnector connector = new LocalConnector(_server);
+ _server.addConnector(connector);
+ return connector;
+ }
+
+
+
+}

Back to the top