package org.jbos.pitbull.test; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; import org.jboss.pitbull.stress.StressClient; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import java.io.IOException; import java.net.InetSocketAddress; /** * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a> * @version $Revision: 1 $ */ public class HttpServerStressClientTest { public static HttpServer http; public static class StressServlet implements HttpHandler { @Override public void handle(HttpExchange exchange) throws IOException { if (exchange.getRequestMethod().equalsIgnoreCase("GET")) doGet(exchange); else if (exchange.getRequestMethod().equalsIgnoreCase("PUT")) doPut(exchange); else if (exchange.getRequestMethod().equalsIgnoreCase("POST")) doPost(exchange); } protected void doGet(HttpExchange exchange) throws IOException { exchange.getResponseHeaders().set("Content-Type", "text/plain"); exchange.getResponseHeaders().set("Content-Length", Integer.toString("DO GET".getBytes().length)); exchange.sendResponseHeaders(200, "DO GET".getBytes().length); exchange.getResponseBody().write("DO GET".getBytes()); exchange.getResponseBody().close(); } protected void doPut(HttpExchange exchange) throws IOException { exchange.sendResponseHeaders(204, -1); exchange.getResponseBody().close(); } protected void doPost(HttpExchange exchange) throws IOException { byte[] bytes = TJWSStressClientTest.readFromStream(1024, exchange.getRequestBody()); exchange.getResponseHeaders().set("Content-Type", "text/plain"); exchange.getResponseHeaders().set("Content-Length", Integer.toString(bytes.length)); exchange.sendResponseHeaders(200, bytes.length); exchange.getResponseBody().write(bytes); exchange.getResponseBody().close(); } } @BeforeClass public static void startup() throws Exception { http = HttpServer.create(new InetSocketAddress(8080), 100); http.createContext("/", new StressServlet()); http.start(); } @AfterClass public static void shutdown() throws Exception { http.stop(0); } @Test public void testClientStress() throws Exception { StressClient.stress(1, 2); } //@Test public void testClientStressMultiple() throws Exception { System.out.println("************************"); System.out.println(" HttpServer Socket Stress"); System.out.println("************************"); for (int i = 5; i < 21; i += 5) { System.out.println(); System.out.println(); System.out.println("-- Test with client thread num: " + (i + 1) * 3); StressClient.stress(i + 1, 5); } } }