You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2021/02/09 09:38:35 UTC
[camel-quarkus] 04/08: nats: disable tls+auth integration tests and
add some additional logging for troubleshooting
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 02f206e8a5bc9fdc20c046ae31ab1d5eb6df322e
Author: Luca Burgazzoli <lb...@gmail.com>
AuthorDate: Mon Feb 8 10:32:11 2021 +0100
nats: disable tls+auth integration tests and add some additional logging for troubleshooting
See https://github.com/apache/camel-quarkus/issues/2211
---
.../component/nats/it/NatsConfiguration.java | 18 +--
.../quarkus/component/nats/it/NatsRoutes.java | 2 +-
.../camel/quarkus/component/nats/it/NatsTest.java | 2 +
.../component/nats/it/NatsTestResource.java | 150 ++++++++++++++-------
4 files changed, 117 insertions(+), 55 deletions(-)
diff --git a/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsConfiguration.java b/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsConfiguration.java
index b270159..fe48a7a 100644
--- a/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsConfiguration.java
+++ b/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsConfiguration.java
@@ -34,8 +34,9 @@ public class NatsConfiguration {
@ConfigProperty(name = NATS_BROKER_URL_NO_AUTH_CONFIG_KEY)
String natsNoAuthBrokerUrl;
- @ConfigProperty(name = NATS_BROKER_URL_TLS_AUTH_CONFIG_KEY)
- String natsTlsAuthBrokerUrl;
+ // TODO: https://github.com/apache/camel-quarkus/issues/2211
+ // @ConfigProperty(name = NATS_BROKER_URL_TLS_AUTH_CONFIG_KEY)
+ // String natsTlsAuthBrokerUrl;
@ConfigProperty(name = NATS_BROKER_URL_TOKEN_AUTH_CONFIG_KEY)
String natsTokenAuthBrokerUrl;
@@ -54,12 +55,13 @@ public class NatsConfiguration {
return component;
}
- @Named
- NatsComponent natsTlsAuth() {
- NatsComponent component = new NatsComponent();
- component.setServers(natsTlsAuthBrokerUrl);
- return component;
- }
+ // TODO: https://github.com/apache/camel-quarkus/issues/2211
+ // @Named
+ // NatsComponent natsTlsAuth() {
+ // NatsComponent component = new NatsComponent();
+ // component.setServers(natsTlsAuthBrokerUrl);
+ // return component;
+ // }
@Named
NatsComponent natsTokenAuth() {
diff --git a/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsRoutes.java b/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsRoutes.java
index 67bf1a3..4cf0284 100644
--- a/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsRoutes.java
+++ b/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsRoutes.java
@@ -37,7 +37,7 @@ public class NatsRoutes extends RouteBuilder {
from("natsBasicAuth:test").routeId("basic-auth").bean(natsResource, "storeMessage");
from("natsNoAuth:test").routeId("no-auth").bean(natsResource, "storeMessage");
from("natsTokenAuth:test").routeId("token-auth").bean(natsResource, "storeMessage");
- from("natsTlsAuth:test?sslContextParameters=#ssl&secure=true").routeId("tls-auth").bean(natsResource, "storeMessage");
+ //from("natsTlsAuth:test?sslContextParameters=#ssl&secure=true").routeId("tls-auth").bean(natsResource, "storeMessage");
from("natsNoAuth:max?maxMessages=2").routeId("2-msg-max").bean(natsResource, "storeMessage");
diff --git a/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTest.java b/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTest.java
index 177848f..64bee53 100644
--- a/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTest.java
+++ b/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTest.java
@@ -21,6 +21,7 @@ import java.util.concurrent.TimeUnit;
import io.quarkus.test.common.QuarkusTestResource;
import io.quarkus.test.junit.QuarkusTest;
import io.restassured.http.Header;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
@@ -59,6 +60,7 @@ class NatsTest {
assertEquals("no-auth-msg", messages[0]);
}
+ @Disabled("https://github.com/apache/camel-quarkus/issues/2211")
@Test
void tlsAuthProduceConsumeRoundTripShouldSucceed() {
Header header = new Header("sendToEndpointUri", "natsTlsAuth:test?sslContextParameters=#ssl&secure=true");
diff --git a/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTestResource.java b/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTestResource.java
index 46cc3a0..712f47a 100644
--- a/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTestResource.java
+++ b/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTestResource.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.quarkus.component.nats.it;
+import java.util.HashMap;
import java.util.Map;
import org.apache.camel.quarkus.testcontainers.ContainerResourceLifecycleManager;
@@ -23,6 +24,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.BindMode;
import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.SelinuxContext;
+import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.utility.TestcontainersConfiguration;
@@ -30,7 +33,6 @@ import static org.apache.camel.quarkus.component.nats.it.NatsConfiguration.NATS_
import static org.apache.camel.quarkus.component.nats.it.NatsConfiguration.NATS_BROKER_URL_NO_AUTH_CONFIG_KEY;
import static org.apache.camel.quarkus.component.nats.it.NatsConfiguration.NATS_BROKER_URL_TLS_AUTH_CONFIG_KEY;
import static org.apache.camel.quarkus.component.nats.it.NatsConfiguration.NATS_BROKER_URL_TOKEN_AUTH_CONFIG_KEY;
-import static org.apache.camel.util.CollectionHelper.mapOf;
public class NatsTestResource implements ContainerResourceLifecycleManager {
@@ -41,36 +43,95 @@ public class NatsTestResource implements ContainerResourceLifecycleManager {
private static final int NATS_SERVER_PORT = 4222;
private static final String TOKEN_AUTH_TOKEN = "!admin23456";
- private GenericContainer basicAuthContainer, noAuthContainer, tlsAuthContainer, tokenAuthContainer;
+ private GenericContainer<?> basicAuthContainer, noAuthContainer, tlsAuthContainer, tokenAuthContainer;
@Override
public Map<String, String> start() {
LOG.info(TestcontainersConfiguration.getInstance().toString());
- // Start the container needed for the basic authentication test
- basicAuthContainer = new GenericContainer(NATS_IMAGE).withExposedPorts(NATS_SERVER_PORT)
+ Map<String, String> properties = new HashMap<>();
+
+ basicAuthContainer = basicAuthContainer(properties);
+ noAuthContainer = noAuthContainer(properties);
+ //tlsAuthContainer = tlsAuthContainer(properties);
+ tokenAuthContainer = tokenAuthContainer(properties);
+
+ LOG.info("Properties: {}", properties);
+
+ return properties;
+ }
+
+ @Override
+ public void stop() {
+ stop(basicAuthContainer);
+ stop(noAuthContainer);
+ stop(tlsAuthContainer);
+ stop(tokenAuthContainer);
+ }
+
+ private void stop(GenericContainer<?> container) {
+ try {
+ if (container != null) {
+ container.stop();
+ }
+ } catch (Exception ex) {
+ LOG.error("An issue occurred while stopping " + container.getNetworkAliases(), ex);
+ }
+ }
+
+ private static GenericContainer<?> basicAuthContainer(Map<String, String> properties) {
+ LOG.info("Starting basicAuthContainer");
+ // container needed for the basic authentication test
+ GenericContainer<?> container = new GenericContainer<>(NATS_IMAGE)
+ .withExposedPorts(NATS_SERVER_PORT)
+ .withNetworkAliases("basicAuthContainer")
.withCommand("-DV", "--user", BASIC_AUTH_USERNAME, "--pass", BASIC_AUTH_PASSWORD)
+ .withLogConsumer(new Slf4jLogConsumer(LOG).withPrefix("basicAuthContainer"))
.waitingFor(Wait.forLogMessage(".*Server is ready.*", 1));
- basicAuthContainer.start();
- String basicAuthIp = basicAuthContainer.getContainerIpAddress();
- Integer basicAuthPort = basicAuthContainer.getMappedPort(NATS_SERVER_PORT);
+
+ container.start();
+
+ String basicAuthIp = container.getContainerIpAddress();
+ Integer basicAuthPort = container.getMappedPort(NATS_SERVER_PORT);
String basicAuthAuthority = BASIC_AUTH_USERNAME + ":" + BASIC_AUTH_PASSWORD;
String basicAuthBrokerUrl = String.format("%s@%s:%d", basicAuthAuthority, basicAuthIp, basicAuthPort);
- // Start the container needed for tests without authentication
- noAuthContainer = new GenericContainer(NATS_IMAGE).withExposedPorts(NATS_SERVER_PORT)
+ properties.put(NATS_BROKER_URL_BASIC_AUTH_CONFIG_KEY, basicAuthBrokerUrl);
+
+ return container;
+ }
+
+ private static GenericContainer<?> noAuthContainer(Map<String, String> properties) {
+ LOG.info("Starting noAuthContainer");
+ // container needed for the basic authentication test
+ GenericContainer<?> container = new GenericContainer<>(NATS_IMAGE)
+ .withExposedPorts(NATS_SERVER_PORT)
+ .withNetworkAliases("noAuthContainer")
+ .withLogConsumer(new Slf4jLogConsumer(LOG).withPrefix("noAuthContainer"))
.waitingFor(Wait.forLogMessage(".*Listening for route connections.*", 1));
- noAuthContainer.start();
- String noAuthIp = noAuthContainer.getContainerIpAddress();
- Integer noAuthPort = noAuthContainer.getMappedPort(NATS_SERVER_PORT);
+
+ container.start();
+
+ String noAuthIp = container.getContainerIpAddress();
+ Integer noAuthPort = container.getMappedPort(NATS_SERVER_PORT);
String noAuthBrokerUrl = String.format("%s:%s", noAuthIp, noAuthPort);
+ properties.put(NATS_BROKER_URL_NO_AUTH_CONFIG_KEY, noAuthBrokerUrl);
+
+ return container;
+ }
+
+ private static GenericContainer<?> tlsAuthContainer(Map<String, String> properties) {
+ LOG.info("Starting tlsAuthContainer");
// Start the container needed for the TLS authentication test
- tlsAuthContainer = new GenericContainer(NATS_IMAGE).withExposedPorts(NATS_SERVER_PORT)
- .withClasspathResourceMapping("certs/ca.pem", "/certs/ca.pem", BindMode.READ_ONLY)
- .withClasspathResourceMapping("certs/key.pem", "/certs/key.pem", BindMode.READ_ONLY)
- .withClasspathResourceMapping("certs/server.pem", "/certs/server.pem", BindMode.READ_ONLY)
- .withClasspathResourceMapping("conf/tls.conf", "/conf/tls.conf", BindMode.READ_ONLY)
+ GenericContainer<?> container = new GenericContainer<>(NATS_IMAGE)
+ .withExposedPorts(NATS_SERVER_PORT)
+ .withNetworkAliases("tlsAuthContainer")
+ .withClasspathResourceMapping("certs/ca.pem", "/certs/ca.pem", BindMode.READ_ONLY, SelinuxContext.SHARED)
+ .withClasspathResourceMapping("certs/key.pem", "/certs/key.pem", BindMode.READ_ONLY, SelinuxContext.SHARED)
+ .withClasspathResourceMapping("certs/server.pem", "/certs/server.pem", BindMode.READ_ONLY,
+ SelinuxContext.SHARED)
+ .withClasspathResourceMapping("conf/tls.conf", "/conf/tls.conf", BindMode.READ_ONLY, SelinuxContext.SHARED)
.withCommand(
"--config", "/conf/tls.conf",
"--tls",
@@ -78,47 +139,44 @@ public class NatsTestResource implements ContainerResourceLifecycleManager {
"--tlskey=/certs/key.pem",
"--tlsverify",
"--tlscacert=/certs/ca.pem")
+ .withLogConsumer(new Slf4jLogConsumer(LOG).withPrefix("tlsAuthContainer"))
+ .waitingFor(Wait.forListeningPort())
.waitingFor(Wait.forLogMessage(".*Server is ready.*", 1));
try {
- tlsAuthContainer.start();
+ container.start();
} catch (Exception ex) {
- throw new RuntimeException("An issue occurred while starting tlsAuthContainer: " + tlsAuthContainer.getLogs(), ex);
+ throw new RuntimeException("An issue occurred while starting tlsAuthContainer: " + container.getLogs(), ex);
}
- String tlsAuthIp = tlsAuthContainer.getContainerIpAddress();
- Integer tlsAuthPort = tlsAuthContainer.getMappedPort(NATS_SERVER_PORT);
+
+ container.start();
+
+ String tlsAuthIp = container.getContainerIpAddress();
+ Integer tlsAuthPort = container.getMappedPort(NATS_SERVER_PORT);
String tlsAuthBrokerUrl = String.format("%s:%d", tlsAuthIp, tlsAuthPort);
+ properties.put(NATS_BROKER_URL_TLS_AUTH_CONFIG_KEY, tlsAuthBrokerUrl);
+
+ return container;
+ }
+
+ private static GenericContainer<?> tokenAuthContainer(Map<String, String> properties) {
+ LOG.info("Starting tokenAuthContainer");
// Start the container needed for the token authentication test
- tokenAuthContainer = new GenericContainer(NATS_IMAGE).withExposedPorts(NATS_SERVER_PORT)
+ GenericContainer<?> container = new GenericContainer<>(NATS_IMAGE)
+ .withExposedPorts(NATS_SERVER_PORT)
+ .withNetworkAliases("tokenAuthContainer")
.withCommand("-DV", "-auth", TOKEN_AUTH_TOKEN)
+ .withLogConsumer(new Slf4jLogConsumer(LOG).withPrefix("tokenAuthContainer"))
.waitingFor(Wait.forLogMessage(".*Server is ready.*", 1));
- tokenAuthContainer.start();
- String tokenAuthIp = tokenAuthContainer.getContainerIpAddress();
- Integer tokenAuthPort = tokenAuthContainer.getMappedPort(NATS_SERVER_PORT);
+
+ container.start();
+
+ String tokenAuthIp = container.getContainerIpAddress();
+ Integer tokenAuthPort = container.getMappedPort(NATS_SERVER_PORT);
String tokenAuthBrokerUrl = String.format("%s@%s:%d", TOKEN_AUTH_TOKEN, tokenAuthIp, tokenAuthPort);
- Map<String, String> properties = mapOf(NATS_BROKER_URL_BASIC_AUTH_CONFIG_KEY, basicAuthBrokerUrl);
- properties.put(NATS_BROKER_URL_NO_AUTH_CONFIG_KEY, noAuthBrokerUrl);
- properties.put(NATS_BROKER_URL_TLS_AUTH_CONFIG_KEY, tlsAuthBrokerUrl);
properties.put(NATS_BROKER_URL_TOKEN_AUTH_CONFIG_KEY, tokenAuthBrokerUrl);
- return properties;
- }
-
- @Override
- public void stop() {
- stop(basicAuthContainer, "natsBasicAuthContainer");
- stop(noAuthContainer, "natsNoAuthContainer");
- stop(tlsAuthContainer, "natsTlsAuthContainer");
- stop(tokenAuthContainer, "natsTokenAuthContainer");
- }
- private void stop(GenericContainer<?> container, String id) {
- try {
- if (container != null) {
- container.stop();
- }
- } catch (Exception ex) {
- LOG.error("An issue occured while stopping " + id, ex);
- }
+ return container;
}
}