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

commit de2a7f1c43d3e6e021fb2e26cb3772fc71780035
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Sep 18 23:42:44 2025 +0800

    Refactor DockerStorageContainer (#36622)
---
 .../storage/type/DockerStorageContainer.java       | 40 ++++++++++++++--------
 1 file changed, 25 insertions(+), 15 deletions(-)

diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/DockerStorageContainer.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/DockerStorageContainer.java
index 5d1f9c26917..ae8fe5c80fe 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/DockerStorageContainer.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/DockerStorageContainer.java
@@ -31,9 +31,9 @@ import 
org.apache.shardingsphere.test.e2e.env.container.storage.mount.MountConfi
 import 
org.apache.shardingsphere.test.e2e.env.container.storage.mount.MountSQLResourceGenerator;
 import 
org.apache.shardingsphere.test.e2e.env.container.storage.option.StorageContainerConfigurationOption;
 import 
org.apache.shardingsphere.test.e2e.env.container.util.DockerImageVersion;
+import 
org.apache.shardingsphere.test.e2e.env.container.util.JdbcConnectCheckingWaitStrategy;
 import org.apache.shardingsphere.test.e2e.env.container.util.SQLScriptUtils;
 import 
org.apache.shardingsphere.test.e2e.env.container.util.StorageContainerUtils;
-import 
org.apache.shardingsphere.test.e2e.env.container.util.JdbcConnectCheckingWaitStrategy;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.datasource.DataSourceEnvironment;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.database.DatabaseEnvironmentManager;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath.Type;
@@ -63,6 +63,8 @@ public final class DockerStorageContainer extends 
DockerITContainer implements S
     
     private final int majorVersion;
     
+    private final DataSourceEnvironment dataSourceEnvironment;
+    
     @Getter
     private final Map<String, DataSource> actualDataSourceMap = new 
LinkedHashMap<>();
     
@@ -74,6 +76,7 @@ public final class DockerStorageContainer extends 
DockerITContainer implements S
         this.option = option;
         this.scenario = scenario;
         majorVersion = new 
DockerImageVersion(getContainerImage(containerImage, option)).getMajorVersion();
+        dataSourceEnvironment = 
DatabaseTypedSPILoader.getService(DataSourceEnvironment.class, 
option.getType());
     }
     
     private static String getContainerImage(final String containerImage, final 
StorageContainerConfigurationOption option) {
@@ -85,20 +88,11 @@ public final class DockerStorageContainer extends 
DockerITContainer implements S
     protected void configure() {
         setCommands();
         addEnvironments();
-        mapResources(new 
MountConfigurationResourceGenerator(option).generate(majorVersion, scenario));
-        if (option.isSupportDockerEntrypoint()) {
-            mapResources(new 
MountSQLResourceGenerator(option).generate(majorVersion, scenario));
-        }
+        mountConfigurations();
+        mountSQLFiles();
         setPrivilegedMode();
         withExposedPorts(getExposedPort());
-        if (option.isSupportDockerEntrypoint()) {
-            setWaitStrategy(new JdbcConnectCheckingWaitStrategy(() -> 
DriverManager.getConnection(
-                    getURL(), StorageContainerConstants.CHECK_READY_USER, 
StorageContainerConstants.CHECK_READY_PASSWORD)));
-        } else {
-            setWaitStrategy(new JdbcConnectCheckingWaitStrategy(() -> 
DriverManager.getConnection(
-                    getURL(), 
option.getDefaultUserWhenUnsupportedDockerEntrypoint().orElse(""), 
option.getDefaultPasswordWhenUnsupportedDockerEntrypoint().orElse(""))));
-        }
-        
withStartupTimeout(Duration.ofSeconds(option.getStartupTimeoutSeconds()));
+        setWaitStrategy();
     }
     
     private void setCommands() {
@@ -112,14 +106,30 @@ public final class DockerStorageContainer extends 
DockerITContainer implements S
         option.getEnvironments().forEach(this::addEnv);
     }
     
+    private void mountConfigurations() {
+        mapResources(new 
MountConfigurationResourceGenerator(option).generate(majorVersion, scenario));
+    }
+    
+    private void mountSQLFiles() {
+        if (option.isSupportDockerEntrypoint()) {
+            mapResources(new 
MountSQLResourceGenerator(option).generate(majorVersion, scenario));
+        }
+    }
+    
     private void setPrivilegedMode() {
         if (option.withPrivilegedMode()) {
             withPrivilegedMode(true);
         }
     }
     
+    private void setWaitStrategy() {
+        String user = option.isSupportDockerEntrypoint() ? 
StorageContainerConstants.CHECK_READY_USER : 
option.getDefaultUserWhenUnsupportedDockerEntrypoint().orElse("");
+        String password = option.isSupportDockerEntrypoint() ? 
StorageContainerConstants.CHECK_READY_PASSWORD : 
option.getDefaultPasswordWhenUnsupportedDockerEntrypoint().orElse("");
+        setWaitStrategy(new JdbcConnectCheckingWaitStrategy(() -> 
DriverManager.getConnection(getURL(), user, password)));
+        
withStartupTimeout(Duration.ofSeconds(option.getStartupTimeoutSeconds()));
+    }
+    
     private String getURL() {
-        DataSourceEnvironment dataSourceEnvironment = 
DatabaseTypedSPILoader.getService(DataSourceEnvironment.class, 
option.getType());
         return option.getDefaultDatabaseName(majorVersion)
                 .map(optional -> dataSourceEnvironment.getURL("localhost", 
getFirstMappedPort(), optional))
                 .orElseGet(() -> dataSourceEnvironment.getURL("localhost", 
getFirstMappedPort()));
@@ -133,7 +143,7 @@ public final class DockerStorageContainer extends 
DockerITContainer implements S
         }
         Thread.sleep(10000L);
         try (
-                Connection connection = 
DriverManager.getConnection(DatabaseTypedSPILoader.getService(DataSourceEnvironment.class,
 option.getType()).getURL("localhost", getFirstMappedPort()),
+                Connection connection = 
DriverManager.getConnection(dataSourceEnvironment.getURL("localhost", 
getFirstMappedPort()),
                         
option.getDefaultUserWhenUnsupportedDockerEntrypoint().orElse(""), 
option.getDefaultPasswordWhenUnsupportedDockerEntrypoint().orElse(""))) {
             for (String each : new 
MountSQLResourceGenerator(option).generate(majorVersion, scenario).keySet()) {
                 SQLScriptUtils.execute(connection, each);

Reply via email to