|
Jetty example source code file (RequestTest.java)
The Jetty RequestTest.java source code//======================================================================== //$Id: HttpGeneratorTest.java,v 1.1 2005/10/05 14:09:41 janb Exp $ //Copyright 2004-2005 Mort Bay Consulting Pty. Ltd. //------------------------------------------------------------------------ //Licensed under the Apache License, Version 2.0 (the "License"); //you may not use this file except in compliance with the License. //You may obtain a copy of the License at //http://www.apache.org/licenses/LICENSE-2.0 //Unless required by applicable law or agreed to in writing, software //distributed under the License is distributed on an "AS IS" BASIS, //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. //See the License for the specific language governing permissions and //limitations under the License. //======================================================================== package org.mortbay.jetty; import java.io.IOException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import junit.framework.TestCase; import org.mortbay.jetty.handler.AbstractHandler; import org.mortbay.util.IO; /** * @author gregw * * To change the template for this generated type comment go to * Window - Preferences - Java - Code Generation - Code and Comments */ public class RequestTest extends TestCase { Server _server = new Server(); LocalConnector _connector = new LocalConnector(); RequestHandler _handler = new RequestHandler(); { _connector.setHeaderBufferSize(512); _connector.setRequestBufferSize(1024); _connector.setResponseBufferSize(2048); } public RequestTest(String arg0) { super(arg0); _server.setConnectors(new Connector[]{_connector}); _server.setHandler(_handler); } public static void main(String[] args) { junit.textui.TestRunner.run(RequestTest.class); } /* * @see TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); _server.start(); } /* * @see TestCase#tearDown() */ protected void tearDown() throws Exception { super.tearDown(); _server.stop(); } public void testContentTypeEncoding() throws Exception { final ArrayList results = new ArrayList(); _handler._checker = new RequestTester() { public boolean check(HttpServletRequest request,HttpServletResponse response) { results.add(request.getContentType()); results.add(request.getCharacterEncoding()); return true; } }; _connector.getResponses( "GET / HTTP/1.1\n"+ "Host: whatever\n"+ "Content-Type: text/test\n"+ "\n"+ "GET / HTTP/1.1\n"+ "Host: whatever\n"+ "Content-Type: text/html;charset=utf8\n"+ "\n"+ "GET / HTTP/1.1\n"+ "Host: whatever\n"+ "Content-Type: text/html; charset=\"utf8\"\n"+ "\n"+ "GET / HTTP/1.1\n"+ "Host: whatever\n"+ "Content-Type: text/html; other=foo ; blah=\"charset=wrong;\" ; charset = \" x=z; \" ; more=values \n"+ "\n" ); int i=0; assertEquals("text/test",results.get(i++)); assertEquals(null,results.get(i++)); assertEquals("text/html;charset=utf8",results.get(i++)); assertEquals("utf8",results.get(i++)); assertEquals("text/html; charset=\"utf8\"",results.get(i++)); assertEquals("utf8",results.get(i++)); assertTrue(((String)results.get(i++)).startsWith("text/html")); assertEquals(" x=z; ",results.get(i++)); } public void testContent() throws Exception { final int[] length=new int[1]; _handler._checker = new RequestTester() { public boolean check(HttpServletRequest request,HttpServletResponse response) { length[0]=request.getContentLength(); return true; } }; String content=""; for (int l=0;l<1025;l++) { String request="POST / HTTP/1.1\r\n"+ "Host: whatever\r\n"+ "Content-Type: text/test\r\n"+ "Content-Length: "+l+"\r\n"+ "Connection: close\r\n"+ "\r\n"+ content; content+="x"; _connector.reopen(); String response = _connector.getResponses(request); assertEquals(l,length[0]); if (l>0) assertEquals(l,_handler._content.length()); } } public void testConnectionClose() throws Exception { String response; _handler._checker = new RequestTester() { public boolean check(HttpServletRequest request,HttpServletResponse response) throws IOException { response.getOutputStream().println("Hello World"); return true; } }; _connector.reopen(); response=_connector.getResponses( "GET / HTTP/1.1\n"+ "Host: whatever\n"+ "\n" ); assertTrue(response.indexOf("200")>0); assertFalse(response.indexOf("Connection: close")>0); assertTrue(response.indexOf("Hello World")>0); _connector.reopen(); response=_connector.getResponses( "GET / HTTP/1.1\n"+ "Host: whatever\n"+ "Connection: close\n"+ "\n" ); assertTrue(response.indexOf("200")>0); assertTrue(response.indexOf("Connection: close")>0); assertTrue(response.indexOf("Hello World")>0); _connector.reopen(); response=_connector.getResponses( "GET / HTTP/1.1\n"+ "Host: whatever\n"+ "Connection: Other, close\n"+ "\n" ); assertTrue(response.indexOf("200")>0); assertTrue(response.indexOf("Connection: close")>0); assertTrue(response.indexOf("Hello World")>0); _connector.reopen(); response=_connector.getResponses( "GET / HTTP/1.0\n"+ "Host: whatever\n"+ "\n" ); assertTrue(response.indexOf("200")>0); assertFalse(response.indexOf("Connection: close")>0); assertTrue(response.indexOf("Hello World")>0); _connector.reopen(); response=_connector.getResponses( "GET / HTTP/1.0\n"+ "Host: whatever\n"+ "Connection: Other, close\n"+ "\n" ); assertTrue(response.indexOf("200")>0); assertTrue(response.indexOf("Connection: close")>0); assertTrue(response.indexOf("Hello World")>0); _connector.reopen(); response=_connector.getResponses( "GET / HTTP/1.0\n"+ "Host: whatever\n"+ "Connection: Other, keep-alive\n"+ "\n" ); assertTrue(response.indexOf("200")>0); assertTrue(response.indexOf("Connection: keep-alive")>0); assertTrue(response.indexOf("Hello World")>0); _handler._checker = new RequestTester() { public boolean check(HttpServletRequest request,HttpServletResponse response) throws IOException { response.setHeader("Connection","TE"); response.addHeader("Connection","Other"); response.getOutputStream().println("Hello World"); return true; } }; _connector.reopen(); response=_connector.getResponses( "GET / HTTP/1.1\n"+ "Host: whatever\n"+ "\n" ); assertTrue(response.indexOf("200")>0); assertTrue(response.indexOf("Connection: TE,Other")>0); assertTrue(response.indexOf("Hello World")>0); _connector.reopen(); response=_connector.getResponses( "GET / HTTP/1.1\n"+ "Host: whatever\n"+ "Connection: close\n"+ "\n" ); assertTrue(response.indexOf("200")>0); assertTrue(response.indexOf("Connection: close")>0); assertTrue(response.indexOf("Hello World")>0); } interface RequestTester { boolean check(HttpServletRequest request,HttpServletResponse response) throws IOException; } class RequestHandler extends AbstractHandler { RequestTester _checker; String _content; public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException { ((Request)request).setHandled(true); if (request.getContentLength()>0) _content=IO.toString(request.getInputStream()); if (_checker!=null && _checker.check(request,response)) response.setStatus(200); else response.sendError(500); } } } Other Jetty examples (source code examples)Here is a short list of links related to this Jetty RequestTest.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.