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 e303447d7cd Refactor DockerStorageContainer (#36571)
e303447d7cd is described below

commit e303447d7cd9dd08a66ab1867b7428a9b42a8ee6
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Mon Sep 15 19:02:39 2025 +0800

    Refactor DockerStorageContainer (#36571)
    
    * Refactor DockerStorageContainer
    
    * Refactor DockerStorageContainer
---
 .../agent/engine/env/AgentE2ETestEnvironment.java  |  7 ++--
 .../atomic/storage/StorageContainerFactory.java    |  6 ++--
 .../type/docker/DockerStorageContainer.java        | 40 ++++++++++++----------
 .../storage/type/docker/impl/HiveContainer.java    |  6 ++--
 .../storage/type/embedded/impl/H2Container.java    |  7 ++--
 5 files changed, 32 insertions(+), 34 deletions(-)

diff --git 
a/test/e2e/agent/engine/src/test/java/org/apache/shardingsphere/test/e2e/agent/engine/env/AgentE2ETestEnvironment.java
 
b/test/e2e/agent/engine/src/test/java/org/apache/shardingsphere/test/e2e/agent/engine/env/AgentE2ETestEnvironment.java
index afaa4752463..0a60eb74e8d 100644
--- 
a/test/e2e/agent/engine/src/test/java/org/apache/shardingsphere/test/e2e/agent/engine/env/AgentE2ETestEnvironment.java
+++ 
b/test/e2e/agent/engine/src/test/java/org/apache/shardingsphere/test/e2e/agent/engine/env/AgentE2ETestEnvironment.java
@@ -38,7 +38,6 @@ import 
org.apache.shardingsphere.test.e2e.env.container.atomic.constants.ProxyCo
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.enums.AdapterType;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.governance.GovernanceContainer;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.governance.GovernanceContainerFactory;
-import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.option.StorageContainerConfigurationOptionFactory;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.DockerStorageContainer;
 import org.awaitility.Awaitility;
@@ -116,8 +115,7 @@ public final class AgentE2ETestEnvironment {
         containers = new ITContainers();
         ShardingSphereProxyClusterContainer proxyContainer = new 
ShardingSphereProxyClusterContainer(databaseType, 
getAdaptorContainerConfiguration());
         proxyContainer.withLogConsumer(testConfig.isLogEnabled() ? 
this::collectLogs : null);
-        DockerStorageContainer storageContainer = new DockerStorageContainer(
-                databaseType, imageConfig.getMysqlImage(), new 
StorageContainerConfiguration(null, 
StorageContainerConfigurationOptionFactory.newInstance(databaseType)));
+        DockerStorageContainer storageContainer = new 
DockerStorageContainer(databaseType, imageConfig.getMysqlImage(), 
StorageContainerConfigurationOptionFactory.newInstance(databaseType), null);
         proxyContainer.dependsOn(storageContainer);
         containers.registerContainer(storageContainer);
         GovernanceContainer governanceContainer = 
GovernanceContainerFactory.newInstance("ZooKeeper");
@@ -148,8 +146,7 @@ public final class AgentE2ETestEnvironment {
     
     private void createJDBCEnvironment(final DockerITContainer 
agentPluginContainer) {
         containers = new ITContainers();
-        DockerStorageContainer storageContainer = new DockerStorageContainer(
-                databaseType, imageConfig.getMysqlImage(), new 
StorageContainerConfiguration(null, 
StorageContainerConfigurationOptionFactory.newInstance(databaseType)));
+        DockerStorageContainer storageContainer = new 
DockerStorageContainer(databaseType, imageConfig.getMysqlImage(), 
StorageContainerConfigurationOptionFactory.newInstance(databaseType), null);
         ShardingSphereJdbcAgentContainer jdbcAgentContainer = new 
ShardingSphereJdbcAgentContainer(
                 imageConfig.getJdbcProjectImage(), testConfig.getPluginType(), 
testConfig.isLogEnabled() ? this::collectLogs : null);
         jdbcAgentContainer.dependsOn(storageContainer);
diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/StorageContainerFactory.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/StorageContainerFactory.java
index 6987bfdfcce..25b3db18285 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/StorageContainerFactory.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/StorageContainerFactory.java
@@ -59,11 +59,11 @@ public final class StorageContainerFactory {
             case "PostgreSQL":
             case "openGauss":
             case "MariaDB":
-                return new DockerStorageContainer(databaseType, 
storageContainerImage, storageContainerConfig);
+                return new DockerStorageContainer(databaseType, 
storageContainerImage, storageContainerConfig.getConfigurationOption(), 
storageContainerConfig.getScenario());
             case "Hive":
-                return new HiveContainer(storageContainerImage, 
storageContainerConfig);
+                return new HiveContainer(storageContainerImage, 
storageContainerConfig.getConfigurationOption(), 
storageContainerConfig.getScenario());
             case "H2":
-                return new H2Container(storageContainerConfig);
+                return new H2Container(storageContainerConfig.getScenario());
             default:
                 throw new RuntimeException(String.format("Database `%s` is 
unknown.", databaseType.getType()));
         }
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 a0aea6dd738..92040868545 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,9 +23,9 @@ 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.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.storage.config.option.StorageContainerConfigurationOption;
 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;
@@ -52,7 +52,9 @@ public class DockerStorageContainer extends DockerITContainer 
implements Storage
     
     private final DatabaseType databaseType;
     
-    private final StorageContainerConfiguration storageContainerConfig;
+    private final StorageContainerConfigurationOption option;
+    
+    private final String scenario;
     
     @Getter
     private final int majorVersion;
@@ -63,48 +65,49 @@ public class DockerStorageContainer extends 
DockerITContainer implements Storage
     @Getter
     private final Map<String, DataSource> expectedDataSourceMap = new 
LinkedHashMap<>();
     
-    public DockerStorageContainer(final DatabaseType databaseType, final 
String containerImage, final StorageContainerConfiguration 
storageContainerConfig) {
-        super(databaseType.getType().toLowerCase(), 
getContainerImage(containerImage, storageContainerConfig));
+    public DockerStorageContainer(final DatabaseType databaseType, final 
String containerImage, final StorageContainerConfigurationOption option, final 
String scenario) {
+        super(databaseType.getType().toLowerCase(), 
getContainerImage(containerImage, option));
         this.databaseType = databaseType;
-        this.storageContainerConfig = storageContainerConfig;
-        majorVersion = new 
DockerImageVersion(getContainerImage(containerImage, 
storageContainerConfig)).getMajorVersion();
+        this.option = option;
+        this.scenario = scenario;
+        majorVersion = new 
DockerImageVersion(getContainerImage(containerImage, option)).getMajorVersion();
     }
     
-    private static String getContainerImage(final String containerImage, final 
StorageContainerConfiguration storageContainerConfig) {
-        return Strings.isNullOrEmpty(containerImage) ? 
storageContainerConfig.getConfigurationOption().getDefaultImageName() : 
containerImage;
+    private static String getContainerImage(final String containerImage, final 
StorageContainerConfigurationOption option) {
+        return Strings.isNullOrEmpty(containerImage) ? 
option.getDefaultImageName() : containerImage;
     }
     
     @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(option, 
databaseType).generate(majorVersion, scenario));
+        mapResources(new MountSQLResourceGenerator(option, 
databaseType).generate(majorVersion, scenario));
         setPrivilegedMode();
         withExposedPorts(getExposedPort());
         setWaitStrategy(new JdbcConnectionWaitStrategy(() -> 
DriverManager.getConnection(getURL(), 
StorageContainerConstants.CHECK_READY_USER, 
StorageContainerConstants.CHECK_READY_PASSWORD)));
-        
withStartupTimeout(Duration.ofSeconds(storageContainerConfig.getConfigurationOption().getStartupTimeoutSeconds()));
+        
withStartupTimeout(Duration.ofSeconds(option.getStartupTimeoutSeconds()));
     }
     
     private void setCommands() {
-        String command = 
storageContainerConfig.getConfigurationOption().getCommand();
+        String command = option.getCommand();
         if (!Strings.isNullOrEmpty(command)) {
             setCommand(command);
         }
     }
     
     private void addEnvironments() {
-        
storageContainerConfig.getConfigurationOption().getEnvironments().forEach(this::addEnv);
+        option.getEnvironments().forEach(this::addEnv);
     }
     
     private void setPrivilegedMode() {
-        if 
(storageContainerConfig.getConfigurationOption().withPrivilegedMode()) {
+        if (option.withPrivilegedMode()) {
             withPrivilegedMode(true);
         }
     }
     
     private String getURL() {
-        return 
storageContainerConfig.getConfigurationOption().getDefaultDatabaseName(majorVersion)
+        return option.getDefaultDatabaseName(majorVersion)
                 .map(optional -> DataSourceEnvironment.getURL(databaseType, 
"localhost", getFirstMappedPort(), optional))
                 .orElseGet(() -> DataSourceEnvironment.getURL(databaseType, 
"localhost", getFirstMappedPort()));
     }
@@ -116,7 +119,7 @@ public class DockerStorageContainer extends 
DockerITContainer implements Storage
     }
     
     private Map<String, DatabaseType> getDataSourceNameAndTypeMap(final Type 
type) {
-        return null == storageContainerConfig.getScenario() ? 
Collections.emptyMap() : 
DatabaseEnvironmentManager.getDatabaseTypes(storageContainerConfig.getScenario(),
 databaseType, type);
+        return null == scenario ? Collections.emptyMap() : 
DatabaseEnvironmentManager.getDatabaseTypes(scenario, databaseType, type);
     }
     
     private Collection<String> getDataSourceNames(final Map<String, 
DatabaseType> dataSourceNameAndTypeMap) {
@@ -144,8 +147,7 @@ public class DockerStorageContainer extends 
DockerITContainer implements Storage
      * @return JDBC URL
      */
     public final String getJdbcUrl(final String dataSourceName) {
-        return DataSourceEnvironment.getURL(databaseType, getHost(), 
getMappedPort(),
-                Strings.isNullOrEmpty(dataSourceName) ? 
storageContainerConfig.getConfigurationOption().getDefaultDatabaseName(majorVersion).orElse("")
 : dataSourceName);
+        return DataSourceEnvironment.getURL(databaseType, getHost(), 
getMappedPort(), Strings.isNullOrEmpty(dataSourceName) ? 
option.getDefaultDatabaseName(majorVersion).orElse("") : dataSourceName);
     }
     
     /**
@@ -154,7 +156,7 @@ public class DockerStorageContainer extends 
DockerITContainer implements Storage
      * @return exposed database container port
      */
     public final int getExposedPort() {
-        return storageContainerConfig.getConfigurationOption().getPort();
+        return option.getPort();
     }
     
     /**
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 ef06ad3832d..e1488ae6f6b 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
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.doc
 import lombok.extern.slf4j.Slf4j;
 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.config.option.StorageContainerConfigurationOption;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.DockerStorageContainer;
 
 import java.io.IOException;
@@ -31,8 +31,8 @@ import java.io.IOException;
 @Slf4j
 public final class HiveContainer extends DockerStorageContainer {
     
-    public HiveContainer(final String containerImage, final 
StorageContainerConfiguration storageContainerConfig) {
-        super(TypedSPILoader.getService(DatabaseType.class, "Hive"), 
containerImage, storageContainerConfig);
+    public HiveContainer(final String containerImage, final 
StorageContainerConfigurationOption option, final String scenario) {
+        super(TypedSPILoader.getService(DatabaseType.class, "Hive"), 
containerImage, option, scenario);
     }
     
     @Override
diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/embedded/impl/H2Container.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/embedded/impl/H2Container.java
index 401c9c45694..1eae01bc71d 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/embedded/impl/H2Container.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/embedded/impl/H2Container.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.emb
 import lombok.SneakyThrows;
 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.embedded.EmbeddedStorageContainer;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath.Type;
@@ -41,9 +40,9 @@ public final class H2Container extends 
EmbeddedStorageContainer {
     
     private final ScenarioDataPath scenarioDataPath;
     
-    public H2Container(final StorageContainerConfiguration 
storageContainerConfig) {
-        super(TypedSPILoader.getService(DatabaseType.class, "H2"), 
storageContainerConfig.getScenario());
-        scenarioDataPath = new 
ScenarioDataPath(storageContainerConfig.getScenario());
+    public H2Container(final String scenario) {
+        super(TypedSPILoader.getService(DatabaseType.class, "H2"), scenario);
+        scenarioDataPath = new ScenarioDataPath(scenario);
     }
     
     @Override

Reply via email to