This is an automated email from the ASF dual-hosted git repository.

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new cda8b6c3ebe Refactor DockerStorageContainer (#36541)
cda8b6c3ebe is described below

commit cda8b6c3ebe2012930221d3c40a6de7ba972ca08
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Fri Sep 12 18:24:14 2025 +0800

    Refactor DockerStorageContainer (#36541)
---
 .../storage/type/docker/DockerStorageContainer.java   | 10 +++++++++-
 .../storage/type/docker/impl/HiveContainer.java       | 19 +++----------------
 .../storage/type/docker/impl/MariaDBContainer.java    | 18 +++---------------
 .../storage/type/docker/impl/MySQLContainer.java      | 13 +++----------
 .../storage/type/docker/impl/OpenGaussContainer.java  | 13 +++----------
 .../storage/type/docker/impl/PostgreSQLContainer.java | 18 +++---------------
 6 files changed, 24 insertions(+), 67 deletions(-)

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 eee2a2e3bbb..4dc4711469d 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
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.DockerITContainer;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.constants.StorageContainerConstants;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.StorageContainer;
+import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration;
 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;
@@ -50,17 +51,24 @@ public abstract class DockerStorageContainer extends 
DockerITContainer implement
     
     private final DatabaseType databaseType;
     
+    private final StorageContainerConfiguration storageContainerConfig;
+    
     private final Map<String, DataSource> actualDataSourceMap = new 
LinkedHashMap<>();
     
     private final Map<String, DataSource> expectedDataSourceMap = new 
LinkedHashMap<>();
     
-    protected DockerStorageContainer(final DatabaseType databaseType, final 
String containerImage) {
+    protected DockerStorageContainer(final DatabaseType databaseType, final 
String containerImage, final StorageContainerConfiguration 
storageContainerConfig) {
         super(databaseType.getType().toLowerCase(), containerImage);
         this.databaseType = databaseType;
+        this.storageContainerConfig = storageContainerConfig;
     }
     
     @Override
     protected void configure() {
+        setCommands(storageContainerConfig.getCommand());
+        addEnvs(storageContainerConfig.getEnvironments());
+        
mapResources(storageContainerConfig.getMountedConfigurationResources());
+        mapResources(storageContainerConfig.getMountedSQLResources());
         withExposedPorts(getExposedPort());
         setWaitStrategy(new JdbcConnectionWaitStrategy(() -> 
DriverManager.getConnection(getURL(), CHECK_READY_USER, CHECK_READY_PASSWORD)));
     }
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 8f88b5b19ca..c521c98da63 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
@@ -23,11 +23,8 @@ 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;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.DockerStorageContainer;
-import 
org.apache.shardingsphere.test.e2e.env.container.wait.JdbcConnectionWaitStrategy;
-import org.apache.shardingsphere.test.e2e.env.runtime.DataSourceEnvironment;
 
 import java.io.IOException;
-import java.sql.DriverManager;
 import java.time.Duration;
 import java.time.temporal.ChronoUnit;
 import java.util.Collection;
@@ -43,34 +40,24 @@ public final class HiveContainer extends 
DockerStorageContainer {
     
     public static final int EXPOSED_PORT = 10000;
     
-    private final StorageContainerConfiguration storageContainerConfig;
-    
     public HiveContainer(final String containerImage, final 
StorageContainerConfiguration storageContainerConfig) {
-        super(TypedSPILoader.getService(DatabaseType.class, "Hive"), 
Strings.isNullOrEmpty(containerImage) ? "apache/hive:4.0.1" : containerImage);
-        this.storageContainerConfig = storageContainerConfig;
+        super(TypedSPILoader.getService(DatabaseType.class, "Hive"), 
Strings.isNullOrEmpty(containerImage) ? "apache/hive:4.0.1" : containerImage, 
storageContainerConfig);
     }
     
     @Override
     protected void configure() {
-        setCommands(storageContainerConfig.getCommand());
-        addEnvs(storageContainerConfig.getEnvironments());
-        
mapResources(storageContainerConfig.getMountedConfigurationResources());
-        mapResources(storageContainerConfig.getMountedSQLResources());
-        withExposedPorts(getExposedPort());
         super.configure();
         withStartupTimeout(Duration.of(180L, ChronoUnit.SECONDS));
-        setWaitStrategy(new JdbcConnectionWaitStrategy(
-                () -> 
DriverManager.getConnection(DataSourceEnvironment.getURL(getDatabaseType(), 
"localhost", getFirstMappedPort()), getUsername(), getPassword())));
     }
     
     @Override
     protected Collection<String> getDatabaseNames() {
-        return 
storageContainerConfig.getActualDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
+        return 
getStorageContainerConfig().getActualDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
     }
     
     @Override
     protected Collection<String> getExpectedDatabaseNames() {
-        return 
storageContainerConfig.getExpectedDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
+        return 
getStorageContainerConfig().getExpectedDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
     }
     
     @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 2bdb75ba31d..fb97ab286f4 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
@@ -35,30 +35,18 @@ public final class MariaDBContainer extends 
DockerStorageContainer {
     
     public static final int EXPOSED_PORT = 3306;
     
-    private final StorageContainerConfiguration storageContainerConfig;
-    
     public MariaDBContainer(final String containerImage, final 
StorageContainerConfiguration storageContainerConfig) {
-        super(TypedSPILoader.getService(DatabaseType.class, "MariaDB"), 
Strings.isNullOrEmpty(containerImage) ? "mariadb:11" : containerImage);
-        this.storageContainerConfig = storageContainerConfig;
-    }
-    
-    @Override
-    protected void configure() {
-        setCommands(storageContainerConfig.getCommand());
-        addEnvs(storageContainerConfig.getEnvironments());
-        
mapResources(storageContainerConfig.getMountedConfigurationResources());
-        mapResources(storageContainerConfig.getMountedSQLResources());
-        super.configure();
+        super(TypedSPILoader.getService(DatabaseType.class, "MariaDB"), 
Strings.isNullOrEmpty(containerImage) ? "mariadb:11" : containerImage, 
storageContainerConfig);
     }
     
     @Override
     protected Collection<String> getDatabaseNames() {
-        return 
storageContainerConfig.getActualDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
+        return 
getStorageContainerConfig().getActualDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
     }
     
     @Override
     protected Collection<String> getExpectedDatabaseNames() {
-        return 
storageContainerConfig.getExpectedDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
+        return 
getStorageContainerConfig().getExpectedDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
     }
     
     @Override
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 5041efd2dbe..4554773ec0d 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
@@ -37,31 +37,24 @@ public final class MySQLContainer extends 
DockerStorageContainer {
     
     public static final int EXPOSED_PORT = 3306;
     
-    private final StorageContainerConfiguration storageContainerConfig;
-    
     public MySQLContainer(final String containerImage, final 
StorageContainerConfiguration storageContainerConfig) {
-        super(TypedSPILoader.getService(DatabaseType.class, "MySQL"), 
Strings.isNullOrEmpty(containerImage) ? "mysql:8.0.40" : containerImage);
-        this.storageContainerConfig = storageContainerConfig;
+        super(TypedSPILoader.getService(DatabaseType.class, "MySQL"), 
Strings.isNullOrEmpty(containerImage) ? "mysql:8.0.40" : containerImage, 
storageContainerConfig);
     }
     
     @Override
     protected void configure() {
-        setCommands(storageContainerConfig.getCommand());
-        addEnvs(storageContainerConfig.getEnvironments());
-        
mapResources(storageContainerConfig.getMountedConfigurationResources());
-        mapResources(storageContainerConfig.getMountedSQLResources());
         super.configure();
         withStartupTimeout(Duration.of(120L, ChronoUnit.SECONDS));
     }
     
     @Override
     protected Collection<String> getDatabaseNames() {
-        return 
storageContainerConfig.getActualDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
+        return 
getStorageContainerConfig().getActualDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
     }
     
     @Override
     protected Collection<String> getExpectedDatabaseNames() {
-        return 
storageContainerConfig.getExpectedDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
+        return 
getStorageContainerConfig().getExpectedDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
     }
     
     @Override
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 3bd41a64d4a..32a1e126fb3 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
@@ -39,19 +39,12 @@ public final class OpenGaussContainer extends 
DockerStorageContainer {
     
     public static final int EXPOSED_PORT = 5432;
     
-    private final StorageContainerConfiguration storageContainerConfig;
-    
     public OpenGaussContainer(final String containerImage, final 
StorageContainerConfiguration storageContainerConfig) {
-        super(TypedSPILoader.getService(DatabaseType.class, "openGauss"), 
Strings.isNullOrEmpty(containerImage) ? "opengauss/opengauss:3.1.0" : 
containerImage);
-        this.storageContainerConfig = storageContainerConfig;
+        super(TypedSPILoader.getService(DatabaseType.class, "openGauss"), 
Strings.isNullOrEmpty(containerImage) ? "opengauss/opengauss:3.1.0" : 
containerImage, storageContainerConfig);
     }
     
     @Override
     protected void configure() {
-        setCommands(storageContainerConfig.getCommand());
-        addEnvs(storageContainerConfig.getEnvironments());
-        
mapResources(storageContainerConfig.getMountedConfigurationResources());
-        mapResources(storageContainerConfig.getMountedSQLResources());
         withPrivilegedMode(true);
         super.configure();
         withStartupTimeout(Duration.of(120L, ChronoUnit.SECONDS));
@@ -59,12 +52,12 @@ public final class OpenGaussContainer extends 
DockerStorageContainer {
     
     @Override
     protected Collection<String> getDatabaseNames() {
-        return 
storageContainerConfig.getActualDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
+        return 
getStorageContainerConfig().getActualDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
     }
     
     @Override
     protected Collection<String> getExpectedDatabaseNames() {
-        return 
storageContainerConfig.getExpectedDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
+        return 
getStorageContainerConfig().getExpectedDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
     }
     
     @Override
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 c04bd1469e7..0f235c864ba 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
@@ -35,30 +35,18 @@ public final class PostgreSQLContainer extends 
DockerStorageContainer {
     
     public static final int EXPOSED_PORT = 5432;
     
-    private final StorageContainerConfiguration storageContainerConfig;
-    
     public PostgreSQLContainer(final String containerImage, final 
StorageContainerConfiguration storageContainerConfig) {
-        super(TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), 
Strings.isNullOrEmpty(containerImage) ? "postgres:12-alpine" : containerImage);
-        this.storageContainerConfig = storageContainerConfig;
-    }
-    
-    @Override
-    protected void configure() {
-        setCommands(storageContainerConfig.getCommand());
-        addEnvs(storageContainerConfig.getEnvironments());
-        
mapResources(storageContainerConfig.getMountedConfigurationResources());
-        mapResources(storageContainerConfig.getMountedSQLResources());
-        super.configure();
+        super(TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), 
Strings.isNullOrEmpty(containerImage) ? "postgres:12-alpine" : containerImage, 
storageContainerConfig);
     }
     
     @Override
     protected Collection<String> getDatabaseNames() {
-        return 
storageContainerConfig.getActualDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
+        return 
getStorageContainerConfig().getActualDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
     }
     
     @Override
     protected Collection<String> getExpectedDatabaseNames() {
-        return 
storageContainerConfig.getExpectedDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
+        return 
getStorageContainerConfig().getExpectedDatabaseTypes().entrySet().stream().filter(entry
 -> entry.getValue() == 
getDatabaseType()).map(Entry::getKey).collect(Collectors.toList());
     }
     
     @Override

Reply via email to