package com.theotherian.dns;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.servlet.Context;
import org.mortbay.jetty.servlet.ServletHolder;
public class TestServlets {
private static final Logger LOGGER = Logger.getLogger(TestServlets.class);
private TestServlets() {}
public static final int PORT1 = 33333;
public static final int PORT2 = 33334;
public static void createServlets() {
try {
TestServlet.create(PORT1);
TestServlet.create(PORT2);
}
catch (Exception e) {
LOGGER.fatal("The test servlets didn't start; unit tests will fail", e);
}
}
private static class TestServlet extends HttpServlet {
private Server server;
public static TestServlet create(int port) throws Exception {
return new TestServlet(port);
}
private TestServlet(int port) throws Exception {
server = new Server();
Connector con = new SelectChannelConnector();
con.setPort(port);
server.addConnector(con);
Context context = new Context(server, "/");
context.addServlet(new ServletHolder(this), "/*");
server.start();
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
try {
server.stop();
}
catch (Exception e) {
LOGGER.error("Could not shut down servlet", e);
}
}
});
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException,
IOException {
long now = System.currentTimeMillis();
response.setDateHeader("Expires", now);
response.setDateHeader("Date", now);
response.setHeader("Pragma", "no-cache");
response.setStatus(200);
response.getWriter().print("ok");
}
}
}