From 4fb20bd25eab715a1ffd4e48f9f6647b45d8d101 Mon Sep 17 00:00:00 2001 From: Soby Chacko Date: Tue, 19 May 2020 17:56:23 -0400 Subject: [PATCH] Making test-containers to use random port MQTT tests were using a fixed port, making them random. --- .../stream/app/mqtt/sink/MqttSinkTests.java | 18 +++++++++--------- .../app/source/mqtt/MqttSourceTests.java | 19 +++++++++---------- .../app/source/time/TimeSourceTests.java | 2 +- .../fn/consumer/mqtt/MqttConsumerTests.java | 16 +++++++++------- .../fn/supplier/mqtt/MqttSupplierTests.java | 17 +++++++++-------- 5 files changed, 37 insertions(+), 35 deletions(-) diff --git a/applications/sink/mqtt-sink/src/test/java/org/springframework/cloud/stream/app/mqtt/sink/MqttSinkTests.java b/applications/sink/mqtt-sink/src/test/java/org/springframework/cloud/stream/app/mqtt/sink/MqttSinkTests.java index 6590b9b1..6a718998 100644 --- a/applications/sink/mqtt-sink/src/test/java/org/springframework/cloud/stream/app/mqtt/sink/MqttSinkTests.java +++ b/applications/sink/mqtt-sink/src/test/java/org/springframework/cloud/stream/app/mqtt/sink/MqttSinkTests.java @@ -16,12 +16,7 @@ package org.springframework.cloud.stream.app.mqtt.sink; -import java.util.function.Consumer; - -import com.github.dockerjava.api.command.CreateContainerCmd; -import com.github.dockerjava.api.model.ExposedPort; -import com.github.dockerjava.api.model.PortBinding; -import com.github.dockerjava.api.model.Ports; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Test; import org.testcontainers.containers.GenericContainer; @@ -48,11 +43,16 @@ import static org.assertj.core.api.Assertions.assertThat; public class MqttSinkTests { static { - Consumer cmd = e -> e.withPortBindings(new PortBinding(Ports.Binding.bindPort(1883), new ExposedPort(1883))); GenericContainer mosquitto = new GenericContainer("eclipse-mosquitto") - .withExposedPorts(1883) - .withCreateContainerCmdModifier(cmd); + .withExposedPorts(1883); mosquitto.start(); + final Integer mappedPort = mosquitto.getMappedPort(1883); + System.setProperty("mqtt.url", "tcp://localhost:" + mappedPort); + } + + @AfterAll + public static void cleanup() { + System.clearProperty("mqtt.url"); } @Test diff --git a/applications/source/mqtt-source/src/test/java/org/springframework/cloud/stream/app/source/mqtt/MqttSourceTests.java b/applications/source/mqtt-source/src/test/java/org/springframework/cloud/stream/app/source/mqtt/MqttSourceTests.java index 85347d5a..60b8df58 100644 --- a/applications/source/mqtt-source/src/test/java/org/springframework/cloud/stream/app/source/mqtt/MqttSourceTests.java +++ b/applications/source/mqtt-source/src/test/java/org/springframework/cloud/stream/app/source/mqtt/MqttSourceTests.java @@ -16,15 +16,9 @@ package org.springframework.cloud.stream.app.source.mqtt; -import java.util.function.Consumer; - -import com.github.dockerjava.api.command.CreateContainerCmd; -import com.github.dockerjava.api.model.ExposedPort; -import com.github.dockerjava.api.model.PortBinding; -import com.github.dockerjava.api.model.Ports; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Test; import org.testcontainers.containers.GenericContainer; -import org.testcontainers.shaded.javax.ws.rs.HEAD; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -49,11 +43,16 @@ import static org.assertj.core.api.Assertions.assertThat; public class MqttSourceTests { static { - Consumer cmd = e -> e.withPortBindings(new PortBinding(Ports.Binding.bindPort(1883), new ExposedPort(1883))); GenericContainer mosquitto = new GenericContainer("eclipse-mosquitto") - .withExposedPorts(1883) - .withCreateContainerCmdModifier(cmd); + .withExposedPorts(1883); mosquitto.start(); + final Integer mappedPort = mosquitto.getMappedPort(1883); + System.setProperty("mqtt.url", "tcp://localhost:" + mappedPort); + } + + @AfterAll + public static void cleanup() { + System.clearProperty("mqtt.url"); } @Test diff --git a/applications/source/time-source/src/test/java/org/springframework/cloud/stream/app/source/time/TimeSourceTests.java b/applications/source/time-source/src/test/java/org/springframework/cloud/stream/app/source/time/TimeSourceTests.java index 631b3adf..684c492a 100644 --- a/applications/source/time-source/src/test/java/org/springframework/cloud/stream/app/source/time/TimeSourceTests.java +++ b/applications/source/time-source/src/test/java/org/springframework/cloud/stream/app/source/time/TimeSourceTests.java @@ -24,8 +24,8 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.cloud.fn.supplier.time.TimeSupplierProperties; import org.springframework.cloud.fn.supplier.time.TimeSupplierConfiguration; +import org.springframework.cloud.fn.supplier.time.TimeSupplierProperties; import org.springframework.cloud.stream.binder.test.OutputDestination; import org.springframework.cloud.stream.binder.test.TestChannelBinderConfiguration; import org.springframework.context.ConfigurableApplicationContext; diff --git a/functions/consumer/mqtt-consumer/src/test/java/org/springframework/cloud/fn/consumer/mqtt/MqttConsumerTests.java b/functions/consumer/mqtt-consumer/src/test/java/org/springframework/cloud/fn/consumer/mqtt/MqttConsumerTests.java index a5cd3608..cb4f140f 100644 --- a/functions/consumer/mqtt-consumer/src/test/java/org/springframework/cloud/fn/consumer/mqtt/MqttConsumerTests.java +++ b/functions/consumer/mqtt-consumer/src/test/java/org/springframework/cloud/fn/consumer/mqtt/MqttConsumerTests.java @@ -18,10 +18,7 @@ package org.springframework.cloud.fn.consumer.mqtt; import java.util.function.Consumer; -import com.github.dockerjava.api.command.CreateContainerCmd; -import com.github.dockerjava.api.model.ExposedPort; -import com.github.dockerjava.api.model.PortBinding; -import com.github.dockerjava.api.model.Ports; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Test; import org.testcontainers.containers.GenericContainer; @@ -45,11 +42,11 @@ import static org.assertj.core.api.Assertions.assertThat; public class MqttConsumerTests { static { - Consumer cmd = e -> e.withPortBindings(new PortBinding(Ports.Binding.bindPort(1883), new ExposedPort(1883))); GenericContainer mosquitto = new GenericContainer("eclipse-mosquitto") - .withExposedPorts(1883) - .withCreateContainerCmdModifier(cmd); + .withExposedPorts(1883); mosquitto.start(); + final Integer mappedPort = mosquitto.getMappedPort(1883); + System.setProperty("mqtt.url", "tcp://localhost:" + mappedPort); } @Autowired @@ -58,6 +55,11 @@ public class MqttConsumerTests { @Autowired protected QueueChannel queue; + @AfterAll + public static void cleanup() { + System.clearProperty("mqtt.url"); + } + @Test public void testMqttConsumer() { this.mqttConsumer.accept(MessageBuilder.withPayload("hello").build()); diff --git a/functions/supplier/mqtt-supplier/src/test/java/org/springframework/cloud/fn/supplier/mqtt/MqttSupplierTests.java b/functions/supplier/mqtt-supplier/src/test/java/org/springframework/cloud/fn/supplier/mqtt/MqttSupplierTests.java index 3af340ee..edf3bbda 100644 --- a/functions/supplier/mqtt-supplier/src/test/java/org/springframework/cloud/fn/supplier/mqtt/MqttSupplierTests.java +++ b/functions/supplier/mqtt-supplier/src/test/java/org/springframework/cloud/fn/supplier/mqtt/MqttSupplierTests.java @@ -16,13 +16,9 @@ package org.springframework.cloud.fn.supplier.mqtt; -import java.util.function.Consumer; import java.util.function.Supplier; -import com.github.dockerjava.api.command.CreateContainerCmd; -import com.github.dockerjava.api.model.ExposedPort; -import com.github.dockerjava.api.model.PortBinding; -import com.github.dockerjava.api.model.Ports; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Test; import org.testcontainers.containers.GenericContainer; import reactor.core.publisher.Flux; @@ -55,11 +51,16 @@ import static org.assertj.core.api.Assertions.assertThat; public class MqttSupplierTests { static { - Consumer cmd = e -> e.withPortBindings(new PortBinding(Ports.Binding.bindPort(1883), new ExposedPort(1883))); GenericContainer mosquitto = new GenericContainer("eclipse-mosquitto") - .withExposedPorts(1883) - .withCreateContainerCmdModifier(cmd); + .withExposedPorts(1883); mosquitto.start(); + final Integer mappedPort = mosquitto.getMappedPort(1883); + System.setProperty("mqtt.url", "tcp://localhost:" + mappedPort); + } + + @AfterAll + public static void cleanup() { + System.clearProperty("mqtt.url"); } @Autowired