Environment-Specific Error in container-glassfish-embedded-30
alrubinger May 9, 2010 4:54 PMMy environment reliably gets this error in the new GFv3 Embedded integration test for ARQ:
java.io.FileNotFoundException: http://localhost:8080/test/Test at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1303) at java.net.URL.openStream(URL.java:1009) at org.jboss.arquillian.glassfish.GlassFishEmbeddedContainerTestCase.shouldBeAbleToDeployWebArchive(GlassFishEmbeddedContainerTestCase.java:68) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.jboss.arquillian.junit.Arquillian$6$1.invoke(Arquillian.java:202) at org.jboss.arquillian.impl.handler.ActivateRunModeTypeLocal$LocalMethodExecutor.invoke(ActivateRunModeTypeLocal.java:59) at org.jboss.arquillian.impl.handler.ContainerTestExecuter.callback(ContainerTestExecuter.java:50) at org.jboss.arquillian.impl.handler.ContainerTestExecuter.callback(ContainerTestExecuter.java:40) at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63) at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115) at org.jboss.arquillian.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.java:117) at org.jboss.arquillian.junit.Arquillian$6.evaluate(Arquillian.java:197) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.jboss.arquillian.junit.Arquillian$4.evaluate(Arquillian.java:169) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:183) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:44) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41) at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:139) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:153) at org.junit.runners.ParentRunner.run(ParentRunner.java:220) at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:105) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
This isn't present in my Hudson environment.
The output shows the application getting loaded, so I don't know what's up. The test fails and it also 404s from a browser.
May 9, 2010 3:50:22 PM com.sun.enterprise.web.WebApplication start INFO: Loading application test at /test
BTW straight URL connections to a servlet are more brittle than using Apache's HttpClient for example. That's not the root of the error in this case (I verified manually).
Additionally, I think we can make the test more integration-centric if it uses the ARQ annotations etc:
[alr@localhost trunk]$ svn di containers/glassfish-embedded-30/
Index: containers/glassfish-embedded-30/src/test/java/org/jboss/arquillian/glassfish/GlassFishEmbeddedContainerTestCase.java
===================================================================
--- containers/glassfish-embedded-30/src/test/java/org/jboss/arquillian/glassfish/GlassFishEmbeddedContainerTestCase.java (revision 4375)
+++ containers/glassfish-embedded-30/src/test/java/org/jboss/arquillian/glassfish/GlassFishEmbeddedContainerTestCase.java (working copy)
@@ -19,50 +19,49 @@
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.URL;
+import java.util.logging.Logger;
-import org.jboss.arquillian.impl.DynamicServiceLoader;
-import org.jboss.arquillian.impl.XmlConfigurationBuilder;
-import org.jboss.arquillian.impl.context.SuiteContext;
-import org.jboss.arquillian.spi.Context;
-import org.jboss.arquillian.spi.DeployableContainer;
+import org.jboss.arquillian.api.Deployment;
+import org.jboss.arquillian.api.RunMode;
+import org.jboss.arquillian.api.RunModeType;
+import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.junit.After;
import org.junit.Assert;
-import org.junit.Before;
import org.junit.Test;
+import org.junit.runner.RunWith;
+
/**
* GlassFishEmbeddedContainerTestCase
*
* @author <a href="mailto:aslak@redhat.com">Aslak Knutsen</a>
* @version $Revision: $
*/
+@RunWith(Arquillian.class)
+@RunMode(RunModeType.LOCAL)
public class GlassFishEmbeddedContainerTestCase
{
- private DeployableContainer container;
-
- private Context context = new SuiteContext(new DynamicServiceLoader());
-
- private WebArchive war = ShrinkWrap.create("test.war", WebArchive.class)
- .addClass(TestServlet.class);
- @Before
- public void startup() throws Exception
+ /**
+ * Logger
+ */
+ private static final Logger log = Logger.getLogger(GlassFishEmbeddedContainerTestCase.class.getName());
+
+ /**
+ * Deployment for the test
+ * @return
+ */
+ @Deployment
+ public static WebArchive getDeployment()
{
- container = new GlassFishEmbeddedContainer();
- container.setup(context, new XmlConfigurationBuilder().build());
- container.start(context);
- container.deploy(context, war);
- }
+ final WebArchive war = ShrinkWrap.create("test.war", WebArchive.class).addClass(TestServlet.class);
+ log.info(war.toString(true));
+ return war;
- @After
- public void shutdown() throws Exception
- {
- container.undeploy(context, war);
- container.stop(context);
}
+
@Test
public void shouldBeAbleToDeployWebArchive() throws Exception
{
Index: containers/glassfish-embedded-30/pom.xml
===================================================================
--- containers/glassfish-embedded-30/pom.xml (revision 4375)
+++ containers/glassfish-embedded-30/pom.xml (working copy)
@@ -97,6 +97,13 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.jboss.arquillian</groupId>
+ <artifactId>arquillian-junit</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>junit</groupId>