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