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 67cfc6e6a69 Add DatabaseEnvironmentManager.getDatabaseNames() (#36773)
67cfc6e6a69 is described below
commit 67cfc6e6a69543a765f4b1629c5ab0e8bac3eb82
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Oct 2 18:23:17 2025 +0800
Add DatabaseEnvironmentManager.getDatabaseNames() (#36773)
---
.../storage/type/DockerStorageContainer.java | 19 ++++--------------
.../storage/type/NativeStorageContainer.java | 7 +------
.../database/DatabaseEnvironmentManager.java | 23 ++++++++++++++++------
.../test/e2e/sql/it/sql/dml/BaseDMLE2EIT.java | 4 ++--
4 files changed, 24 insertions(+), 29 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 5775993c81d..ffe3ff381f0 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
@@ -22,7 +22,6 @@ import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import lombok.Getter;
import lombok.SneakyThrows;
-import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.test.e2e.env.container.DockerE2EContainer;
import
org.apache.shardingsphere.test.e2e.env.container.constants.StorageContainerConstants;
import
org.apache.shardingsphere.test.e2e.env.container.storage.StorageContainer;
@@ -42,11 +41,9 @@ import java.sql.DriverManager;
import java.sql.SQLException;
import java.time.Duration;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -154,20 +151,12 @@ public final class DockerStorageContainer extends
DockerE2EContainer implements
@Override
protected void postStart() {
-
actualDataSourceMap.putAll(createAccessDataSources(getDataSourceNames(getDataSourceNameAndTypeMap(Type.ACTUAL))));
-
expectedDataSourceMap.putAll(createAccessDataSources(getDataSourceNames(getDataSourceNameAndTypeMap(Type.EXPECTED))));
+
actualDataSourceMap.putAll(createAccessDataSources(DatabaseEnvironmentManager.getDatabaseNames(scenario,
Type.ACTUAL)));
+
expectedDataSourceMap.putAll(createAccessDataSources(DatabaseEnvironmentManager.getDatabaseNames(scenario,
Type.EXPECTED)));
}
- private Map<String, DatabaseType> getDataSourceNameAndTypeMap(final Type
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() ==
option.getType()).map(Entry::getKey).collect(Collectors.toList());
- }
-
- private Map<String, DataSource> createAccessDataSources(final
Collection<String> dataSourceNames) {
- return
dataSourceNames.stream().distinct().collect(Collectors.toMap(Function.identity(),
this::createAccessDataSource));
+ private Map<String, DataSource> createAccessDataSources(final
Collection<String> databaseNames) {
+ return
databaseNames.stream().distinct().collect(Collectors.toMap(Function.identity(),
this::createAccessDataSource));
}
/**
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/NativeStorageContainer.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/NativeStorageContainer.java
index fb13d6211fc..a657b09ca6c 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/NativeStorageContainer.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/storage/type/NativeStorageContainer.java
@@ -38,8 +38,6 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
-import java.util.stream.Collectors;
/**
* Native storage container.
@@ -82,10 +80,7 @@ public final class NativeStorageContainer implements
StorageContainer {
}
private Map<String, DataSource> createDataSourceMap(final Type type) {
- return null == scenario
- ? Collections.emptyMap()
- :
getDataSourceMap(DatabaseEnvironmentManager.getDatabaseTypes(scenario,
databaseType, type).entrySet().stream()
- .filter(entry -> entry.getValue() ==
databaseType).map(Entry::getKey).collect(Collectors.toList()));
+ return null == scenario ? Collections.emptyMap() :
getDataSourceMap(DatabaseEnvironmentManager.getDatabaseNames(scenario, type));
}
private Map<String, DataSource> getDataSourceMap(final Collection<String>
databaseNames) {
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/type/scenario/database/DatabaseEnvironmentManager.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/type/scenario/database/DatabaseEnvironmentManager.java
index cf49987ae41..fe897f1d854 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/type/scenario/database/DatabaseEnvironmentManager.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/type/scenario/database/DatabaseEnvironmentManager.java
@@ -45,17 +45,28 @@ public final class DatabaseEnvironmentManager {
* Get database types.
*
* @param scenario scenario
- * @param defaultDatabaseType default database type
* @param type type
* @return database types
*/
- public static Map<String, DatabaseType> getDatabaseTypes(final String
scenario, final DatabaseType defaultDatabaseType, final Type type) {
- return createDatabaseTypes(unmarshal(new ScenarioDataPath(scenario,
type).getDatabasesFile()).getDatabases(), defaultDatabaseType);
+ public static Collection<String> getDatabaseNames(final String scenario,
final Type type) {
+ return unmarshal(new ScenarioDataPath(scenario,
type).getDatabasesFile()).getDatabases();
+ }
+
+ /**
+ * Get database name and type map.
+ *
+ * @param scenario scenario
+ * @param defaultDatabaseType default database type
+ * @param type type
+ * @return database name and type map
+ */
+ public static Map<String, DatabaseType> getDatabaseNameAndTypeMap(final
String scenario, final DatabaseType defaultDatabaseType, final Type type) {
+ return getDatabaseNameAndTypeMap(unmarshal(new
ScenarioDataPath(scenario, type).getDatabasesFile()).getDatabases(),
defaultDatabaseType);
}
- private static Map<String, DatabaseType> createDatabaseTypes(final
Collection<String> datasourceNames, final DatabaseType defaultDatabaseType) {
- Map<String, DatabaseType> result = new
LinkedHashMap<>(datasourceNames.size(), 1F);
- for (String each : datasourceNames) {
+ private static Map<String, DatabaseType> getDatabaseNameAndTypeMap(final
Collection<String> databaseNames, final DatabaseType defaultDatabaseType) {
+ Map<String, DatabaseType> result = new
LinkedHashMap<>(databaseNames.size(), 1F);
+ for (String each : databaseNames) {
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);
diff --git
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/sql/it/sql/dml/BaseDMLE2EIT.java
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/sql/it/sql/dml/BaseDMLE2EIT.java
index dde0f09fe7c..0189a1147b7 100644
---
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/sql/it/sql/dml/BaseDMLE2EIT.java
+++
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/sql/it/sql/dml/BaseDMLE2EIT.java
@@ -185,7 +185,7 @@ public abstract class BaseDMLE2EIT implements SQLE2EIT {
}
private void assertDataSet(final SQLE2EITContext context, final
DataSetMetaData expectedDataSetMetaData, final AssertionTestParameter
testParam) throws SQLException {
- Map<String, DatabaseType> databaseTypes =
DatabaseEnvironmentManager.getDatabaseTypes(testParam.getScenario(),
testParam.getDatabaseType(), Type.ACTUAL);
+ Map<String, DatabaseType> databaseTypes =
DatabaseEnvironmentManager.getDatabaseNameAndTypeMap(testParam.getScenario(),
testParam.getDatabaseType(), Type.ACTUAL);
for (String each :
InlineExpressionParserFactory.newInstance(expectedDataSetMetaData.getDataNodes()).splitAndEvaluate())
{
DataNode dataNode = new DataNode(each);
DataSource dataSource =
getEnvironmentEngine().getActualDataSourceMap().get(dataNode.getDataSourceName());
@@ -218,7 +218,7 @@ public abstract class BaseDMLE2EIT implements SQLE2EIT {
}
private void assertDataSet(final DataSetMetaData expectedDataSetMetaData,
final CaseTestParameter testParam, final DataSet dataSet) throws SQLException {
- Map<String, DatabaseType> databaseTypes =
DatabaseEnvironmentManager.getDatabaseTypes(testParam.getScenario(),
testParam.getDatabaseType(), Type.ACTUAL);
+ Map<String, DatabaseType> databaseTypes =
DatabaseEnvironmentManager.getDatabaseNameAndTypeMap(testParam.getScenario(),
testParam.getDatabaseType(), Type.ACTUAL);
for (String each :
InlineExpressionParserFactory.newInstance(expectedDataSetMetaData.getDataNodes()).splitAndEvaluate())
{
DataNode dataNode = new DataNode(each);
DatabaseType databaseType =
databaseTypes.get(dataNode.getDataSourceName());