Skip to content

Commit

Permalink
Use testcontainer origin exposed port rather than generate random port
Browse files Browse the repository at this point in the history
  • Loading branch information
ruanwenjun committed Jun 21, 2024
1 parent 3f3f0cd commit 8aeb1b3
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@

package org.apache.dolphinscheduler.plugin.registry.jdbc;

import org.apache.commons.lang3.RandomUtils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
Expand All @@ -37,8 +35,6 @@
import org.testcontainers.lifecycle.Startables;
import org.testcontainers.utility.DockerImageName;

import com.google.common.collect.Lists;

@ActiveProfiles("mysql")
class MysqlJdbcRegistryTestCase extends JdbcRegistryTestCase {

Expand All @@ -55,11 +51,10 @@ public static void setUpTestingServer() {
.withExposedPorts(3306)
.waitingFor(Wait.forHealthcheck().withStartupTimeout(Duration.ofSeconds(300)));

int exposedPort = RandomUtils.nextInt(10000, 65535);
mysqlContainer.setPortBindings(Lists.newArrayList(exposedPort + ":3306"));
Startables.deepStart(Stream.of(mysqlContainer)).join();

String jdbcUrl = "jdbc:mysql://localhost:" + exposedPort + "/dolphinscheduler?useSSL=false&serverTimezone=UTC";
String jdbcUrl = "jdbc:mysql://localhost:" + mysqlContainer.getMappedPort(3306)
+ "/dolphinscheduler?useSSL=false&serverTimezone=UTC";
System.setProperty("spring.datasource.url", jdbcUrl);

try (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@

package org.apache.dolphinscheduler.plugin.registry.jdbc;

import org.apache.commons.lang3.RandomUtils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
Expand All @@ -37,8 +35,6 @@
import org.testcontainers.lifecycle.Startables;
import org.testcontainers.utility.DockerImageName;

import com.google.common.collect.Lists;

@ActiveProfiles("postgresql")
@SpringBootTest(classes = {JdbcRegistryProperties.class})
@SpringBootApplication(scanBasePackageClasses = JdbcRegistryProperties.class)
Expand All @@ -55,12 +51,10 @@ public static void setUpTestingServer() {
.withDatabaseName("dolphinscheduler")
.withNetwork(Network.newNetwork())
.withExposedPorts(5432);
int exposedPort = RandomUtils.nextInt(10000, 65535);

postgresqlContainer.setPortBindings(Lists.newArrayList(exposedPort + ":5432"));
Startables.deepStart(Stream.of(postgresqlContainer)).join();

String jdbcUrl = "jdbc:postgresql://localhost:" + exposedPort + "/dolphinscheduler";
String jdbcUrl = "jdbc:postgresql://localhost:" + postgresqlContainer.getMappedPort(5432) + "/dolphinscheduler";
System.setProperty("spring.datasource.url", jdbcUrl);
try (
Connection connection = DriverManager.getConnection(jdbcUrl, "root", "root");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@

import org.apache.dolphinscheduler.plugin.registry.RegistryTestCase;

import org.apache.commons.lang3.RandomUtils;

import java.util.stream.Stream;

import lombok.SneakyThrows;
Expand All @@ -35,8 +33,6 @@
import org.testcontainers.lifecycle.Startables;
import org.testcontainers.utility.DockerImageName;

import com.google.common.collect.Lists;

@SpringBootTest(classes = ZookeeperRegistryProperties.class)
@SpringBootApplication(scanBasePackageClasses = ZookeeperRegistryProperties.class)
class ZookeeperRegistryTestCase extends RegistryTestCase<ZookeeperRegistry> {
Expand All @@ -53,10 +49,8 @@ class ZookeeperRegistryTestCase extends RegistryTestCase<ZookeeperRegistry> {
public static void setUpTestingServer() {
zookeeperContainer = new GenericContainer<>(DockerImageName.parse("zookeeper:3.8"))
.withNetwork(NETWORK);
int randomPort = RandomUtils.nextInt(10000, 65535);
zookeeperContainer.setPortBindings(Lists.newArrayList(randomPort + ":2181"));
Startables.deepStart(Stream.of(zookeeperContainer)).join();
System.setProperty("registry.zookeeper.connect-string", "localhost:" + randomPort);
System.setProperty("registry.zookeeper.connect-string", "localhost:" + zookeeperContainer.getMappedPort(2181));
}

@SneakyThrows
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,13 @@
import java.util.HashMap;
import java.util.Map;
import java.util.ServiceLoader;
import java.util.stream.Stream;

import lombok.extern.slf4j.Slf4j;

import org.junit.jupiter.api.extension.AfterAllCallback;
import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.lifecycle.Startables;
import org.testcontainers.utility.DockerImageName;

@Slf4j
Expand All @@ -39,12 +37,6 @@ public class DolphinSchedulerDatabaseContainerExtension implements BeforeAllCall
@Override
public void beforeAll(ExtensionContext context) {
databaseContainer = getDataSourceContainer(context);
log.info("Create {} successfully.", databaseContainer.getDockerImageName());
databaseContainer.start();

log.info("Starting {}...", databaseContainer.getDockerImageName());
Startables.deepStart(Stream.of(databaseContainer)).join();
log.info("{} started", databaseContainer.getDockerImageName());

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,20 @@
import org.apache.dolphinscheduler.tools.datasource.jupiter.DatabaseContainerProvider;
import org.apache.dolphinscheduler.tools.datasource.jupiter.DolphinSchedulerDatabaseContainer;

import java.util.stream.Stream;

import lombok.extern.slf4j.Slf4j;

import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.MySQLContainer;
import org.testcontainers.containers.Network;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.lifecycle.Startables;
import org.testcontainers.utility.DockerImageName;

import com.google.auto.service.AutoService;
import com.google.common.collect.Lists;

@Slf4j
@AutoService(DatabaseContainerProvider.class)
public class MysqlDatabaseContainerProvider implements DatabaseContainerProvider {

Expand All @@ -43,7 +48,18 @@ public GenericContainer<?> getContainer(DolphinSchedulerDatabaseContainer dataSo
.withNetwork(NETWORK)
.withExposedPorts(3306)
.waitingFor(Wait.forHealthcheck());
mysqlContainer.setPortBindings(Lists.newArrayList("3306:3306"));

log.info("Create {} successfully.", mysqlContainer.getDockerImageName());
mysqlContainer.start();

log.info("Starting {}...", mysqlContainer.getDockerImageName());
Startables.deepStart(Stream.of(mysqlContainer)).join();
log.info("{} started", mysqlContainer.getDockerImageName());

String jdbcUrl = "jdbc:mysql://localhost:" + mysqlContainer.getMappedPort(3306)
+ "/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8";
System.setProperty("spring.datasource.url", jdbcUrl);

return mysqlContainer;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,17 @@
import org.apache.dolphinscheduler.tools.datasource.jupiter.DatabaseContainerProvider;
import org.apache.dolphinscheduler.tools.datasource.jupiter.DolphinSchedulerDatabaseContainer;

import java.util.stream.Stream;

import lombok.extern.slf4j.Slf4j;

import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.Network;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.lifecycle.Startables;
import org.testcontainers.utility.DockerImageName;

import com.google.auto.service.AutoService;
import com.google.common.collect.Lists;

@Slf4j
@AutoService(DatabaseContainerProvider.class)
Expand All @@ -47,8 +49,17 @@ public GenericContainer<?> getContainer(DolphinSchedulerDatabaseContainer dataSo
.withDatabaseName("dolphinscheduler")
.withNetwork(NETWORK)
.withExposedPorts(5432);
postgresqlContainer.setPortBindings(Lists.newArrayList("5432:5432"));

log.info("Create {} successfully.", postgresqlContainer.getDockerImageName());
postgresqlContainer.start();

log.info("Starting {}...", postgresqlContainer.getDockerImageName());
Startables.deepStart(Stream.of(postgresqlContainer)).join();
log.info("{} started", postgresqlContainer.getDockerImageName());

String jdbcUrl = "jdbc:mysql://localhost:" + postgresqlContainer.getMappedPort(5432)
+ "/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8";
System.setProperty("spring.datasource.url", jdbcUrl);
return postgresqlContainer;
}

Expand Down

0 comments on commit 8aeb1b3

Please sign in to comment.