You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/10/24 06:30:06 UTC

[camel] branch master updated: Unify the test service interfaces (#4506)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new fe0599b  Unify the test service interfaces (#4506)
fe0599b is described below

commit fe0599bbedffa9b3334e911d1e762adaf68e1fad
Author: Otavio Rodolfo Piske <or...@users.noreply.github.com>
AuthorDate: Sat Oct 24 08:29:47 2020 +0200

    Unify the test service interfaces (#4506)
    
    This allow them to have greater flexibility about how they can be used
    and reduce some duplications on their interfaces.
---
 test-infra/camel-test-infra-aws-common/pom.xml     | 10 +++++++++
 .../test/infra/aws/common/services/AWSService.java | 13 ++---------
 .../aws/services/AWSLocalContainerService.java     |  6 +++--
 .../aws2/services/AWSLocalContainerService.java    |  6 +++--
 .../services/CassandraLocalContainerService.java   | 11 ++++++++-
 .../infra/cassandra/services/CassandraService.java | 13 ++---------
 test-infra/camel-test-infra-common/pom.xml         |  7 ++++++
 .../infra/common/services/ContainerService.java}   | 26 ++++------------------
 .../test/infra/common/services/TestService.java}   | 25 ++-------------------
 .../kafka/services/ContainerLocalKafkaService.java |  8 ++++++-
 .../test/infra/kafka/services/KafkaService.java    | 13 ++---------
 .../test/infra/kafka/services/StrimziService.java  |  8 ++++++-
 12 files changed, 61 insertions(+), 85 deletions(-)

diff --git a/test-infra/camel-test-infra-aws-common/pom.xml b/test-infra/camel-test-infra-aws-common/pom.xml
index 741ce86..565b8cc 100644
--- a/test-infra/camel-test-infra-aws-common/pom.xml
+++ b/test-infra/camel-test-infra-aws-common/pom.xml
@@ -30,6 +30,16 @@
     <name>Camel :: Test Infra :: AWS Common</name>
     <artifactId>camel-test-infra-aws-common</artifactId>
 
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-infra-common</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
     <build>
         <plugins>
             <plugin>
diff --git a/test-infra/camel-test-infra-aws-common/src/test/java/org/apache/camel/test/infra/aws/common/services/AWSService.java b/test-infra/camel-test-infra-aws-common/src/test/java/org/apache/camel/test/infra/aws/common/services/AWSService.java
index b588963..02aba8b 100644
--- a/test-infra/camel-test-infra-aws-common/src/test/java/org/apache/camel/test/infra/aws/common/services/AWSService.java
+++ b/test-infra/camel-test-infra-aws-common/src/test/java/org/apache/camel/test/infra/aws/common/services/AWSService.java
@@ -19,26 +19,17 @@ package org.apache.camel.test.infra.aws.common.services;
 
 import java.util.Properties;
 
+import org.apache.camel.test.infra.common.services.TestService;
 import org.junit.jupiter.api.extension.AfterAllCallback;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 
