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() {