diff options
author | Greg Wilkins | 2012-07-13 12:55:40 +0000 |
---|---|---|
committer | Greg Wilkins | 2012-07-13 12:55:40 +0000 |
commit | e70df19248d36f713aeaf9477092ee1282b9c4ff (patch) | |
tree | d6d01e1a9fc995fee102b60e5bbdc11537065d69 /test-jetty-servlet | |
parent | f4c0b376d61bdec4081559ce009e2fae0e88b22e (diff) | |
download | org.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')
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"); - } - } - -} |