This is an automated email from the ASF dual-hosted git repository.
chengzhang 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 dbe9a9667d3 support alter database image in e2e. (#33327)
dbe9a9667d3 is described below
commit dbe9a9667d337d44e3d718b4c856c68dac711836
Author: Cong Hu <[email protected]>
AuthorDate: Mon Oct 21 10:29:11 2024 +0800
support alter database image in e2e. (#33327)
---
.../container/atomic/storage/StorageContainerFactory.java | 13 +++++++++++++
.../test/e2e/env/runtime/cluster/ClusterEnvironment.java | 15 +++++++++++++++
.../container/compose/mode/ClusterContainerComposer.java | 4 +---
.../compose/mode/StandaloneContainerComposer.java | 3 +--
test/e2e/sql/src/test/resources/env/it-env.properties | 2 ++
5 files changed, 32 insertions(+), 5 deletions(-)
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 bd4f7f30f93..0182ae9fc20 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
@@ -26,6 +26,7 @@ import
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.impl.Mari
import
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.impl.MySQLContainer;
import
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.impl.OpenGaussContainer;
import
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.impl.PostgreSQLContainer;
+import org.apache.shardingsphere.test.e2e.env.runtime.E2ETestEnvironment;
/**
* Storage container factory.
@@ -33,6 +34,18 @@ import
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.impl.Post
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class StorageContainerFactory {
+ /**
+ * Create new instance of storage container.
+ *
+ * @param databaseType database type
+ * @param storageContainerConfig storage container configuration
+ * @return created instance
+ * @throws RuntimeException runtime exception
+ */
+ public static StorageContainer newInstance(final DatabaseType
databaseType, final StorageContainerConfiguration storageContainerConfig) {
+ return newInstance(databaseType,
E2ETestEnvironment.getInstance().getClusterEnvironment().getDatabaseImages().get(databaseType),
storageContainerConfig);
+ }
+
/**
* Create new instance of storage container.
*
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/cluster/ClusterEnvironment.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/cluster/ClusterEnvironment.java
index a6e43c2602e..bfbab7ad7f4 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/cluster/ClusterEnvironment.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/runtime/cluster/ClusterEnvironment.java
@@ -20,10 +20,14 @@ package
org.apache.shardingsphere.test.e2e.env.runtime.cluster;
import com.google.common.base.Splitter;
import lombok.Getter;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import java.util.Arrays;
import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
import java.util.Properties;
import java.util.stream.Collectors;
@@ -39,10 +43,21 @@ public final class ClusterEnvironment {
private final Collection<DatabaseType> databaseTypes;
+ private final Map<DatabaseType, String> databaseImages;
+
public ClusterEnvironment(final Properties props) {
type = getType(props);
adapters = getAdapters(props);
databaseTypes = getDatabaseTypes(props);
+ databaseImages = getDatabaseImages(props);
+ }
+
+ private Map<DatabaseType, String> getDatabaseImages(final Properties
props) {
+ Map<DatabaseType, String> result = new HashMap<>();
+ for (DatabaseType each :
ShardingSphereServiceLoader.getServiceInstances(DatabaseType.class)) {
+
Optional.ofNullable(props.getProperty(String.format("it.cluster.database.%s.image",
each.getType().toLowerCase()))).ifPresent(value -> result.put(each, value));
+ }
+ return result;
}
private Type getType(final Properties props) {
diff --git
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/compose/mode/ClusterContainerComposer.java
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/compose/mode/ClusterContainerComposer.java
index b9ad5f58eca..e6ba707b588 100644
---
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/compose/mode/ClusterContainerComposer.java
+++
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/compose/mode/ClusterContainerComposer.java
@@ -54,9 +54,7 @@ public final class ClusterContainerComposer implements
ContainerComposer {
containers = new ITContainers(scenario);
// TODO support other types of governance
governanceContainer =
containers.registerContainer(GovernanceContainerFactory.newInstance("ZooKeeper"));
- // TODO add more version of databases
- storageContainer =
containers.registerContainer(StorageContainerFactory.newInstance(databaseType,
"",
- StorageContainerConfigurationFactory.newInstance(databaseType,
scenario)));
+ storageContainer =
containers.registerContainer(StorageContainerFactory.newInstance(databaseType,
StorageContainerConfigurationFactory.newInstance(databaseType, scenario)));
AdaptorContainerConfiguration containerConfig =
ProxyClusterContainerConfigurationFactory.newInstance(scenario, databaseType,
AdapterContainerUtils.getAdapterContainerImage());
AdapterContainer adapterContainer =
AdapterContainerFactory.newInstance(adapterMode, adapterType, databaseType,
scenario, containerConfig, storageContainer);
if (adapterContainer instanceof DockerITContainer) {
diff --git
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/compose/mode/StandaloneContainerComposer.java
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/compose/mode/StandaloneContainerComposer.java
index 2a51b499c28..c9832930635 100644
---
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/compose/mode/StandaloneContainerComposer.java
+++
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/container/compose/mode/StandaloneContainerComposer.java
@@ -46,8 +46,7 @@ public final class StandaloneContainerComposer implements
ContainerComposer {
public StandaloneContainerComposer(final String scenario, final
DatabaseType databaseType, final AdapterMode adapterMode, final AdapterType
adapterType) {
containers = new ITContainers(scenario);
- // TODO add more version of databases
- storageContainer =
containers.registerContainer(StorageContainerFactory.newInstance(databaseType,
"", StorageContainerConfigurationFactory.newInstance(databaseType, scenario)));
+ storageContainer =
containers.registerContainer(StorageContainerFactory.newInstance(databaseType,
StorageContainerConfigurationFactory.newInstance(databaseType, scenario)));
adapterContainer =
containers.registerContainer(AdapterContainerFactory.newInstance(adapterMode,
adapterType, databaseType, scenario,
ProxyStandaloneContainerConfigurationFactory.newInstance(scenario,
databaseType), storageContainer));
if (adapterContainer instanceof DockerITContainer) {
diff --git a/test/e2e/sql/src/test/resources/env/it-env.properties
b/test/e2e/sql/src/test/resources/env/it-env.properties
index eb04eb6efe0..7af8de84cb4 100644
--- a/test/e2e/sql/src/test/resources/env/it-env.properties
+++ b/test/e2e/sql/src/test/resources/env/it-env.properties
@@ -31,3 +31,5 @@ it.cluster.adapters=proxy
# it.cluster.databases=MySQL,PostgreSQL,openGauss
it.cluster.databases=MySQL
+
+#it.cluster.database.mysql.image=mysql:8.2.0