package test.webperfcenter.servlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;
/**
* 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.3 $
*/
public class ContainerBenchmark extends HttpServlet
{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String header = "
"; String footer = "
"; String page_body = null; response.setContentType("text/html"); // 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, 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, 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 = Boolean.valueOf(images_string).booleanValue(); // insert 'next page' link int pages_in_scenario = page_lengths[scenario].length; if (pagenum < pages_in_scenario - 1) { content.append("Next Page");
int page_length = page_lengths[scenario][pagenum];
int extra_required = page_length - (wrapper_length + content.length());
if (extra_required > 0)
content.append(getExtraContent(extra_required));
return content.toString();
}
/**
* Generates a string of a certain length.
*/
private String getExtraContent(int len)
{
StringBuffer buffer = new StringBuffer(len + 5);
int count = 0;
for (int i = 0; i < len; i++)
{
if (count < 96)
{
buffer.append('.');
count++;
}
else
{
buffer.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.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.
*
*/