From 92a83b8c34f2b842219f93f90811493fea3db656 Mon Sep 17 00:00:00 2001 From: zhangliang Date: Sun, 14 Sep 2025 18:15:52 +0800 Subject: [PATCH 1/3] Add StorageContainerConfigurationOption.getDefaultImageName() --- .../config/option/StorageContainerConfigurationOption.java | 7 +++++++ .../dialect/H2StorageContainerConfigurationOption.java | 5 +++++ .../dialect/HiveStorageContainerConfigurationOption.java | 5 +++++ .../MariaDBStorageContainerConfigurationOption.java | 5 +++++ .../dialect/MySQLStorageContainerConfigurationOption.java | 5 +++++ .../OpenGaussStorageContainerConfigurationOption.java | 5 +++++ .../PostgreSQLStorageContainerConfigurationOption.java | 5 +++++ .../atomic/storage/type/docker/DockerStorageContainer.java | 2 +- .../atomic/storage/type/docker/impl/HiveContainer.java | 3 +-- .../atomic/storage/type/docker/impl/MariaDBContainer.java | 3 +-- .../atomic/storage/type/docker/impl/MySQLContainer.java | 3 +-- .../storage/type/docker/impl/OpenGaussContainer.java | 3 +-- .../storage/type/docker/impl/PostgreSQLContainer.java | 3 +-- 13 files changed, 43 insertions(+), 11 deletions(-) diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/StorageContainerConfigurationOption.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/StorageContainerConfigurationOption.java index 0d1e66781d0f8..7fdfb29509b36 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/StorageContainerConfigurationOption.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/StorageContainerConfigurationOption.java @@ -34,6 +34,13 @@ public interface StorageContainerConfigurationOption { */ int getPort(); + /** + * Get default container image name. + * + * @return default container image name + */ + String getDefaultImageName(); + /** * Get container command. * diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/H2StorageContainerConfigurationOption.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/H2StorageContainerConfigurationOption.java index 52ced82d3cfcb..ab947e45b47e7 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/H2StorageContainerConfigurationOption.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/H2StorageContainerConfigurationOption.java @@ -35,6 +35,11 @@ public int getPort() { return 0; } + @Override + public String getDefaultImageName() { + return ""; + } + @Override public String getCommand() { return ""; diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/HiveStorageContainerConfigurationOption.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/HiveStorageContainerConfigurationOption.java index 31c226b870481..a5579ecaf5c86 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/HiveStorageContainerConfigurationOption.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/HiveStorageContainerConfigurationOption.java @@ -36,6 +36,11 @@ public int getPort() { return 10000; } + @Override + public String getDefaultImageName() { + return "apache/hive:4.0.1"; + } + @Override public String getCommand() { return "bash -c 'start-hive.sh && tail -f /dev/null'"; diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/MariaDBStorageContainerConfigurationOption.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/MariaDBStorageContainerConfigurationOption.java index b44efdd195a6e..5cc837f64053c 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/MariaDBStorageContainerConfigurationOption.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/MariaDBStorageContainerConfigurationOption.java @@ -37,6 +37,11 @@ public int getPort() { return 3306; } + @Override + public String getDefaultImageName() { + return "mariadb:11"; + } + @Override public String getCommand() { return "--server-id=" + ContainerUtils.generateMySQLServerId(); diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/MySQLStorageContainerConfigurationOption.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/MySQLStorageContainerConfigurationOption.java index a67a7e9eba097..0c5927d374d47 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/MySQLStorageContainerConfigurationOption.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/MySQLStorageContainerConfigurationOption.java @@ -39,6 +39,11 @@ public int getPort() { return 3306; } + @Override + public String getDefaultImageName() { + return "mysql:8.0.40"; + } + @Override public String getCommand() { return "--server-id=" + ContainerUtils.generateMySQLServerId(); diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/OpenGaussStorageContainerConfigurationOption.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/OpenGaussStorageContainerConfigurationOption.java index 3a02da337e014..fbdf82ae80281 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/OpenGaussStorageContainerConfigurationOption.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/OpenGaussStorageContainerConfigurationOption.java @@ -37,6 +37,11 @@ public int getPort() { return 5432; } + @Override + public String getDefaultImageName() { + return "opengauss/opengauss:3.1.0"; + } + @Override public String getCommand() { return ""; diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/PostgreSQLStorageContainerConfigurationOption.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/PostgreSQLStorageContainerConfigurationOption.java index 662e2498e0903..476a08c55e61a 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/PostgreSQLStorageContainerConfigurationOption.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/dialect/PostgreSQLStorageContainerConfigurationOption.java @@ -37,6 +37,11 @@ public int getPort() { return 5432; } + @Override + public String getDefaultImageName() { + return "postgres:12-alpine"; + } + @Override public String getCommand() { return "-c config_file=/etc/postgresql/postgresql.conf"; diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/DockerStorageContainer.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/DockerStorageContainer.java index 3d15648166a3a..c5a1bf20cb642 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/DockerStorageContainer.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/DockerStorageContainer.java @@ -61,7 +61,7 @@ public abstract class DockerStorageContainer extends DockerITContainer implement private final Map expectedDataSourceMap = new LinkedHashMap<>(); protected DockerStorageContainer(final DatabaseType databaseType, final String containerImage, final StorageContainerConfiguration storageContainerConfig) { - super(databaseType.getType().toLowerCase(), containerImage); + super(databaseType.getType().toLowerCase(), Strings.isNullOrEmpty(containerImage) ? storageContainerConfig.getConfigurationOption().getDefaultImageName() : containerImage); this.databaseType = databaseType; this.storageContainerConfig = storageContainerConfig; majorVersion = new DockerImageVersion(containerImage).getMajorVersion(); diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/HiveContainer.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/HiveContainer.java index 7fa57fcdcb543..ef06ad3832d4a 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/HiveContainer.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/HiveContainer.java @@ -17,7 +17,6 @@ package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.impl; -import com.google.common.base.Strings; import lombok.extern.slf4j.Slf4j; import org.apache.shardingsphere.database.connector.core.type.DatabaseType; import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; @@ -33,7 +32,7 @@ public final class HiveContainer extends DockerStorageContainer { public HiveContainer(final String containerImage, final StorageContainerConfiguration storageContainerConfig) { - super(TypedSPILoader.getService(DatabaseType.class, "Hive"), Strings.isNullOrEmpty(containerImage) ? "apache/hive:4.0.1" : containerImage, storageContainerConfig); + super(TypedSPILoader.getService(DatabaseType.class, "Hive"), containerImage, storageContainerConfig); } @Override diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/MariaDBContainer.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/MariaDBContainer.java index 96ced9aa006fd..8ccecc17f104d 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/MariaDBContainer.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/MariaDBContainer.java @@ -17,7 +17,6 @@ package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.impl; -import com.google.common.base.Strings; import org.apache.shardingsphere.database.connector.core.type.DatabaseType; import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration; @@ -29,6 +28,6 @@ public final class MariaDBContainer extends DockerStorageContainer { public MariaDBContainer(final String containerImage, final StorageContainerConfiguration storageContainerConfig) { - super(TypedSPILoader.getService(DatabaseType.class, "MariaDB"), Strings.isNullOrEmpty(containerImage) ? "mariadb:11" : containerImage, storageContainerConfig); + super(TypedSPILoader.getService(DatabaseType.class, "MariaDB"), containerImage, storageContainerConfig); } } diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/MySQLContainer.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/MySQLContainer.java index eb09eb15e4ac1..cc34cfab3ec55 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/MySQLContainer.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/MySQLContainer.java @@ -17,7 +17,6 @@ package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.impl; -import com.google.common.base.Strings; import org.apache.shardingsphere.database.connector.core.type.DatabaseType; import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration; @@ -29,6 +28,6 @@ public final class MySQLContainer extends DockerStorageContainer { public MySQLContainer(final String containerImage, final StorageContainerConfiguration storageContainerConfig) { - super(TypedSPILoader.getService(DatabaseType.class, "MySQL"), Strings.isNullOrEmpty(containerImage) ? "mysql:8.0.40" : containerImage, storageContainerConfig); + super(TypedSPILoader.getService(DatabaseType.class, "MySQL"), containerImage, storageContainerConfig); } } diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/OpenGaussContainer.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/OpenGaussContainer.java index 622769f26cfd2..a18f0e7beb496 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/OpenGaussContainer.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/OpenGaussContainer.java @@ -17,7 +17,6 @@ package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.impl; -import com.google.common.base.Strings; import org.apache.shardingsphere.database.connector.core.type.DatabaseType; import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration; @@ -29,6 +28,6 @@ public final class OpenGaussContainer extends DockerStorageContainer { public OpenGaussContainer(final String containerImage, final StorageContainerConfiguration storageContainerConfig) { - super(TypedSPILoader.getService(DatabaseType.class, "openGauss"), Strings.isNullOrEmpty(containerImage) ? "opengauss/opengauss:3.1.0" : containerImage, storageContainerConfig); + super(TypedSPILoader.getService(DatabaseType.class, "openGauss"), containerImage, storageContainerConfig); } } diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/PostgreSQLContainer.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/PostgreSQLContainer.java index af584481a080f..692ff1c8c2c7a 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/PostgreSQLContainer.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/impl/PostgreSQLContainer.java @@ -17,7 +17,6 @@ package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.impl; -import com.google.common.base.Strings; import org.apache.shardingsphere.database.connector.core.type.DatabaseType; import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration; @@ -29,6 +28,6 @@ public final class PostgreSQLContainer extends DockerStorageContainer { public PostgreSQLContainer(final String containerImage, final StorageContainerConfiguration storageContainerConfig) { - super(TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), Strings.isNullOrEmpty(containerImage) ? "postgres:12-alpine" : containerImage, storageContainerConfig); + super(TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), containerImage, storageContainerConfig); } } From 4c2c8a7875d6d8afffb5c36f48e09bc1166b2029 Mon Sep 17 00:00:00 2001 From: zhangliang Date: Sun, 14 Sep 2025 18:17:44 +0800 Subject: [PATCH 2/3] Add StorageContainerConfigurationOption.getDefaultImageName() --- .../config/option/StorageContainerConfigurationOption.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/StorageContainerConfigurationOption.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/StorageContainerConfigurationOption.java index 7fdfb29509b36..a37d44ab311e9 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/StorageContainerConfigurationOption.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/option/StorageContainerConfigurationOption.java @@ -36,7 +36,7 @@ public interface StorageContainerConfigurationOption { /** * Get default container image name. - * + * * @return default container image name */ String getDefaultImageName(); From 74aed724daaed9c5e430e9f9db27744d553a82fe Mon Sep 17 00:00:00 2001 From: zhangliang Date: Sun, 14 Sep 2025 18:41:27 +0800 Subject: [PATCH 3/3] Add StorageContainerConfigurationOption.getDefaultImageName() --- .../e2e/env/container/atomic/DockerITContainer.java | 4 ++++ .../storage/type/docker/DockerStorageContainer.java | 12 ++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/DockerITContainer.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/DockerITContainer.java index 41a48a7b4fe61..a09bbd90d818a 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/DockerITContainer.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/DockerITContainer.java @@ -20,6 +20,7 @@ import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; +import org.apache.shardingsphere.test.e2e.env.container.atomic.util.DockerImageVersion; import org.testcontainers.containers.BindMode; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.DockerHealthcheckWaitStrategy; @@ -42,9 +43,12 @@ public abstract class DockerITContainer extends GenericContainer resources) { diff --git a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/DockerStorageContainer.java b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/DockerStorageContainer.java index c5a1bf20cb642..35679c2b6a933 100644 --- a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/DockerStorageContainer.java +++ b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/docker/DockerStorageContainer.java @@ -26,7 +26,6 @@ import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration; import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.mount.MountConfigurationResourceGenerator; import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.mount.MountSQLResourceGenerator; -import org.apache.shardingsphere.test.e2e.env.container.atomic.util.DockerImageVersion; import org.apache.shardingsphere.test.e2e.env.container.atomic.util.StorageContainerUtils; import org.apache.shardingsphere.test.e2e.env.container.wait.JdbcConnectionWaitStrategy; import org.apache.shardingsphere.test.e2e.env.runtime.DataSourceEnvironment; @@ -52,8 +51,6 @@ public abstract class DockerStorageContainer extends DockerITContainer implement private final StorageContainerConfiguration storageContainerConfig; - private final int majorVersion; - @Getter private final Map actualDataSourceMap = new LinkedHashMap<>(); @@ -64,15 +61,14 @@ protected DockerStorageContainer(final DatabaseType databaseType, final String c super(databaseType.getType().toLowerCase(), Strings.isNullOrEmpty(containerImage) ? storageContainerConfig.getConfigurationOption().getDefaultImageName() : containerImage); this.databaseType = databaseType; this.storageContainerConfig = storageContainerConfig; - majorVersion = new DockerImageVersion(containerImage).getMajorVersion(); } @Override protected final void configure() { setCommands(); addEnvironments(); - mapResources(new MountConfigurationResourceGenerator(storageContainerConfig.getConfigurationOption(), databaseType).generate(majorVersion, storageContainerConfig.getScenario())); - mapResources(new MountSQLResourceGenerator(storageContainerConfig.getConfigurationOption(), databaseType).generate(majorVersion, storageContainerConfig.getScenario())); + mapResources(new MountConfigurationResourceGenerator(storageContainerConfig.getConfigurationOption(), databaseType).generate(getMajorVersion(), storageContainerConfig.getScenario())); + mapResources(new MountSQLResourceGenerator(storageContainerConfig.getConfigurationOption(), databaseType).generate(getMajorVersion(), storageContainerConfig.getScenario())); setPrivilegedMode(); withExposedPorts(getExposedPort()); withStartupTimeout(Duration.of(storageContainerConfig.getConfigurationOption().getStartupTimeoutSeconds(), ChronoUnit.SECONDS)); @@ -97,7 +93,7 @@ private void setPrivilegedMode() { } private String getURL() { - return storageContainerConfig.getConfigurationOption().getDefaultDatabaseName(majorVersion) + return storageContainerConfig.getConfigurationOption().getDefaultDatabaseName(getMajorVersion()) .map(optional -> DataSourceEnvironment.getURL(databaseType, "localhost", getFirstMappedPort(), optional)) .orElseGet(() -> DataSourceEnvironment.getURL(databaseType, "localhost", getFirstMappedPort())); } @@ -134,7 +130,7 @@ public final DataSource createAccessDataSource(final String dataSourceName) { */ public final String getJdbcUrl(final String dataSourceName) { return DataSourceEnvironment.getURL(databaseType, getHost(), getMappedPort(), - Strings.isNullOrEmpty(dataSourceName) ? storageContainerConfig.getConfigurationOption().getDefaultDatabaseName(majorVersion).orElse("") : dataSourceName); + Strings.isNullOrEmpty(dataSourceName) ? storageContainerConfig.getConfigurationOption().getDefaultDatabaseName(getMajorVersion()).orElse("") : dataSourceName); } /**