package org.mockserver.proxy;
import org.apache.catalina.Context;
import org.apache.catalina.startup.Tomcat;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.mockserver.client.proxy.ProxyClient;
import org.mockserver.echo.http.EchoServer;
import org.mockserver.integration.proxy.AbstractClientProxyIntegrationTest;
import org.mockserver.socket.PortFactory;
import java.io.File;
import java.util.concurrent.TimeUnit;
/**
* @author jamesdbloom
*/
public class ProxyClientWarWithContextPathIntegrationTest extends AbstractClientProxyIntegrationTest {
private final static int PROXY_PORT = PortFactory.findFreePort();
private final static int SERVER_HTTP_PORT = PortFactory.findFreePort();
private static EchoServer echoServer;
private static Tomcat tomcat;
private static ProxyClient proxyClient;
@BeforeClass
public static void setupFixture() throws Exception {
servletContext = "proxy";
// start server
echoServer = new EchoServer(SERVER_HTTP_PORT, false);
// wait for server to start up
TimeUnit.MILLISECONDS.sleep(500);
// start proxy (in tomcat)
tomcat = new Tomcat();
tomcat.setBaseDir(new File(".").getCanonicalPath() + File.separatorChar + "tomcat" + (servletContext.length() > 0 ? "_" + servletContext : ""));
// add http port
tomcat.setPort(PROXY_PORT);
// add servlet
Context ctx = tomcat.addContext("/" + servletContext, new File(".").getAbsolutePath());
tomcat.addServlet("/" + servletContext, "mockServerServlet", new ProxyServlet());
ctx.addServletMapping("/*", "mockServerServlet");
// start server
tomcat.start();
// start client
proxyClient = new ProxyClient("localhost", PROXY_PORT, servletContext);
}
@AfterClass
public static void stopFixture() throws Exception {
// stop server
echoServer.stop();
// stop proxy
tomcat.stop();
tomcat.getServer().await();
// wait for server to shutdown
TimeUnit.MILLISECONDS.sleep(500);
}
@Before
public void resetProxy() {
proxyClient.reset();
}
@Override
public int getProxyPort() {
return PROXY_PORT;
}
@Override
public ProxyClient getProxyClient() {
return proxyClient;
}
@Override
public int getServerPort() {
return SERVER_HTTP_PORT;
}
}