diff options
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.java | 260 |
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; + } + + + +} |