On 8/7/06, Garrett Rooney <[EMAIL PROTECTED]> wrote:
FWIW, I'd like to see us bundle a minimal web server (Jetty?) and have
our tests just automatically set it up prior to execution. It seems
considerably less error prone than expecting someone to set up a
server.
Here's a patch that switches over to using Jetty for the server side.
I'm not committing it yet because I don't know for sure what the
server side of the caching tests is supposed to do (is the code
available anywhere?), and it needs to be cleaned up a bit (shouldn't
hardcode the port it runs on, for example).
-garrett
[[[
Use an embedded jetty server for the caching tests.
* build/build.xml: Build test client tests, download the jars needed for
jetty.
* dependencies/deps.properties: Add jetty related jars.
[ in client/src/test/java/org/apache/abdera/test/client/cache ]
* CacheTests.java
Add a bunch of imports.
(CHECK_CACHE_INVALIDATE): Point to localhost.
(server): New static variable.
(setUp): Initialize server.
(Servlet): A servlet that implements the server side of the tests.
]]]
Index: build/build.xml
===================================================================
--- build/build.xml (revision 429478)
+++ build/build.xml (working copy)
@@ -66,6 +66,7 @@
<property name="client" value="${basedir}/client" />
<property name="client.src" value="${client}/src/main/java" />
<property name="client.work" value="${work}/client" />
+ <property name="client.test.java" value="${client}/src/test/java" />
<property name="client.jar"
value="${dist}/${ant.project.name}.client.${version}.jar" />
<property environment="env" />
@@ -132,6 +133,8 @@
<available file="${dependencies}/${commons.httpclient.jar}" />
<available file="${dependencies}/${junit.jar}" />
<available file="${dependencies}/${wstx.jar}" />
+ <available file="${dependencies}/${jetty.jar}" />
+ <available file="${dependencies}/${jetty-util.jar}" />
</and>
</not>
</condition>
@@ -268,6 +271,10 @@
destdir="${client.work}"
classpathref="jar.dependencies"
classpath="${core.work}" />
+ <javac srcdir="${client.test.java}"
+ destdir="${test}"
+ classpathref="jar.dependencies"
+
classpath="${core.work};${parser.work};${extensions.work};${client.work}" />
<mkdir dir="${client.work}/META-INF" />
<copy todir="${client.work}/META-INF">
<fileset dir="${basedir}">
@@ -455,6 +462,12 @@
<get src="${wstx.dir}/${wstx.jar}"
dest="${dependencies}/${wstx.jar}"
usetimestamp="true" />
+ <get src="${jetty.dir}/${jetty.jar}"
+ dest="${dependencies}/${jetty.jar}"
+ usetimestamp="true" />
+ <get src="${jetty-util.dir}/${jetty-util.jar}"
+ dest="${dependencies}/${jetty-util.jar}"
+ usetimestamp="true" />
</parallel>
</target>
Index: dependencies/deps.properties
===================================================================
--- dependencies/deps.properties (revision 429478)
+++ dependencies/deps.properties (working copy)
@@ -70,4 +70,10 @@
retroweaver.zip=retroweaver-1.2.3.zip
xmlsecurity.dir=http://www.apache.org/dist/java-repository/xml-security/jars
-xmlsecurity.jar=xmlsec-1.3.0.jar
\ No newline at end of file
+xmlsecurity.jar=xmlsec-1.3.0.jar
+
+jetty.dir=http://www.ibiblio.org/maven2/jetty/jetty/6.0.0rc0
+jetty.jar=jetty-6.0.0rc0.jar
+
+jetty-util.dir=http://www.ibiblio.org/maven2/jetty/jetty-util/6.0.0rc0
+jetty-util.jar=jetty-util-6.0.0rc0.jar
Index: client/src/test/java/org/apache/abdera/test/client/cache/CacheTests.java
===================================================================
--- client/src/test/java/org/apache/abdera/test/client/cache/CacheTests.java
(revision 429478)
+++ client/src/test/java/org/apache/abdera/test/client/cache/CacheTests.java
(working copy)
@@ -21,6 +21,11 @@
import java.io.IOException;
import java.io.InputStream;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.Connector;
+import org.mortbay.jetty.bio.SocketConnector;
+import org.mortbay.jetty.servlet.ServletHandler;
+
import org.apache.abdera.protocol.client.Client;
import org.apache.abdera.protocol.client.CommonsClient;
import org.apache.abdera.protocol.client.RequestOptions;
@@ -28,6 +33,11 @@
import junit.framework.TestCase;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletException;
+
/**
* For now these are hitting Mark Nottingham's set of caching tests. We'll
* need to set up our own server. The hard part about testing caching is
@@ -37,10 +47,51 @@
* on how to set up a local server and have a portable suite of tests.
*/
public class CacheTests extends TestCase {
-
- private final static String CHECK_CACHE_INVALIDATE =
- "http://www.mnot.net/javascript/xmlhttprequest/check_cache_invalidate.s";
-
+
+ private final static String CHECK_CACHE_INVALIDATE =
"http://localhost:8080/";
+
+ private static Server server;
+
+ protected void setUp() throws Exception {
+ if (server == null) {
+ server = new Server();
+
+ Connector connector = new SocketConnector();
+
+ // TODO: use a port defined by a property
+ connector.setPort(8080);
+
+ server.setConnectors(new Connector[]{connector});
+
+ ServletHandler handler = new ServletHandler();
+
+ server.setHandler(handler);
+
+ handler.addServletWithMapping(
+ "org.apache.abdera.test.client.cache.CacheTests$Servlet",
+ "/"
+ );
+
+ server.start();
+ }
+ }
+
+ public static class Servlet extends HttpServlet {
+ protected void doGet(HttpServletRequest request,
+ HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ String reqnum = request.getHeader("X-Reqnum");
+
+ response.setContentType("text/plain");
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.setHeader("Cache-Control", "max-age=60");
+ response.setDateHeader("Date", System.currentTimeMillis());
+
+ response.getWriter().println(reqnum);
+ }
+ }
+
public static void testRequestNoStore() throws Exception {
Client client = new CommonsClient();