Skip to content

Design Doc: Container Test Suite

sitemesh edited this page Sep 13, 2010 · 2 revisions

Overview

SiteMesh pushes the Servlet spec and container implementations to the limits. Unsurprisingly we often see different behaviors in different Servlet engines.

History

SiteMesh 2 had a thorough acceptance test suite that would deploy a web-app to a variety of Servlet engines and then use HTTP unit to verify they were serving up the response. It would output a report.

This test suite is pretty hairy and it’s big flaw was that you needed to have all the Servlet containers to hand to run it. This was hard to do and in many cases not feasible because of licensing costs or containers that were not publicly available.

Proposed approach

Take a crowd-sourcing approach. We will provide an easy to run test suite, and allow end users / servlet container vendors to run against their containers, optionally publishing the results to a central location. For convenience, we will set up a small handful of the most popular open-source containers to run as part of the continuous integration server.

Unlike SM2, SM3 already has a set of Jetty based tests that cover a lot of the Servlet specifics that are run in process as part of the unit tests, which could be expanded to perform the same tests on Tomcat in process. This cuts down a lot of the work needed for this proposed test suite.

Most important Servlet containers

SM2 supports very old containers. SM3 will only target the more popular modern containers. Proposed list:

  • Tomcat 5.5, 6.5
  • Jetty 5.1, 6.1, 7
  • Resin 3.1
  • IBM WebSphereAS 7
  • Oracle WebLogic Server 11g
  • Google AppEngine

Components of the test suite

1. An easy to deploy .war file that can be dropped into the Servlet engine to test.
2. A standalone executable Jar that is provided with the URL of the Servlet engine and runs the HTTP based tests and reports results.
3. A centralized location where the results of tests can be posted and viewed.
4. A continuous integration environment that automatically deploys the tests to some core servers and posts the results.

Resources

Status

  • Not started.