Making test-containers to use random port

MQTT tests were using a fixed port, making them random.
This commit is contained in:
Soby Chacko
2020-05-19 17:56:23 -04:00
parent 91a9c862e9
commit 4fb20bd25e
5 changed files with 37 additions and 35 deletions

View File

@@ -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<CreateContainerCmd> 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

View File

@@ -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<CreateContainerCmd> 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

View File

@@ -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;

View File

@@ -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<CreateContainerCmd> 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());

View File

@@ -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<CreateContainerCmd> 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