Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2012-07-13 12:55:40 +0000
committerGreg Wilkins2012-07-13 12:55:40 +0000
commite70df19248d36f713aeaf9477092ee1282b9c4ff (patch)
treed6d01e1a9fc995fee102b60e5bbdc11537065d69 /test-jetty-servlet
parentf4c0b376d61bdec4081559ce009e2fae0e88b22e (diff)
downloadorg.eclipse.jetty.project-e70df19248d36f713aeaf9477092ee1282b9c4ff.tar.gz
org.eclipse.jetty.project-e70df19248d36f713aeaf9477092ee1282b9c4ff.tar.xz
org.eclipse.jetty.project-e70df19248d36f713aeaf9477092ee1282b9c4ff.zip
jetty-9 progress on more unit tests
Diffstat (limited to 'test-jetty-servlet')
-rw-r--r--test-jetty-servlet/pom.xml23
-rw-r--r--test-jetty-servlet/src/main/java/Jetty400Repro.java128
-rw-r--r--test-jetty-servlet/src/main/java/org/eclipse/jetty/testing/HttpTester.java585
-rw-r--r--test-jetty-servlet/src/main/java/org/eclipse/jetty/testing/ServletTester.java374
-rw-r--r--test-jetty-servlet/src/test/java/org/eclipse/jetty/testing/HttpTesterTest.java56
-rw-r--r--test-jetty-servlet/src/test/java/org/eclipse/jetty/testing/ServletTest.java343
6 files changed, 0 insertions, 1509 deletions
diff --git a/test-jetty-servlet/pom.xml b/test-jetty-servlet/pom.xml
deleted file mode 100644
index f91afa042c..0000000000
--- a/test-jetty-servlet/pom.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-project</artifactId>
- <version>9.0.0-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <artifactId>test-jetty-servlet</artifactId>
- <packaging>jar</packaging>
- <name>Test :: Jetty Servlet Tester</name>
- <dependencies>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-webapp</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
diff --git a/test-jetty-servlet/src/main/java/Jetty400Repro.java b/test-jetty-servlet/src/main/java/Jetty400Repro.java
deleted file mode 100644
index 1bdd320c6d..0000000000
--- a/test-jetty-servlet/src/main/java/Jetty400Repro.java
+++ /dev/null
@@ -1,128 +0,0 @@
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.Socket;
-import java.net.SocketTimeoutException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.eclipse.jetty.server.Handler;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.handler.DefaultHandler;
-import org.eclipse.jetty.server.handler.HandlerList;
-import org.eclipse.jetty.webapp.WebAppContext;
-import org.xml.sax.SAXException;
-
-
-/**
- * Repro a jetty problem.
- *
- * @author hughw
- *
- */
-public class Jetty400Repro extends HttpServlet{
-
-
- private static final long serialVersionUID = 1L;
- private static final int port = 8080;
- private static final String host = "localhost";
- private static final String uri = "/flub/servlet/";
-
- /**
- * Jetty 7.0.1 returns 400 on the second POST, when you send both Connection: Keep-Alive and
- * Expect: 100-Continue headers in the request.
- * @param args
- */
- public static void main(String[] args) throws Exception{
- initJetty();
- Thread.sleep(1000);
-
- Socket sock = new Socket(host, port);
-
- sock.setSoTimeout(500);
-
- String body= "<flibs xmlns='http://www.flub.org/schemas/131'><flib uid='12321'><name>foo flib</name> </flib></flibs>";
- //body= "XXX"; // => 501
-
- int len = body.getBytes("US-ASCII").length;
-
- String msg = "POST " + uri + " HTTP/1.1\r\n" +
- "Content-Type: application/xml\r\n" +
- "Host: 10.0.2.2:8080\r\n" +
- "Content-Length: " + len + "\r\n" +
- "Expect: 100-continue\r\n" +
- "Connection: Keep-Alive\r\n" +
- "\r\n" +
- body;
-
-
-
- sock.getOutputStream().write(msg.getBytes("US-ASCII"));
-
- String response1 = readResponse(sock);
- int status1 = Integer.parseInt(response1.substring(9, 12));
- assert 401 == status1;
-
- sock.getOutputStream().write(msg.getBytes("US-ASCII"));
-
-
- String response2 = readResponse(sock);
- System.out.println(response2.substring(0, 100));
-
-
- int status2 = Integer.parseInt(response2.substring(9, 12));
- System.out.println(status2);
-
- assert 401 == status2;
-
-
-
- }
-
- private static String readResponse(Socket sock) throws IOException {
- byte [] response = new byte [4000];
- int n = 0;
- for (int i=0; i< response.length && response[n] >= 0; i++){
- try {
- response[n++] = (byte)sock.getInputStream().read();
- } catch (SocketTimeoutException e) {
- break;
- }
- }
- String sResult = new String(response);
- return sResult;
- }
-
- private static void initJetty() throws SAXException, IOException, MalformedURLException, Exception {
-
- Server jetty = new Server(8080);
-
-
- // configure your web application
- WebAppContext appContext = new WebAppContext();
- appContext.setContextPath("/flub");
-
- appContext.addServlet(Jetty400Repro.class, "/servlet/");
-
- appContext.setResourceBase(".");
-
-
- HandlerList handlers = new HandlerList();
- handlers.setHandlers(new Handler[] { appContext, new DefaultHandler() });
- jetty.setHandler(handlers);
-
-
- jetty.start();
-
-
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- req.getInputStream();
- resp.sendError(401);
- }
-
-}
diff --git a/test-jetty-servlet/src/main/java/org/eclipse/jetty/testing/HttpTester.java b/test-jetty-servlet/src/main/java/org/eclipse/jetty/testing/HttpTester.java
deleted file mode 100644
index ea894ef4fe..0000000000
--- a/test-jetty-servlet/src/main/java/org/eclipse/jetty/testing/HttpTester.java
+++ /dev/null
@@ -1,585 +0,0 @@
-// ========================================================================
-// Copyright (c) 2004-2009 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.testing;
-
-import java.io.IOException;
-import java.util.Enumeration;
-
-import javax.servlet.http.Cookie;
-
-import org.eclipse.jetty.http.HttpFields;
-import org.eclipse.jetty.http.HttpGenerator;
-import org.eclipse.jetty.http.HttpHeaders;
-import org.eclipse.jetty.http.HttpParser;
-import org.eclipse.jetty.http.HttpVersions;
-import org.eclipse.jetty.http.MimeTypes;
-import org.eclipse.jetty.io.Buffer;
-import org.eclipse.jetty.io.ByteArrayBuffer;
-import org.eclipse.jetty.io.EofException;
-import org.eclipse.jetty.io.SimpleBuffers;
-import org.eclipse.jetty.io.View;
-import org.eclipse.jetty.io.bio.StringEndPoint;
-import org.eclipse.jetty.util.ByteArrayOutputStream2;
-
-/* ------------------------------------------------------------ */
-/** Test support class.
- * Assist with parsing and generating HTTP requests and responses.
- *
- * <pre>
- * HttpTester tester = new HttpTester();
- *
- * tester.parse(
- * "GET /uri HTTP/1.1\r\n"+
- * "Host: fakehost\r\n"+
- * "Content-Length: 10\r\n" +
- * "\r\n");
- *
- * System.err.println(tester.getMethod());
- * System.err.println(tester.getURI());
- * System.err.println(tester.getVersion());
- * System.err.println(tester.getHeader("Host"));
- * System.err.println(tester.getContent());
- * </pre>
- *
- *
- * @see org.eclipse.jetty.testing.ServletTester
- */
-public class HttpTester
-{
- protected HttpFields _fields=new HttpFields();
- protected String _method;
- protected String _uri;
- protected String _version;
- protected int _status;
- protected String _reason;
- protected ByteArrayOutputStream2 _parsedContent;
- protected byte[] _genContent;
-
- private String _charset, _defaultCharset;
- private Buffer _contentType;
-
- public HttpTester()
- {
- this("UTF-8");
- }
-
- public HttpTester(String charset)
- {
- _defaultCharset = charset;
- }
-
- public void reset()
- {
- _fields.clear();
- _method=null;
- _uri=null;
- _version=null;
- _status=0;
- _reason=null;
- _parsedContent=null;
- _genContent=null;
- }
-
- private String getString(Buffer buffer)
- {
- return getString(buffer.asArray());
- }
-
- private String getString(byte[] b)
- {
- if(_charset==null)
- return new String(b);
- try
- {
- return new String(b, _charset);
- }
- catch(Exception e)
- {
- return new String(b);
- }
- }
-
- private byte[] getByteArray(String str)
- {
- if(_charset==null)
- return str.getBytes();
- try
- {
- return str.getBytes(_charset);
- }
- catch(Exception e)
- {
- return str.getBytes();
- }
- }
-
- /* ------------------------------------------------------------ */
- /**
- * Parse one HTTP request or response
- * @param rawHTTP Raw HTTP to parse
- * @return Any unparsed data in the rawHTTP (eg pipelined requests)
- * @throws IOException
- */
- public String parse(String rawHTTP, boolean isHeadResponse) throws IOException
- {
- _charset = _defaultCharset;
- ByteArrayBuffer buf = new ByteArrayBuffer(getByteArray(rawHTTP));
- View view = new View(buf);
- PH ph = new PH();
- HttpParser parser = new HttpParser(view,ph);
- parser.setHeadResponse(isHeadResponse);
- parser.parse();
- if (ph.isEarlyEOF())
- throw new EofException();
- return getString(view.asArray());
- }
-
-
- /* ------------------------------------------------------------ */
- /**
- * Parse one HTTP request or response
- * @param rawHTTP Raw HTTP to parse
- * @return Any unparsed data in the rawHTTP (eg pipelined requests)
- * @throws IOException
- */
- public String parse(String rawHTTP) throws IOException
- {
- return parse(rawHTTP, false);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * Parse one HTTP request or response
- * @param rawHTTP Raw HTTP to parse
- * @return Any unparsed data in the rawHTTP (eg pipelined requests)
- * @throws IOException
- */
- public byte[] parse(byte[] rawHTTP, boolean isHeadResponse) throws IOException
- {
- _charset = _defaultCharset;
- ByteArrayBuffer buf = new ByteArrayBuffer(rawHTTP);
- View view = new View(buf);
- PH ph = new PH();
- HttpParser parser = new HttpParser(view,ph);
- parser.setHeadResponse(isHeadResponse);
- parser.parse();
- if (ph.isEarlyEOF())
- throw new EofException();
- return view.asArray();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * Parse one HTTP request or response
- * @param rawHTTP Raw HTTP to parse
- * @return Any unparsed data in the rawHTTP (eg pipelined requests)
- * @throws IOException
- */
- public byte[] parse(byte[] rawHTTP) throws IOException
- {
- return parse(rawHTTP, false);
- }
-
- /* ------------------------------------------------------------ */
- public String generate() throws IOException
- {
- _charset = _defaultCharset;
- _contentType = _fields.get(HttpHeaders.CONTENT_TYPE_BUFFER);
- if(_contentType!=null)
- {
- String charset = MimeTypes.getCharsetFromContentType(_contentType);
- if(charset!=null)
- _charset = charset;
- }
- Buffer bb=new ByteArrayBuffer(32*1024 + (_genContent!=null?_genContent.length:0));
- Buffer sb=new ByteArrayBuffer(4*1024);
- StringEndPoint endp = new StringEndPoint(_charset);
- HttpGenerator generator = new HttpGenerator(new SimpleBuffers(sb,bb),endp);
-
- if (_method!=null)
- {
- generator.setRequest(getMethod(),getURI());
- if (_version==null)
- generator.setVersion(HttpVersions.HTTP_1_1_ORDINAL);
- else
- generator.setVersion(HttpVersions.CACHE.getOrdinal(HttpVersions.CACHE.lookup(_version)));
- generator.completeHeader(_fields,false);
- if (_genContent!=null)
- generator.addContent(new View(new ByteArrayBuffer(_genContent)),false);
- else if (_parsedContent!=null)
- generator.addContent(new ByteArrayBuffer(_parsedContent.toByteArray()),false);
- }
-
- generator.complete();
- generator.flushBuffer();
- return endp.getOutput();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return the method
- */
- public String getMethod()
- {
- return _method;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param method the method to set
- */
- public void setMethod(String method)
- {
- _method=method;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return the reason
- */
- public String getReason()
- {
- return _reason;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param reason the reason to set
- */
- public void setReason(String reason)
- {
- _reason=reason;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return the status
- */
- public int getStatus()
- {
- return _status;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param status the status to set
- */
- public void setStatus(int status)
- {
- _status=status;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return the uri
- */
- public String getURI()
- {
- return _uri;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param uri the uri to set
- */
- public void setURI(String uri)
- {
- _uri=uri;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return the version
- */
- public String getVersion()
- {
- return _version;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param version the version to set
- */
- public void setVersion(String version)
- {
- _version=version;
- }
-
- /* ------------------------------------------------------------ */
- public String getContentType()
- {
- return getString(_contentType);
- }
-
- /* ------------------------------------------------------------ */
- public String getCharacterEncoding()
- {
- return _charset;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @param value
- * @throws IllegalArgumentException
- * @see org.eclipse.jetty.http.HttpFields#add(java.lang.String, java.lang.String)
- */
- public void addHeader(String name, String value) throws IllegalArgumentException
- {
- _fields.add(name,value);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @param date
- * @see org.eclipse.jetty.http.HttpFields#addDateField(java.lang.String, long)
- */
- public void addDateHeader(String name, long date)
- {
- _fields.addDateField(name,date);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @param value
- * @see org.eclipse.jetty.http.HttpFields#addLongField(java.lang.String, long)
- */
- public void addLongHeader(String name, long value)
- {
- _fields.addLongField(name,value);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param cookie
- * @see org.eclipse.jetty.http.HttpFields#addSetCookie(org.eclipse.jetty.http.HttpCookie)
- */
- public void addSetCookie(Cookie cookie)
- {
- _fields.addSetCookie(
- cookie.getName(),
- cookie.getValue(),
- cookie.getDomain(),
- cookie.getPath(),
- cookie.getMaxAge(),
- cookie.getComment(),
- cookie.getSecure(),
- cookie.isHttpOnly(),
- cookie.getVersion());
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @return the header value as a date
- * @see org.eclipse.jetty.http.HttpFields#getDateField(java.lang.String)
- */
- public long getDateHeader(String name)
- {
- return _fields.getDateField(name);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return the header value names
- * @see org.eclipse.jetty.http.HttpFields#getFieldNames()
- */
- public Enumeration getHeaderNames()
- {
- return _fields.getFieldNames();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @return the header value as a long
- * @throws NumberFormatException
- * @see org.eclipse.jetty.http.HttpFields#getLongField(java.lang.String)
- */
- public long getLongHeader(String name) throws NumberFormatException
- {
- return _fields.getLongField(name);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @return the header value
- * @see org.eclipse.jetty.http.HttpFields#getStringField(java.lang.String)
- */
- public String getHeader(String name)
- {
- return _fields.getStringField(name);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @return the header values
- * @see org.eclipse.jetty.http.HttpFields#getValues(java.lang.String)
- */
- public Enumeration getHeaderValues(String name)
- {
- return _fields.getValues(name);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @param value
- * @see org.eclipse.jetty.http.HttpFields#put(java.lang.String, java.lang.String)
- */
- public void setHeader(String name, String value)
- {
- _fields.put(name,value);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @param date
- * @see org.eclipse.jetty.http.HttpFields#putDateField(java.lang.String, long)
- */
- public void setDateHeader(String name, long date)
- {
- _fields.putDateField(name,date);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @param value
- * @see org.eclipse.jetty.http.HttpFields#putLongField(java.lang.String, long)
- */
- public void setLongHeader(String name, long value)
- {
- _fields.putLongField(name,value);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @see org.eclipse.jetty.http.HttpFields#remove(java.lang.String)
- */
- public void removeHeader(String name)
- {
- _fields.remove(name);
- }
-
- /* ------------------------------------------------------------ */
- public String getContent()
- {
- if (_parsedContent!=null)
- return getString(_parsedContent.toByteArray());
- if (_genContent!=null)
- return getString(_genContent);
- return null;
- }
-
- /* ------------------------------------------------------------ */
- public byte[] getContentBytes()
- {
- if (_parsedContent!=null)
- return _parsedContent.toByteArray();
- if (_genContent!=null)
- return _genContent;
- return null;
- }
-
- /* ------------------------------------------------------------ */
- public void setContent(String content)
- {
- _parsedContent=null;
- if (content!=null)
- {
- _genContent=getByteArray(content);
- setLongHeader(HttpHeaders.CONTENT_LENGTH,_genContent.length);
- }
- else
- {
- removeHeader(HttpHeaders.CONTENT_LENGTH);
- _genContent=null;
- }
- }
-
- /* ------------------------------------------------------------ */
- private class PH extends HttpParser.EventHandler
- {
- private volatile boolean _earlyEOF;
-
- @Override
- public void startRequest(Buffer method, Buffer url, Buffer version) throws IOException
- {
- reset();
- _method=getString(method);
- _uri=getString(url);
- _version=getString(version);
- }
-
- @Override
- public void startResponse(Buffer version, int status, Buffer reason) throws IOException
- {
- reset();
- _version=getString(version);
- _status=status;
- _reason=getString(reason);
- }
-
- @Override
- public void parsedHeader(Buffer name, Buffer value) throws IOException
- {
- _fields.add(name,value);
- }
-
- @Override
- public void headerComplete() throws IOException
- {
- _contentType = _fields.get(HttpHeaders.CONTENT_TYPE_BUFFER);
- if(_contentType!=null)
- {
- String charset = MimeTypes.getCharsetFromContentType(_contentType);
- if(charset!=null)
- _charset = charset;
- }
- }
-
- @Override
- public void messageComplete(long contextLength) throws IOException
- {
- }
-
- @Override
- public void content(Buffer ref) throws IOException
- {
- if (_parsedContent==null)
- _parsedContent=new ByteArrayOutputStream2();
- _parsedContent.write(ref.asArray());
- }
-
- @Override
- public void earlyEOF()
- {
- _earlyEOF = true;
- }
-
- public boolean isEarlyEOF()
- {
- return _earlyEOF;
- }
-
- }
-
-}
diff --git a/test-jetty-servlet/src/main/java/org/eclipse/jetty/testing/ServletTester.java b/test-jetty-servlet/src/main/java/org/eclipse/jetty/testing/ServletTester.java
deleted file mode 100644
index 1e58cfedeb..0000000000
--- a/test-jetty-servlet/src/main/java/org/eclipse/jetty/testing/ServletTester.java
+++ /dev/null
@@ -1,374 +0,0 @@
-// ========================================================================
-// Copyright (c) 2004-2009 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.testing;
-
-import java.net.InetAddress;
-import java.util.EnumSet;
-import java.util.Enumeration;
-import java.util.EventListener;
-
-import javax.servlet.DispatcherType;
-
-import org.eclipse.jetty.io.ByteArrayBuffer;
-import org.eclipse.jetty.server.LocalConnector;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.bio.SocketConnector;
-import org.eclipse.jetty.server.handler.ErrorHandler;
-import org.eclipse.jetty.server.nio.SelectChannelConnector;
-import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.util.Attributes;
-
-
-
-/* ------------------------------------------------------------ */
-/** Testing support for servlets and filters.
- *
- * Allows a programatic setup of a context with servlets and filters for
- * testing. Raw HTTP requests may be sent to the context and responses received.
- * To avoid handling raw HTTP see {@link org.eclipse.jetty.testing.HttpTester}.
- * <pre>
- * ServletTester tester=new ServletTester();
- * tester.setContextPath("/context");
- * tester.addServlet(TestServlet.class, "/servlet/*");
- * tester.addServlet("org.eclipse.jetty.servlet.DefaultServlet", "/");
- * tester.start();
- * String response = tester.getResponses("GET /context/servlet/info HTTP/1.0\r\n\r\n");
- * </pre>
- *
- * @see org.eclipse.jetty.testing.HttpTester
- *
- *
- */
-public class ServletTester
-{
- Server _server = new Server();
- LocalConnector _connector = new LocalConnector();
-// Context _context = new Context(Context.SESSIONS|Context.SECURITY);
- //jaspi why security if it is not set up?
- ServletContextHandler _context = new ServletContextHandler(ServletContextHandler.SESSIONS);
-
- public ServletTester()
- {
- try
- {
- _server.addBean(new ErrorHandler());
- _server.setSendServerVersion(false);
- _server.addConnector(_connector);
- _server.setHandler(_context);
- }
- catch (Error e)
- {
- throw e;
- }
- catch (RuntimeException e)
- {
- throw e;
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- }
- }
-
- /* ------------------------------------------------------------ */
- public void dump()
- {
- _server.dump();
- }
-
- /* ------------------------------------------------------------ */
- public void start() throws Exception
- {
- _server.start();
- }
-
- /* ------------------------------------------------------------ */
- public void stop() throws Exception
- {
- _server.stop();
- }
-
- /* ------------------------------------------------------------ */
- public ServletContextHandler getContext()
- {
- return _context;
- }
-
- /* ------------------------------------------------------------ */
- /** Get raw HTTP responses from raw HTTP requests.
- * Multiple requests and responses may be handled, but only if
- * persistent connections conditions apply.
- * @param rawRequests String of raw HTTP requests
- * @return String of raw HTTP responses
- * @throws Exception
- */
- public String getResponses(String rawRequests) throws Exception
- {
- return _connector.getResponses(rawRequests);
- }
-
- /* ------------------------------------------------------------ */
- /** Get raw HTTP responses from raw HTTP requests.
- * Multiple requests and responses may be handled, but only if
- * persistent connections conditions apply.
- * @param rawRequests String of raw HTTP requests
- * @param connector The connector to handle the responses
- * @return String of raw HTTP responses
- * @throws Exception
- */
- public String getResponses(String rawRequests, LocalConnector connector) throws Exception
- {
- return connector.getResponses(rawRequests);
- }
-
- /* ------------------------------------------------------------ */
- /** Get raw HTTP responses from raw HTTP requests.
- * Multiple requests and responses may be handled, but only if
- * persistent connections conditions apply.
- * @param rawRequests String of raw HTTP requests
- * @return String of raw HTTP responses
- * @throws Exception
- */
- public ByteArrayBuffer getResponses(ByteArrayBuffer rawRequests) throws Exception
- {
- return _connector.getResponses(rawRequests,false);
- }
-
- /* ------------------------------------------------------------ */
- /** Create a Socket connector.
- * This methods adds a socket connector to the server
- * @param localhost if true, only listen on local host, else listen on all interfaces.
- * @return A URL to access the server via the socket connector.
- * @throws Exception
- */
- public String createSocketConnector(boolean localhost)
- throws Exception
- {
- synchronized (this)
- {
- SocketConnector connector = new SocketConnector();
- if (localhost)
- connector.setHost("127.0.0.1");
- _server.addConnector(connector);
- if (_server.isStarted())
- connector.start();
- else
- connector.open();
-
- return "http://127.0.0.1:"+connector.getLocalPort();
- }
- }
-
- /* ------------------------------------------------------------ */
- /** Create a SelectChannel connector.
- * This methods adds a select channel connector to the server
- * @return A URL to access the server via the connector.
- * @throws Exception
- */
- public String createChannelConnector(boolean localhost)
- throws Exception
- {
- synchronized (this)
- {
- SelectChannelConnector connector = new SelectChannelConnector();
- 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();
- }
- }
-
- /* ------------------------------------------------------------ */
- /** Create a local connector.
- * This methods adds a local connector to the server
- * @return The LocalConnector object
- * @throws Exception
- */
- public LocalConnector createLocalConnector()
- throws Exception
- {
- synchronized (this)
- {
- LocalConnector connector = new LocalConnector();
- _server.addConnector(connector);
-
- if (_server.isStarted())
- connector.start();
-
- return connector;
- }
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param listener
- * @see org.eclipse.jetty.server.handler.ContextHandler#addEventListener(java.util.EventListener)
- */
- public void addEventListener(EventListener listener)
- {
- _context.addEventListener(listener);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param filterClass
- * @param pathSpec
- * @param dispatches
- * @return the FilterHolder
- * @see org.eclipse.jetty.servlet.ServletContextHandler#addFilter(java.lang.Class, java.lang.String, int)
- */
- public FilterHolder addFilter(Class filterClass, String pathSpec, EnumSet<DispatcherType> dispatches)
- {
- return _context.addFilter(filterClass,pathSpec,dispatches);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param filterClass
- * @param pathSpec
- * @param dispatches
- * @return the FilterHolder
- * @see org.eclipse.jetty.servlet.ServletContextHandler#addFilter(java.lang.String, java.lang.String, int)
- */
- public FilterHolder addFilter(String filterClass, String pathSpec, EnumSet<DispatcherType> dispatches)
- {
- return _context.addFilter(filterClass,pathSpec,dispatches);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param servlet
- * @param pathSpec
- * @return the ServletHolder
- * @see org.eclipse.jetty.servlet.ServletContextHandler#addServlet(java.lang.Class, java.lang.String)
- */
- public ServletHolder addServlet(Class servlet, String pathSpec)
- {
- return _context.addServlet(servlet,pathSpec);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param className
- * @param pathSpec
- * @return the ServletHolder
- * @see org.eclipse.jetty.servlet.ServletContextHandler#addServlet(java.lang.String, java.lang.String)
- */
- public ServletHolder addServlet(String className, String pathSpec)
- {
- return _context.addServlet(className,pathSpec);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @return the Attribute object
- * @see org.eclipse.jetty.servlet.ServletContextHandler#getAttribute(java.lang.String)
- */
- public Object getAttribute(String name)
- {
- return _context.getAttribute(name);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return the Attribute Names
- * @see org.eclipse.jetty.servlet.ServletContextHandler#getAttributeNames()
- */
- public Enumeration getAttributeNames()
- {
- return _context.getAttributeNames();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return the attributes
- * @see org.eclipse.jetty.servlet.ServletContextHandler#getAttributes()
- */
- public Attributes getAttributes()
- {
- return _context.getAttributes();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return the resource base
- * @see org.eclipse.jetty.servlet.ServletContextHandler#getResourceBase()
- */
- public String getResourceBase()
- {
- return _context.getResourceBase();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param name
- * @param value
- * @see org.eclipse.jetty.servlet.ServletContextHandler#setAttribute(java.lang.String, java.lang.Object)
- */
- public void setAttribute(String name, Object value)
- {
- _context.setAttribute(name,value);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param classLoader
- * @see org.eclipse.jetty.servlet.ServletContextHandler#setClassLoader(java.lang.ClassLoader)
- */
- public void setClassLoader(ClassLoader classLoader)
- {
- _context.setClassLoader(classLoader);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param contextPath
- * @see org.eclipse.jetty.servlet.ServletContextHandler#setContextPath(java.lang.String)
- */
- public void setContextPath(String contextPath)
- {
- _context.setContextPath(contextPath);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param eventListeners
- * @see org.eclipse.jetty.servlet.ServletContextHandler#setEventListeners(java.util.EventListener[])
- */
- public void setEventListeners(EventListener[] eventListeners)
- {
- _context.setEventListeners(eventListeners);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param resourceBase
- * @see org.eclipse.jetty.servlet.ServletContextHandler#setResourceBase(java.lang.String)
- */
- public void setResourceBase(String resourceBase)
- {
- _context.setResourceBase(resourceBase);
- }
-
-}
diff --git a/test-jetty-servlet/src/test/java/org/eclipse/jetty/testing/HttpTesterTest.java b/test-jetty-servlet/src/test/java/org/eclipse/jetty/testing/HttpTesterTest.java
deleted file mode 100644
index b12ea713cc..0000000000
--- a/test-jetty-servlet/src/test/java/org/eclipse/jetty/testing/HttpTesterTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// ========================================================================
-// Copyright (c) 2007-2009 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.testing;
-
-import junit.framework.TestCase;
-
-public class HttpTesterTest extends TestCase
-{
-
- public void testCharset() throws Exception
- {
- HttpTester tester = new HttpTester();
- tester.parse(
- "POST /uri\uA74A HTTP/1.1\r\n"+
- "Host: fakehost\r\n"+
- "Content-Length: 12\r\n" +
- "Content-Type: text/plain; charset=utf-8\r\n" +
- "\r\n" +
- "123456789\uA74A");
- assertEquals("POST",tester.getMethod());
- assertEquals("/uri\uA74A",tester.getURI());
- assertEquals("HTTP/1.1",tester.getVersion());
- assertEquals("fakehost",tester.getHeader("Host"));
- assertEquals("text/plain; charset=utf-8",tester.getContentType());
- assertEquals("utf-8",tester.getCharacterEncoding());
- assertEquals("123456789\uA74A",tester.getContent());
- }
-
-
- public void testHead() throws Exception
- {
- String headResponse = "HTTP/1.1 200 OK\r\n"+
- "Content-Type: text/html\r\n"+
- "Content-Length: 22\r\n"+
- "\r\n";
-
- HttpTester tester = new HttpTester();
- tester.parse(headResponse, true);
- assertEquals(200, tester.getStatus());
- assertEquals("22", tester.getHeader("Content-Length"));
- assertEquals("text/html",tester.getContentType());
- System.err.println(tester.getContent());
- }
-
-}
diff --git a/test-jetty-servlet/src/test/java/org/eclipse/jetty/testing/ServletTest.java b/test-jetty-servlet/src/test/java/org/eclipse/jetty/testing/ServletTest.java
deleted file mode 100644
index 48a34c137d..0000000000
--- a/test-jetty-servlet/src/test/java/org/eclipse/jetty/testing/ServletTest.java
+++ /dev/null
@@ -1,343 +0,0 @@
-package org.eclipse.jetty.testing;
-// ========================================================================
-// Copyright (c) 2004-2009 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.
-// ========================================================================
-
-
-
-import java.io.IOException;
-import java.net.URL;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import junit.framework.TestCase;
-
-import org.eclipse.jetty.http.HttpException;
-import org.eclipse.jetty.io.ByteArrayBuffer;
-import org.eclipse.jetty.util.IO;
-
-public class ServletTest extends TestCase
-{
- ServletTester tester;
-
- /* ------------------------------------------------------------ */
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
- tester=new ServletTester();
- tester.setContextPath("/context");
- tester.addServlet(TestServlet.class, "/servlet/*");
- tester.addServlet(HelloServlet.class, "/hello/*");
- tester.addServlet(ExceptServlet.class, "/except/*");
- tester.addServlet("org.eclipse.jetty.servlet.DefaultServlet", "/");
-
- tester.start();
- }
-
- /* ------------------------------------------------------------ */
- @Override
- protected void tearDown() throws Exception
- {
- tester.stop();
- tester=null;
- super.tearDown();
- }
-
- /* ------------------------------------------------------------ */
- public void testServletTesterRaw() throws Exception
- {
- // Raw HTTP test requests
- String requests=
- "GET /context/servlet/info?query=foo HTTP/1.1\r\n"+
- "Host: tester\r\n"+
- "\r\n"+
-
- "GET /context/hello HTTP/1.1\r\n"+
- "Host: tester\r\n"+
- "\r\n";
-
- String responses = tester.getResponses(requests);
-
- String expected=
- "HTTP/1.1 200 OK\r\n"+
- "Content-Type: text/html;charset=ISO-8859-1\r\n"+
- "Content-Length: 21\r\n"+
- "\r\n"+
- "<h1>Test Servlet</h1>" +
-
- "HTTP/1.1 200 OK\r\n"+
- "Content-Type: text/html;charset=ISO-8859-1\r\n"+
- "Content-Length: 22\r\n"+
- "\r\n"+
- "<h1>Hello Servlet</h1>";
-
- assertEquals(expected,responses);
- }
-
- /* ------------------------------------------------------------ */
- public void testServletTesterClient() throws Exception
- {
- String base_url=tester.createSocketConnector(true);
-
- URL url = new URL(base_url+"/context/hello/info");
- String result = IO.toString(url.openStream());
- assertEquals("<h1>Hello Servlet</h1>",result);
- }
-
- /* ------------------------------------------------------------ */
- public void testHttpTester() throws Exception
- {
- // generated and parsed test
- HttpTester request = new HttpTester();
- HttpTester response = new HttpTester();
-
- // test GET
- request.setMethod("GET");
- request.setVersion("HTTP/1.0");
- request.setHeader("Host","tester");
- request.setURI("/context/hello/info");
- response.parse(tester.getResponses(request.generate()));
- assertTrue(response.getMethod()==null);
- assertEquals(200,response.getStatus());
- assertEquals("<h1>Hello Servlet</h1>",response.getContent());
-
- // test GET with content
- request.setMethod("POST");
- request.setContent("<pre>Some Test Content</pre>");
- request.setHeader("Content-Type","text/html");
- response.parse(tester.getResponses(request.generate()));
- assertTrue(response.getMethod()==null);
- assertEquals(200,response.getStatus());
- assertEquals("<h1>Hello Servlet</h1><pre>Some Test Content</pre>",response.getContent());
-
- // test redirection
- request.setMethod("GET");
- request.setURI("/context");
- request.setContent(null);
- response.parse(tester.getResponses(request.generate()));
- assertEquals(302,response.getStatus());
- assertEquals("http://tester/context/",response.getHeader("location"));
-
- // test not found
- request.setURI("/context/xxxx");
- response.parse(tester.getResponses(request.generate()));
- assertEquals(404,response.getStatus());
-
- }
-
-
- /* ------------------------------------------------------------ */
- public void testBigPost() throws Exception
- {
- // generated and parsed test
- HttpTester request = new HttpTester();
- HttpTester response = new HttpTester();
-
- String content = "0123456789abcdef";
- content+=content;
- content+=content;
- content+=content;
- content+=content;
- content+=content;
- content+=content;
- content+=content;
- content+=content;
- content+=content;
- content+=content;
- content+=content;
- content+=content;
- content+="!";
-
- request.setMethod("POST");
- request.setVersion("HTTP/1.1");
- request.setURI("/context/hello/info");
- request.setHeader("Host","tester");
- request.setHeader("Content-Type","text/plain");
- request.setContent(content);
- String r=request.generate();
- r = tester.getResponses(r);
- response.parse(r);
- assertTrue(response.getMethod()==null);
- assertEquals(200,response.getStatus());
- assertEquals("<h1>Hello Servlet</h1>"+content,response.getContent());
-
-
- }
-
-
- /* ------------------------------------------------------------ */
- public void testCharset()
- throws Exception
- {
- byte[] content_iso_8859_1="abcd=1234&AAA=xxx".getBytes("iso8859-1");
- byte[] content_utf_8="abcd=1234&AAA=xxx".getBytes("utf-8");
- byte[] content_utf_16="abcd=1234&AAA=xxx".getBytes("utf-16");
-
- String request_iso_8859_1=
- "POST /context/servlet/post HTTP/1.1\r\n"+
- "Host: whatever\r\n"+
- "Content-Type: application/x-www-form-urlencoded\r\n"+
- "Content-Length: "+content_iso_8859_1.length+"\r\n"+
- "\r\n";
-
- String request_utf_8=
- "POST /context/servlet/post HTTP/1.1\r\n"+
- "Host: whatever\r\n"+
- "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n"+
- "Content-Length: "+content_utf_8.length+"\r\n"+
- "\r\n";
-
- String request_utf_16=
- "POST /context/servlet/post HTTP/1.1\r\n"+
- "Host: whatever\r\n"+
- "Content-Type: application/x-www-form-urlencoded; charset=utf-16\r\n"+
- "Content-Length: "+content_utf_16.length+"\r\n"+
- "Connection: close\r\n"+
- "\r\n";
-
- ByteArrayBuffer out = new ByteArrayBuffer(4096);
- out.put(request_iso_8859_1.getBytes("iso8859-1"));
- out.put(content_iso_8859_1);
- out.put(request_utf_8.getBytes("iso8859-1"));
- out.put(content_utf_8);
- out.put(request_utf_16.getBytes("iso8859-1"));
- out.put(content_utf_16);
-
- ByteArrayBuffer responses = tester.getResponses(out);
-
- String expected=
- "HTTP/1.1 200 OK\r\n"+
- "Content-Type: text/html;charset=ISO-8859-1\r\n"+
- "Content-Length: 21\r\n"+
- "\r\n"+
- "<h1>Test Servlet</h1>"+
- "HTTP/1.1 200 OK\r\n"+
- "Content-Type: text/html;charset=ISO-8859-1\r\n"+
- "Content-Length: 21\r\n"+
- "\r\n"+
- "<h1>Test Servlet</h1>"+
- "HTTP/1.1 200 OK\r\n"+
- "Content-Type: text/html;charset=ISO-8859-1\r\n"+
- "Connection: close\r\n"+
- "\r\n"+
- "<h1>Test Servlet</h1>";
-
- assertEquals(expected,responses.toString());
- }
-
- /* ------------------------------------------------------------ */
- public void testExcept() throws Exception
- {
- String request0=
- "GET /context/except/io HTTP/1.1\r\n"+
- "Host: whatever\r\n"+
- "\r\n"+
- "GET /context/except/http HTTP/1.1\r\n"+
- "Host: whatever\r\n"+
- "\r\n";
-
- ByteArrayBuffer out = new ByteArrayBuffer(4096);
- out.put(request0.getBytes("iso8859-1"));
- String responses = tester.getResponses(out).toString();
-
- int offset = responses.indexOf("HTTP/1.1 500");
- assertTrue(offset>=0);
- offset = responses.indexOf("Content-Length: ",offset);
- assertTrue(offset>0);
- offset = responses.indexOf("<h2>HTTP ERROR 500</h2>",offset);
- assertTrue(offset>0);
- offset = responses.indexOf("IOException: testing",offset);
- assertTrue(offset>0);
- offset = responses.indexOf("</html>",offset);
- assertTrue(offset>0);
- offset = responses.indexOf("HTTP/1.1 499",offset);
- assertTrue(offset>0);
- offset = responses.indexOf("Content-Length: ",offset);
- assertTrue(offset>0);
- }
-
- /* ------------------------------------------------------------ */
- public static class HelloServlet extends HttpServlet
- {
- private static final long serialVersionUID=2779906630657190712L;
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
- {
- doGet(request,response);
- }
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
- {
- response.setContentType("text/html");
- response.getWriter().print("<h1>Hello Servlet</h1>");
- if (request.getContentLength()>0)
- response.getWriter().write(IO.toString(request.getInputStream()));
- }
- }
-
- public static class TestServlet extends HttpServlet
- {
- private static final long serialVersionUID=2779906630657190712L;
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
- {
- assertEquals("/context",request.getContextPath());
- assertEquals("/servlet",request.getServletPath());
- assertEquals("/post",request.getPathInfo());
- assertEquals(2,request.getParameterMap().size());
- assertEquals("1234",request.getParameter("abcd"));
- assertEquals("xxx",request.getParameter("AAA"));
-
- response.setContentType("text/html");
- response.setStatus(HttpServletResponse.SC_OK);
- response.getWriter().print("<h1>Test Servlet</h1>");
- }
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
- {
- assertEquals("/context",request.getContextPath());
- assertEquals("/servlet",request.getServletPath());
- assertEquals("/info",request.getPathInfo());
- assertEquals("query=foo",request.getQueryString());
- assertEquals(1,request.getParameterMap().size());
- assertEquals(1,request.getParameterValues("query").length);
- assertEquals("foo",request.getParameter("query"));
-
- response.setContentType("text/html");
- response.setStatus(HttpServletResponse.SC_OK);
- response.getWriter().print("<h1>Test Servlet</h1>");
- }
- }
-
- public static class ExceptServlet extends HttpServlet
- {
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
- {
- if ("/http".equals(request.getPathInfo()))
- throw new HttpException(499);
- if ("/runtime".equals(request.getPathInfo()))
- throw new RuntimeException("testing");
- if ("/error".equals(request.getPathInfo()))
- throw new Error("testing");
- throw new IOException("testing");
- }
- }
-
-}

Back to the top