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 <orpi...@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; + } }