package org.jboss.as.test.integration.messaging.mgmt; import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants; import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.as.arquillian.api.ServerSetup; import org.jboss.as.arquillian.api.ServerSetupTask; import org.jboss.as.test.integration.common.jms.JMSOperations; import org.jboss.as.test.integration.common.jms.JMSOperationsProvider; import org.jboss.as.test.shared.ServerReload; import org.jboss.dmr.ModelNode; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.asset.StringAsset; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.Test; import org.junit.runner.RunWith; import javax.annotation.Resource; import javax.jms.ConnectionFactory; import java.util.Map; import static org.junit.Assert.assertEquals; /** * Created by spyrkob on 18/05/2017. */ @RunWith(Arquillian.class) @ServerSetup({ConnectionFactoryClientMappingTestCase.SetupTask.class}) public class ConnectionFactoryClientMappingTestCase { private static final String CONNECTION_FACTORY_JNDI_NAME = "java:jboss/exported/jms/TestConnectionFactory"; static class SetupTask implements ServerSetupTask { @Override public void setup(org.jboss.as.arquillian.container.ManagementClient managementClient, String s) throws Exception { JMSOperations ops = JMSOperationsProvider.getInstance(managementClient.getControllerClient()); ops.addSocketBinding("test-binding", clientMapping("test", "8000")); ops.addJmsConnector("http-test-connector", "test-binding", "http-acceptor"); ModelNode attr = new ModelNode(); attr.get("connectors").add("http-test-connector"); ops.addJmsConnectionFactory("TestConnectionFactory", CONNECTION_FACTORY_JNDI_NAME, attr); ServerReload.executeReloadAndWaitForCompletion(managementClient.getControllerClient()); } private ModelNode clientMapping(String destAddr, String destPort) { ModelNode clientMapping = new ModelNode(); clientMapping.get("destination-address").set(destAddr); clientMapping.get("destination-port").set(destPort); return clientMapping; } @Override public void tearDown(org.jboss.as.arquillian.container.ManagementClient managementClient, String s) throws Exception { JMSOperations ops = JMSOperationsProvider.getInstance(managementClient.getControllerClient()); ops.removeJmsConnectionFactory("TestConnectionFactory"); ops.removeJmsConnector("http-test-connector"); ops.removeSocketBinding("test-binding"); ServerReload.executeReloadAndWaitForCompletion(managementClient.getControllerClient()); } } @Deployment(testable = true) public static JavaArchive createDeployment() { final JavaArchive jar = ShrinkWrap.create(JavaArchive.class, "test.jar"); jar.addClass(ConnectionFactoryClientMappingTestCase.class); jar.add(EmptyAsset.INSTANCE, "META-INF/beans.xml"); jar.add(new StringAsset( "<jboss-deployment-structure>\n" + " <deployment>\n" + " <dependencies>\n" + " <module name=\"org.apache.activemq.artemis\"/>\n" + " </dependencies>\n" + " </deployment>\n" + "</jboss-deployment-structure>"), "META-INF/jboss-deployment-structure.xml"); return jar; } @Resource(lookup = "java:jboss/exported/jms/TestConnectionFactory") private ConnectionFactory connectionFactory; @Test public void testClientMappingInConnectionFactory() throws Exception { Map<String, Object> params = ((ActiveMQJMSConnectionFactory) connectionFactory).getStaticConnectors()[0].getParams(); assertEquals("test", params.get(TransportConstants.HOST_PROP_NAME)); assertEquals(8000, params.get(TransportConstants.PORT_PROP_NAME)); } }