You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/04/21 02:28:44 UTC
[shardingsphere] branch master updated: Init scaling integration test (#16954)
This is an automated email from the ASF dual-hosted git repository.
zhonghongsheng 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 961f25b5869 Init scaling integration test (#16954)
961f25b5869 is described below
commit 961f25b5869b5d1fe3221d4e4969807e8ee16c23
Author: azexcy <10...@users.noreply.github.com>
AuthorDate: Thu Apr 21 10:28:38 2022 +0800
Init scaling integration test (#16954)
* Init Scaling IT test environment
* Extraction method to generate network alias
* Use zk cluster
* Change the base package name
---
.../framework/container/atomic/ITContainers.java | 6 +-
.../test/integration/util/NetworkAliasUtil.java} | 42 +++-----
.../pom.xml | 11 ++
.../test/mysql => data/pipline}/ScalingIT.java | 12 +--
.../integration/data/pipline/cases/BaseITCase.java | 78 ++++++++++++++
.../pipline/cases/mysql/MySQLAutoRuleScaling.java | 64 ++++++++++++
.../data/pipline/container/ComposedContainer.java | 91 ++++++++++++++++
.../pipline/container/DockerDatabaseContainer.java | 62 +++++++++++
.../container/ShardingSphereProxyContainer.java | 114 +++++++++++++++++++++
.../pipline/container/database/MySQLContainer.java | 42 ++++++++
.../container/database/PostgreSQLContainer.java} | 33 +++---
.../pipline}/env/ITEnvironmentContext.java | 10 +-
.../pipline}/env/IntegrationTestEnvironment.java | 12 +--
.../mysql => data/pipline}/env/cases/DataSet.java | 2 +-
.../mysql => data/pipline}/env/cases/Type.java | 2 +-
.../pipline}/env/config/SourceConfiguration.java | 4 +-
.../pipline}/env/config/TargetConfiguration.java | 4 +-
.../pipline/factory/DatabaseContainerFactory.java | 49 +++++++++
.../pipline}/fixture/DataImporter.java | 8 +-
.../mysql => data/pipline}/util/ExecuteUtil.java | 6 +-
.../test/mysql => data/pipline}/util/Executor.java | 2 +-
.../mysql => data/pipline}/util/ScalingUtil.java | 2 +-
.../common/proxy/conf/logback.xml} | 31 +++---
.../proxy/conf/server.yaml} | 34 ++++--
.../{engine-env.properties => it-env.properties} | 22 ++--
.../resources/env/mysql/{init.sql => initdb.sql} | 9 +-
.../test/resources/env/mysql/rule_inti.properties | 34 ++++++
.../env/{mysql/init.sql => postgresql/initdb.sql} | 6 --
.../{cases/mysql/types.xml => logback-test.xml} | 31 +++---
.../compose/mode/ClusterComposedContainer.java | 14 +--
.../compose/mode/MemoryComposedContainer.java | 12 ++-
31 files changed, 708 insertions(+), 141 deletions(-)
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/ITContainers.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/ITContainers.java
index 11eb5c2aa28..a770b9c7e96 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/ITContainers.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/ITContainers.java
@@ -48,18 +48,16 @@ public final class ITContainers implements Startable {
* Register container.
*
* @param container container to be registered
- * @param containerType container type
- * @param attachScenario whether attach scenario to container network alias
+ * @param networkAlias network alias
* @param <T> type of ShardingSphere container
* @return registered container
*/
- public <T extends ITContainer> T registerContainer(final T container, final String containerType, final boolean attachScenario) {
+ public <T extends ITContainer> T registerContainer(final T container, final String networkAlias) {
if (container instanceof EmbeddedITContainer) {
embeddedContainers.add((EmbeddedITContainer) container);
} else {
DockerITContainer dockerContainer = (DockerITContainer) container;
dockerContainer.setNetwork(network);
- String networkAlias = attachScenario ? String.join(".", containerType.toLowerCase(), scenario, "host") : String.join(".", containerType.toLowerCase(), "host");
dockerContainer.setNetworkAliases(Collections.singletonList(networkAlias));
String loggerName = String.join(":", scenario, dockerContainer.getName());
dockerContainer.withLogConsumer(new Slf4jLogConsumer(LoggerFactory.getLogger(loggerName), true));
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/ExecuteUtil.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/util/NetworkAliasUtil.java
similarity index 54%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/ExecuteUtil.java
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/util/NetworkAliasUtil.java
index a223f66941e..49d8d0727d7 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/ExecuteUtil.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/util/NetworkAliasUtil.java
@@ -15,36 +15,28 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql.util;
+package org.apache.shardingsphere.test.integration.util;
-import lombok.RequiredArgsConstructor;
-
-/**
- * Execute util.
- */
-@RequiredArgsConstructor
-public final class ExecuteUtil {
-
- private final Executor executor;
-
- private final int retryCount;
+public final class NetworkAliasUtil {
- private final long waitMs;
+ /**
+ * Get network alias with scenario.
+ *
+ * @param containerType container type, such as "zk", "db"
+ * @param scenario scenario
+ * @return network alias
+ */
+ public static String getNetworkAliasWithScenario(final String containerType, final String scenario) {
+ return String.join(".", containerType.toLowerCase(), scenario, "host");
+ }
/**
- * Execute.
+ * Get network alias.
*
- * @return execute result
+ * @param containerType container type
+ * @return network alias
*/
- public boolean execute() {
- int count = 0;
- while (!executor.execute() && retryCount > count) {
- try {
- Thread.sleep(waitMs);
- } catch (final InterruptedException ignored) {
- }
- count++;
- }
- return retryCount > count;
+ public static String getNetworkAlias(final String containerType) {
+ return String.join(".", containerType.toLowerCase(), "host");
}
}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/pom.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/pom.xml
index a0772ed9ee7..078a0e2b5ca 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/pom.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/pom.xml
@@ -41,6 +41,12 @@
<artifactId>shardingsphere-jdbc-core</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-integration-test-env</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ </dependency>
<dependency>
<groupId>org.apache.commons</groupId>
@@ -51,6 +57,11 @@
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.testcontainers</groupId>
+ <artifactId>testcontainers</artifactId>
+ </dependency>
</dependencies>
<build>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/ScalingIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/ScalingIT.java
similarity index 83%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/ScalingIT.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/ScalingIT.java
index ae378f40e8f..eca5f7927ac 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/ScalingIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/ScalingIT.java
@@ -15,14 +15,14 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql;
+package org.apache.shardingsphere.integration.data.pipline;
import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.integration.scaling.test.mysql.env.ITEnvironmentContext;
-import org.apache.shardingsphere.integration.scaling.test.mysql.env.IntegrationTestEnvironment;
-import org.apache.shardingsphere.integration.scaling.test.mysql.fixture.DataImporter;
-import org.apache.shardingsphere.integration.scaling.test.mysql.util.ExecuteUtil;
-import org.apache.shardingsphere.integration.scaling.test.mysql.util.ScalingUtil;
+import org.apache.shardingsphere.integration.data.pipline.env.ITEnvironmentContext;
+import org.apache.shardingsphere.integration.data.pipline.env.IntegrationTestEnvironment;
+import org.apache.shardingsphere.integration.data.pipline.fixture.DataImporter;
+import org.apache.shardingsphere.integration.data.pipline.util.ExecuteUtil;
+import org.apache.shardingsphere.integration.data.pipline.util.ScalingUtil;
import org.junit.Ignore;
import org.junit.Test;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/cases/BaseITCase.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/cases/BaseITCase.java
new file mode 100644
index 00000000000..3cabf98b7d4
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/cases/BaseITCase.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.integration.data.pipline.cases;
+
+import lombok.AccessLevel;
+import lombok.Getter;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.integration.data.pipline.container.ComposedContainer;
+import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
+import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositoryConfiguration;
+import org.apache.shardingsphere.mode.repository.cluster.zookeeper.CuratorZookeeperRepository;
+import org.apache.shardingsphere.test.integration.framework.container.atomic.governance.GovernanceContainer;
+import org.junit.Before;
+
+import javax.sql.DataSource;
+import java.util.List;
+import java.util.Properties;
+
+@Getter(AccessLevel.PROTECTED)
+public abstract class BaseITCase {
+
+ private DataSource targetDataSource;
+
+ @Getter(AccessLevel.NONE)
+ private final ComposedContainer composedContainer;
+
+ private String databaseNetworkAlias;
+
+ private ClusterPersistRepository clusterPersistRepository;
+
+ public BaseITCase(final DatabaseType databaseType) {
+ composedContainer = new ComposedContainer(databaseType);
+ }
+
+ @Before
+ public void setUp() {
+ composedContainer.start();
+ targetDataSource = composedContainer.getTargetDataSource();
+ GovernanceContainer governanceContainer = composedContainer.getGovernanceContainer();
+ databaseNetworkAlias = composedContainer.getDatabaseNetworkAlias();
+ clusterPersistRepository = new CuratorZookeeperRepository();
+ clusterPersistRepository.init(new ClusterPersistRepositoryConfiguration("ZooKeeper", "it_db", governanceContainer.getServerLists(), new Properties()));
+ System.out.println(clusterPersistRepository.get("/"));
+ }
+
+ /**
+ * Query actual source database name.
+ *
+ * @return actual source database name list
+ */
+ public List<String> listSourceDatabaseName() {
+ return composedContainer.listSourceDatabaseName();
+ }
+
+ /**
+ * Query actual target database name.
+ *
+ * @return actual target database name list
+ */
+ public List<String> listTargetDatabaseName() {
+ return composedContainer.listTargetDatabaseName();
+ }
+}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/cases/mysql/MySQLAutoRuleScaling.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/cases/mysql/MySQLAutoRuleScaling.java
new file mode 100644
index 00000000000..a5cf19aeba0
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/cases/mysql/MySQLAutoRuleScaling.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.integration.data.pipline.cases.mysql;
+
+import lombok.SneakyThrows;
+import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.integration.data.pipline.cases.BaseITCase;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.sql.Connection;
+import java.util.Properties;
+
+/**
+ * MySQL auto rule scaling test case.
+ */
+public final class MySQLAutoRuleScaling extends BaseITCase {
+
+ public MySQLAutoRuleScaling() {
+ super(new MySQLDatabaseType());
+ }
+
+ @SneakyThrows
+ @Before
+ public void setUp() {
+ super.setUp();
+ Properties initProps = new Properties();
+ initProps.load(getClass().getClassLoader().getResourceAsStream("env/mysql/rule_inti.properties"));
+ try (Connection connection = getTargetDataSource().getConnection()) {
+ connection.createStatement().execute("CREATE DATABASE sharding_db;");
+ connection.createStatement().execute("USE sharding_db;");
+ int dbIndex = 0;
+ for (String value : listSourceDatabaseName()) {
+ connection.createStatement().execute(String.format(initProps.getProperty("add.resource.sql"), dbIndex, getDatabaseNetworkAlias(), value));
+ dbIndex++;
+ }
+ for (String value : listTargetDatabaseName()) {
+ connection.createStatement().execute(String.format(initProps.getProperty("add.resource.sql"), dbIndex, getDatabaseNetworkAlias(), value));
+ dbIndex++;
+ }
+ connection.createStatement().execute(initProps.getProperty("create.table.rule"));
+ connection.createStatement().execute(initProps.getProperty("create.table.sql"));
+ }
+ }
+
+ @Test
+ public void test() {
+ }
+}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/ComposedContainer.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/ComposedContainer.java
new file mode 100644
index 00000000000..f591954125e
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/ComposedContainer.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.integration.data.pipline.container;
+
+import lombok.Getter;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.integration.data.pipline.factory.DatabaseContainerFactory;
+import org.apache.shardingsphere.test.integration.framework.container.atomic.ITContainers;
+import org.apache.shardingsphere.test.integration.framework.container.atomic.governance.GovernanceContainer;
+import org.apache.shardingsphere.test.integration.framework.container.atomic.governance.GovernanceContainerFactory;
+import org.apache.shardingsphere.test.integration.util.NetworkAliasUtil;
+import org.testcontainers.lifecycle.Startable;
+
+import javax.sql.DataSource;
+import java.util.List;
+
+public final class ComposedContainer implements Startable {
+
+ private final ITContainers containers;
+
+ @Getter
+ private final GovernanceContainer governanceContainer;
+
+ private final DockerDatabaseContainer databaseContainer;
+
+ private final ShardingSphereProxyContainer proxyContainer;
+
+ @Getter
+ private final String databaseNetworkAlias = NetworkAliasUtil.getNetworkAlias("db");
+
+ public ComposedContainer(final DatabaseType databaseType) {
+ this.containers = new ITContainers("");
+ this.governanceContainer = containers.registerContainer(GovernanceContainerFactory.newInstance("ZooKeeper"), NetworkAliasUtil.getNetworkAlias("zk"));
+ this.databaseContainer = containers.registerContainer(DatabaseContainerFactory.newInstance(databaseType), databaseNetworkAlias);
+ ShardingSphereProxyContainer proxyContainer = new ShardingSphereProxyContainer(databaseType, "");
+ proxyContainer.dependsOn(governanceContainer, databaseContainer);
+ this.proxyContainer = containers.registerContainer(proxyContainer, NetworkAliasUtil.getNetworkAlias("sharding-proxy"));
+ }
+
+ @Override
+ public void start() {
+ containers.start();
+ }
+
+ @Override
+ public void stop() {
+ containers.stop();
+ }
+
+ /**
+ * Get target data source.
+ *
+ * @return target data source.
+ */
+ public DataSource getTargetDataSource() {
+ return proxyContainer.getTargetDataSource();
+ }
+
+ /**
+ * Get actual data source map.
+ *
+ * @return actual data source map
+ */
+ public List<String> listSourceDatabaseName() {
+ return databaseContainer.getSourceDatabaseNames();
+ }
+
+ /**
+ * Get expected data source map.
+ *
+ * @return expected data source map
+ */
+ public List<String> listTargetDatabaseName() {
+ return databaseContainer.getTargetDatabaseNames();
+ }
+}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/DockerDatabaseContainer.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/DockerDatabaseContainer.java
new file mode 100644
index 00000000000..ae583a1a622
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/DockerDatabaseContainer.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.integration.data.pipline.container;
+
+import lombok.Getter;
+import lombok.SneakyThrows;
+import org.apache.curator.shaded.com.google.common.collect.Lists;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.test.integration.framework.container.atomic.DockerITContainer;
+import org.testcontainers.containers.BindMode;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Docker storage container.
+ */
+@Getter
+public abstract class DockerDatabaseContainer extends DockerITContainer {
+
+ private final DatabaseType databaseType;
+
+ private final List<String> sourceDatabaseNames;
+
+ private final List<String> targetDatabaseNames;
+
+ public DockerDatabaseContainer(final DatabaseType databaseType, final String dockerImageName) {
+ super(databaseType.getName().toLowerCase(), dockerImageName);
+ this.databaseType = databaseType;
+ sourceDatabaseNames = new LinkedList<>();
+ targetDatabaseNames = new LinkedList<>();
+ }
+
+ @Override
+ protected void configure() {
+ withClasspathResourceMapping(String.format("/env/%s", databaseType.getName()), "/docker-entrypoint-initdb.d/", BindMode.READ_ONLY);
+ }
+
+ @Override
+ @SneakyThrows
+ protected void postStart() {
+ sourceDatabaseNames.addAll(Lists.newArrayList("ds_0", "ds_1"));
+ targetDatabaseNames.addAll(Lists.newArrayList("ds_2", "ds_3", "ds_4"));
+ }
+
+ protected abstract int getPort();
+}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/ShardingSphereProxyContainer.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/ShardingSphereProxyContainer.java
new file mode 100644
index 00000000000..2e381a4a4f3
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/ShardingSphereProxyContainer.java
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.integration.data.pipline.container;
+
+import com.zaxxer.hikari.HikariDataSource;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.test.integration.env.DataSourceEnvironment;
+import org.apache.shardingsphere.test.integration.framework.container.atomic.DockerITContainer;
+import org.rnorth.ducttape.unreliables.Unreliables;
+import org.testcontainers.containers.BindMode;
+import org.testcontainers.containers.wait.strategy.AbstractWaitStrategy;
+
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.util.Objects;
+import java.util.concurrent.Callable;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * ShardingSphere proxy container.
+ */
+@Slf4j
+public final class ShardingSphereProxyContainer extends DockerITContainer {
+
+ private final DatabaseType databaseType;
+
+ private final String schemaName;
+
+ private final AtomicReference<DataSource> targetDataSourceProvider = new AtomicReference<>();
+
+ public ShardingSphereProxyContainer(final DatabaseType databaseType, final String schemaName) {
+ super("Scaling-Proxy", "apache/shardingsphere-proxy-test");
+ this.databaseType = databaseType;
+ this.schemaName = schemaName;
+ }
+
+ @Override
+ protected void configure() {
+ mapConfigurationFiles();
+ withExposedPorts(3307);
+ setWaitStrategy(new JDBCConnectionWaitStrategy(() -> DriverManager.getConnection(DataSourceEnvironment.getURL(databaseType, getHost(), getMappedPort(3307), ""), "root", "root")));
+ }
+
+ private void mapConfigurationFiles() {
+ String containerPath = "/opt/shardingsphere-proxy/conf";
+ withClasspathResourceMapping("/env/common/proxy/conf/", containerPath, BindMode.READ_ONLY);
+ }
+
+ /**
+ * Get target data source.
+ *
+ * @return target data source.
+ */
+ public DataSource getTargetDataSource() {
+ DataSource dataSource = targetDataSourceProvider.get();
+ if (Objects.isNull(dataSource)) {
+ targetDataSourceProvider.set(createProxyDataSource());
+ }
+ return targetDataSourceProvider.get();
+ }
+
+ private DataSource createProxyDataSource() {
+ HikariDataSource result = new HikariDataSource();
+ result.setDriverClassName(DataSourceEnvironment.getDriverClassName(databaseType));
+ result.setJdbcUrl(DataSourceEnvironment.getURL(databaseType, getHost(), getMappedPort(3307), schemaName));
+ result.setUsername("root");
+ result.setPassword("root");
+ result.setMaximumPoolSize(2);
+ result.setTransactionIsolation("TRANSACTION_READ_COMMITTED");
+ return result;
+ }
+
+ @Slf4j
+ @RequiredArgsConstructor
+ private static class JDBCConnectionWaitStrategy extends AbstractWaitStrategy {
+
+ private final Callable<Connection> connectionSupplier;
+
+ @Override
+ protected void waitUntilReady() {
+ Unreliables.retryUntilSuccess((int) startupTimeout.getSeconds(), TimeUnit.SECONDS, () -> {
+ getRateLimiter().doWhenReady(() -> {
+ try (Connection unused = connectionSupplier.call()) {
+ log.info("Container ready");
+ // CHECKSTYLE:OFF
+ } catch (final Exception ex) {
+ // CHECKSTYLE:ON
+ throw new RuntimeException("Not Ready yet.", ex);
+ }
+ });
+ return true;
+ });
+ }
+ }
+}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/database/MySQLContainer.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/database/MySQLContainer.java
new file mode 100644
index 00000000000..9dfc96f4dcb
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/database/MySQLContainer.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.integration.data.pipline.container.database;
+
+import com.google.common.collect.Lists;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
+import org.apache.shardingsphere.integration.data.pipline.container.DockerDatabaseContainer;
+
+public class MySQLContainer extends DockerDatabaseContainer {
+
+ public MySQLContainer(final String dockerImageName) {
+ super(DatabaseTypeRegistry.getActualDatabaseType("MySQL"), dockerImageName);
+ }
+
+ @Override
+ protected void configure() {
+ super.configure();
+ withExposedPorts(3306);
+ setEnv(Lists.newArrayList("LANG=C.UTF-8", "MYSQL_ROOT_PASSWORD=root", "MYSQL_ROOT_HOST=%", "MYSQL_DATABASE=test"));
+ withCommand("--sql_mode=", "--default-authentication-plugin=mysql_native_password", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci");
+ }
+
+ @Override
+ protected int getPort() {
+ return 3306;
+ }
+}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/cases/DataSet.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/database/PostgreSQLContainer.java
similarity index 56%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/cases/DataSet.java
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/database/PostgreSQLContainer.java
index 04f90d09841..b226d05b15f 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/cases/DataSet.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/container/database/PostgreSQLContainer.java
@@ -15,22 +15,25 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql.env.cases;
+package org.apache.shardingsphere.integration.data.pipline.container.database;
-import lombok.Getter;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
+import org.apache.shardingsphere.integration.data.pipline.container.DockerDatabaseContainer;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Data set.
- */
-@Getter
-@XmlRootElement(name = "dataset")
-public final class DataSet {
+// TODO not complete yet
+public class PostgreSQLContainer extends DockerDatabaseContainer {
+
+ public PostgreSQLContainer(final String dockerImageName) {
+ super(DatabaseTypeRegistry.getActualDatabaseType("PostgreSQL"), dockerImageName);
+ }
+
+ @Override
+ public void start() {
+
+ }
- @XmlElement(name = "type")
- private final List<Type> types = new LinkedList<>();
+ @Override
+ protected int getPort() {
+ return 5432;
+ }
}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/ITEnvironmentContext.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/ITEnvironmentContext.java
similarity index 91%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/ITEnvironmentContext.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/ITEnvironmentContext.java
index bf2fbe1a44c..fb8db92a097 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/ITEnvironmentContext.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/ITEnvironmentContext.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql.env;
+package org.apache.shardingsphere.integration.data.pipline.env;
import com.google.gson.Gson;
import lombok.Getter;
@@ -25,10 +25,10 @@ import org.apache.shardingsphere.data.pipeline.api.config.rulealtered.PipelineCo
import org.apache.shardingsphere.data.pipeline.api.datasource.config.PipelineDataSourceConfiguration;
import org.apache.shardingsphere.data.pipeline.api.datasource.config.yaml.YamlPipelineDataSourceConfiguration;
import org.apache.shardingsphere.data.pipeline.core.datasource.PipelineDataSourceFactory;
-import org.apache.shardingsphere.integration.scaling.test.mysql.env.cases.DataSet;
-import org.apache.shardingsphere.integration.scaling.test.mysql.env.cases.Type;
-import org.apache.shardingsphere.integration.scaling.test.mysql.env.config.SourceConfiguration;
-import org.apache.shardingsphere.integration.scaling.test.mysql.env.config.TargetConfiguration;
+import org.apache.shardingsphere.integration.data.pipline.env.cases.DataSet;
+import org.apache.shardingsphere.integration.data.pipline.env.cases.Type;
+import org.apache.shardingsphere.integration.data.pipline.env.config.SourceConfiguration;
+import org.apache.shardingsphere.integration.data.pipline.env.config.TargetConfiguration;
import org.apache.shardingsphere.sharding.yaml.config.rule.YamlTableRuleConfiguration;
import javax.sql.DataSource;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/IntegrationTestEnvironment.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/IntegrationTestEnvironment.java
similarity index 84%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/IntegrationTestEnvironment.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/IntegrationTestEnvironment.java
index ad64d431df1..d0138d2deb1 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/IntegrationTestEnvironment.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/IntegrationTestEnvironment.java
@@ -15,13 +15,12 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql.env;
+package org.apache.shardingsphere.integration.data.pipline.env;
import lombok.Getter;
-import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.integration.scaling.test.mysql.util.ScalingUtil;
-import org.apache.shardingsphere.integration.scaling.test.mysql.util.ExecuteUtil;
+import org.apache.shardingsphere.integration.data.pipline.util.ExecuteUtil;
+import org.apache.shardingsphere.integration.data.pipline.util.ScalingUtil;
import java.io.IOException;
import java.io.InputStream;
@@ -37,10 +36,9 @@ public final class IntegrationTestEnvironment {
private final Properties props;
- @SneakyThrows
private IntegrationTestEnvironment() {
- props = loadProperties("env/engine-env.properties");
- isEnvironmentPrepared = props.getProperty("it.env.value").equals(props.getProperty("it.env.type"));
+ props = loadProperties("env/it-env.properties");
+ isEnvironmentPrepared = false;
}
private Properties loadProperties(final String propsFileName) {
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/cases/DataSet.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/cases/DataSet.java
similarity index 93%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/cases/DataSet.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/cases/DataSet.java
index 04f90d09841..81d85910364 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/cases/DataSet.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/cases/DataSet.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql.env.cases;
+package org.apache.shardingsphere.integration.data.pipline.env.cases;
import lombok.Getter;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/cases/Type.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/cases/Type.java
similarity index 96%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/cases/Type.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/cases/Type.java
index d7a7b7c3595..3e060f1668e 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/cases/Type.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/cases/Type.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql.env.cases;
+package org.apache.shardingsphere.integration.data.pipline.env.cases;
import lombok.Getter;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/config/SourceConfiguration.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/config/SourceConfiguration.java
similarity index 96%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/config/SourceConfiguration.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/config/SourceConfiguration.java
index 504dbc3c867..dc6a6d7abe6 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/config/SourceConfiguration.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/config/SourceConfiguration.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql.env.config;
+package org.apache.shardingsphere.integration.data.pipline.env.config;
import lombok.SneakyThrows;
import org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource;
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.infra.yaml.config.pojo.YamlRootConfiguration;
import org.apache.shardingsphere.infra.yaml.config.swapper.YamlDataSourceConfigurationSwapper;
import org.apache.shardingsphere.infra.yaml.config.swapper.YamlRuleConfigurationSwapperEngine;
import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
-import org.apache.shardingsphere.integration.scaling.test.mysql.env.IntegrationTestEnvironment;
+import org.apache.shardingsphere.integration.data.pipline.env.IntegrationTestEnvironment;
import org.apache.shardingsphere.data.pipeline.api.datasource.config.impl.ShardingSpherePipelineDataSourceConfiguration;
import org.apache.shardingsphere.sharding.yaml.config.YamlShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.yaml.config.rule.YamlTableRuleConfiguration;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/config/TargetConfiguration.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/config/TargetConfiguration.java
similarity index 92%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/config/TargetConfiguration.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/config/TargetConfiguration.java
index ad78c1f7f5c..478ca2b7c45 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/env/config/TargetConfiguration.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/env/config/TargetConfiguration.java
@@ -15,10 +15,10 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql.env.config;
+package org.apache.shardingsphere.integration.data.pipline.env.config;
import org.apache.shardingsphere.data.pipeline.api.datasource.config.impl.StandardPipelineDataSourceConfiguration;
-import org.apache.shardingsphere.integration.scaling.test.mysql.env.IntegrationTestEnvironment;
+import org.apache.shardingsphere.integration.data.pipline.env.IntegrationTestEnvironment;
import java.util.Properties;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/factory/DatabaseContainerFactory.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/factory/DatabaseContainerFactory.java
new file mode 100644
index 00000000000..ab0a9c938e9
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/factory/DatabaseContainerFactory.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.integration.data.pipline.factory;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.integration.data.pipline.container.DockerDatabaseContainer;
+import org.apache.shardingsphere.integration.data.pipline.container.database.MySQLContainer;
+import org.apache.shardingsphere.integration.data.pipline.container.database.PostgreSQLContainer;
+
+/**
+ * Storage container factory.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DatabaseContainerFactory {
+
+ /**
+ * Create new instance of storage container.
+ *
+ * @param databaseType database type
+ * @return new instance of storage container
+ */
+ public static DockerDatabaseContainer newInstance(final DatabaseType databaseType) {
+ switch (databaseType.getName()) {
+ case "MySQL":
+ return new MySQLContainer("mysql:5.7");
+ case "PostgreSQL":
+ return new PostgreSQLContainer("postgres:12.6");
+ default:
+ throw new RuntimeException(String.format("Database [%s] is unknown.", databaseType.getName()));
+ }
+ }
+}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/fixture/DataImporter.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/fixture/DataImporter.java
similarity index 90%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/fixture/DataImporter.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/fixture/DataImporter.java
index 2d299821a39..07013bbc20f 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/fixture/DataImporter.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/fixture/DataImporter.java
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql.fixture;
+package org.apache.shardingsphere.integration.data.pipline.fixture;
import lombok.SneakyThrows;
-import org.apache.shardingsphere.integration.scaling.test.mysql.env.ITEnvironmentContext;
-import org.apache.shardingsphere.integration.scaling.test.mysql.env.cases.DataSet;
-import org.apache.shardingsphere.integration.scaling.test.mysql.env.cases.Type;
+import org.apache.shardingsphere.integration.data.pipline.env.ITEnvironmentContext;
+import org.apache.shardingsphere.integration.data.pipline.env.cases.DataSet;
+import org.apache.shardingsphere.integration.data.pipline.env.cases.Type;
import javax.sql.DataSource;
import java.sql.Connection;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/ExecuteUtil.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/util/ExecuteUtil.java
similarity index 89%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/ExecuteUtil.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/util/ExecuteUtil.java
index a223f66941e..882f497b604 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/ExecuteUtil.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/util/ExecuteUtil.java
@@ -15,10 +15,12 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql.util;
+package org.apache.shardingsphere.integration.data.pipline.util;
import lombok.RequiredArgsConstructor;
+import java.util.concurrent.TimeUnit;
+
/**
* Execute util.
*/
@@ -40,7 +42,7 @@ public final class ExecuteUtil {
int count = 0;
while (!executor.execute() && retryCount > count) {
try {
- Thread.sleep(waitMs);
+ TimeUnit.MILLISECONDS.sleep(waitMs);
} catch (final InterruptedException ignored) {
}
count++;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/Executor.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/util/Executor.java
similarity index 93%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/Executor.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/util/Executor.java
index 9c718c9a5af..99241539caa 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/Executor.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/util/Executor.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql.util;
+package org.apache.shardingsphere.integration.data.pipline.util;
/**
* Executor.
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/ScalingUtil.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/util/ScalingUtil.java
similarity index 96%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/ScalingUtil.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/util/ScalingUtil.java
index fb9dcca2961..d1015aca84a 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/scaling/test/mysql/util/ScalingUtil.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipline/util/ScalingUtil.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.integration.scaling.test.mysql.util;
+package org.apache.shardingsphere.integration.data.pipline.util;
import com.google.gson.JsonElement;
import lombok.AccessLevel;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/cases/mysql/types.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/common/proxy/conf/logback.xml
similarity index 61%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/cases/mysql/types.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/common/proxy/conf/logback.xml
index 220926b5ca6..1494746120c 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/cases/mysql/types.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/common/proxy/conf/logback.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one or more
~ contributor license agreements. See the NOTICE file distributed with
@@ -15,18 +16,18 @@
~ limitations under the License.
-->
-<dataset>
- <type name="int">
- <value>0</value>
- <value>-2147483648</value>
- <value>2147483647</value>
- </type>
- <type name="varchar(1)">
- <value></value>
- <value>1</value>
- </type>
- <type name="date">
- <value>1000-01-01</value>
- <value>9999-12-31</value>
- </type>
-</dataset>
+<configuration>
+ <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
+ </encoder>
+ </appender>
+ <logger name="org.apache.shardingsphere" level="info" additivity="false">
+ <appender-ref ref="console" />
+ </logger>
+
+ <root>
+ <level value="info" />
+ <appender-ref ref="console" />
+ </root>
+</configuration>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/engine-env.properties b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/common/proxy/conf/server.yaml
similarity index 56%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/engine-env.properties
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/common/proxy/conf/server.yaml
index c0516fc677e..ce314b28fa3 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/engine-env.properties
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/common/proxy/conf/server.yaml
@@ -15,12 +15,30 @@
# limitations under the License.
#
-it.env.type=${it.env}
-it.env.value=scaling
+mode:
+ type: Cluster
+ repository:
+ type: ZooKeeper
+ props:
+ namespace: it_db
+ server-lists: zk.host:2181
+ timeToLiveSeconds: 60
+ operationTimeoutMilliseconds: 500
+ retryIntervalMilliseconds: 500
+ maxRetries: 3
+ overwrite: false
-db.host.docker=mysql:3306
-db.host.host=127.0.0.1:13306
-db.username=root
-db.password=123456
-scaling.retry=30
-scaling.waitMs=1000
+rules:
+ - !AUTHORITY
+ users:
+ - root@:root
+ provider:
+ type: ALL_PRIVILEGES_PERMITTED
+
+props:
+ max-connections-size-per-query: 1
+ kernel-executor-size: 16 # Infinite by default.
+ proxy-frontend-flush-threshold: 128 # The default value is 128.
+ proxy-hint-enabled: true
+ sql-show: false
+ sql-federation-enabled: true
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/engine-env.properties b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/it-env.properties
similarity index 74%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/engine-env.properties
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/it-env.properties
index c0516fc677e..aa594cdf669 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/engine-env.properties
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/it-env.properties
@@ -15,12 +15,20 @@
# limitations under the License.
#
-it.env.type=${it.env}
-it.env.value=scaling
+#it.modes=Memory,Cluster
+it.run.modes=Memory
+
+it.scenarios=scaling
+
+# it.cluster.env.type=DOCKER,NATIVE
+it.cluster.env.type=DOCKER
+
+# it.cluster.adapters=jdbc,proxy
+it.cluster.adapters=proxy
+
+# it.cluster.databases=MySQL,PostgreSQL
+it.cluster.databases=MySQL
+
+scaling.waitMs=5000
-db.host.docker=mysql:3306
-db.host.host=127.0.0.1:13306
-db.username=root
-db.password=123456
scaling.retry=30
-scaling.waitMs=1000
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/mysql/init.sql b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/mysql/initdb.sql
similarity index 77%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/mysql/init.sql
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/mysql/initdb.sql
index 1254957fa40..e36f72acd0d 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/mysql/init.sql
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/mysql/initdb.sql
@@ -15,8 +15,11 @@
-- limitations under the License.
--
-CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '123456';
+CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY 'root';
GRANT All privileges ON *.* TO 'root'@'%';
-CREATE DATABASE ds_src;
-CREATE DATABASE ds_dst;
+CREATE DATABASE IF NOT EXISTS ds_0;
+CREATE DATABASE IF NOT EXISTS ds_1;
+CREATE DATABASE IF NOT EXISTS ds_2;
+CREATE DATABASE IF NOT EXISTS ds_3;
+CREATE DATABASE IF NOT EXISTS ds_4;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/mysql/rule_inti.properties b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/mysql/rule_inti.properties
new file mode 100644
index 00000000000..07eabd79499
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/mysql/rule_inti.properties
@@ -0,0 +1,34 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+create.table.rule=CREATE SHARDING TABLE RULE t_order(RESOURCES(ds_0,ds_1),SHARDING_COLUMN=order_id,TYPE(NAME=hash_mod,PROPERTIES("sharding-count"=4)),KEY_GENERATE_STRATEGY(COLUMN=order_id,TYPE(NAME=snowflake))), t_order_item(RESOURCES(ds_0,ds_1),SHARDING_COLUMN=order_id,TYPE(NAME=hash_mod,PROPERTIES("sharding-count"=4)),KEY_GENERATE_STRATEGY(COLUMN=order_id,TYPE(NAME=snowflake)));
+create.table.sql=CREATE TABLE `t_order` (\
+`id` BIGINT NOT NULL COMMENT 'pk id',\
+`t_varchar` VARCHAR ( 255 ) NOT NULL,\
+`t_tinyint` TINYINT ( 1 ) NULL,\
+`t_int` INT NULL,\
+`t_timestamp` TIMESTAMP NULL,\
+`t_datetime` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP,\
+`t_binary` BINARY NULL,\
+`t_blob` BLOB NULL,\
+`t_decimal` DECIMAL ( 10, 2 ) NULL,\
+`t_char` CHAR ( 128 ) NULL,\
+`t_double` DOUBLE NULL,\
+`t_json` json NULL COMMENT 'json test',\
+PRIMARY KEY ( `id` ),\
+UNIQUE INDEX ( `t_varchar` ),\
+INDEX ( `t_int` ) );
+add.resource.sql=ADD RESOURCE ds_%s (URL="jdbc:mysql://%s:3306/%s?serverTimezone=UTC&useSSL=false",USER=root,PASSWORD=root)
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/mysql/init.sql b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/postgresql/initdb.sql
similarity index 83%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/mysql/init.sql
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/postgresql/initdb.sql
index 1254957fa40..e3b8a181bea 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/mysql/init.sql
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/postgresql/initdb.sql
@@ -14,9 +14,3 @@
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-
-CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '123456';
-GRANT All privileges ON *.* TO 'root'@'%';
-
-CREATE DATABASE ds_src;
-CREATE DATABASE ds_dst;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/cases/mysql/types.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/logback-test.xml
similarity index 58%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/cases/mysql/types.xml
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/logback-test.xml
index 220926b5ca6..d80d16d1513 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/cases/mysql/types.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/logback-test.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one or more
~ contributor license agreements. See the NOTICE file distributed with
@@ -15,18 +16,18 @@
~ limitations under the License.
-->
-<dataset>
- <type name="int">
- <value>0</value>
- <value>-2147483648</value>
- <value>2147483647</value>
- </type>
- <type name="varchar(1)">
- <value></value>
- <value>1</value>
- </type>
- <type name="date">
- <value>1000-01-01</value>
- <value>9999-12-31</value>
- </type>
-</dataset>
+<configuration>
+ <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
+ </encoder>
+ </appender>
+ <logger name="org.apache.shardingsphere" level="warn" additivity="true">
+ <appender-ref ref="console" />
+ </logger>
+ <logger name="com.zaxxer.hikari.pool.ProxyConnection" level="off" />
+ <root>
+ <level value="warn" />
+ <appender-ref ref="console" />
+ </root>
+</configuration>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/compose/mode/ClusterComposedContainer.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/compose/mode/ClusterComposedContainer.java
index 139cd6c19b9..6465cba7feb 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/compose/mode/ClusterComposedContainer.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/compose/mode/ClusterComposedContainer.java
@@ -27,6 +27,7 @@ import org.apache.shardingsphere.test.integration.framework.container.atomic.sto
import org.apache.shardingsphere.test.integration.framework.container.atomic.storage.StorageContainerFactory;
import org.apache.shardingsphere.test.integration.framework.container.compose.ComposedContainer;
import org.apache.shardingsphere.test.integration.framework.param.model.ParameterizedArray;
+import org.apache.shardingsphere.test.integration.util.NetworkAliasUtil;
import javax.sql.DataSource;
import java.util.Map;
@@ -45,13 +46,14 @@ public final class ClusterComposedContainer implements ComposedContainer {
private final AdapterContainer adapterContainer;
public ClusterComposedContainer(final ParameterizedArray parameterizedArray) {
- containers = new ITContainers(parameterizedArray.getScenario());
+ String scenario = parameterizedArray.getScenario();
+ containers = new ITContainers(scenario);
// TODO support other types of governance
- governanceContainer = containers.registerContainer(GovernanceContainerFactory.newInstance("ZooKeeper"), "zk", false);
- storageContainer = containers.registerContainer(StorageContainerFactory.newInstance(
- parameterizedArray.getDatabaseType(), parameterizedArray.getScenario()), parameterizedArray.getDatabaseType().getName(), true);
- adapterContainer = containers.registerContainer(AdapterContainerFactory.newInstance(
- parameterizedArray.getAdapter(), parameterizedArray.getDatabaseType(), storageContainer, parameterizedArray.getScenario()), parameterizedArray.getAdapter(), true);
+ governanceContainer = containers.registerContainer(GovernanceContainerFactory.newInstance("ZooKeeper"), NetworkAliasUtil.getNetworkAlias("zk"));
+ storageContainer = containers.registerContainer(StorageContainerFactory.newInstance(parameterizedArray.getDatabaseType(), scenario),
+ NetworkAliasUtil.getNetworkAliasWithScenario(parameterizedArray.getDatabaseType().getName(), scenario));
+ adapterContainer = containers.registerContainer(AdapterContainerFactory.newInstance(parameterizedArray.getAdapter(), parameterizedArray.getDatabaseType(), storageContainer, scenario),
+ NetworkAliasUtil.getNetworkAliasWithScenario(parameterizedArray.getAdapter(), scenario));
if (adapterContainer instanceof DockerITContainer) {
((DockerITContainer) adapterContainer).dependsOn(governanceContainer, storageContainer);
}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/compose/mode/MemoryComposedContainer.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/compose/mode/MemoryComposedContainer.java
index a4bfcbf32f8..758a9b9cf8d 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/compose/mode/MemoryComposedContainer.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/compose/mode/MemoryComposedContainer.java
@@ -25,6 +25,7 @@ import org.apache.shardingsphere.test.integration.framework.container.atomic.sto
import org.apache.shardingsphere.test.integration.framework.container.atomic.storage.StorageContainerFactory;
import org.apache.shardingsphere.test.integration.framework.container.compose.ComposedContainer;
import org.apache.shardingsphere.test.integration.framework.param.model.ParameterizedArray;
+import org.apache.shardingsphere.test.integration.util.NetworkAliasUtil;
import javax.sql.DataSource;
import java.util.Map;
@@ -41,11 +42,12 @@ public final class MemoryComposedContainer implements ComposedContainer {
private final AdapterContainer adapterContainer;
public MemoryComposedContainer(final ParameterizedArray parameterizedArray) {
- containers = new ITContainers(parameterizedArray.getScenario());
- storageContainer = containers.registerContainer(StorageContainerFactory.newInstance(
- parameterizedArray.getDatabaseType(), parameterizedArray.getScenario()), parameterizedArray.getDatabaseType().getName(), true);
- adapterContainer = containers.registerContainer(AdapterContainerFactory.newInstance(
- parameterizedArray.getAdapter(), parameterizedArray.getDatabaseType(), storageContainer, parameterizedArray.getScenario()), parameterizedArray.getAdapter(), true);
+ String scenario = parameterizedArray.getScenario();
+ containers = new ITContainers(scenario);
+ storageContainer = containers.registerContainer(StorageContainerFactory.newInstance(parameterizedArray.getDatabaseType(), scenario),
+ NetworkAliasUtil.getNetworkAliasWithScenario(parameterizedArray.getDatabaseType().getName(), scenario));
+ adapterContainer = containers.registerContainer(AdapterContainerFactory.newInstance(parameterizedArray.getAdapter(), parameterizedArray.getDatabaseType(), storageContainer, scenario),
+ NetworkAliasUtil.getNetworkAliasWithScenario(parameterizedArray.getAdapter(), scenario));
if (adapterContainer instanceof DockerITContainer) {
((DockerITContainer) adapterContainer).dependsOn(storageContainer);
}