/* * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.wso2.carbon.integration.test.inputflow; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import org.wso2.carbon.automation.engine.context.TestUserMode; import org.wso2.carbon.automation.extensions.servers.jmsserver.controller.JMSBrokerController; import org.wso2.carbon.automation.extensions.servers.jmsserver.controller.config.JMSBrokerConfiguration; import org.wso2.carbon.automation.extensions.servers.jmsserver.controller.config.JMSBrokerConfigurationProvider; import org.wso2.carbon.databridge.commons.Event; import org.wso2.carbon.integration.common.utils.mgt.ServerConfigurationManager; import org.wso2.carbon.integration.test.client.JMSPublisherClient; import org.wso2.carbon.integration.test.client.Wso2EventServer; import org.wso2.cep.integration.common.utils.CEPIntegrationTest; import org.wso2.cep.integration.common.utils.CEPIntegrationTestConstants; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URISyntaxException; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; /** * Sending different formatted events to the JMS Receiver according to the receivers mapping type. */ public class JMSTestCase extends CEPIntegrationTest { private static final Log log = LogFactory.getLog(JMSTestCase.class); private final String GERONIMO_J2EE_MANAGEMENT = "geronimo-j2ee-management_1.1_spec-1.0.1.jar"; private final String SENSOR_STREAM_JSON = "org.wso2.event.sensor.stream_1.0.0.json"; private final String SENSOR_STREAM = "org.wso2.event.sensor.stream:1.0.0"; private final String JMS_RECEIVER_MAP = "jmsReceiverMap.xml"; private final String WSO2_EVENT_PUBLISHER = "wso2EventPublisher.xml"; private final String ACTIVEMQ_CORE = "activemq-core-5.7.0.jar"; private JMSBrokerController activeMqBroker = null; private ServerConfigurationManager serverManager = null; @BeforeClass(alwaysRun = true) public void init() throws Exception { super.init(TestUserMode.SUPER_TENANT_ADMIN); try { serverManager = new ServerConfigurationManager(cepServer); } catch (MalformedURLException e) { throw new RemoteException("Malformed URL exception thrown when initializing ActiveMQ broker", e); } setupActiveMQBroker(); try { // Copy dependency activemq jar files to component/lib. String JAR_LOCATION = File.separator + "artifacts" + File.separator + "CEP" + File.separator + "jar"; serverManager.copyToComponentLib(new File(getClass().getResource(JAR_LOCATION + File.separator + ACTIVEMQ_CORE).toURI())); serverManager.copyToComponentLib(new File(getClass().getResource(JAR_LOCATION + File.separator + GERONIMO_J2EE_MANAGEMENT).toURI())); serverManager.restartGracefully(); } catch (IOException e) { throw new RemoteException("IOException when initializing ActiveMQ broker", e); } catch (URISyntaxException e) { throw new RemoteException("URISyntaxException when initializing ActiveMQ broker", e); } catch (Exception e) { throw new RemoteException("Exception caught when restarting server", e); } String loggedInSessionCookie = getSessionCookie(); eventReceiverAdminServiceClient = configurationUtil.getEventReceiverAdminServiceClient( backendURL, loggedInSessionCookie); eventStreamManagerAdminServiceClient = configurationUtil.getEventStreamManagerAdminServiceClient( backendURL, loggedInSessionCookie); eventPublisherAdminServiceClient = configurationUtil.getEventPublisherAdminServiceClient( backendURL, loggedInSessionCookie); Thread.sleep(45000); } /* @Test(groups = {"wso2.cep"}, description = "Testing activemq jms receiver with Map formatted event with default mapping.") public void jmsMapTestWithDefaultMappingScenario() throws Exception { final int messageCount = 3; String samplePath = "inputflows" + File.separator + "sample0009"; int startESCount = eventStreamManagerAdminServiceClient.getEventStreamCount(); int startERCount = eventReceiverAdminServiceClient.getActiveEventReceiverCount(); int startEPCount = eventPublisherAdminServiceClient.getActiveEventPublisherCount(); // Add StreamDefinition. String streamDefinitionAsString = getJSONArtifactConfiguration(samplePath, SENSOR_STREAM_JSON); eventStreamManagerAdminServiceClient.addEventStreamAsString(streamDefinitionAsString); Assert.assertEquals(eventStreamManagerAdminServiceClient.getEventStreamCount(), startESCount + 1); // Add JMS Map EventReceiver without mapping. String eventReceiverConfig = getXMLArtifactConfiguration(samplePath, JMS_RECEIVER_MAP); eventReceiverAdminServiceClient.addEventReceiverConfiguration(eventReceiverConfig); Assert.assertEquals(eventReceiverAdminServiceClient.getActiveEventReceiverCount(), startERCount + 1); // Add Wso2event EventPublisher. String eventPublisherConfig = getXMLArtifactConfiguration(samplePath, WSO2_EVENT_PUBLISHER); eventPublisherAdminServiceClient.addEventPublisherConfiguration(eventPublisherConfig); Assert.assertEquals(eventPublisherAdminServiceClient.getActiveEventPublisherCount(), startEPCount + 1); // The data-bridge receiver. Wso2EventServer agentServer = new Wso2EventServer(samplePath, CEPIntegrationTestConstants.TCP_PORT, true); Thread agentServerThread = new Thread(agentServer); agentServerThread.start(); // Wait for server to start and publish. Thread.sleep(5000); JMSPublisherClient.publish("topicMap", "csv", samplePath, "topicMap.csv"); // Wait while all stats are published. Thread.sleep(5000); eventStreamManagerAdminServiceClient.removeEventStream("org.wso2.event.sensor.stream", "1.0.0"); eventReceiverAdminServiceClient.removeInactiveEventReceiverConfiguration(JMS_RECEIVER_MAP); eventPublisherAdminServiceClient.removeInactiveEventPublisherConfiguration(WSO2_EVENT_PUBLISHER); Thread.sleep(2000); List<Event> eventList = new ArrayList<>(); Event event = new Event(); event.setStreamId(SENSOR_STREAM); event.setMetaData(new Object[]{19900813115534l, false, 601, "temperature"}); event.setCorrelationData(new Object[]{90.34344, 20.44345}); event.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event); Event event2 = new Event(); event2.setStreamId(SENSOR_STREAM); event2.setMetaData(new Object[]{19900813115534l, false, 602, "temperature"}); event2.setCorrelationData(new Object[]{90.34344, 20.44345}); event2.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event2); Event event3 = new Event(); event3.setStreamId(SENSOR_STREAM); event3.setMetaData(new Object[]{19900813115534l, false, 603, "temperature"}); event3.setCorrelationData(new Object[]{90.34344, 20.44345}); event3.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event3); try { Assert.assertEquals(agentServer.getMsgCount(), messageCount, "Incorrect number of messages consumed!"); List<Event> preservedEventList = agentServer.getPreservedEventList(); for (Event aEvent : preservedEventList) { aEvent.setTimeStamp(0); } Assert.assertEquals(preservedEventList, eventList, "Mapping is incorrect!"); } catch (Throwable e) { log.error("Exception thrown: " + e.getMessage(), e); Assert.fail("Exception: " + e.getMessage()); } finally { agentServer.stop(); } } @Test(groups = {"wso2.cep"}, description = "Testing activemq jms receiver with Map formatted event with custom mapping", dependsOnMethods = {"jmsMapTestWithDefaultMappingScenario"}) public void jmsMapTestWithCustomMappingScenario() throws Exception { final int messageCount = 3; String samplePath = "inputflows" + File.separator + "sample0010"; int startESCount = eventStreamManagerAdminServiceClient.getEventStreamCount(); int startERCount = eventReceiverAdminServiceClient.getActiveEventReceiverCount(); int startEPCount = eventPublisherAdminServiceClient.getActiveEventPublisherCount(); // Add StreamDefinition. String streamDefinitionAsString = getJSONArtifactConfiguration(samplePath, SENSOR_STREAM_JSON); eventStreamManagerAdminServiceClient.addEventStreamAsString(streamDefinitionAsString); Assert.assertEquals(eventStreamManagerAdminServiceClient.getEventStreamCount(), startESCount + 1); // Add JMS Map EventReceiver with mapping. String eventReceiverConfig = getXMLArtifactConfiguration(samplePath, JMS_RECEIVER_MAP); eventReceiverAdminServiceClient.addEventReceiverConfiguration(eventReceiverConfig); Assert.assertEquals(eventReceiverAdminServiceClient.getActiveEventReceiverCount(), startERCount + 1); // Add Wso2event EventPublisher. String eventPublisherConfig = getXMLArtifactConfiguration(samplePath, WSO2_EVENT_PUBLISHER); eventPublisherAdminServiceClient.addEventPublisherConfiguration(eventPublisherConfig); Assert.assertEquals(eventPublisherAdminServiceClient.getActiveEventPublisherCount(), startEPCount + 1); // The data-bridge receiver. Wso2EventServer agentServer = new Wso2EventServer(samplePath, CEPIntegrationTestConstants.TCP_PORT, true); Thread agentServerThread = new Thread(agentServer); agentServerThread.start(); // Wait for server to start and publish. Thread.sleep(5000); JMSPublisherClient.publish("topicMap", "csv", samplePath, "topicMap.csv"); // Wait while all stats are published. Thread.sleep(5000); eventStreamManagerAdminServiceClient.removeEventStream("org.wso2.event.sensor.stream", "1.0.0"); eventReceiverAdminServiceClient.removeInactiveEventReceiverConfiguration(JMS_RECEIVER_MAP); eventPublisherAdminServiceClient.removeInactiveEventPublisherConfiguration(WSO2_EVENT_PUBLISHER); Thread.sleep(2000); List<Event> eventList = new ArrayList<>(); Event event = new Event(); event.setStreamId(SENSOR_STREAM); event.setMetaData(new Object[]{19900813115534l, false, 501, "temperature"}); event.setCorrelationData(new Object[]{90.34344, 20.44345}); event.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event); Event event2 = new Event(); event2.setStreamId(SENSOR_STREAM); event2.setMetaData(new Object[]{19900813115534l, false, 502, "temperature"}); event2.setCorrelationData(new Object[]{90.34344, 20.44345}); event2.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event2); Event event3 = new Event(); event3.setStreamId(SENSOR_STREAM); event3.setMetaData(new Object[]{19900813115534l, false, 503, "temperature"}); event3.setCorrelationData(new Object[]{90.34344, 20.44345}); event3.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event3); try { Assert.assertEquals(agentServer.getMsgCount(), messageCount, "Incorrect number of messages consumed!"); List<Event> preservedEventList = agentServer.getPreservedEventList(); for (Event aEvent : preservedEventList) { aEvent.setTimeStamp(0); } Assert.assertEquals(preservedEventList, eventList, "Mapping is incorrect!"); } catch (Throwable e) { log.error("Exception thrown: " + e.getMessage(), e); Assert.fail("Exception: " + e.getMessage()); } finally { agentServer.stop(); } } @Test(groups = {"wso2.cep"}, description = "Testing activemq jms receiver with JSON formatted event with default mapping", dependsOnMethods = {"jmsMapTestWithCustomMappingScenario"}) public void jmsJSONTestWithDefaultMappingScenario() throws Exception { final int messageCount = 3; String samplePath = "inputflows" + File.separator + "sample0011"; int startESCount = eventStreamManagerAdminServiceClient.getEventStreamCount(); int startERCount = eventReceiverAdminServiceClient.getActiveEventReceiverCount(); int startEPCount = eventPublisherAdminServiceClient.getActiveEventPublisherCount(); // Add StreamDefinition. String streamDefinitionAsString = getJSONArtifactConfiguration(samplePath, SENSOR_STREAM_JSON); eventStreamManagerAdminServiceClient.addEventStreamAsString(streamDefinitionAsString); Assert.assertEquals(eventStreamManagerAdminServiceClient.getEventStreamCount(), startESCount + 1); // Add JMS JSON EventReceiver without mapping. String eventReceiverConfig = getXMLArtifactConfiguration(samplePath, "jmsReceiverJSON.xml"); eventReceiverAdminServiceClient.addEventReceiverConfiguration(eventReceiverConfig); Assert.assertEquals(eventReceiverAdminServiceClient.getActiveEventReceiverCount(), startERCount + 1); // Add Wso2event EventPublisher. String eventPublisherConfig = getXMLArtifactConfiguration(samplePath, WSO2_EVENT_PUBLISHER); eventPublisherAdminServiceClient.addEventPublisherConfiguration(eventPublisherConfig); Assert.assertEquals(eventPublisherAdminServiceClient.getActiveEventPublisherCount(), startEPCount + 1); // The data-bridge receiver. Wso2EventServer agentServer = new Wso2EventServer(samplePath, CEPIntegrationTestConstants.TCP_PORT, true); Thread agentServerThread = new Thread(agentServer); agentServerThread.start(); // Wait for server to start and publish. Thread.sleep(5000); JMSPublisherClient.publish("topicJSON", "json", samplePath, "topicJSON.txt"); // Wait while all stats are published. Thread.sleep(5000); eventStreamManagerAdminServiceClient.removeEventStream("org.wso2.event.sensor.stream", "1.0.0"); eventReceiverAdminServiceClient.removeInactiveEventReceiverConfiguration("jmsReceiverJSON.xml"); eventPublisherAdminServiceClient.removeInactiveEventPublisherConfiguration(WSO2_EVENT_PUBLISHER); Thread.sleep(2000); List<Event> eventList = new ArrayList<>(); Event event = new Event(); event.setStreamId(SENSOR_STREAM); event.setMetaData(new Object[]{19900813115534l, false, 701, "temperature"}); event.setCorrelationData(new Object[]{90.34344, 20.44345}); event.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event); Event event2 = new Event(); event2.setStreamId(SENSOR_STREAM); event2.setMetaData(new Object[]{19900813115534l, false, 702, "temperature"}); event2.setCorrelationData(new Object[]{90.34344, 20.44345}); event2.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event2); Event event3 = new Event(); event3.setStreamId(SENSOR_STREAM); event3.setMetaData(new Object[]{19900813115534l, false, 703, "temperature"}); event3.setCorrelationData(new Object[]{90.34344, 20.44345}); event3.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event3); try { Assert.assertEquals(agentServer.getMsgCount(), messageCount, "Incorrect number of messages consumed!"); List<Event> preservedEventList = agentServer.getPreservedEventList(); for (Event aEvent : preservedEventList) { aEvent.setTimeStamp(0); } Assert.assertEquals(preservedEventList, eventList, "Mapping is incorrect!"); } catch (Throwable e) { log.error("Exception thrown: " + e.getMessage(), e); Assert.fail("Exception: " + e.getMessage()); } finally { agentServer.stop(); } } @Test(groups = {"wso2.cep"}, description = "Testing activemq jms receiver with XML formatted event with default mapping", dependsOnMethods = {"jmsJSONTestWithDefaultMappingScenario"}) public void jmsXmlTestWithDefaultMappingScenario() throws Exception { final int messageCount = 2; String samplePath = "inputflows" + File.separator + "sample0011"; int startESCount = eventStreamManagerAdminServiceClient.getEventStreamCount(); int startERCount = eventReceiverAdminServiceClient.getActiveEventReceiverCount(); int startEPCount = eventPublisherAdminServiceClient.getActiveEventPublisherCount(); // Add StreamDefinition. String streamDefinitionAsString = getJSONArtifactConfiguration(samplePath, SENSOR_STREAM_JSON); eventStreamManagerAdminServiceClient.addEventStreamAsString(streamDefinitionAsString); Assert.assertEquals(eventStreamManagerAdminServiceClient.getEventStreamCount(), startESCount + 1); // Add JMS XML EventReceiver without mapping. String eventReceiverConfig2 = getXMLArtifactConfiguration(samplePath, "jmsReceiverXML.xml"); eventReceiverAdminServiceClient.addEventReceiverConfiguration(eventReceiverConfig2); Assert.assertEquals(eventReceiverAdminServiceClient.getActiveEventReceiverCount(), startERCount + 1); // Add Wso2event EventPublisher. String eventPublisherConfig = getXMLArtifactConfiguration(samplePath, WSO2_EVENT_PUBLISHER); eventPublisherAdminServiceClient.addEventPublisherConfiguration(eventPublisherConfig); Assert.assertEquals(eventPublisherAdminServiceClient.getActiveEventPublisherCount(), startEPCount + 1); // The data-bridge receiver. Wso2EventServer agentServer = new Wso2EventServer(samplePath, CEPIntegrationTestConstants.TCP_PORT, true); Thread agentServerThread = new Thread(agentServer); agentServerThread.start(); // Wait for server to start and publish. Thread.sleep(5000); JMSPublisherClient.publish("topicXML", "xml", samplePath, "topicXML.txt"); // Wait while all stats are published. Thread.sleep(2000); eventStreamManagerAdminServiceClient.removeEventStream("org.wso2.event.sensor.stream", "1.0.0"); eventReceiverAdminServiceClient.removeInactiveEventReceiverConfiguration("jmsReceiverXML.xml"); eventPublisherAdminServiceClient.removeInactiveEventPublisherConfiguration(WSO2_EVENT_PUBLISHER); Thread.sleep(2000); List<Event> eventList = new ArrayList<>(); Event event4 = new Event(); event4.setStreamId(SENSOR_STREAM); event4.setMetaData(new Object[]{199008131245l, true, 801, "temperature"}); event4.setCorrelationData(new Object[]{4.504343, 1.23434}); event4.setPayloadData(new Object[]{6.6f, 20.44345}); eventList.add(event4); Event event5 = new Event(); event5.setStreamId(SENSOR_STREAM); event5.setMetaData(new Object[]{199008131245l, true, 802, "temperature"}); event5.setCorrelationData(new Object[]{4.504343, 1.23434}); event5.setPayloadData(new Object[]{6.6f, 20.44345}); eventList.add(event5); try { Assert.assertEquals(agentServer.getMsgCount(), messageCount, "Incorrect number of messages consumed!"); List<Event> preservedEventList = agentServer.getPreservedEventList(); for (Event aEvent : preservedEventList) { aEvent.setTimeStamp(0); } Assert.assertEquals(preservedEventList, eventList, "Mapping is incorrect!"); } catch (Throwable e) { log.error("Exception thrown: " + e.getMessage(), e); Assert.fail("Exception: " + e.getMessage()); } finally { agentServer.stop(); } } @Test(groups = {"wso2.cep"}, description = "Testing activemq jms receiver with JSON formatted event with default mapping", dependsOnMethods = {"jmsXmlTestWithDefaultMappingScenario"}) public void jmsTextTestWithDefaultMappingScenario() throws Exception { final int messageCount = 3; String samplePath = "inputflows" + File.separator + "sample0011"; int startESCount = eventStreamManagerAdminServiceClient.getEventStreamCount(); int startERCount = eventReceiverAdminServiceClient.getActiveEventReceiverCount(); int startEPCount = eventPublisherAdminServiceClient.getActiveEventPublisherCount(); // Add StreamDefinition. String streamDefinitionAsString = getJSONArtifactConfiguration(samplePath, SENSOR_STREAM_JSON); eventStreamManagerAdminServiceClient.addEventStreamAsString(streamDefinitionAsString); Assert.assertEquals(eventStreamManagerAdminServiceClient.getEventStreamCount(), startESCount + 1); // Add JMS Text EventReceiver without mapping. String eventReceiverConfig3 = getXMLArtifactConfiguration(samplePath, "jmsReceiverText.xml"); eventReceiverAdminServiceClient.addEventReceiverConfiguration(eventReceiverConfig3); Assert.assertEquals(eventReceiverAdminServiceClient.getActiveEventReceiverCount(), startERCount + 1); // Add Wso2event EventPublisher. String eventPublisherConfig = getXMLArtifactConfiguration(samplePath, WSO2_EVENT_PUBLISHER); eventPublisherAdminServiceClient.addEventPublisherConfiguration(eventPublisherConfig); Assert.assertEquals(eventPublisherAdminServiceClient.getActiveEventPublisherCount(), startEPCount + 1); // The data-bridge receiver. Wso2EventServer agentServer = new Wso2EventServer(samplePath, CEPIntegrationTestConstants.TCP_PORT, true); Thread agentServerThread = new Thread(agentServer); agentServerThread.start(); // Wait for server to start and publish. Thread.sleep(5000); JMSPublisherClient.publish("topicText", "text", samplePath, "topicText.txt"); // Wait while all stats are published. Thread.sleep(2000); eventStreamManagerAdminServiceClient.removeEventStream("org.wso2.event.sensor.stream", "1.0.0"); eventReceiverAdminServiceClient.removeInactiveEventReceiverConfiguration("jmsReceiverText.xml"); eventPublisherAdminServiceClient.removeInactiveEventPublisherConfiguration(WSO2_EVENT_PUBLISHER); Thread.sleep(2000); List<Event> eventList = new ArrayList<>(); Event event6 = new Event(); event6.setStreamId(SENSOR_STREAM); event6.setMetaData(new Object[]{19900813115534l, false, 901, "temperature"}); event6.setCorrelationData(new Object[]{20.44345, 5.443435}); event6.setPayloadData(new Object[]{8.9f, 1.23434}); eventList.add(event6); Event event7 = new Event(); event7.setStreamId(SENSOR_STREAM); event7.setMetaData(new Object[]{19900813115534l, false, 902, "temperature"}); event7.setCorrelationData(new Object[]{20.44345, 5.443435}); event7.setPayloadData(new Object[]{8.9f, 1.23434}); eventList.add(event7); Event event8 = new Event(); event8.setStreamId(SENSOR_STREAM); event8.setMetaData(new Object[]{19900813115534l, false, 903, "temperature"}); event8.setCorrelationData(new Object[]{20.44345, 5.443435}); event8.setPayloadData(new Object[]{8.9f, 1.23434}); eventList.add(event8); try { Assert.assertEquals(agentServer.getMsgCount(), messageCount, "Incorrect number of messages consumed!"); List<Event> preservedEventList = agentServer.getPreservedEventList(); for (Event aEvent : preservedEventList) { aEvent.setTimeStamp(0); } Assert.assertEquals(preservedEventList, eventList, "Mapping is incorrect!"); } catch (Throwable e) { log.error("Exception thrown: " + e.getMessage(), e); Assert.fail("Exception: " + e.getMessage()); } finally { agentServer.stop(); } } @Test(groups = {"wso2.cep"}, description = "Testing jms receiver with jms properties", dependsOnMethods = {"jmsTextTestWithDefaultMappingScenario"}) public void jmsPropertiesTestWithDefaultMappingScenario() throws Exception { final int messageCount = 3; String samplePath = "inputflows" + File.separator + "sample0022"; int startESCount = eventStreamManagerAdminServiceClient.getEventStreamCount(); int startERCount = eventReceiverAdminServiceClient.getActiveEventReceiverCount(); int startEPCount = eventPublisherAdminServiceClient.getActiveEventPublisherCount(); // Add StreamDefinition. String streamDefinitionAsString = getJSONArtifactConfiguration(samplePath, SENSOR_STREAM_JSON); eventStreamManagerAdminServiceClient.addEventStreamAsString(streamDefinitionAsString); Assert.assertEquals(eventStreamManagerAdminServiceClient.getEventStreamCount(), startESCount + 1); // Add JMS Map EventReceiver. String eventReceiverConfig = getXMLArtifactConfiguration(samplePath, "jmsReceiver.xml"); eventReceiverAdminServiceClient.addEventReceiverConfiguration(eventReceiverConfig); Assert.assertEquals(eventReceiverAdminServiceClient.getActiveEventReceiverCount(), startERCount + 1); // Add Wso2event EventPublisher. String eventPublisherConfig = getXMLArtifactConfiguration(samplePath, WSO2_EVENT_PUBLISHER); eventPublisherAdminServiceClient.addEventPublisherConfiguration(eventPublisherConfig); Assert.assertEquals(eventPublisherAdminServiceClient.getActiveEventPublisherCount(), startEPCount + 1); // The data-bridge receiver. Wso2EventServer agentServer = new Wso2EventServer(samplePath, CEPIntegrationTestConstants.TCP_PORT, true); Thread agentServerThread = new Thread(agentServer); try { // Let the server start. agentServerThread.start(); Thread.sleep(5000); } catch (Throwable t) { // Just to diagnose. log.error("Could not start the agent server ", t); } // Edit receiver by adding JMS properties. String eventReceiverNewConfig = getXMLArtifactConfiguration(samplePath, "jmsPropertiesReceiver.xml"); eventReceiverAdminServiceClient.editEventReceiverConfiguration(eventReceiverNewConfig, "jmsReceiver"); Assert.assertEquals(eventReceiverAdminServiceClient.getActiveEventReceiverCount(), startERCount + 1); // Wait for server to start and then publish. Thread.sleep(10000); JMSPublisherClient.publish("topicMap", "csv", samplePath, "topicMap.csv"); // Wait while all stats are published. Thread.sleep(5000); eventStreamManagerAdminServiceClient.removeEventStream("org.wso2.event.sensor.stream", "1.0.0"); eventReceiverAdminServiceClient.removeInactiveEventReceiverConfiguration("jmsReceiver.xml"); eventPublisherAdminServiceClient.removeInactiveEventPublisherConfiguration(WSO2_EVENT_PUBLISHER); Thread.sleep(2000); List<Event> eventList = new ArrayList<>(); Event event = new Event(); event.setStreamId(SENSOR_STREAM); event.setMetaData(new Object[]{19900813115534l, false, 601, "temperature"}); event.setCorrelationData(new Object[]{90.34344, 20.44345}); event.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event); Event event2 = new Event(); event2.setStreamId(SENSOR_STREAM); event2.setMetaData(new Object[]{19900813115534l, false, 602, "temperature"}); event2.setCorrelationData(new Object[]{90.34344, 20.44345}); event2.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event2); Event event3 = new Event(); event3.setStreamId(SENSOR_STREAM); event3.setMetaData(new Object[]{19900813115534l, false, 603, "temperature"}); event3.setCorrelationData(new Object[]{90.34344, 20.44345}); event3.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event3); try { Assert.assertEquals(agentServer.getMsgCount(), messageCount, "Incorrect number of messages consumed!"); List<Event> preservedEventList = agentServer.getPreservedEventList(); for (Event aEvent : preservedEventList) { aEvent.setTimeStamp(0); } Assert.assertEquals(preservedEventList, eventList, "Mapping is incorrect!"); } catch (Throwable e) { log.error("Exception thrown: " + e.getMessage(), e); Assert.fail("Exception: " + e.getMessage()); } finally { try { agentServer.stop(); } catch (Throwable t) { // Just to diagnose. log.error("Could not stop the agent server ", t); } } }*/ @Test(groups = {"wso2.cep"}, description = "Testing activemq jms receiver with waiting time. Due to large wating time lisnter should " + "not consume any messages from ActiveMQ") public void jmsMapTestWithWaitingTime() throws Exception { String samplePath = "inputflows" + File.separator + "sample0009"; System.out.println("====================My Test==========================="); String configFilePath = getTestArtifactLocation() + CEPIntegrationTestConstants .RELATIVE_PATH_TO_TEST_ARTIFACTS + samplePath + File.separator + "input-event-adapters.xml"; configFilePath = configFilePath.replaceAll("[\\\\/]", Matcher.quoteReplacement(File.separator)); File configFile = new File(configFilePath); File targetConfigFile = new File(serverManager.getCarbonHome() + File.separator + "repository" + File .separator + "conf" + File.separator + "input-event-adapters.xml"); serverManager.applyConfiguration(configFile, targetConfigFile); String loggedInSessionCookie = getSessionCookie(); eventReceiverAdminServiceClient = configurationUtil.getEventReceiverAdminServiceClient( backendURL, loggedInSessionCookie); eventStreamManagerAdminServiceClient = configurationUtil.getEventStreamManagerAdminServiceClient( backendURL, loggedInSessionCookie); eventPublisherAdminServiceClient = configurationUtil.getEventPublisherAdminServiceClient( backendURL, loggedInSessionCookie); Thread.sleep(45000); int startESCount = eventStreamManagerAdminServiceClient.getEventStreamCount(); int startERCount = eventReceiverAdminServiceClient.getActiveEventReceiverCount(); int startEPCount = eventPublisherAdminServiceClient.getActiveEventPublisherCount(); // Add StreamDefinition. String streamDefinitionAsString = getJSONArtifactConfiguration(samplePath, SENSOR_STREAM_JSON); eventStreamManagerAdminServiceClient.addEventStreamAsString(streamDefinitionAsString); Assert.assertEquals(eventStreamManagerAdminServiceClient.getEventStreamCount(), startESCount + 1); // Add JMS Map EventReceiver without mapping. String eventReceiverConfig = getXMLArtifactConfiguration(samplePath, JMS_RECEIVER_MAP); eventReceiverAdminServiceClient.addEventReceiverConfiguration(eventReceiverConfig); Assert.assertEquals(eventReceiverAdminServiceClient.getActiveEventReceiverCount(), startERCount + 1); // Add Wso2event EventPublisher. String eventPublisherConfig = getXMLArtifactConfiguration(samplePath, WSO2_EVENT_PUBLISHER); eventPublisherAdminServiceClient.addEventPublisherConfiguration(eventPublisherConfig); Assert.assertEquals(eventPublisherAdminServiceClient.getActiveEventPublisherCount(), startEPCount + 1); // The data-bridge receiver. Wso2EventServer agentServer = new Wso2EventServer(samplePath, CEPIntegrationTestConstants.TCP_PORT, true); Thread agentServerThread = new Thread(agentServer); agentServerThread.start(); // Wait for server to start and publish. Thread.sleep(5000); JMSPublisherClient.publish("topicMap", "csv", samplePath, "topicMap.csv"); // Wait while all stats are published. Thread.sleep(5000); eventStreamManagerAdminServiceClient.removeEventStream("org.wso2.event.sensor.stream", "1.0.0"); eventReceiverAdminServiceClient.removeInactiveEventReceiverConfiguration(JMS_RECEIVER_MAP); eventPublisherAdminServiceClient.removeInactiveEventPublisherConfiguration(WSO2_EVENT_PUBLISHER); Thread.sleep(2000); List<Event> eventList = new ArrayList<>(); Event event = new Event(); event.setStreamId(SENSOR_STREAM); event.setMetaData(new Object[]{19900813115534l, false, 601, "temperature"}); event.setCorrelationData(new Object[]{90.34344, 20.44345}); event.setPayloadData(new Object[]{2.3f, 20.44345}); eventList.add(event); try { // No messages should be received due to large listener waiting time Assert.assertEquals(agentServer.getMsgCount(), 0, "Messages consumed by listener!!"); } catch (Throwable e) { log.error("Exception thrown: " + e.getMessage(), e); Assert.fail("Exception: " + e.getMessage()); } finally { agentServer.stop(); } } @AfterClass(alwaysRun = true) public void destroy() throws Exception { try { Thread.sleep(5000); if (activeMqBroker != null) { activeMqBroker.stop(); } // Wait for server to clear the artifact un-deployment. Thread.sleep(5000); } finally { // Revert the changes done to cep sever. if (serverManager != null) { serverManager.removeFromComponentLib(ACTIVEMQ_CORE); serverManager.removeFromComponentLib(GERONIMO_J2EE_MANAGEMENT); serverManager.restoreToLastConfiguration(); } } super.cleanup(); } private void setupActiveMQBroker() { activeMqBroker = new JMSBrokerController("localhost", getJMSBrokerConfiguration()); if (!JMSBrokerController.isBrokerStarted()) { Assert.assertTrue(activeMqBroker.start(), "ActiveMQ Broker starting failed"); } } private JMSBrokerConfiguration getJMSBrokerConfiguration() { return JMSBrokerConfigurationProvider.getInstance().getBrokerConfiguration(); } }