package test.webperfcenter.servlet; import javax.servlet.http.*; import javax.servlet.ServletException; import java.io.IOException; import java.io.PrintWriter; import java.util.*; /** * The purpose of this class is to provide user-session scenarios * for the purpose of benchmarking various app-servers. * * @author Christopher L Merrill * Web Performance, Inc. *
Copyright 2002 * * @version $Revision: 1.4 $ */ public class ContainerBenchmark extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String header = "Container Benchmark Servlet

"; String footer = "

"; String page_body = null; response.setContentType("text/html"); HttpSession session = request.getSession(true); // see if we're running a scenario... String scenario_string = request.getParameter(PARAM_SCENARIO); if (scenario_string == null) page_body = buildHelpPage(); else page_body = buildPage(request, session, header.length() + footer.length()); PrintWriter writer = response.getWriter(); writer.print(header); writer.print(page_body); writer.print(footer); writer.close(); } private String buildPage(HttpServletRequest request, HttpSession session, int wrapper_length) { StringBuffer content = new StringBuffer(); String scenario_string = request.getParameter(PARAM_SCENARIO); String pagenum_string = request.getParameter(PARAM_PAGE); String images_string = request.getParameter(PARAM_IMAGES_ON); int scenario = 0; int pagenum = 0; boolean show_images = false; try { scenario = Integer.parseInt(scenario_string); if (pagenum_string != null) pagenum = Integer.parseInt(pagenum_string); } catch (NumberFormatException e) { e.printStackTrace(); //To change body of catch statement use Options | File Templates. return "Oops!: " + e.getMessage(); } // show images? if (images_string != null) show_images = Boolean.valueOf(images_string).booleanValue(); // add a new attribute to the session if (pagenum_string == null) pagenum_string = "0"; session.setAttribute(pagenum_string, new byte[(pagenum + 1) * 10]); // list the attributes Enumeration attribute_names = session.getAttributeNames(); boolean first = true; while (attribute_names.hasMoreElements()) { if (first) { content.append("

Attributes:

