package org.simpleframework.http.validate.test; import java.io.PrintStream; import org.simpleframework.common.KeyMap; import org.simpleframework.common.buffer.Buffer; import org.simpleframework.http.Request; import org.simpleframework.http.Response; import org.simpleframework.http.StatusLine; public class HeadTest extends RoundTripTest { @Scenario(requests=5, concurrency=10, debug=true, method=Method.HEAD) public Analyser testQuery() throws Exception { return new HeadAnalyser(false); } @Scenario(requests=5, concurrency=10, debug=true, method=Method.HEAD, protocol=Protocol.HTTPS) public Analyser testSecureQuery() throws Exception { return new HeadAnalyser(true); } private class HeadAnalyser implements Analyser { private final boolean secure; public HeadAnalyser(boolean secure) { this.secure = secure; } public void compose(StringBuilder address, KeyMap<String> header, Buffer body) throws Exception { address.append("/index.html"); header.put("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5"); header.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); header.put("Accept-Language", "en-us,en;q=0.5"); header.put("Accept-Encoding", "gzip,deflate"); header.put("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7"); header.put("Keep-Alive", "300"); header.put("Content-Type", "application/x-www-form-urlencoded"); header.put("Connection", "keep-alive"); header.put("If-Modified-Since", "Sat, 31 Jan 2009 13:39:48 GMT"); } public void handle(Request req, Response resp) throws Exception { PrintStream out = resp.getPrintStream(); long time = System.currentTimeMillis(); assertEquals(req.getMethod(), "HEAD"); assertEquals(req.getTarget(), "/index.html"); assertEquals(req.getValue("Connection"), "keep-alive"); assertEquals(req.getValue("Accept-Language"), "en-us,en;q=0.5"); assertEquals(req.getValue("Accept-Encoding"), "gzip,deflate"); assertEquals(req.getValue("Accept"), "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); assertEquals(req.isSecure(), secure); resp.setCookie("A", "b"); resp.setCookie("C", "d"); resp.setValue("Server", "Apache/1.2"); resp.setDate("Date", time); resp.setDate("Last-Modified", time); resp.setContentLength(10000); for(int i = 0; i < 10000; i++) { out.write(i); } out.close(); } public void analyse(StatusLine line, KeyMap<String> resp, Buffer body) throws Exception { assertEquals(line.getMajor(), 1); assertEquals(line.getMinor(), 1); assertEquals(line.getCode(), 200); assertEquals(body.encode(), ""); assertEquals(resp.get("Server"), "Apache/1.2"); assertNotNull(resp.get("Set-Cookie")); assertNotNull(resp.get("Date")); assertNotNull(resp.get("Last-Modified")); } } }