/* * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy * of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package org.terracotta.quartz.tests.container; import org.apache.commons.io.IOUtils; import org.apache.log4j.Logger; import org.quartz.impl.StdSchedulerFactory; import org.slf4j.LoggerFactory; import org.slf4j.impl.Log4jLoggerFactory; import org.terracotta.quartz.TerracottaJobStore; import org.terracotta.toolkit.ToolkitFactory; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.WebResponse; import com.tc.test.server.appserver.deployment.AbstractOneServerDeploymentTest; import com.tc.test.server.appserver.deployment.DeploymentBuilder; import com.tc.test.server.appserver.deployment.TempDirectoryUtil; import com.tc.test.server.appserver.deployment.WebApplicationServer; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import junit.framework.Test; public class BasicContainerTest extends AbstractOneServerDeploymentTest { private static final String CONTEXT = "BasicContainerTest"; public static Test suite() { return new BasicContainerTestSetup(); } public void testBasics() throws Exception { System.out.println("Running test"); WebClient conversation = new WebClient(); // do insert on server0 WebResponse response1 = request(server0, "", conversation); assertEquals("OK", response1.getContentAsString().trim()); } private WebResponse request(WebApplicationServer server, String params, WebClient con) throws Exception { return server.ping("/" + CONTEXT + "/BasicTestServlet?" + params, con); } private static class BasicContainerTestSetup extends OneServerTestSetup { public BasicContainerTestSetup() { super(BasicContainerTest.class, CONTEXT); } @Override protected void configureWar(DeploymentBuilder builder) { builder.addDirectoryOrJARContainingClass(ToolkitFactory.class); // toolkit-runtime builder.addDirectoryOrJARContainingClass(StdSchedulerFactory.class); // core quartz builder.addDirectoryOrJARContainingClass(TerracottaJobStore.class); // quartz-terracotta builder.addDirectoryOrJARContainingClass(LoggerFactory.class); // sl4j-api builder.addDirectoryOrJARContainingClass(Log4jLoggerFactory.class); // sl4j-log4j12 builder.addDirectoryOrJARContainingClass(Logger.class); // log4j builder.addFileAsResource(createConfigFile(), "WEB-INF/classes/"); builder.addServlet("BasicTestServlet", "/BasicTestServlet/*", BasicTestServlet.class, null, false); } private File createConfigFile() { try { File configFile = writeConfigFile(TempDirectoryUtil.getTempDirectory(this.getClass()), getServerManager() .getServerTcConfig().getTsaPort()); System.out.println("Wrote temp config file at: " + configFile.getAbsolutePath()); return configFile; } catch (IOException e) { throw new RuntimeException(e); } } private File writeConfigFile(File tempDirectory, int dsoPort) throws IOException { InputStream in = null; FileOutputStream out = null; try { in = getClass().getClassLoader().getResourceAsStream("org/terracotta/quartz/tests/container/quartz.properties"); File rv = new File(tempDirectory, "basic-quartz.properties"); out = new FileOutputStream(rv); String template = IOUtils.toString(in); String config = template.replace("__PORT__", String.valueOf(dsoPort)); out.write(config.getBytes()); return rv; } finally { IOUtils.closeQuietly(in); IOUtils.closeQuietly(out); } } } }