This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch camel-master in repository https://gitbox.apache.org/repos/asf/camel-kafka-connector.git
commit 12daf826922fcdd82ff78c4e1c7a7f81f9c8bce7 Author: Otavio Rodolfo Piske <opi...@redhat.com> AuthorDate: Fri Nov 13 14:01:29 2020 +0100 Adjust the SJMS2 tests to use the new test infra from Camel --- tests/itests-sjms2/pom.xml | 24 ++++ .../sjms2/services/ArtemisContainer.java | 142 --------------------- .../sjms2/services/ContainerLocalService.java | 60 --------- .../sjms2/services/JMSContainer.java | 44 ------- .../kafkaconnector/sjms2/services/JMSService.java | 60 --------- .../sjms2/services/JMSServiceFactory.java | 48 ------- .../services/QpidDispatchRouterContainer.java | 71 ----------- .../sjms2/services/RemoteJMSService.java | 46 ------- .../sjms2/sink/CamelSinkJMSITCase.java | 21 +-- .../sjms2/source/CamelSourceJMSITCase.java | 19 ++- .../source/CamelSourceJMSWithAggregation.java | 15 ++- .../sjms2/services/artemis/Dockerfile | 33 ----- .../sjms2/services/qpid-dispatch-router/Dockerfile | 19 --- 13 files changed, 59 insertions(+), 543 deletions(-) diff --git a/tests/itests-sjms2/pom.xml b/tests/itests-sjms2/pom.xml index a07bff4..c4fcba8 100644 --- a/tests/itests-sjms2/pom.xml +++ b/tests/itests-sjms2/pom.xml @@ -39,6 +39,30 @@ <dependency> <groupId>org.apache.camel</groupId> + <artifactId>camel-test-infra-common</artifactId> + <version>${camel.version}</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-test-infra-messaging-common</artifactId> + <version>${camel.version}</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-test-infra-dispatch-router</artifactId> + <version>${camel.version}</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.camel</groupId> <artifactId>camel-sjms2</artifactId> </dependency> diff --git a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/ArtemisContainer.java b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/ArtemisContainer.java deleted file mode 100644 index dddcd66..0000000 --- a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/ArtemisContainer.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF 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.apache.camel.kafkaconnector.sjms2.services; - -import java.util.Properties; - -import org.testcontainers.containers.wait.strategy.Wait; -import org.testcontainers.images.builder.ImageFromDockerfile; - -public class ArtemisContainer extends JMSContainer { - private static final int DEFAULT_MQTT_PORT = 1883; - private static final int DEFAULT_AMQP_PORT = 5672; - private static final int DEFAULT_ADMIN_PORT = 8161; - private static final int DEFAULT_ACCEPTOR_PORT = 61616; - - - public ArtemisContainer() { - super(new ImageFromDockerfile("apache-artemis:ckc", false) - .withFileFromClasspath("Dockerfile", - "org/apache/camel/kafkaconnector/sjms2/services/artemis/Dockerfile")); - - withExposedPorts(DEFAULT_MQTT_PORT, DEFAULT_AMQP_PORT, - DEFAULT_ADMIN_PORT, DEFAULT_ACCEPTOR_PORT); - - waitingFor(Wait.forListeningPort()); - } - - - /** - * Gets the port number used for exchanging messages using the AMQP protocol - * @return the port number - */ - public int getAMQPPort() { - return getMappedPort(DEFAULT_AMQP_PORT); - } - - - /** - * Gets the end point URL used exchanging messages using the AMQP protocol (ie.: tcp://host:${amqp.port}) - * @return the end point URL as a string - */ - public String getAMQPEndpoint() { - return String.format("tcp://%s:%d", getContainerIpAddress(), getAMQPPort()); - } - - - /** - * Gets the port number used for exchanging messages using the MQTT protocol - * @return the port number - */ - public int getMQTTPort() { - return getMappedPort(DEFAULT_MQTT_PORT); - } - - - /** - * Gets the end point URL used exchanging messages using the MQTT protocol (ie.: tcp://host:${mqtt.port}) - * @return the end point URL as a string - */ - public String getMQTTEndpoint() { - return String.format("tcp://%s:%d", getContainerIpAddress(), getMQTTPort()); - } - - - /** - * Gets the port number used for accessing the web management console or the management API - * @return the port number - */ - public int getAdminPort() { - return getMappedPort(DEFAULT_ADMIN_PORT); - } - - - /** - * Gets the end point URL used for accessing the web management console or the management API - * @return the admin URL as a string - */ - public String getAdminURL() { - return String.format("http://%s:%d", getContainerIpAddress(), getAdminPort()); - } - - - /** - * Gets the port number used for exchanging messages using the default acceptor port - * @return the port number - */ - public int getDefaultAcceptorPort() { - return getMappedPort(DEFAULT_ACCEPTOR_PORT); - } - - - /** - * Gets the end point URL used exchanging messages through the default acceptor port - * @return the end point URL as a string - */ - public String getDefaultEndpoint() { - return String.format("tcp://%s:%d", getContainerIpAddress(), getDefaultAcceptorPort()); - } - - - /** - * Gets the port number used for exchanging messages using the Openwire protocol - * @return the port number - */ - public int getOpenwirePort() { - return getDefaultAcceptorPort(); - } - - - /** - * Gets the end point URL used exchanging messages using the Openwire protocol (ie.: tcp://host:${amqp.port}) - * @return the end point URL as a string - */ - public String getOpenwireEndpoint() { - return String.format("tcp://%s:%d", getContainerIpAddress(), getOpenwirePort()); - } - - @Override - public Properties getConnectionProperties() { - Properties properties = new Properties(); - - properties.put("camel.component.sjms2.connection-factory", "#class:org.apache.activemq.ActiveMQConnectionFactory"); - properties.put("camel.component.sjms2.connection-factory.brokerURL", getDefaultEndpoint()); - - return properties; - } -} diff --git a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/ContainerLocalService.java b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/ContainerLocalService.java deleted file mode 100644 index 9929f41..0000000 --- a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/ContainerLocalService.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF 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.apache.camel.kafkaconnector.sjms2.services; - -import java.util.Properties; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * A specialized container that can be used to create Apache Artemis broker - * instances. - */ -public class ContainerLocalService implements JMSService { - private static final Logger LOG = LoggerFactory.getLogger(ContainerLocalService.class); - - private final JMSContainer container; - - public ContainerLocalService(JMSContainer container) { - this.container = container; - } - - @Override - public Properties getConnectionProperties() { - return container.getConnectionProperties(); - } - - @Override - public String getDefaultEndpoint() { - return container.getDefaultEndpoint(); - } - - @Override - public void initialize() { - LOG.info("Trying to start the JMS broker container"); - container.start(); - LOG.info("JMS broker running at address {}", container.getDefaultEndpoint()); - } - - @Override - public void shutdown() { - LOG.info("Stopping JMS broker container"); - container.stop(); - } -} diff --git a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/JMSContainer.java b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/JMSContainer.java deleted file mode 100644 index 65171d9..0000000 --- a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/JMSContainer.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF 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.apache.camel.kafkaconnector.sjms2.services; - -import java.util.Properties; - -import org.testcontainers.containers.GenericContainer; -import org.testcontainers.images.builder.ImageFromDockerfile; - -public abstract class JMSContainer extends GenericContainer<JMSContainer> { - - - public JMSContainer(ImageFromDockerfile dockerfile) { - super(dockerfile); - } - - /** - * Gets the connection properties for accessing the service - * @return - */ - public abstract Properties getConnectionProperties(); - - - /** - * Gets the end point URL used exchanging messages through the default acceptor port - * @return the end point URL as a string - */ - public abstract String getDefaultEndpoint(); -} diff --git a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/JMSService.java b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/JMSService.java deleted file mode 100644 index 902562a..0000000 --- a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/JMSService.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF 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.apache.camel.kafkaconnector.sjms2.services; - -import java.util.Properties; - -import org.junit.jupiter.api.extension.AfterAllCallback; -import org.junit.jupiter.api.extension.BeforeAllCallback; -import org.junit.jupiter.api.extension.ExtensionContext; - -public interface JMSService extends BeforeAllCallback, AfterAllCallback { - - /** - * Gets the connection properties for accessing the service - * @return - */ - Properties getConnectionProperties(); - - /** - * Gets the default endpoint for the JMS service (ie.: amqp://host:port, or tcp://host:port, etc) - * @return the endpoint URL as a string in the specific format used by the service - */ - String getDefaultEndpoint(); - - /** - * Perform any initialization necessary - */ - void initialize(); - - /** - * Shuts down the service after the test has completed - */ - void shutdown(); - - - @Override - default void beforeAll(ExtensionContext extensionContext) throws Exception { - initialize(); - } - - @Override - default void afterAll(ExtensionContext extensionContext) throws Exception { - shutdown(); - } -} diff --git a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/JMSServiceFactory.java b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/JMSServiceFactory.java deleted file mode 100644 index 572374a..0000000 --- a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/JMSServiceFactory.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF 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.apache.camel.kafkaconnector.sjms2.services; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public final class JMSServiceFactory { - private static final Logger LOG = LoggerFactory.getLogger(JMSServiceFactory.class); - - private JMSServiceFactory() { - } - - public static JMSService createService() { - String jmsInstanceType = System.getProperty("jms-service.instance.type"); - - if (jmsInstanceType == null || jmsInstanceType.equals("local-dispatch-router-container")) { - return new ContainerLocalService(new QpidDispatchRouterContainer()); - } - - if (jmsInstanceType.equals("local-artemis-container")) { - return new ContainerLocalService(new ArtemisContainer()); - } - - if (jmsInstanceType.equals("remote")) { - return new RemoteJMSService(); - } - - LOG.error("Invalid JMS instance type: {}. Must be one of 'remote', 'local-artemis-container' or 'local-dispatch-router-container", - jmsInstanceType); - throw new UnsupportedOperationException("Invalid JMS instance type"); - } -} diff --git a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/QpidDispatchRouterContainer.java b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/QpidDispatchRouterContainer.java deleted file mode 100644 index 83f6175..0000000 --- a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/QpidDispatchRouterContainer.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF 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.apache.camel.kafkaconnector.sjms2.services; - -import java.util.Properties; - -import org.testcontainers.containers.wait.strategy.Wait; -import org.testcontainers.images.builder.ImageFromDockerfile; - -public class QpidDispatchRouterContainer extends JMSContainer { - private static final int DEFAULT_AMQP_PORT = 5672; - - - public QpidDispatchRouterContainer() { - super(new ImageFromDockerfile("qpid-dispatch:ckc", false) - .withFileFromClasspath("Dockerfile", - "org/apache/camel/kafkaconnector/sjms2/services/qpid-dispatch-router/Dockerfile")); - - withExposedPorts(DEFAULT_AMQP_PORT); - - waitingFor(Wait.forListeningPort()); - } - - - /** - * Gets the port number used for exchanging messages using the AMQP protocol - * @return the port number - */ - public int getAMQPPort() { - return getMappedPort(DEFAULT_AMQP_PORT); - } - - - /** - * Gets the end point URL used exchanging messages using the AMQP protocol (ie.: tcp://host:${amqp.port}) - * @return the end point URL as a string - */ - public String getAMQPEndpoint() { - return String.format("amqp://%s:%d", getContainerIpAddress(), getAMQPPort()); - } - - @Override - public String getDefaultEndpoint() { - return getAMQPEndpoint(); - } - - @Override - public Properties getConnectionProperties() { - Properties properties = new Properties(); - - properties.put("camel.component.sjms2.connection-factory", "#class:org.apache.qpid.jms.JmsConnectionFactory"); - properties.put("camel.component.sjms2.connection-factory.remoteURI", getDefaultEndpoint()); - - return properties; - } -} diff --git a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/RemoteJMSService.java b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/RemoteJMSService.java deleted file mode 100644 index 6779f98..0000000 --- a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/services/RemoteJMSService.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF 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.apache.camel.kafkaconnector.sjms2.services; - -import java.util.Properties; - -import org.apache.camel.kafkaconnector.common.utils.PropertyUtils; - -public class RemoteJMSService implements JMSService { - - - @Override - public void initialize() { - // NO-OP - } - - @Override - public void shutdown() { - // NO-OP - } - - @Override - public Properties getConnectionProperties() { - return PropertyUtils.getProperties(); - } - - @Override - public String getDefaultEndpoint() { - return System.getProperty("jms.broker.address"); - } -} diff --git a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/sink/CamelSinkJMSITCase.java b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/sink/CamelSinkJMSITCase.java index 36b50f2..1b1054f 100644 --- a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/sink/CamelSinkJMSITCase.java +++ b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/sink/CamelSinkJMSITCase.java @@ -33,8 +33,9 @@ import org.apache.camel.kafkaconnector.common.clients.kafka.KafkaClient; import org.apache.camel.kafkaconnector.common.utils.TestUtils; import org.apache.camel.kafkaconnector.sjms2.clients.JMSClient; import org.apache.camel.kafkaconnector.sjms2.common.SJMS2Common; -import org.apache.camel.kafkaconnector.sjms2.services.JMSService; -import org.apache.camel.kafkaconnector.sjms2.services.JMSServiceFactory; +import org.apache.camel.test.infra.dispatch.router.services.DispatchRouterContainer; +import org.apache.camel.test.infra.messaging.services.MessagingService; +import org.apache.camel.test.infra.messaging.services.MessagingServiceBuilder; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; @@ -43,8 +44,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testcontainers.junit.jupiter.Testcontainers; -import static org.junit.jupiter.api.Assertions.fail; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; /** * Integration tests for the JMS sink @@ -52,7 +53,11 @@ import static org.junit.jupiter.api.Assertions.assertEquals; @Testcontainers public class CamelSinkJMSITCase extends AbstractKafkaTest { @RegisterExtension - public static JMSService jmsService = JMSServiceFactory.createService(); + public static MessagingService jmsService = MessagingServiceBuilder + .newBuilder(DispatchRouterContainer::new) + .withEndpointProvider(DispatchRouterContainer::defaultEndpoint) + .withPropertiesProvider(DispatchRouterContainer::connectionProperties) + .build(); private static final Logger LOG = LoggerFactory.getLogger(CamelSinkJMSITCase.class); @@ -66,7 +71,7 @@ public class CamelSinkJMSITCase extends AbstractKafkaTest { @BeforeEach public void setUp() { - LOG.info("JMS service running at {}", jmsService.getDefaultEndpoint()); + LOG.info("JMS service running at {}", jmsService.defaultEndpoint()); received = 0; } @@ -124,7 +129,7 @@ public class CamelSinkJMSITCase extends AbstractKafkaTest { ConnectorPropertyFactory connectorPropertyFactory = CamelJMSPropertyFactory .basic() .withTopics(TestUtils.getDefaultTestTopic(this.getClass())) - .withConnectionProperties(jmsService.getConnectionProperties()) + .withConnectionProperties(jmsService.connectionProperties()) .withDestinationName(SJMS2Common.DEFAULT_JMS_QUEUE); runTest(connectorPropertyFactory); @@ -142,7 +147,7 @@ public class CamelSinkJMSITCase extends AbstractKafkaTest { ConnectorPropertyFactory connectorPropertyFactory = CamelJMSPropertyFactory .basic() .withTopics(TestUtils.getDefaultTestTopic(this.getClass())) - .withConnectionProperties(jmsService.getConnectionProperties()) + .withConnectionProperties(jmsService.connectionProperties()) .withUrl(SJMS2Common.DEFAULT_JMS_QUEUE) .buildUrl(); @@ -158,7 +163,7 @@ public class CamelSinkJMSITCase extends AbstractKafkaTest { JMSClient jmsClient = null; try { - jmsClient = JMSClient.newClient(jmsService.getDefaultEndpoint()); + jmsClient = JMSClient.newClient(jmsService.defaultEndpoint()); jmsClient.start(); diff --git a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/source/CamelSourceJMSITCase.java b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/source/CamelSourceJMSITCase.java index c5564ce..7f0f5c4 100644 --- a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/source/CamelSourceJMSITCase.java +++ b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/source/CamelSourceJMSITCase.java @@ -25,8 +25,9 @@ import org.apache.camel.kafkaconnector.common.clients.kafka.KafkaClient; import org.apache.camel.kafkaconnector.common.utils.TestUtils; import org.apache.camel.kafkaconnector.sjms2.clients.JMSClient; import org.apache.camel.kafkaconnector.sjms2.common.SJMS2Common; -import org.apache.camel.kafkaconnector.sjms2.services.JMSService; -import org.apache.camel.kafkaconnector.sjms2.services.JMSServiceFactory; +import org.apache.camel.test.infra.dispatch.router.services.DispatchRouterContainer; +import org.apache.camel.test.infra.messaging.services.MessagingService; +import org.apache.camel.test.infra.messaging.services.MessagingServiceBuilder; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -47,7 +48,11 @@ import static org.junit.jupiter.api.Assertions.fail; @Testcontainers public class CamelSourceJMSITCase extends AbstractKafkaTest { @RegisterExtension - public static JMSService jmsService = JMSServiceFactory.createService(); + public static MessagingService jmsService = MessagingServiceBuilder + .newBuilder(DispatchRouterContainer::new) + .withPropertiesProvider(DispatchRouterContainer::connectionProperties) + .withEndpointProvider(DispatchRouterContainer::defaultEndpoint) + .build(); private static final Logger LOG = LoggerFactory.getLogger(CamelSourceJMSITCase.class); @@ -63,7 +68,7 @@ public class CamelSourceJMSITCase extends AbstractKafkaTest { @BeforeEach public void setUp() { received = 0; - jmsClient = JMSClient.newClient(jmsService.getDefaultEndpoint()); + jmsClient = JMSClient.newClient(jmsService.defaultEndpoint()); } private <T> boolean checkRecord(ConsumerRecord<String, T> record) { @@ -101,7 +106,7 @@ public class CamelSourceJMSITCase extends AbstractKafkaTest { .basic() .withKafkaTopic(TestUtils.getDefaultTestTopic(this.getClass())) .withDestinationName(SJMS2Common.DEFAULT_JMS_QUEUE) - .withConnectionProperties(jmsService.getConnectionProperties()); + .withConnectionProperties(jmsService.connectionProperties()); runBasicStringTest(connectorPropertyFactory); } catch (Exception e) { @@ -116,7 +121,7 @@ public class CamelSourceJMSITCase extends AbstractKafkaTest { try { ConnectorPropertyFactory connectorPropertyFactory = CamelJMSPropertyFactory .basic() - .withConnectionProperties(jmsService.getConnectionProperties()) + .withConnectionProperties(jmsService.connectionProperties()) .withKafkaTopic(TestUtils.getDefaultTestTopic(this.getClass())) .withUrl(SJMS2Common.DEFAULT_JMS_QUEUE) .buildUrl(); @@ -139,7 +144,7 @@ public class CamelSourceJMSITCase extends AbstractKafkaTest { .basic() .withKafkaTopic(TestUtils.getDefaultTestTopic(this.getClass()) + jmsQueueName) .withDestinationName(jmsQueueName) - .withConnectionProperties(jmsService.getConnectionProperties()); + .withConnectionProperties(jmsService.connectionProperties()); connectorPropertyFactory.log(); getKafkaConnectService().initializeConnector(connectorPropertyFactory); diff --git a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/source/CamelSourceJMSWithAggregation.java b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/source/CamelSourceJMSWithAggregation.java index 187b25c..0a66154 100644 --- a/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/source/CamelSourceJMSWithAggregation.java +++ b/tests/itests-sjms2/src/test/java/org/apache/camel/kafkaconnector/sjms2/source/CamelSourceJMSWithAggregation.java @@ -25,8 +25,9 @@ import org.apache.camel.kafkaconnector.common.clients.kafka.KafkaClient; import org.apache.camel.kafkaconnector.common.utils.TestUtils; import org.apache.camel.kafkaconnector.sjms2.clients.JMSClient; import org.apache.camel.kafkaconnector.sjms2.common.SJMS2Common; -import org.apache.camel.kafkaconnector.sjms2.services.JMSService; -import org.apache.camel.kafkaconnector.sjms2.services.JMSServiceFactory; +import org.apache.camel.test.infra.dispatch.router.services.DispatchRouterContainer; +import org.apache.camel.test.infra.messaging.services.MessagingService; +import org.apache.camel.test.infra.messaging.services.MessagingServiceBuilder; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -40,7 +41,11 @@ import static org.junit.jupiter.api.Assertions.fail; public class CamelSourceJMSWithAggregation extends AbstractKafkaTest { @RegisterExtension - public static JMSService jmsService = JMSServiceFactory.createService(); + public static MessagingService jmsService = MessagingServiceBuilder + .newBuilder(DispatchRouterContainer::new) + .withPropertiesProvider(DispatchRouterContainer::connectionProperties) + .withEndpointProvider(DispatchRouterContainer::defaultEndpoint) + .build(); private static final Logger LOG = LoggerFactory.getLogger(CamelSourceJMSITCase.class); @@ -61,7 +66,7 @@ public class CamelSourceJMSWithAggregation extends AbstractKafkaTest { @BeforeEach public void setUp() { received = 0; - jmsClient = JMSClient.newClient(jmsService.getDefaultEndpoint()); + jmsClient = JMSClient.newClient(jmsService.defaultEndpoint()); for (int i = 0; i < sentSize - 1; i++) { expectedMessage += "hello;\n"; @@ -107,7 +112,7 @@ public class CamelSourceJMSWithAggregation extends AbstractKafkaTest { .basic() .withKafkaTopic(TestUtils.getDefaultTestTopic(this.getClass())) .withDestinationName(queueName) - .withConnectionProperties(jmsService.getConnectionProperties()) + .withConnectionProperties(jmsService.connectionProperties()) .withAggregate("org.apache.camel.kafkaconnector.aggregator.StringAggregator", sentSize, 1000); diff --git a/tests/itests-sjms2/src/test/resources/org/apache/camel/kafkaconnector/sjms2/services/artemis/Dockerfile b/tests/itests-sjms2/src/test/resources/org/apache/camel/kafkaconnector/sjms2/services/artemis/Dockerfile deleted file mode 100644 index 1cfd66e..0000000 --- a/tests/itests-sjms2/src/test/resources/org/apache/camel/kafkaconnector/sjms2/services/artemis/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF 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. -FROM centos:8 as artemis-base -MAINTAINER Otavio Rodolfo Piske <angusyo...@gmail.com> -ARG ARTEMIS_VERSION -ENV ARTEMIS_VERSION ${ARTEMIS_VERSION:-2.7.0} -ARG ARTEMIS_JOURNAL -ENV ARTEMIS_JOURNAL ${ARTEMIS_JOURNAL:-aio} -ENV JMS_BROKER_ROOT /opt/camel-kafka-connector/artemis/ -EXPOSE 1883 5672 8161 61616 -RUN dnf install -y java-1.8.0-openjdk-headless libaio tar gzip && dnf clean all -ENV JAVA_HOME /etc/alternatives/jre -RUN mkdir -p ${JMS_BROKER_ROOT} -WORKDIR ${JMS_BROKER_ROOT} -RUN curl https://archive.apache.org/dist/activemq/activemq-artemis/${ARTEMIS_VERSION}/apache-artemis-${ARTEMIS_VERSION}-bin.tar.gz -o apache-artemis.tar.gz && \ - mkdir -p apache-artemis && tar --strip-components=1 -xvf apache-artemis.tar.gz -C apache-artemis && \ - rm -f apache-artemis.tar.gz - -FROM artemis-base as artemis -RUN ${JMS_BROKER_ROOT}/apache-artemis/bin/artemis create --${ARTEMIS_JOURNAL} --relax-jolokia --allow-anonymous --http-host 0.0.0.0 --user admin --password "admin" --role amq --data /artemis-storage ${JMS_BROKER_ROOT}/apache-artemis-instance -CMD [ "sh", "-c", "./apache-artemis-instance/bin/artemis run" ] \ No newline at end of file diff --git a/tests/itests-sjms2/src/test/resources/org/apache/camel/kafkaconnector/sjms2/services/qpid-dispatch-router/Dockerfile b/tests/itests-sjms2/src/test/resources/org/apache/camel/kafkaconnector/sjms2/services/qpid-dispatch-router/Dockerfile deleted file mode 100644 index 5f55073..0000000 --- a/tests/itests-sjms2/src/test/resources/org/apache/camel/kafkaconnector/sjms2/services/qpid-dispatch-router/Dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF 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. -FROM fedora:31 -MAINTAINER Otavio Rodolfo Piske <angusyo...@gmail.com> -EXPOSE 5672 -RUN dnf install -y qpid-dispatch-router -CMD [ "sh", "-c", "/usr/sbin/qdrouterd" ] \ No newline at end of file