You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2018/07/20 07:55:15 UTC

[camel] 01/02: Camel-Nats: Introduce usage of camel-testcontainers in tests

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

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

commit 8d08221425d336f8b8136e3c2b670a16a71e3cdb
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Jul 20 09:49:36 2018 +0200

    Camel-Nats: Introduce usage of camel-testcontainers in tests
---
 components/camel-nats/pom.xml                      | 83 ++++++++++++++++++----
 .../camel/component/nats/NatsConsumerLoadTest.java | 11 ++-
 .../nats/NatsConsumerMaxMessagesQueueTest.java     | 11 ++-
 .../nats/NatsConsumerMaxMessagesTest.java          |  9 +--
 .../camel/component/nats/NatsConsumerTest.java     |  9 +--
 .../camel/component/nats/NatsProducerTest.java     |  7 +-
 .../camel/component/nats/NatsTestSupport.java      | 30 ++++++++
 .../src/test/resources/log4j2.properties           |  2 +-
 8 files changed, 118 insertions(+), 44 deletions(-)

diff --git a/components/camel-nats/pom.xml b/components/camel-nats/pom.xml
index a796989..cff9dd9 100644
--- a/components/camel-nats/pom.xml
+++ b/components/camel-nats/pom.xml
@@ -68,18 +68,77 @@
       <artifactId>log4j-slf4j-impl</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-testcontainers</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   
-  <build>
-    <plugins>
-      <plugin>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <forkCount>1</forkCount>
-          <reuseForks>false</reuseForks>
-          <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+
+
+  <profiles>
+    <profile>
+      <id>nats-skip-tests</id>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <skipTests>true</skipTests>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+
+    <!-- activate test if the docker socket file is accessible -->
+    <profile>
+      <id>nats-tests-docker-file</id>
+      <activation>
+        <file>
+          <exists>/var/run/docker.sock</exists>
+        </file>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <skipTests>false</skipTests>
+              <systemPropertyVariables>
+                <visibleassertions.silence>true</visibleassertions.silence>
+              </systemPropertyVariables>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+
+    <!-- activate test if the DOCKER_HOST env var is set -->
+    <profile>
+      <id>nats-tests-docker-env</id>
+      <activation>
+        <property>
+          <name>env.DOCKER_HOST</name>
+        </property>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <skipTests>false</skipTests>
+              <systemPropertyVariables>
+                <visibleassertions.silence>true</visibleassertions.silence>
+              </systemPropertyVariables>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerLoadTest.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerLoadTest.java
index 830e031..831f9b6 100644
--- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerLoadTest.java
+++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerLoadTest.java
@@ -26,12 +26,9 @@ import io.nats.client.Options;
 import org.apache.camel.EndpointInject;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Ignore;
 import org.junit.Test;
 
-@Ignore("Require a running Nats server")
-public class NatsConsumerLoadTest extends CamelTestSupport {
+public class NatsConsumerLoadTest extends NatsTestSupport {
     
     @EndpointInject(uri = "mock:result")
     protected MockEndpoint mockResultEndpoint;
@@ -39,7 +36,7 @@ public class NatsConsumerLoadTest extends CamelTestSupport {
     @Test
     public void testLoadConsumer() throws InterruptedException, IOException, TimeoutException {
         mockResultEndpoint.setExpectedMessageCount(10000);
-        Options options = new Options.Builder().server("nats://localhost:4222").build();
+        Options options = new Options.Builder().server("nats://" + getNatsUrl()).build();
         Connection connection = Nats.connect(options);
 
         for (int i = 0; i < 10000; i++) {
@@ -54,8 +51,8 @@ public class NatsConsumerLoadTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:send").to("nats://localhost:4222?topic=test");
-                from("nats://localhost:4222?topic=test").to(mockResultEndpoint);
+                from("direct:send").to("nats://"  + getNatsUrl() +  "?topic=test");
+                from("nats://"  + getNatsUrl() + "?topic=test").to(mockResultEndpoint);
             }
         };
     }
diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerMaxMessagesQueueTest.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerMaxMessagesQueueTest.java
index 5c42eae..de99eb5 100644
--- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerMaxMessagesQueueTest.java
+++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerMaxMessagesQueueTest.java
@@ -21,12 +21,9 @@ import java.io.IOException;
 import org.apache.camel.EndpointInject;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Ignore;
 import org.junit.Test;
 
-@Ignore("Require a running Nats server")
-public class NatsConsumerMaxMessagesQueueTest extends CamelTestSupport {
+public class NatsConsumerMaxMessagesQueueTest extends NatsTestSupport {
 
     @EndpointInject(uri = "mock:result")
     protected MockEndpoint mockResultEndpoint;
@@ -46,9 +43,9 @@ public class NatsConsumerMaxMessagesQueueTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:send").to("nats://localhost:4222?topic=test");
-                from("nats://localhost:4222?topic=test&maxMessages=5&queueName=test").routeId("cons1").to(mockResultEndpoint);
-                from("nats://localhost:4222?topic=test&maxMessages=6&queueName=test").routeId("cons2").to(mockResultEndpoint);
+                from("direct:send").to("nats://" + getNatsUrl() + "?topic=test");
+                from("nats://"  + getNatsUrl() +  "?topic=test&maxMessages=5&queueName=test").routeId("cons1").to(mockResultEndpoint);
+                from("nats://" + getNatsUrl() + "?topic=test&maxMessages=6&queueName=test").routeId("cons2").to(mockResultEndpoint);
             }
         };
     }
diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerMaxMessagesTest.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerMaxMessagesTest.java
index d822a97..f1d2059 100644
--- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerMaxMessagesTest.java
+++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerMaxMessagesTest.java
@@ -21,12 +21,9 @@ import java.io.IOException;
 import org.apache.camel.EndpointInject;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Ignore;
 import org.junit.Test;
 
-@Ignore("Require a running Nats server")
-public class NatsConsumerMaxMessagesTest extends CamelTestSupport {
+public class NatsConsumerMaxMessagesTest extends NatsTestSupport {
 
     @EndpointInject(uri = "mock:result")
     protected MockEndpoint mockResultEndpoint;
@@ -54,8 +51,8 @@ public class NatsConsumerMaxMessagesTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:send").to("nats://localhost:4222?topic=test");
-                from("nats://localhost:4222?topic=test&maxMessages=5").to(mockResultEndpoint);
+                from("direct:send").to("nats://" + getNatsUrl() + "?topic=test");
+                from("nats://" + getNatsUrl() + "?topic=test&maxMessages=5").to(mockResultEndpoint);
             }
         };
     }
diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerTest.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerTest.java
index 86294f1..19c36c0 100644
--- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerTest.java
+++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsConsumerTest.java
@@ -21,12 +21,9 @@ import java.io.IOException;
 import org.apache.camel.EndpointInject;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Ignore;
 import org.junit.Test;
 
-@Ignore("Require a running Nats server")
-public class NatsConsumerTest extends CamelTestSupport {
+public class NatsConsumerTest extends NatsTestSupport {
 
     @EndpointInject(uri = "mock:result")
     protected MockEndpoint mockResultEndpoint;
@@ -44,8 +41,8 @@ public class NatsConsumerTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:send").to("nats://localhost:4222?topic=test&flushConnection=true");
-                from("nats://localhost:4222?topic=test&flushConnection=true").to(mockResultEndpoint);
+                from("direct:send").to("nats://"  + getNatsUrl() + "?topic=test&flushConnection=true");
+                from("nats://" + getNatsUrl() + "?topic=test&flushConnection=true").to(mockResultEndpoint);
             }
         };
     }
diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsProducerTest.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsProducerTest.java
index 4a22551..b3bd3bb 100644
--- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsProducerTest.java
+++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsProducerTest.java
@@ -17,12 +17,9 @@
 package org.apache.camel.component.nats;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Ignore;
 import org.junit.Test;
 
-@Ignore("Require a running Nats server")
-public class NatsProducerTest extends CamelTestSupport {
+public class NatsProducerTest extends NatsTestSupport {
     
     @Test
     public void sendTest() throws Exception {
@@ -35,7 +32,7 @@ public class NatsProducerTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:send").to("nats://localhost:4222?topic=test");
+                from("direct:send").to("nats://" + getNatsUrl() + "?topic=test");
             }
         };
     }
diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsTestSupport.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsTestSupport.java
new file mode 100644
index 0000000..6d146bb
--- /dev/null
+++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/NatsTestSupport.java
@@ -0,0 +1,30 @@
+package org.apache.camel.component.nats;
+
+import org.apache.camel.test.testcontainers.ContainerAwareTestSupport;
+import org.apache.camel.test.testcontainers.Wait;
+import org.testcontainers.containers.GenericContainer;
+
+public class NatsTestSupport extends ContainerAwareTestSupport{
+
+    public static final String CONTAINER_IMAGE = "nats:1.2.0";
+    public static final String CONTAINER_NAME = "nats";
+    
+    @Override
+    protected GenericContainer<?> createContainer() {
+        return natsContainer();
+    }
+
+    public static GenericContainer natsContainer() {
+        return new GenericContainer(CONTAINER_IMAGE)
+            .withNetworkAliases(CONTAINER_NAME)
+            .waitingFor(Wait.forLogMessageContaining("Listening for route connections", 1));
+    }
+    
+    public String getNatsUrl() {
+        return String.format(
+            "%s:%d",
+            getContainerHost(CONTAINER_NAME),
+            getContainerPort(CONTAINER_NAME, 4222)
+        );
+    }
+}
diff --git a/components/camel-nats/src/test/resources/log4j2.properties b/components/camel-nats/src/test/resources/log4j2.properties
index f71156a..b243975 100644
--- a/components/camel-nats/src/test/resources/log4j2.properties
+++ b/components/camel-nats/src/test/resources/log4j2.properties
@@ -24,5 +24,5 @@ appender.out.type = Console
 appender.out.name = out
 appender.out.layout.type = PatternLayout
 appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-rootLogger.level = INFO
+rootLogger.level = DEBUG
 rootLogger.appenderRef.file.ref = file