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

zhaojinchao 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 302bb425090 Refactor E2E test for heterogeneous database (#29640)
302bb425090 is described below

commit 302bb425090a3f120c0b2cf8930ad4ac47fc77d2
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Jan 3 16:51:28 2024 +0800

    Refactor E2E test for heterogeneous database (#29640)
    
    * Refactor E2E test for heterogeneous database
    
    * remove useless code
---
 .../atomic/storage/EmbeddedStorageContainer.java   | 10 +++++--
 .../config/StorageContainerConfiguration.java      | 12 ++++----
 .../impl/h2/H2ContainerConfigurationFactory.java   |  8 ++---
 .../mysql/MySQLContainerConfigurationFactory.java  |  9 +++---
 .../OpenGaussContainerConfigurationFactory.java    |  8 ++---
 .../PostgreSQLContainerConfigurationFactory.java   |  8 ++---
 .../atomic/storage/impl/MySQLContainer.java        |  9 ++++--
 .../atomic/storage/impl/OpenGaussContainer.java    |  9 ++++--
 .../atomic/storage/impl/PostgreSQLContainer.java   |  9 ++++--
 .../database/DatabaseEnvironmentManager.java       | 35 +++++++++++++++++-----
 .../mysql/MySQLContainerConfigurationFactory.java  |  5 ++--
 .../OpenGaussContainerConfigurationFactory.java    |  5 ++--
 .../PostgreSQLContainerConfigurationFactory.java   |  5 ++--
 13 files changed, 87 insertions(+), 45 deletions(-)

diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/EmbeddedStorageContainer.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/EmbeddedStorageContainer.java
index a752702e557..cea74cddf95 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/EmbeddedStorageContainer.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/EmbeddedStorageContainer.java
@@ -19,8 +19,8 @@ package 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage;
 
 import lombok.Getter;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import 
org.apache.shardingsphere.test.e2e.env.container.atomic.util.StorageContainerUtils;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.EmbeddedITContainer;
+import 
org.apache.shardingsphere.test.e2e.env.container.atomic.util.StorageContainerUtils;
 import org.apache.shardingsphere.test.e2e.env.runtime.DataSourceEnvironment;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.database.DatabaseEnvironmentManager;
 
@@ -28,6 +28,8 @@ import javax.sql.DataSource;
 import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.Map.Entry;
+import java.util.stream.Collectors;
 
 /**
  * Embedded storage container.
@@ -51,7 +53,8 @@ public abstract class EmbeddedStorageContainer implements 
EmbeddedITContainer, S
     }
     
     private Map<String, DataSource> createActualDataSourceMap() {
-        Collection<String> databaseNames = 
DatabaseEnvironmentManager.getDatabaseNames(scenario);
+        Collection<String> databaseNames = 
DatabaseEnvironmentManager.getDatabaseTypes(scenario, 
databaseType).entrySet().stream()
+                .filter(entry -> 
entry.getValue().getClass().isAssignableFrom(databaseType.getClass())).map(Entry::getKey).collect(Collectors.toList());
         Map<String, DataSource> result = new 
LinkedHashMap<>(databaseNames.size(), 1F);
         databaseNames.forEach(each -> result.put(each, 
StorageContainerUtils.generateDataSource(DataSourceEnvironment.getURL(databaseType,
 null, 0, scenario + each),
                 "root", "Root@123")));
@@ -59,7 +62,8 @@ public abstract class EmbeddedStorageContainer implements 
EmbeddedITContainer, S
     }
     
     private Map<String, DataSource> createExpectedDataSourceMap() {
-        Collection<String> databaseNames = 
DatabaseEnvironmentManager.getExpectedDatabaseNames(scenario);
+        Collection<String> databaseNames = 
DatabaseEnvironmentManager.getExpectedDatabaseTypes(scenario, 
databaseType).entrySet().stream()
+                .filter(entry -> 
entry.getValue().getClass().isAssignableFrom(databaseType.getClass())).map(Entry::getKey).collect(Collectors.toList());
         Map<String, DataSource> result = new 
LinkedHashMap<>(databaseNames.size(), 1F);
         databaseNames.forEach(each -> result.put(each, 
StorageContainerUtils.generateDataSource(DataSourceEnvironment.getURL(databaseType,
 null, 0, scenario + each),
                 "root", "Root@123")));
diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/StorageContainerConfiguration.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/StorageContainerConfiguration.java
index 47743404cc1..607dc887c03 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/StorageContainerConfiguration.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/StorageContainerConfiguration.java
@@ -19,8 +19,8 @@ package 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 
-import java.util.Collection;
 import java.util.Map;
 
 /**
@@ -38,14 +38,14 @@ public class StorageContainerConfiguration {
     
     private final Map<String, String> mountedResources;
     
-    private final Collection<String> databaseNames;
+    private final Map<String, DatabaseType> databaseTypes;
     
-    private final Collection<String> expectedDatabaseNames;
+    private final Map<String, DatabaseType> expectedDatabaseTypes;
     
     public StorageContainerConfiguration(final String containerCommand, final 
Map<String, String> containerEnvironments, final Map<String, String> 
mountedResources,
-                                         final Collection<String> 
databaseNames, final Collection<String> expectedDatabaseNames) {
-        this.databaseNames = databaseNames;
-        this.expectedDatabaseNames = expectedDatabaseNames;
+                                         final Map<String, DatabaseType> 
databaseTypes, final Map<String, DatabaseType> expectedDatabaseTypes) {
+        this.databaseTypes = databaseTypes;
+        this.expectedDatabaseTypes = expectedDatabaseTypes;
         this.scenario = null;
         this.containerCommand = containerCommand;
         this.containerEnvironments = containerEnvironments;
diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/h2/H2ContainerConfigurationFactory.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/h2/H2ContainerConfigurationFactory.java
index 9f53876b403..275129dfa10 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/h2/H2ContainerConfigurationFactory.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/h2/H2ContainerConfigurationFactory.java
@@ -26,7 +26,6 @@ import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.database.Database
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath.Type;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -45,7 +44,7 @@ public final class H2ContainerConfigurationFactory {
     public static StorageContainerConfiguration newInstance() {
         Map<String, String> mountedResources = new HashMap<>(1, 1F);
         mountedResources.put("/env/mysql/01-initdb.sql", 
"/docker-entrypoint-initdb.d/01-initdb.sql");
-        return new StorageContainerConfiguration("", Collections.emptyMap(), 
mountedResources, new ArrayList<>(), new ArrayList<>());
+        return new StorageContainerConfiguration("", Collections.emptyMap(), 
mountedResources, Collections.emptyMap(), Collections.emptyMap());
     }
     
     /**
@@ -60,7 +59,8 @@ public final class H2ContainerConfigurationFactory {
                 "/docker-entrypoint-initdb.d/01-actual-init.sql");
         mountedResources.put(new 
ScenarioDataPath(scenario).getInitSQLResourcePath(Type.EXPECTED, 
TypedSPILoader.getService(DatabaseType.class, "H2")) + "/01-expected-init.sql",
                 "/docker-entrypoint-initdb.d/01-expected-init.sql");
-        return new StorageContainerConfiguration(scenario, "", 
Collections.emptyMap(), mountedResources, 
DatabaseEnvironmentManager.getDatabaseNames(scenario),
-                DatabaseEnvironmentManager.getExpectedDatabaseNames(scenario));
+        return new StorageContainerConfiguration(scenario, "", 
Collections.emptyMap(), mountedResources,
+                DatabaseEnvironmentManager.getDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "H2")),
+                DatabaseEnvironmentManager.getExpectedDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "H2")));
     }
 }
diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/mysql/MySQLContainerConfigurationFactory.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/mysql/MySQLContainerConfigurationFactory.java
index 275426e939b..4afbfe6b773 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/mysql/MySQLContainerConfigurationFactory.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/mysql/MySQLContainerConfigurationFactory.java
@@ -28,7 +28,7 @@ import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.database.Database
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath.Type;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -45,8 +45,9 @@ public final class MySQLContainerConfigurationFactory {
      * @return created instance
      */
     public static StorageContainerConfiguration newInstance(final String 
scenario) {
-        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(scenario), 
DatabaseEnvironmentManager.getDatabaseNames(scenario),
-                DatabaseEnvironmentManager.getExpectedDatabaseNames(scenario));
+        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(scenario),
+                DatabaseEnvironmentManager.getDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "MySQL")),
+                DatabaseEnvironmentManager.getExpectedDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "MySQL")));
     }
     
     /**
@@ -56,7 +57,7 @@ public final class MySQLContainerConfigurationFactory {
      * @return created instance
      */
     public static StorageContainerConfiguration newInstance(final int 
majorVersion) {
-        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(majorVersion), new 
ArrayList<>(), new ArrayList<>());
+        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(majorVersion), 
Collections.emptyMap(), Collections.emptyMap());
     }
     
     private static String getCommand() {
diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/opengauss/OpenGaussContainerConfigurationFactory.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/opengauss/OpenGaussContainerConfigurationFactory.java
index c7424696683..f7fd268f589 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/opengauss/OpenGaussContainerConfigurationFactory.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/opengauss/OpenGaussContainerConfigurationFactory.java
@@ -28,7 +28,6 @@ import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.database.Database
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath.Type;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -45,7 +44,7 @@ public final class OpenGaussContainerConfigurationFactory {
      * @return created instance
      */
     public static StorageContainerConfiguration newInstance() {
-        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(), new ArrayList<>(), new 
ArrayList<>());
+        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(), Collections.emptyMap(), 
Collections.emptyMap());
     }
     
     /**
@@ -55,8 +54,9 @@ public final class OpenGaussContainerConfigurationFactory {
      * @return created instance
      */
     public static StorageContainerConfiguration newInstance(final String 
scenario) {
-        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(scenario), 
DatabaseEnvironmentManager.getDatabaseNames(scenario),
-                DatabaseEnvironmentManager.getExpectedDatabaseNames(scenario));
+        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(scenario),
+                DatabaseEnvironmentManager.getDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "openGauss")),
+                DatabaseEnvironmentManager.getExpectedDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "openGauss")));
     }
     
     private static String getCommand() {
diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/postgresql/PostgreSQLContainerConfigurationFactory.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/postgresql/PostgreSQLContainerConfigurationFactory.java
index 576ef875066..c0a9282560e 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/postgresql/PostgreSQLContainerConfigurationFactory.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/config/impl/postgresql/PostgreSQLContainerConfigurationFactory.java
@@ -28,7 +28,6 @@ import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.database.Database
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath.Type;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -45,7 +44,7 @@ public final class PostgreSQLContainerConfigurationFactory {
      * @return created instance
      */
     public static StorageContainerConfiguration newInstance() {
-        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(), new ArrayList<>(), new 
ArrayList<>());
+        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(), Collections.emptyMap(), 
Collections.emptyMap());
     }
     
     /**
@@ -55,8 +54,9 @@ public final class PostgreSQLContainerConfigurationFactory {
      * @return created instance
      */
     public static StorageContainerConfiguration newInstance(final String 
scenario) {
-        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(scenario), 
DatabaseEnvironmentManager.getDatabaseNames(scenario),
-                DatabaseEnvironmentManager.getExpectedDatabaseNames(scenario));
+        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(scenario),
+                DatabaseEnvironmentManager.getDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL")),
+                DatabaseEnvironmentManager.getExpectedDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL")));
     }
     
     private static String getCommand() {
diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/MySQLContainer.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/MySQLContainer.java
index 241e1a55c2d..1e6ac600ae8 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/MySQLContainer.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/MySQLContainer.java
@@ -19,12 +19,15 @@ package 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.impl;
 
 import com.google.common.base.Strings;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.mysql.type.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.DockerStorageContainer;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration;
 
 import java.util.Collection;
+import java.util.Map.Entry;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * MySQL container.
@@ -52,12 +55,14 @@ public final class MySQLContainer extends 
DockerStorageContainer {
     
     @Override
     protected Collection<String> getDatabaseNames() {
-        return storageContainerConfig.getDatabaseNames();
+        return storageContainerConfig.getDatabaseTypes().entrySet().stream()
+                .filter(entry -> entry.getValue() instanceof 
MySQLDatabaseType).map(Entry::getKey).collect(Collectors.toList());
     }
     
     @Override
     protected Collection<String> getExpectedDatabaseNames() {
-        return storageContainerConfig.getExpectedDatabaseNames();
+        return 
storageContainerConfig.getExpectedDatabaseTypes().entrySet().stream()
+                .filter(entry -> entry.getValue() instanceof 
MySQLDatabaseType).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/impl/OpenGaussContainer.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/OpenGaussContainer.java
index 198ddbbda92..920af519a5d 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/OpenGaussContainer.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/OpenGaussContainer.java
@@ -19,6 +19,7 @@ package 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.impl;
 
 import com.google.common.base.Strings;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import 
org.apache.shardingsphere.infra.database.opengauss.type.OpenGaussDatabaseType;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.constants.StorageContainerConstants;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.DockerStorageContainer;
@@ -28,7 +29,9 @@ import 
org.apache.shardingsphere.test.e2e.env.runtime.DataSourceEnvironment;
 import java.time.Duration;
 import java.time.temporal.ChronoUnit;
 import java.util.Collection;
+import java.util.Map;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * OpenGauss container.
@@ -60,12 +63,14 @@ public final class OpenGaussContainer extends 
DockerStorageContainer {
     
     @Override
     protected Collection<String> getDatabaseNames() {
-        return storageContainerConfig.getDatabaseNames();
+        return storageContainerConfig.getDatabaseTypes().entrySet().stream()
+                .filter(entry -> entry.getValue() instanceof 
OpenGaussDatabaseType).map(Map.Entry::getKey).collect(Collectors.toList());
     }
     
     @Override
     protected Collection<String> getExpectedDatabaseNames() {
-        return storageContainerConfig.getExpectedDatabaseNames();
+        return 
storageContainerConfig.getExpectedDatabaseTypes().entrySet().stream()
+                .filter(entry -> entry.getValue() instanceof 
OpenGaussDatabaseType).map(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/impl/PostgreSQLContainer.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/PostgreSQLContainer.java
index 86fcc1d2153..67e97673edc 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/PostgreSQLContainer.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/PostgreSQLContainer.java
@@ -19,12 +19,15 @@ package 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.impl;
 
 import com.google.common.base.Strings;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import 
org.apache.shardingsphere.infra.database.postgresql.type.PostgreSQLDatabaseType;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.DockerStorageContainer;
 import 
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.config.StorageContainerConfiguration;
 
 import java.util.Collection;
+import java.util.Map;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * PostgreSQL container.
@@ -52,12 +55,14 @@ public final class PostgreSQLContainer extends 
DockerStorageContainer {
     
     @Override
     protected Collection<String> getDatabaseNames() {
-        return storageContainerConfig.getDatabaseNames();
+        return storageContainerConfig.getDatabaseTypes().entrySet().stream()
+                .filter(entry -> entry.getValue() instanceof 
PostgreSQLDatabaseType).map(Map.Entry::getKey).collect(Collectors.toList());
     }
     
     @Override
     protected Collection<String> getExpectedDatabaseNames() {
-        return storageContainerConfig.getExpectedDatabaseNames();
+        return 
storageContainerConfig.getExpectedDatabaseTypes().entrySet().stream()
+                .filter(entry -> entry.getValue() instanceof 
PostgreSQLDatabaseType).map(Map.Entry::getKey).collect(Collectors.toList());
     }
     
     @Override
diff --git 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/scenario/database/DatabaseEnvironmentManager.java
 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/scenario/database/DatabaseEnvironmentManager.java
index 1413188b042..a9f344ca690 100644
--- 
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/scenario/database/DatabaseEnvironmentManager.java
+++ 
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/scenario/database/DatabaseEnvironmentManager.java
@@ -17,9 +17,12 @@
 
 package org.apache.shardingsphere.test.e2e.env.runtime.scenario.database;
 
+import com.google.common.base.Splitter;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import lombok.SneakyThrows;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath;
 import 
org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath.Type;
 
@@ -28,6 +31,9 @@ import javax.xml.bind.JAXBException;
 import java.io.FileReader;
 import java.io.IOException;
 import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Database environment manager.
@@ -36,23 +42,36 @@ import java.util.Collection;
 public final class DatabaseEnvironmentManager {
     
     /**
-     * Get database names.
+     * Get database types.
      *
      * @param scenario scenario
-     * @return database names
+     * @param defaultDatabaseType default database type
+     * @return database types
      */
-    public static Collection<String> getDatabaseNames(final String scenario) {
-        return unmarshal(new 
ScenarioDataPath(scenario).getDatabasesFile(Type.ACTUAL)).getDatabases();
+    public static Map<String, DatabaseType> getDatabaseTypes(final String 
scenario, final DatabaseType defaultDatabaseType) {
+        Collection<String> datasourceNames = unmarshal(new 
ScenarioDataPath(scenario).getDatabasesFile(Type.ACTUAL)).getDatabases();
+        return crateDatabaseTypes(datasourceNames, defaultDatabaseType);
+    }
+    
+    private static Map<String, DatabaseType> crateDatabaseTypes(final 
Collection<String> datasourceNames, final DatabaseType defaultDatabaseType) {
+        Map<String, DatabaseType> result = new LinkedHashMap<>();
+        for (String each : datasourceNames) {
+            List<String> items = Splitter.on(":").splitToList(each);
+            DatabaseType databaseType = items.size() > 1 ? 
TypedSPILoader.getService(DatabaseType.class, items.get(1)) : 
defaultDatabaseType;
+            result.put(items.get(0), databaseType);
+        }
+        return result;
     }
     
     /**
-     * Get expected database names.
+     * Get expected database types.
      *
      * @param scenario scenario
-     * @return expected database names
+     * @param defaultDatabaseType default database type
+     * @return expected database types
      */
-    public static Collection<String> getExpectedDatabaseNames(final String 
scenario) {
-        return unmarshal(new 
ScenarioDataPath(scenario).getDatabasesFile(Type.EXPECTED)).getDatabases();
+    public static Map<String, DatabaseType> getExpectedDatabaseTypes(final 
String scenario, final DatabaseType defaultDatabaseType) {
+        return crateDatabaseTypes(unmarshal(new 
ScenarioDataPath(scenario).getDatabasesFile(Type.EXPECTED)).getDatabases(), 
defaultDatabaseType);
     }
     
     @SneakyThrows({IOException.class, JAXBException.class})
diff --git 
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/mysql/MySQLContainerConfigurationFactory.java
 
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/mysql/MySQLContainerConfigurationFactory.java
index fe5aa4ce2a9..adfc0f56eed 100644
--- 
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/mysql/MySQLContainerConfigurationFactory.java
+++ 
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/mysql/MySQLContainerConfigurationFactory.java
@@ -43,8 +43,9 @@ public final class MySQLContainerConfigurationFactory {
      * @return created instance
      */
     public static StorageContainerConfiguration newInstance(final String 
scenario) {
-        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(scenario), 
DatabaseEnvironmentManager.getDatabaseNames(scenario),
-                DatabaseEnvironmentManager.getExpectedDatabaseNames(scenario));
+        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(scenario),
+                DatabaseEnvironmentManager.getDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "MySQL")),
+                DatabaseEnvironmentManager.getExpectedDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "MySQL")));
     }
     
     private static String getCommand() {
diff --git 
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/opengauss/OpenGaussContainerConfigurationFactory.java
 
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/opengauss/OpenGaussContainerConfigurationFactory.java
index 46d856ef165..025ca750575 100644
--- 
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/opengauss/OpenGaussContainerConfigurationFactory.java
+++ 
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/opengauss/OpenGaussContainerConfigurationFactory.java
@@ -45,8 +45,9 @@ public final class OpenGaussContainerConfigurationFactory {
      * @return created instance
      */
     public static StorageContainerConfiguration newInstance(final String 
scenario) {
-        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(scenario), 
DatabaseEnvironmentManager.getDatabaseNames(scenario),
-                DatabaseEnvironmentManager.getExpectedDatabaseNames(scenario));
+        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(scenario),
+                DatabaseEnvironmentManager.getDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "openGauss")),
+                DatabaseEnvironmentManager.getExpectedDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "openGauss")));
     }
     
     private static String getCommand() {
diff --git 
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/postgresql/PostgreSQLContainerConfigurationFactory.java
 
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/postgresql/PostgreSQLContainerConfigurationFactory.java
index ee9964f3e44..bd3e922c6b6 100644
--- 
a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/postgresql/PostgreSQLContainerConfigurationFactory.java
+++ 
b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/framework/container/config/postgresql/PostgreSQLContainerConfigurationFactory.java
@@ -44,8 +44,9 @@ public final class PostgreSQLContainerConfigurationFactory {
      * @return created instance
      */
     public static StorageContainerConfiguration newInstance(final String 
scenario) {
-        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(scenario), 
DatabaseEnvironmentManager.getDatabaseNames(scenario),
-                DatabaseEnvironmentManager.getExpectedDatabaseNames(scenario));
+        return new StorageContainerConfiguration(getCommand(), 
getContainerEnvironments(), getMountedResources(scenario),
+                DatabaseEnvironmentManager.getDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL")),
+                DatabaseEnvironmentManager.getExpectedDatabaseTypes(scenario, 
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL")));
     }
     
     private static String getCommand() {

Reply via email to