Hey,
I was toying around with Arq+JUnit and manual starting of containers. I need to start container in a new Thread. Actual code:
@RunWith(Arquillian.class)
public class StartInThreadTest {
@ArquillianResource
ContainerController controller;
@Deployment(testable = true)
public static JavaArchive deploy() {
return ShrinkWrap.create(JavaArchive.class);
}
@Test
public void startWithoutThread() {
// runs OK
controller.start("server1");
controller.stop("server1");
}
@Test
public void startInThread() throws InterruptedException {
Thread thr = new Thread(new ContainerRunnable(controller));
thr.start(); //throws an exception
thr.join(30000);
}
}
class ContainerRunnable implements Runnable {
private ContainerController controller;
public ContainerRunnable(ContainerController controller) {
this.controller = controller;
}
@Override
public void run() {
controller.start("server1");
}
}
However, this throws exception:
Exception in thread "Thread-5" java.lang.IllegalArgumentException: No deployment scenario in context at org.jboss.arquillian.container.test.impl.client.container.ClientContainerController.start(ClientContainerController.java:68)
Possibly related - when trying to run an Arquillian test with @Test(timeout=SOMEINT), it fails immediatelly:
@RunWith(Arquillian.class)
public class SomeTest {
@Deployment
public static JavaArchive deploy() {
return ShrinkWrap.create(JavaArchive.class);
}
@Test(timeout = 30000)
public void anyTest() throws InterruptedException {
Thread.sleep(4000); // represents arbitrary code
}
}
Is there some restriction concerning Arq and threads?
Same issue here and could't find an answer either.