package org.jboss.test.capedwarf.cluster.test;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.OperateOnDeployment;
import org.jboss.arquillian.container.test.api.TargetsContainer;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.junit.InSequence;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.test.capedwarf.cluster.support.PrintListener;
import org.jboss.test.capedwarf.cluster.support.PrintServlet;
import org.jboss.test.capedwarf.common.support.JBoss;
import org.jboss.test.capedwarf.common.test.TestBase;
import org.jboss.test.capedwarf.common.test.TestContext;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import com.google.appengine.api.taskqueue.Queue;
import com.google.appengine.api.taskqueue.QueueFactory;
import com.google.appengine.api.taskqueue.TaskAlreadyExistsException;
import com.google.appengine.api.taskqueue.TaskOptions;
/**
* @author <a href="mailto:matejonnet@gmail.com">Matej Lazar</a>
*/
@RunWith(Arquillian.class)
@Category(JBoss.class)
public class TasksTest extends TestBase {
private static final String URL = "/_ah/test";
private static final String WEB_XML =
"<web>" +
" <listener>" +
" <listener-class>" + PrintListener.class.getName() + "</listener-class>" +
" </listener>" +
" <servlet>" +
" <servlet-name>PrintServlet</servlet-name>" +
" <servlet-class>" + PrintServlet.class.getName() + "</servlet-class>" +
" </servlet>" +
" <servlet-mapping>" +
" <servlet-name>PrintServlet</servlet-name>" +
" <url-pattern>" + URL + "</url-pattern>" +
" </servlet-mapping>" +
"</web>";
@InSequence(10)
@Test
@OperateOnDeployment("dep1")
public void testSmokeOnDepA() throws Exception {
System.out.println(">>> testSmokeOnDepA");
final Queue queue = QueueFactory.getQueue("default");
queue.add(TaskOptions.Builder.withUrl(URL));
sync();
}
@InSequence(20)
@Test
@OperateOnDeployment("dep2")
public void testSmokeOnDepB() throws Exception {
System.out.println(">>> testSmokeOnDepB");
final Queue queue = QueueFactory.getQueue("default");
queue.add(TaskOptions.Builder.withUrl(URL));
sync();
}
@InSequence(30)
@Test
@OperateOnDeployment("dep1")
public void testOnDepA() throws Exception {
final Queue queue = QueueFactory.getQueue("default");
queue.add(TaskOptions.Builder.withUrl(URL));
sync();
}
@InSequence(100)
@Test
@OperateOnDeployment("dep1")
public void testDuplicateNameDepA() throws Exception {
final Queue queue = QueueFactory.getDefaultQueue();
queue.add(TaskOptions.Builder.withTaskName("foo").countdownMillis(10 * 1000L));
sync();
}
@InSequence(110)
@Test (expected = TaskAlreadyExistsException.class)
@OperateOnDeployment("dep2")
public void testDuplicateNameDepB() throws Exception {
final Queue queue = QueueFactory.getDefaultQueue();
queue.add(TaskOptions.Builder.withTaskName("foo"));
sync();
}
@InSequence(1000)
@Test
@OperateOnDeployment("dep2")
public void shuttingDown() throws Exception {
}
@Deployment (name = "dep1") @TargetsContainer("container-1")
public static WebArchive getDeploymentA() {
return getDeployment();
}
@Deployment(name = "dep2") @TargetsContainer("container-2")
public static WebArchive getDeploymentB() {
return getDeployment();
}
protected static WebArchive getDeployment() {
final TestContext context = TestContext.asDefault().setWebXmlContent(WEB_XML);
final WebArchive war = getCapedwarfDeployment(context);
war.addClasses(PrintServlet.class, PrintListener.class);
return war;
}
}