From 94bef3f1a5c0bfd0f561f64c35db9d0a90e96fac Mon Sep 17 00:00:00 2001 From: Nathaniel Steers Date: Tue, 10 Sep 2024 15:27:22 +0100 Subject: [PATCH] BAU bind testcontainers processes to localhost --- .secrets.baseline | 4 ++-- .../pay/connector/rules/PostgresTestDocker.java | 14 +++++++++++++- .../uk/gov/pay/connector/rules/SqsTestDocker.java | 14 ++++++++++++++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/.secrets.baseline b/.secrets.baseline index 63fc008b04..fa5dd6ad2e 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -754,7 +754,7 @@ "filename": "src/test/java/uk/gov/pay/connector/rules/PostgresTestDocker.java", "hashed_secret": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", "is_verified": false, - "line_number": 18 + "line_number": 24 } ], "src/test/java/uk/gov/pay/connector/util/RandomIdGeneratorTest.java": [ @@ -1086,5 +1086,5 @@ } ] }, - "generated_at": "2024-09-06T12:14:52Z" + "generated_at": "2024-09-10T14:27:15Z" } diff --git a/src/test/java/uk/gov/pay/connector/rules/PostgresTestDocker.java b/src/test/java/uk/gov/pay/connector/rules/PostgresTestDocker.java index b453ad9ef3..717dd6cb34 100644 --- a/src/test/java/uk/gov/pay/connector/rules/PostgresTestDocker.java +++ b/src/test/java/uk/gov/pay/connector/rules/PostgresTestDocker.java @@ -1,13 +1,19 @@ package uk.gov.pay.connector.rules; +import com.github.dockerjava.api.model.ExposedPort; +import com.github.dockerjava.api.model.HostConfig; +import com.github.dockerjava.api.model.PortBinding; +import com.github.dockerjava.api.model.Ports; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testcontainers.containers.PostgreSQLContainer; + import java.sql.Connection; import java.sql.SQLException; import static java.sql.DriverManager.getConnection; +import static org.testcontainers.containers.PostgreSQLContainer.POSTGRESQL_PORT; public class PostgresTestDocker { @@ -25,7 +31,13 @@ public static void getOrCreate() { POSTGRES_CONTAINER = new PostgreSQLContainer<>("postgres:15.2") .withUsername(DB_USERNAME) - .withPassword(DB_PASSWORD); + .withPassword(DB_PASSWORD) + .withCreateContainerCmdModifier(cmd -> cmd.withHostConfig( + new HostConfig().withPortBindings(new PortBinding( + Ports.Binding.bindIp("127.0.0.1"), + new ExposedPort(POSTGRESQL_PORT) + )) + )); POSTGRES_CONTAINER.start(); createDatabase(); diff --git a/src/test/java/uk/gov/pay/connector/rules/SqsTestDocker.java b/src/test/java/uk/gov/pay/connector/rules/SqsTestDocker.java index 4b93f1761f..49452e38be 100644 --- a/src/test/java/uk/gov/pay/connector/rules/SqsTestDocker.java +++ b/src/test/java/uk/gov/pay/connector/rules/SqsTestDocker.java @@ -5,12 +5,20 @@ import com.amazonaws.client.builder.AwsClientBuilder; import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; +import com.github.dockerjava.api.command.CreateContainerCmd; +import com.github.dockerjava.api.model.ExposedPort; +import com.github.dockerjava.api.model.HostConfig; +import com.github.dockerjava.api.model.PortBinding; +import com.github.dockerjava.api.model.Ports; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; import java.util.List; +import java.util.function.Consumer; + +import static org.testcontainers.containers.PostgreSQLContainer.POSTGRESQL_PORT; public class SqsTestDocker { private static final Logger logger = LoggerFactory.getLogger(SqsTestDocker.class); @@ -33,6 +41,12 @@ private static void createContainer() { sqsContainer = new GenericContainer("softwaremill/elasticmq-native:1.4.2") .withExposedPorts(9324) + .withCreateContainerCmdModifier((Consumer) cmd -> cmd.withHostConfig( + new HostConfig().withPortBindings(new PortBinding( + Ports.Binding.bindIp("127.0.0.1"), + new ExposedPort(9324) + )) + )) .waitingFor(Wait.forLogMessage(".*ElasticMQ server.*.*started.*", 1)); sqsContainer.start(); }