10 Replies Latest reply on Sep 7, 2012 12:34 PM by paul.robinson

    ArquillianServletRunner unavailable over IPv6

    paul.robinson

      Hello,

       

      I'm hitting a problem with a test that passes on a dual stack (IPv4 & IPv6) machine, but fails on an IPv6 (only) machine. The problem seems to be that the ArquillianServletRunner is unavailable when Arquillian tries to run the test. See the following output from the test:

       

      testConvertToFarenheit(org.my.rendezvous.TemperatureConverterTest)  Time elapsed: 0.128 sec  <<< ERROR!
      java.lang.IllegalStateException: Error launching test org.my.rendezvous.TemperatureConverterTest public void org.my.rendezvous.TemperatureConverterTest.testConvertToFarenheit()
              at org.jboss.arquillian.protocol.servlet.ServletMethodExecutor.invoke(ServletMethodExecutor.java:126)
              at org.jboss.arquillian.container.test.impl.execution.RemoteTestExecuter.execute(RemoteTestExecuter.java:120)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:616)
              at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
              at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
              at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
              at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135)
              at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115)
              at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
              at org.jboss.arquillian.container.test.impl.execution.ClientTestExecuter.execute(ClientTestExecuter.java:57)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:616)
              at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
              at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
              at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
              at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createContext(ContainerEventController.java:142)
              at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createTestContext(ContainerEventController.java:129)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:616)
              at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
              at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
              at org.jboss.arquillian.test.impl.TestContextHandler.createTestContext(TestContextHandler.java:89)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:616)
              at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
              at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
              at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:75)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:616)
              at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
              at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
              at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:60)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:616)
              at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
              at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
              at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135)
              at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.java:111)
              at org.jboss.arquillian.junit.Arquillian$6.evaluate(Arquillian.java:263)
              at org.jboss.arquillian.junit.Arquillian$4.evaluate(Arquillian.java:226)
              at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:314)
              at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:46)
              at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:240)
              at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
              at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
              at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
              at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
              at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
              at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
              at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
              at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:185)
              at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:314)
              at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:46)
              at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:199)
              at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
              at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:147)
              at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35)
              at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:146)
              at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:616)
              at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103)
              at $Proxy0.invoke(Unknown Source)
              at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:145)
              at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:87)
              at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)
      Caused by: java.lang.IllegalStateException: Error launching test at http://[0:0:0:0:0:0:0:1]:8080/test/ArquillianServletRunner?outputMode=serializedObject&className=org.my.rendezvous.TemperatureConverterTest&methodName=testConvertToFarenheit. Got 503 (Service Unavailable)
              at org.jboss.arquillian.protocol.servlet.ServletMethodExecutor.execute(ServletMethodExecutor.java:237)
              at org.jboss.arquillian.protocol.servlet.ServletMethodExecutor.executeWithRetry(ServletMethodExecutor.java:144)
              at org.jboss.arquillian.protocol.servlet.ServletMethodExecutor.invoke(ServletMethodExecutor.java:122)
              ... 80 more
      

       

      I've attached a simple example that can be used to reproduce this error. The test only fails on a pure IPv6 machine. I was unable to configure my machine for this, and so I only see this failure on the pure IPv6 nodes in the JBoss QE hudson pool. To reproduce the issue, I took vmg35.mw.lab.eng.bos.redhat.com offline and then carried out the following steps:

       

       

      ssh probinso@dev89.mw.lab.eng.bos.redhat.com
      ssh probinso@vmg35.mw.lab.eng.bos.redhat.com
      
      #arq.zip is attached to this issue
      unzip arq.zip
      
      #Obtain a 'recent' build of jboss-as-7.2.0.Alpha1-SNAPSHOT. My build was created from master on Friday 10th August. However, we've been seeing this error for some time.
      
      export MAVEN_OPTS="-DproxySet=true -DproxyHost=proxy-01-ipv6.mw.lab.eng.bos.redhat.com -DproxyPort=3128"
      export JBOSS_HOME=...
      
      cd arquillian
      mvn $MAVEN_OPTS clean test
      

       

      To make the example 'work' on IPv6, I had to specify the MAVEN_OPTS to maven and then pass similar options to jboss in the arquillian.xml. Other than that, I think the example is pretty straight forward.

       

      I'm not sure if this is a bug in Arquillian or if I have miss-configured something IPv6 related.

       

      Any help would be much appreciated.

       

      Paul.