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 3cb4f2e6e37 Merge DockerStorageContainer's option and databaseType 
(#36588)
3cb4f2e6e37 is described below

commit 3cb4f2e6e37f464c3295031baaaf5100423a4d77
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Sep 16 20:36:00 2025 +0800

    Merge DockerStorageContainer's option and databaseType (#36588)
    
    * Merge DockerStorageContainer's option and databaseType
    
    * Merge DockerStorageContainer's option and databaseType
---
 .../agent/engine/env/AgentE2ETestEnvironment.java  |  4 +--
 .../atomic/storage/StorageContainerFactory.java    |  2 +-
 .../mount/MountConfigurationResourceGenerator.java |  7 ++---
 .../storage/mount/MountSQLResourceGenerator.java   | 25 ++++++++----------
 .../type/docker/DockerStorageContainer.java        | 30 ++++++++++------------
 .../storage/type/docker/impl/HiveContainer.java    |  4 +--
 .../type/natived/NativeStorageContainer.java       |  2 +-
 7 files changed, 32 insertions(+), 42 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 f6716c65080..8e279aca471 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
@@ -117,7 +117,7 @@ public final class AgentE2ETestEnvironment {
         ShardingSphereProxyClusterContainer proxyContainer = new 
ShardingSphereProxyClusterContainer(databaseType, 
getAdaptorContainerConfiguration());
         proxyContainer.withLogConsumer(testConfig.isLogEnabled() ? 
this::collectLogs : null);
         DockerStorageContainer storageContainer = new DockerStorageContainer(
-                databaseType, imageConfig.getMysqlImage(), 
DatabaseTypedSPILoader.getService(StorageContainerConfigurationOption.class, 
databaseType), null);
+                imageConfig.getMysqlImage(), 
DatabaseTypedSPILoader.getService(StorageContainerConfigurationOption.class, 
databaseType), null);
         proxyContainer.dependsOn(storageContainer);
         containers.registerContainer(storageContainer);
         GovernanceContainer governanceContainer = 
GovernanceContainerFactory.newInstance("ZooKeeper");
@@ -149,7 +149,7 @@ public final class AgentE2ETestEnvironment {
     private void createJDBCEnvironment(final DockerITContainer 
agentPluginContainer) {
         containers = new ITContainers();
         DockerStorageContainer storageContainer = new DockerStorageContainer(
-                databaseType, imageConfig.getMysqlImage(), 
DatabaseTypedSPILoader.getService(StorageContainerConfigurationOption.class, 
databaseType), null);
+                imageConfig.getMysqlImage(), 
DatabaseTypedSPILoader.getService(StorageContainerConfigurationOption.class, 
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 bb9cddb7da9..4af1ccb2e4e 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
@@ -61,7 +61,7 @@ public final class StorageContainerFactory {
             case "PostgreSQL":
             case "openGauss":
             case "MariaDB":
-                return new DockerStorageContainer(databaseType, 
storageContainerImage, option, scenario);
+                return new DockerStorageContainer(storageContainerImage, 
option, scenario);
             case "Hive":
                 return new HiveContainer(storageContainerImage, option, 
scenario);
             case "H2":
diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/mount/MountConfigurationResourceGenerator.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/mount/MountConfigurationResourceGenerator.java
index e2edc1c39c9..a00c8ed25c1 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/mount/MountConfigurationResourceGenerator.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/mount/MountConfigurationResourceGenerator.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.mount;
 
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.StorageContainerConfigurationOption;
 
 import java.io.File;
@@ -34,8 +33,6 @@ public final class MountConfigurationResourceGenerator {
     
     private final StorageContainerConfigurationOption option;
     
-    private final DatabaseType databaseType;
-    
     /**
      * Generate mount configuration resource map.
      *
@@ -49,8 +46,8 @@ public final class MountConfigurationResourceGenerator {
         for (String each : mountedConfigResources) {
             String fileName = new File(each).getName();
             String configFile = option.getSupportedMajorVersions().isEmpty()
-                    ? String.format("container/%s/cnf/%s", 
databaseType.getType().toLowerCase(), fileName)
-                    : String.format("container/%s/cnf/%d/%s", 
databaseType.getType().toLowerCase(), majorVersion, fileName);
+                    ? String.format("container/%s/cnf/%s", 
option.getDatabaseType().toLowerCase(), fileName)
+                    : String.format("container/%s/cnf/%d/%s", 
option.getDatabaseType().toLowerCase(), majorVersion, fileName);
             result.put(getToBeMountedConfigurationFile(configFile, scenario), 
each);
         }
         return result;
diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/mount/MountSQLResourceGenerator.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/mount/MountSQLResourceGenerator.java
index 425cc0383ff..8f814396660 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/mount/MountSQLResourceGenerator.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/mount/MountSQLResourceGenerator.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.mount;
 
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.StorageContainerConfigurationOption;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath.Type;
@@ -47,8 +46,6 @@ public final class MountSQLResourceGenerator {
     
     private final StorageContainerConfigurationOption option;
     
-    private final DatabaseType databaseType;
-    
     /**
      * Generate mount SQL resource map.
      *
@@ -59,38 +56,38 @@ public final class MountSQLResourceGenerator {
     public Map<String, String> generate(final int majorVersion, final String 
scenario) {
         Collection<String> toBeMountedSQLFiles = new LinkedList<>();
         for (String each : TO_BE_MOUNTED_COMMON_SQL_FILES) {
-            findToBeMountedCommonSQLFile(databaseType, 
each).ifPresent(optional -> toBeMountedSQLFiles.add("/" + optional));
+            findToBeMountedCommonSQLFile(each).ifPresent(optional -> 
toBeMountedSQLFiles.add("/" + optional));
         }
-        String toBeMountedStandardEnvSQLFilePath = 
String.format("env/container/%s/init-sql/%s", 
databaseType.getType().toLowerCase(), TO_BE_MOUNTED_STANDARD_ENV_SQL_FILE);
+        String toBeMountedStandardEnvSQLFilePath = 
String.format("env/container/%s/init-sql/%s", 
option.getDatabaseType().toLowerCase(), TO_BE_MOUNTED_STANDARD_ENV_SQL_FILE);
         if (null != 
Thread.currentThread().getContextClassLoader().getResource(toBeMountedStandardEnvSQLFilePath))
 {
             toBeMountedSQLFiles.add("/" + toBeMountedStandardEnvSQLFilePath);
         }
         for (String each : 
option.getAdditionalEnvMountedSQLResources(majorVersion)) {
-            getToBeMountedAdditionalEnvSQLFile(databaseType, 
each).ifPresent(optional -> toBeMountedSQLFiles.add("/" + optional));
+            getToBeMountedAdditionalEnvSQLFile(each).ifPresent(optional -> 
toBeMountedSQLFiles.add("/" + optional));
         }
-        for (String each : getToBeMountedScenarioSQLFiles(databaseType, 
scenario)) {
+        for (String each : getToBeMountedScenarioSQLFiles(scenario)) {
             toBeMountedSQLFiles.add("/" + each);
         }
         return toBeMountedSQLFiles.stream().collect(Collectors.toMap(each -> 
each, each -> "/docker-entrypoint-initdb.d/" + new File(each).getName()));
     }
     
-    private Optional<String> findToBeMountedCommonSQLFile(final DatabaseType 
databaseType, final String toBeMountedSQLFile) {
-        String toBeMountedFilePath = String.format("container/%s/init-sql/%s", 
databaseType.getType().toLowerCase(), toBeMountedSQLFile);
+    private Optional<String> findToBeMountedCommonSQLFile(final String 
toBeMountedSQLFile) {
+        String toBeMountedFilePath = String.format("container/%s/init-sql/%s", 
option.getDatabaseType().toLowerCase(), toBeMountedSQLFile);
         return null == 
Thread.currentThread().getContextClassLoader().getResource(toBeMountedFilePath) 
? Optional.empty() : Optional.of(toBeMountedFilePath);
     }
     
-    private Optional<String> getToBeMountedAdditionalEnvSQLFile(final 
DatabaseType databaseType, final String sqlFile) {
-        String toBeMountedFilePath = 
String.format("env/container/%s/init-sql/%s", 
databaseType.getType().toLowerCase(), sqlFile);
+    private Optional<String> getToBeMountedAdditionalEnvSQLFile(final String 
sqlFile) {
+        String toBeMountedFilePath = 
String.format("env/container/%s/init-sql/%s", 
option.getDatabaseType().toLowerCase(), sqlFile);
         return null == 
Thread.currentThread().getContextClassLoader().getResource(toBeMountedFilePath) 
? Optional.empty() : Optional.of(toBeMountedFilePath);
     }
     
-    private Collection<String> getToBeMountedScenarioSQLFiles(final 
DatabaseType databaseType, final String scenario) {
+    private Collection<String> getToBeMountedScenarioSQLFiles(final String 
scenario) {
         Collection<String> result = new LinkedList<>();
-        String actualScenarioFile = new 
ScenarioDataPath(scenario).getInitSQLResourcePath(Type.ACTUAL, databaseType) + 
"/" + TO_BE_MOUNTED_ACTUAL_SCENARIO_SQL_FILE;
+        String actualScenarioFile = new 
ScenarioDataPath(scenario).getInitSQLResourcePath(Type.ACTUAL, 
option.getType()) + "/" + TO_BE_MOUNTED_ACTUAL_SCENARIO_SQL_FILE;
         if (null != 
Thread.currentThread().getContextClassLoader().getResource(actualScenarioFile)) 
{
             result.add(actualScenarioFile);
         }
-        String expectedScenarioFile = new 
ScenarioDataPath(scenario).getInitSQLResourcePath(Type.EXPECTED, databaseType) 
+ "/" + TO_BE_MOUNTED_EXPECTED_SCENARIO_SQL_FILE;
+        String expectedScenarioFile = new 
ScenarioDataPath(scenario).getInitSQLResourcePath(Type.EXPECTED, 
option.getType()) + "/" + TO_BE_MOUNTED_EXPECTED_SCENARIO_SQL_FILE;
         if (null != 
Thread.currentThread().getContextClassLoader().getResource(expectedScenarioFile))
 {
             result.add(expectedScenarioFile);
         }
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 06770455434..9293c5b4134 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
@@ -51,8 +51,6 @@ import java.util.stream.Collectors;
  */
 public class DockerStorageContainer extends DockerITContainer implements 
StorageContainer {
     
-    private final DatabaseType databaseType;
-    
     private final StorageContainerConfigurationOption option;
     
     private final String scenario;
@@ -66,16 +64,15 @@ 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 StorageContainerConfigurationOption option, final 
String scenario) {
-        super(databaseType.getType().toLowerCase(), 
getContainerImage(containerImage, option, databaseType));
-        this.databaseType = databaseType;
+    public DockerStorageContainer(final String containerImage, final 
StorageContainerConfigurationOption option, final String scenario) {
+        super(option.getDatabaseType().toLowerCase(), 
getContainerImage(containerImage, option));
         this.option = option;
         this.scenario = scenario;
-        majorVersion = new 
DockerImageVersion(getContainerImage(containerImage, option, 
databaseType)).getMajorVersion();
+        majorVersion = new 
DockerImageVersion(getContainerImage(containerImage, option)).getMajorVersion();
     }
     
-    private static String getContainerImage(final String containerImage, final 
StorageContainerConfigurationOption option, final DatabaseType databaseType) {
-        Preconditions.checkNotNull(option, "Can not support database type 
`%s`", databaseType.getType());
+    private static String getContainerImage(final String containerImage, final 
StorageContainerConfigurationOption option) {
+        Preconditions.checkNotNull(option, "Can not support database type 
`%s`", option.getDatabaseType());
         return Strings.isNullOrEmpty(containerImage) ? 
option.getDefaultImageName() : containerImage;
     }
     
@@ -83,8 +80,8 @@ public class DockerStorageContainer extends DockerITContainer 
implements Storage
     protected final void configure() {
         setCommands();
         addEnvironments();
-        mapResources(new MountConfigurationResourceGenerator(option, 
databaseType).generate(majorVersion, scenario));
-        mapResources(new MountSQLResourceGenerator(option, 
databaseType).generate(majorVersion, scenario));
+        mapResources(new 
MountConfigurationResourceGenerator(option).generate(majorVersion, scenario));
+        mapResources(new 
MountSQLResourceGenerator(option).generate(majorVersion, scenario));
         setPrivilegedMode();
         withExposedPorts(getExposedPort());
         setWaitStrategy(new JdbcConnectionWaitStrategy(() -> 
DriverManager.getConnection(getURL(), 
StorageContainerConstants.CHECK_READY_USER, 
StorageContainerConstants.CHECK_READY_PASSWORD)));
@@ -110,8 +107,8 @@ public class DockerStorageContainer extends 
DockerITContainer implements Storage
     
     private String getURL() {
         return option.getDefaultDatabaseName(majorVersion)
-                .map(optional -> DataSourceEnvironment.getURL(databaseType, 
"localhost", getFirstMappedPort(), optional))
-                .orElseGet(() -> DataSourceEnvironment.getURL(databaseType, 
"localhost", getFirstMappedPort()));
+                .map(optional -> 
DataSourceEnvironment.getURL(option.getType(), "localhost", 
getFirstMappedPort(), optional))
+                .orElseGet(() -> 
DataSourceEnvironment.getURL(option.getType(), "localhost", 
getFirstMappedPort()));
     }
     
     @Override
@@ -121,11 +118,11 @@ public class DockerStorageContainer extends 
DockerITContainer implements Storage
     }
     
     private Map<String, DatabaseType> getDataSourceNameAndTypeMap(final Type 
type) {
-        return null == scenario ? Collections.emptyMap() : 
DatabaseEnvironmentManager.getDatabaseTypes(scenario, databaseType, type);
+        return null == scenario ? Collections.emptyMap() : 
DatabaseEnvironmentManager.getDatabaseTypes(scenario, option.getType(), type);
     }
     
     private Collection<String> getDataSourceNames(final Map<String, 
DatabaseType> dataSourceNameAndTypeMap) {
-        return dataSourceNameAndTypeMap.entrySet().stream().filter(entry -> 
entry.getValue() == 
databaseType).map(Entry::getKey).collect(Collectors.toList());
+        return dataSourceNameAndTypeMap.entrySet().stream().filter(entry -> 
entry.getValue() == 
option.getType()).map(Entry::getKey).collect(Collectors.toList());
     }
     
     private Map<String, DataSource> createAccessDataSources(final 
Collection<String> dataSourceNames) {
@@ -149,7 +146,8 @@ 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) ? 
option.getDefaultDatabaseName(majorVersion).orElse("") : dataSourceName);
+        return DataSourceEnvironment.getURL(
+                option.getType(), getHost(), getMappedPort(), 
Strings.isNullOrEmpty(dataSourceName) ? 
option.getDefaultDatabaseName(majorVersion).orElse("") : dataSourceName);
     }
     
     /**
@@ -172,7 +170,7 @@ public class DockerStorageContainer extends 
DockerITContainer implements Storage
     
     @Override
     public final String getAbbreviation() {
-        return databaseType.getType().toLowerCase();
+        return option.getDatabaseType().toLowerCase();
     }
     
     @Override
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 9593ce7fcae..a742b72dedb 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
@@ -18,8 +18,6 @@
 package 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.impl;
 
 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.option.StorageContainerConfigurationOption;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.DockerStorageContainer;
 
@@ -32,7 +30,7 @@ import java.io.IOException;
 public final class HiveContainer extends DockerStorageContainer {
     
     public HiveContainer(final String containerImage, final 
StorageContainerConfigurationOption option, final String scenario) {
-        super(TypedSPILoader.getService(DatabaseType.class, "Hive"), 
containerImage, option, scenario);
+        super(containerImage, option, scenario);
     }
     
     @Override
diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/natived/NativeStorageContainer.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/natived/NativeStorageContainer.java
index 8d0af4073c3..75cae15a63a 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/natived/NativeStorageContainer.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/natived/NativeStorageContainer.java
@@ -75,7 +75,7 @@ public final class NativeStorageContainer implements 
StorageContainer {
         DataSource dataSource = StorageContainerUtils.generateDataSource(
                 DataSourceEnvironment.getURL(databaseType, 
E2ETestEnvironment.getInstance().getNativeStorageHost(), 
E2ETestEnvironment.getInstance().getNativeStoragePort()),
                 E2ETestEnvironment.getInstance().getNativeStorageUsername(), 
E2ETestEnvironment.getInstance().getNativeStoragePassword());
-        new MountSQLResourceGenerator(option, databaseType).generate(0, 
scenario).keySet().forEach(each -> SQLScriptUtils.execute(dataSource, each));
+        new MountSQLResourceGenerator(option).generate(0, 
scenario).keySet().forEach(each -> SQLScriptUtils.execute(dataSource, each));
     }
     
     private Map<String, DataSource> createDataSourceMap(final Type type) {

Reply via email to