Details
-
Type:
Feature Request
-
Status: Closed (View Workflow)
-
Priority:
Major
-
Resolution: Done
-
Affects Version/s: 1.0.0.Alpha2
-
Fix Version/s: 1.0.0.Alpha5
-
Component/s: Configuration
-
Labels:None
Description
A Contianer should be able to run with any of the support Protocols for communication with TestCase running inside the container. This needs to be configurable in a common way.
Currently Servlet Protocol configuration is stuck in the specific Containers who use it, this needs to be extracted.
e.g.
<arquillian xmlns="http://jboss.com/arquillian"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:jboss="urn:arq:org.jboss.arquillian.jbossas.remote60"
|
xmlns:servlet="urn:arq:org.jboss.arquillian.protocol.servlet"
|
xmlns:jmx="urn:arq:org.jboss.arquillian.protocol.jmx"
|
xmlns:jndi="urn:arq:org.jboss.arquillian.jndi">
|
|
|
<jboss:container id="jbossTest">
|
<localDeploymentBindAddress>my.domain</localDeploymentBindAddress>
|
<servlet:protocol>
|
<remoteServerAddress>remote.server</remoteServerAddress>
|
<remoteServerHttpPort>8181</remoteServerHttpPort>
|
</servlet:protocol>
|
<jndi:protocol> <!-- Is this really a Protocol in the Arquillian sense? -->
|
<javaNamingProviderUrl>jnp://remote.server:1099</javaNamingProviderUrl>
|
<javaNamingFactoryInitial>org.jnp.interfaces.NamingContextFactory</javaNamingFactoryInitial>
|
<javaNamingFactoryUrlPkgs>org.jboss.naming\:org.jnp.interfaces</javaNamingFactoryUrlPkgs>
|
</jndi:protocol>
|
</jboss:container>
|
|
|
<jboss:container id="jbossStage">
|
<localDeploymentBindAddress>my.domain</localDeploymentBindAddress>
|
<jmx:protocol>
|
<serviceUrl>service:jmx:rmi:///jndi/rmi://localhost:1099/</serviceUrl>
|
</jmx:protocol>
|
<jndi:protocol>
|
<javaNamingProviderUrl>jnp://remote.server:1099</javaNamingProviderUrl>
|
<javaNamingFactoryInitial>org.jnp.interfaces.NamingContextFactory</javaNamingFactoryInitial>
|
<javaNamingFactoryUrlPkgs>org.jboss.naming\:org.jnp.interfaces</javaNamingFactoryUrlPkgs>
|
</jndi:protocol>
|
</jboss:container>
|
|
|
</arquillian>
|
When this feature is implemented, it would be nice to push these settings up into common configuration interfaces. This way, it would give the developer the ability to inject the container configuration so that the test knows how to communicate with the test archive deployed to the container.
For instance, consider we are testing a REST service.
@RunWith(Arquillian.class)
{ ... }public class RESTEndpointTest {
@Deployment
public static Archive<?> createDeployment()
@Arquillian ContainerContext containerContext;
@Test
{ ClientRequest request = new ClientRequest(containerContext.getApplicationUri() + "/resource/customer/1"); ClientResponse<String> responseObj = request.get(String.class); Assert.assertEquals(200, responseObj.getStatus()); }public void shouldRespondToRequest()
}
getApplicationUri() is a convenience method which puts together:
to get something like http://localhost:8080/test
It's nearly impossible to write HTTP client tests (JAX-RS, Selenium, etc) in a portable way w/o this feature.