"); // insert 'next page' link int pages_in_scenario = page_lengths[scenario].length; if (pagenum < pages_in_scenario - 1) { content.append(""); count = 0; } } return buffer.toString(); } private String buildHelpPage() { return "You didn't specify which scenario to benchmark!"; } private static final String PARAM_SCENARIO = "Scenario"; private static final String PARAM_PAGE = "Page"; private static final String PARAM_IMAGES_ON = "ImagesOn"; private static final int[][] page_lengths = { { 60000 }, { 60000, 40000, 20000, 20000, 20000 }, { 60000, 40000, 20000, 20000, 20000, 60000, 40000, 20000, 20000, 20000, 60000, 40000, 20000, 20000, 20000, 60000, 40000, 20000, 20000, 20000 }, }; private static final String[][][] images = { // scenario 1 { // page 1 { "500b-01.png", "500b-02.png", "500b-03.png", "500b-04.png", "500b-05.png", "500b-06.png", "500b-07.png", "500b-08.png", "500b-09.png", "500b-10.png", "500b-11.png", "500b-12.png", "500b-13.png", "500b-14.png", "500b-15.png", "2500b-01.png", "2500b-02.png", "2500b-03.png", "2500b-04.png", "2500b-05.png", "2500b-06.png", "2500b-07.png", "2500b-08.png", "2500b-09.png", "2500b-10.png", "5000b-01.png", "5000b-02.png", "5000b-03.png", "5000b-04.png", "10000b-01.png" } }, // scenario 2 { // page 1 { "500b-01.png", "500b-02.png", "500b-03.png", "500b-04.png", "500b-05.png", "500b-06.png", "500b-07.png", "500b-08.png", "500b-09.png", "500b-10.png", "500b-11.png", "500b-12.png", "500b-13.png", "500b-14.png", "500b-15.png", "2500b-01.png", "2500b-02.png", "2500b-03.png", "2500b-04.png", "2500b-05.png", "2500b-06.png", "2500b-07.png", "2500b-08.png", "2500b-09.png", "2500b-10.png", "5000b-01.png", "5000b-02.png", "5000b-03.png", "5000b-04.png", "10000b-01.png" }, // page 2 { "500b-16.png", "500b-17.png", "500b-18.png", "500b-19.png", "500b-20.png", "2500b-11.png", "10000b-02.png" }, // page 3 { "500b-21.png", "500b-22.png", "500b-23.png", "500b-24.png", "500b-25.png", "2500b-12.png", "10000b-03.png" }, // page 4 { "500b-26.png", "500b-27.png", "500b-28.png", "500b-29.png", "500b-30.png", "2500b-13.png", "10000b-04.png" }, // page 5 { "500b-31.png", "500b-32.png", "500b-33.png", "500b-34.png", "500b-35.png", "2500b-14.png", "10000b-05.png" } }, // scenario 3 { // page 1 { "500b-01.png", "500b-02.png", "500b-03.png", "500b-04.png", "500b-05.png", "500b-06.png", "500b-07.png", "500b-08.png", "500b-09.png", "500b-10.png", "500b-11.png", "500b-12.png", "500b-13.png", "500b-14.png", "500b-15.png", "2500b-01.png", "2500b-02.png", "2500b-03.png", "2500b-04.png", "2500b-05.png", "2500b-06.png", "2500b-07.png", "2500b-08.png", "2500b-09.png", "2500b-10.png", "5000b-01.png", "5000b-02.png", "5000b-03.png", "5000b-04.png", "10000b-01.png" }, // page 2 { "500b-16.png", "500b-17.png", "500b-18.png", "2500b-11.png", "10000b-02.png" }, // page 3 { "500b-19.png", "500b-20.png", "500b-21.png", "2500b-12.png", "10000b-03.png" }, // page 4 { "500b-22.png", "500b-23.png", "500b-24.png", "2500b-13.png", "10000b-04.png" }, // page 5 { "500b-25.png", "500b-26.png", "500b-27.png", "2500b-14.png", "10000b-05.png" }, // page 6 { "500b-28.png", "500b-29.png", "500b-30.png", "2500b-15.png", "10000b-06.png" }, // page 7 { "500b-31.png", "500b-32.png", "500b-33.png", "2500b-16.png", "10000b-07.png" }, // page 8 { "500b-34.png", "500b-35.png", "500b-36.png", "2500b-17.png", "10000b-08.png" }, // page 9 { "500b-37.png", "500b-38.png", "500b-39.png", "2500b-18.png", "10000b-09.png" }, // page 10 { "500b-40.png", "500b-41.png", "500b-42.png", "2500b-19.png", "10000b-10.png" }, // page 11 { "500b-43.png", "500b-44.png", "500b-45.png", "2500b-20.png", "10000b-11.png" }, // page 12 { "500b-46.png", "500b-47.png", "500b-48.png", "2500b-21.png", "10000b-12.png" }, // page 13 { "500b-49.png", "500b-50.png", "500b-51.png", "2500b-22.png", "10000b-13.png" }, // page 14 { "500b-52.png", "500b-53.png", "500b-54.png", "2500b-23.png", "10000b-14.png" }, // page 15 { "500b-55.png", "500b-56.png", "500b-57.png", "2500b-24.png", "10000b-15.png" }, // page 16 { "500b-58.png", "500b-59.png", "500b-60.png", "2500b-25.png", "10000b-16.png" }, // page 17 { "500b-61.png", "500b-62.png", "500b-63.png", "2500b-26.png", "10000b-17.png" }, // page 18 { "500b-64.png", "500b-65.png", "500b-66.png", "2500b-27.png", "10000b-18.png" }, // page 19 { "500b-67.png", "500b-68.png", "500b-69.png", "2500b-28.png", "10000b-19.png" }, // page 20 { "500b-70.png", "500b-71.png", "500b-72.png", "2500b-29.png", "10000b-20.png" }, } }; } /* * $Log: ContainerBenchmark.java,v $ * Revision 1.4 2004/05/14 15:46:46 chris * v2 of ServletReport test servlet. * * Revision 1.3 2002/10/30 16:18:11 chris * *** empty log message *** * * Revision 1.2 2002/10/25 13:33:38 chris * *** empty log message *** * * Revision 1.1 2002/10/15 19:50:24 chris * Add new test servlets. * */