-public interface AWSService<T> extends BeforeAllCallback, AfterAllCallback {
+public interface AWSService<T> extends BeforeAllCallback, AfterAllCallback, TestService {
 
     T getClient();
 
     Properties getConnectionProperties();
 
-    /**
-     * 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();
diff --git a/test-infra/camel-test-infra-aws-v1/src/test/java/org/apache/camel/test/infra/aws/services/AWSLocalContainerService.java b/test-infra/camel-test-infra-aws-v1/src/test/java/org/apache/camel/test/infra/aws/services/AWSLocalContainerService.java
index 6460921..97927f4 100644
--- a/test-infra/camel-test-infra-aws-v1/src/test/java/org/apache/camel/test/infra/aws/services/AWSLocalContainerService.java
+++ b/test-infra/camel-test-infra-aws-v1/src/test/java/org/apache/camel/test/infra/aws/services/AWSLocalContainerService.java
@@ -23,11 +23,12 @@ import com.amazonaws.auth.AWSCredentials;
 import com.amazonaws.regions.Regions;
 import org.apache.camel.test.infra.aws.common.AWSConfigs;
 import org.apache.camel.test.infra.aws.common.services.AWSService;
+import org.apache.camel.test.infra.common.services.ContainerService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testcontainers.containers.localstack.LocalStackContainer;
 
-abstract class AWSLocalContainerService<T> implements AWSService<T> {
+abstract class AWSLocalContainerService<T> implements AWSService<T>, ContainerService<LocalStackContainer> {
     private static final Logger LOG = LoggerFactory.getLogger(AWSLocalContainerService.class);
     private final LocalStackContainer container;
 
@@ -86,7 +87,8 @@ abstract class AWSLocalContainerService<T> implements AWSService<T> {
         return properties;
     }
 
-    protected LocalStackContainer getContainer() {
+    @Override
+    public LocalStackContainer getContainer() {
         return container;
     }
 
diff --git a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSLocalContainerService.java b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSLocalContainerService.java
index ecba4fc..c2f17b2 100644
--- a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSLocalContainerService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSLocalContainerService.java
@@ -22,12 +22,13 @@ import java.util.Properties;
 
 import org.apache.camel.test.infra.aws.common.AWSConfigs;
 import org.apache.camel.test.infra.aws.common.services.AWSService;
+import org.apache.camel.test.infra.common.services.ContainerService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import software.amazon.awssdk.auth.credentials.AwsCredentials;
 import software.amazon.awssdk.regions.Region;
 
-abstract class AWSLocalContainerService<T> implements AWSService<T> {
+abstract class AWSLocalContainerService<T> implements AWSService<T>, ContainerService<AWSContainer> {
     private static final Logger LOG = LoggerFactory.getLogger(AWSLocalContainerService.class);
     private AWSContainer container;
 
@@ -43,7 +44,8 @@ abstract class AWSLocalContainerService<T> implements AWSService<T> {
         return container.getAmazonHost();
     }
 
-    protected AWSContainer getContainer() {
+    @Override
+    public AWSContainer getContainer() {
         return container;
     }
 
diff --git a/test-infra/camel-test-infra-cassandra/src/test/java/org/apache/camel/test/infra/cassandra/services/CassandraLocalContainerService.java b/test-infra/camel-test-infra-cassandra/src/test/java/org/apache/camel/test/infra/cassandra/services/CassandraLocalContainerService.java
index 9677aef..148da2f 100644
--- a/test-infra/camel-test-infra-cassandra/src/test/java/org/apache/camel/test/infra/cassandra/services/CassandraLocalContainerService.java
+++ b/test-infra/camel-test-infra-cassandra/src/test/java/org/apache/camel/test/infra/cassandra/services/CassandraLocalContainerService.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.test.infra.cassandra.services;
 
+import org.apache.camel.test.infra.common.services.ContainerService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testcontainers.containers.CassandraContainer;
@@ -23,7 +24,10 @@ import org.testcontainers.containers.CassandraContainer;
 /**
  * A service for a local instance of Apache Cassandra running with TestContainers
  */
-public class CassandraLocalContainerService implements CassandraService<CassandraLocalContainerService> {
+public class CassandraLocalContainerService
+        implements
+        CassandraService<CassandraLocalContainerService>,
+        ContainerService<CassandraContainer> {
     private static final Logger LOG = LoggerFactory.getLogger(CassandraLocalContainerService.class);
 
     private CassandraContainer container;
@@ -67,4 +71,9 @@ public class CassandraLocalContainerService implements CassandraService<Cassandr
         LOG.info("Stopping the Cassandra container");
         container.stop();
     }
+
+    @Override
+    public CassandraContainer getContainer() {
+        return container;
+    }
 }
diff --git a/test-infra/camel-test-infra-cassandra/src/test/java/org/apache/camel/test/infra/cassandra/services/CassandraService.java b/test-infra/camel-test-infra-cassandra/src/test/java/org/apache/camel/test/infra/cassandra/services/CassandraService.java
index 7d451cf..5f650bb 100644
--- a/test-infra/camel-test-infra-cassandra/src/test/java/org/apache/camel/test/infra/cassandra/services/CassandraService.java
+++ b/test-infra/camel-test-infra-cassandra/src/test/java/org/apache/camel/test/infra/cassandra/services/CassandraService.java
@@ -17,6 +17,7 @@
 
 package org.apache.camel.test.infra.cassandra.services;
 
+import org.apache.camel.test.infra.common.services.TestService;
 import org.junit.jupiter.api.extension.AfterAllCallback;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
@@ -24,7 +25,7 @@ import org.junit.jupiter.api.extension.ExtensionContext;
 /**
  * Represents an endpoint to a Cassandra instance
  */
-public interface CassandraService<T extends CassandraService<T>> extends BeforeAllCallback, AfterAllCallback {
+public interface CassandraService<T extends CassandraService<T>> extends BeforeAllCallback, AfterAllCallback, TestService {
 
     int getCQL3Port();
 
@@ -38,16 +39,6 @@ public interface CassandraService<T extends CassandraService<T>> extends BeforeA
 
     T withNetworkAliases(String network);
 
-    /**
-     * 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();
diff --git a/test-infra/camel-test-infra-common/pom.xml b/test-infra/camel-test-infra-common/pom.xml
index bd5f176..e2e35c1 100644
--- a/test-infra/camel-test-infra-common/pom.xml
+++ b/test-infra/camel-test-infra-common/pom.xml
@@ -41,4 +41,11 @@
         </plugins>
     </build>
 
+    <dependencies>
+        <dependency>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>testcontainers</artifactId>
+        </dependency>
+    </dependencies>
+
 </project>
\ No newline at end of file
diff --git a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalKafkaService.java b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerService.java
similarity index 52%
copy from test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalKafkaService.java
copy to test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerService.java
index 1d94732..f2358dd 100644
--- a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalKafkaService.java
+++ b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/ContainerService.java
@@ -15,29 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.camel.test.infra.kafka.services;
+package org.apache.camel.test.infra.common.services;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testcontainers.containers.KafkaContainer;
+import org.testcontainers.containers.GenericContainer;
 
-public class ContainerLocalKafkaService implements KafkaService {
-    private static final Logger LOG = LoggerFactory.getLogger(ContainerLocalKafkaService.class);
-    private KafkaContainer kafka = new KafkaContainer().withEmbeddedZookeeper();
+public interface ContainerService<T extends GenericContainer> {
 
-    public String getBootstrapServers() {
-        return kafka.getBootstrapServers();
-    }
-
-    @Override
-    public void initialize() {
-        kafka.start();
-
-        LOG.info("Kafka bootstrap server running at address {}", kafka.getBootstrapServers());
-    }
-
-    @Override
-    public void shutdown() {
-        kafka.stop();
-    }
+    T getContainer();
 }
diff --git a/test-infra/camel-test-infra-aws-common/src/test/java/org/apache/camel/test/infra/aws/common/services/AWSService.java b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/TestService.java
similarity index 60%
copy from test-infra/camel-test-infra-aws-common/src/test/java/org/apache/camel/test/infra/aws/common/services/AWSService.java
copy to test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/TestService.java
index b588963..ede2800 100644
--- a/test-infra/camel-test-infra-aws-common/src/test/java/org/apache/camel/test/infra/aws/common/services/AWSService.java
+++ b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/TestService.java
@@ -15,20 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.camel.test.infra.aws.common.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 AWSService<T> extends BeforeAllCallback, AfterAllCallback {
-
-    T getClient();
-
-    Properties getConnectionProperties();
+package org.apache.camel.test.infra.common.services;
 
+public interface TestService {
     /**
      * Perform any initialization necessary
      */
@@ -38,14 +27,4 @@ public interface AWSService<T> extends BeforeAllCallback, AfterAllCallback {
      * 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/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalKafkaService.java b/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalKafkaService.java
index 1d94732..3576f54 100644
--- a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalKafkaService.java
+++ b/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalKafkaService.java
@@ -17,11 +17,12 @@
 
 package org.apache.camel.test.infra.kafka.services;
 
+import org.apache.camel.test.infra.common.services.ContainerService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testcontainers.containers.KafkaContainer;
 
-public class ContainerLocalKafkaService implements KafkaService {
+public class ContainerLocalKafkaService implements KafkaService, ContainerService<KafkaContainer> {
     private static final Logger LOG = LoggerFactory.getLogger(ContainerLocalKafkaService.class);
     private KafkaContainer kafka = new KafkaContainer().withEmbeddedZookeeper();
 
@@ -40,4 +41,9 @@ public class ContainerLocalKafkaService implements KafkaService {
     public void shutdown() {
         kafka.stop();
     }
+
+    @Override
+    public KafkaContainer getContainer() {
+        return kafka;
+    }
 }
diff --git a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/KafkaService.java b/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/KafkaService.java
index 339c2d8..ab8fb04 100644
--- a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/KafkaService.java
+++ b/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/KafkaService.java
@@ -17,6 +17,7 @@
 
 package org.apache.camel.test.infra.kafka.services;
 
+import org.apache.camel.test.infra.common.services.TestService;
 import org.junit.jupiter.api.extension.AfterAllCallback;
 import org.junit.jupiter.api.extension.AfterTestExecutionCallback;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
@@ -27,7 +28,7 @@ import org.junit.jupiter.api.extension.ExtensionContext;
  * Provides an interface for any type of Kafka service: remote instances, local container, etc
  */
 public interface KafkaService
-        extends BeforeAllCallback, BeforeTestExecutionCallback, AfterAllCallback, AfterTestExecutionCallback {
+        extends TestService, BeforeAllCallback, BeforeTestExecutionCallback, AfterAllCallback, AfterTestExecutionCallback {
 
     /**
      * Gets the addresses of the bootstrap servers in the format host1:port,host2:port,etc
@@ -36,16 +37,6 @@ public interface KafkaService
      */
     String getBootstrapServers();
 
-    /**
-     * Perform any initialization necessary
-     */
-    void initialize();
-
-    /**
-     * Shutdown the service
-     */
-    void shutdown();
-
     @Override
     default void beforeAll(ExtensionContext extensionContext) throws Exception {
         initialize();
diff --git a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/StrimziService.java b/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/StrimziService.java
index c8e849c..d85b098 100644
--- a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/StrimziService.java
+++ b/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/StrimziService.java
@@ -18,11 +18,12 @@
 package org.apache.camel.test.infra.kafka.services;
 
 import org.apache.camel.test.infra.common.TestUtils;
+import org.apache.camel.test.infra.common.services.ContainerService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testcontainers.containers.Network;
 
-public class StrimziService implements KafkaService {
+public class StrimziService implements KafkaService, ContainerService<StrimziContainer> {
     private static final Logger LOG = LoggerFactory.getLogger(StrimziService.class);
 
     private static ZookeeperContainer zookeeperContainer;
@@ -106,4 +107,9 @@ public class StrimziService implements KafkaService {
             TestUtils.waitFor(this::stopped);
         }
     }
+
+    @Override
+    public StrimziContainer getContainer() {
+        return strimziContainer;
+    }
 }