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/05/06 06:35:12 UTC
[shardingsphere] branch master updated: Refactor Scaling Native mode (#17371)
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 e64242b8acd Refactor Scaling Native mode (#17371)
e64242b8acd is described below
commit e64242b8acd8b1d17deb952166defd13b208b2d8
Author: azexcy <10...@users.noreply.github.com>
AuthorDate: Fri May 6 14:34:57 2022 +0800
Refactor Scaling Native mode (#17371)
---
.../data/pipeline/cases/BaseITCase.java | 4 +-
.../container/cluster/ZookeeperContainer.java | 5 -
.../container/compose/BaseComposedContainer.java | 5 -
.../container/compose/DockerComposedContainer.java | 8 +-
...Container.java => NativeComposedContainer.java} | 12 +--
.../proxy/ShardingSphereProxyDockerContainer.java | 3 +-
.../proxy/ShardingSphereProxyLocalContainer.java | 102 ---------------------
.../src/test/resources/env/it-env.properties | 2 +-
8 files changed, 14 insertions(+), 127 deletions(-)
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/cases/BaseITCase.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/cases/BaseITCase.java
index 6cfca94fe8a..b7bc5492305 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/cases/BaseITCase.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/cases/BaseITCase.java
@@ -34,7 +34,7 @@ import org.apache.shardingsphere.integration.data.pipeline.env.enums.ITEnvTypeEn
import org.apache.shardingsphere.integration.data.pipeline.framework.ITWatcher;
import org.apache.shardingsphere.integration.data.pipeline.framework.container.compose.BaseComposedContainer;
import org.apache.shardingsphere.integration.data.pipeline.framework.container.compose.DockerComposedContainer;
-import org.apache.shardingsphere.integration.data.pipeline.framework.container.compose.LocalComposedContainer;
+import org.apache.shardingsphere.integration.data.pipeline.framework.container.compose.NativeComposedContainer;
import org.apache.shardingsphere.integration.data.pipeline.framework.container.database.DockerDatabaseContainer;
import org.apache.shardingsphere.integration.data.pipeline.framework.param.ScalingParameterized;
import org.apache.shardingsphere.integration.data.pipeline.util.DatabaseTypeUtil;
@@ -88,7 +88,7 @@ public abstract class BaseITCase {
if (ENV.getItEnvType() == ITEnvTypeEnum.DOCKER) {
composedContainer = new DockerComposedContainer(parameterized.getDatabaseType(), parameterized.getDockerImageName());
} else {
- composedContainer = new LocalComposedContainer(parameterized.getDatabaseType(), parameterized.getDockerImageName());
+ composedContainer = new NativeComposedContainer(parameterized.getDatabaseType(), parameterized.getDockerImageName());
}
composedContainer.start();
commonSQLCommand = JAXB.unmarshal(BaseITCase.class.getClassLoader().getResource("env/common/command.xml"), CommonSQLCommand.class);
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/cluster/ZookeeperContainer.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/cluster/ZookeeperContainer.java
index 157e1feb06e..4887afaab10 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/cluster/ZookeeperContainer.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/cluster/ZookeeperContainer.java
@@ -17,8 +17,6 @@
package org.apache.shardingsphere.integration.data.pipeline.framework.container.cluster;
-import org.apache.shardingsphere.integration.data.pipeline.env.IntegrationTestEnvironment;
-import org.apache.shardingsphere.integration.data.pipeline.env.enums.ITEnvTypeEnum;
import org.apache.shardingsphere.test.integration.framework.container.atomic.governance.GovernanceContainer;
import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
@@ -31,9 +29,6 @@ public final class ZookeeperContainer extends GovernanceContainer {
super("zookeeper", "zookeeper:3.6.2");
setWaitStrategy(new LogMessageWaitStrategy().withRegEx(".*PrepRequestProcessor \\(sid:[0-9]+\\) started.*"));
withExposedPorts(2181);
- if (ITEnvTypeEnum.NATIVE == IntegrationTestEnvironment.getInstance().getItEnvType()) {
- addFixedExposedPort(2181, 2181);
- }
}
@Override
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/BaseComposedContainer.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/BaseComposedContainer.java
index 645e6ef9bb7..46c4be8c1cf 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/BaseComposedContainer.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/BaseComposedContainer.java
@@ -20,10 +20,8 @@ package org.apache.shardingsphere.integration.data.pipeline.framework.container.
import lombok.Getter;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.integration.data.pipeline.factory.DatabaseContainerFactory;
-import org.apache.shardingsphere.integration.data.pipeline.framework.container.cluster.ZookeeperContainer;
import org.apache.shardingsphere.integration.data.pipeline.framework.container.database.DockerDatabaseContainer;
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.util.NetworkAliasUtil;
import org.testcontainers.lifecycle.Startable;
@@ -32,13 +30,10 @@ public abstract class BaseComposedContainer implements Startable {
private final ITContainers containers;
- private final GovernanceContainer governanceContainer;
-
private final DockerDatabaseContainer databaseContainer;
public BaseComposedContainer(final DatabaseType databaseType, final String dockerImageName) {
this.containers = new ITContainers("");
- this.governanceContainer = containers.registerContainer(new ZookeeperContainer(), NetworkAliasUtil.getNetworkAlias("zk"));
this.databaseContainer = containers.registerContainer(DatabaseContainerFactory.newInstance(databaseType, dockerImageName), NetworkAliasUtil.getNetworkAlias("db"));
}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/DockerComposedContainer.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/DockerComposedContainer.java
index c85036500ae..0c8439fba06 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/DockerComposedContainer.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/DockerComposedContainer.java
@@ -19,7 +19,9 @@ package org.apache.shardingsphere.integration.data.pipeline.framework.container.
import lombok.Getter;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.integration.data.pipeline.framework.container.cluster.ZookeeperContainer;
import org.apache.shardingsphere.integration.data.pipeline.framework.container.proxy.ShardingSphereProxyDockerContainer;
+import org.apache.shardingsphere.test.integration.framework.container.atomic.governance.GovernanceContainer;
import org.apache.shardingsphere.test.integration.util.NetworkAliasUtil;
/**
@@ -28,13 +30,15 @@ import org.apache.shardingsphere.test.integration.util.NetworkAliasUtil;
@Getter
public final class DockerComposedContainer extends BaseComposedContainer {
+ private final GovernanceContainer governanceContainer;
+
private final ShardingSphereProxyDockerContainer proxyContainer;
public DockerComposedContainer(final DatabaseType databaseType, final String dockerImageName) {
super(databaseType, dockerImageName);
ShardingSphereProxyDockerContainer proxyContainer = new ShardingSphereProxyDockerContainer(databaseType);
- proxyContainer.addExposedPort(3307);
- proxyContainer.dependsOn(getGovernanceContainer(), getDatabaseContainer());
+ governanceContainer = getContainers().registerContainer(new ZookeeperContainer(), NetworkAliasUtil.getNetworkAlias("zk"));
+ proxyContainer.dependsOn(governanceContainer, getDatabaseContainer());
this.proxyContainer = getContainers().registerContainer(proxyContainer, NetworkAliasUtil.getNetworkAlias("sharding-proxy"));
}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/LocalComposedContainer.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/NativeComposedContainer.java
similarity index 67%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/LocalComposedContainer.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/NativeComposedContainer.java
index c2ce14b33a7..4246f00dfc4 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/LocalComposedContainer.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/compose/NativeComposedContainer.java
@@ -17,26 +17,20 @@
package org.apache.shardingsphere.integration.data.pipeline.framework.container.compose;
-import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.integration.data.pipeline.framework.container.proxy.ShardingSphereProxyLocalContainer;
/**
- * Local composed container.
+ * Native composed container, you need start ShardingSphere-Proxy at firstly.
*/
-public final class LocalComposedContainer extends BaseComposedContainer {
- private ShardingSphereProxyLocalContainer shardingSphereProxyContainer;
+public final class NativeComposedContainer extends BaseComposedContainer {
- public LocalComposedContainer(final DatabaseType databaseType, final String dockerImageName) {
+ public NativeComposedContainer(final DatabaseType databaseType, final String dockerImageName) {
super(databaseType, dockerImageName);
}
- @SneakyThrows
@Override
public void start() {
super.start();
- shardingSphereProxyContainer = new ShardingSphereProxyLocalContainer(getDatabaseContainer().getDatabaseType());
- shardingSphereProxyContainer.start();
}
@Override
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/proxy/ShardingSphereProxyDockerContainer.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/proxy/ShardingSphereProxyDockerContainer.java
index f2b24ca1e85..eacb7b98a9f 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/proxy/ShardingSphereProxyDockerContainer.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/proxy/ShardingSphereProxyDockerContainer.java
@@ -43,6 +43,7 @@ public final class ShardingSphereProxyDockerContainer extends DockerITContainer
@Override
protected void configure() {
+ withExposedPorts(3307);
mapConfigurationFiles();
if (DatabaseTypeUtil.isPostgreSQL(databaseType)) {
setWaitStrategy(new JDBCConnectionWaitStrategy(() -> DriverManager.getConnection(DataSourceEnvironment.getURL(databaseType, getHost(), getMappedPort(3307), "postgres"), "root", "root")));
@@ -53,7 +54,7 @@ public final class ShardingSphereProxyDockerContainer extends DockerITContainer
private void mapConfigurationFiles() {
withClasspathResourceMapping(String.format("/env/%s/server.yaml", databaseType.getName().toLowerCase()), "/opt/shardingsphere-proxy/conf/server.yaml", BindMode.READ_ONLY);
- withClasspathResourceMapping(String.format("/env/logback.xml", databaseType.getName().toLowerCase()), "/opt/shardingsphere-proxy/conf/logback.xml", BindMode.READ_ONLY);
+ withClasspathResourceMapping("/env/logback.xml", "/opt/shardingsphere-proxy/conf/logback.xml", BindMode.READ_ONLY);
if (ITEnvTypeEnum.NATIVE == IntegrationTestEnvironment.getInstance().getItEnvType()) {
addFixedExposedPort(3307, 3307);
addFixedExposedPort(3308, 5005);
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/proxy/ShardingSphereProxyLocalContainer.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/proxy/ShardingSphereProxyLocalContainer.java
deleted file mode 100644
index 9190e1ecae1..00000000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/framework/container/proxy/ShardingSphereProxyLocalContainer.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * 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.pipeline.framework.container.proxy;
-
-import lombok.Getter;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.integration.data.pipeline.util.DatabaseTypeUtil;
-import org.apache.shardingsphere.proxy.backend.config.ProxyConfigurationLoader;
-import org.apache.shardingsphere.proxy.backend.config.YamlProxyConfiguration;
-import org.apache.shardingsphere.proxy.frontend.ShardingSphereProxy;
-import org.apache.shardingsphere.proxy.initializer.BootstrapInitializer;
-import org.apache.shardingsphere.test.integration.env.DataSourceEnvironment;
-
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-import java.util.concurrent.TimeUnit;
-
-@Slf4j
-@Getter
-public final class ShardingSphereProxyLocalContainer {
-
- private final DatabaseType databaseType;
-
- private final String defaultDatabaseName;
-
- private volatile boolean started;
-
- @SneakyThrows
- public ShardingSphereProxyLocalContainer(final DatabaseType databaseType) {
- this.databaseType = databaseType;
- if (DatabaseTypeUtil.isPostgreSQL(databaseType)) {
- defaultDatabaseName = "postgres";
- } else {
- defaultDatabaseName = "";
- }
- }
-
- /**
- * Wait proxy started.
- *
- * @param databaseType database type
- */
- @SneakyThrows
- public void waitProxyStarted(final DatabaseType databaseType) {
- for (int retry = 0; retry < 60; retry++) {
- try (Connection connection = DriverManager.getConnection(DataSourceEnvironment.getURL(databaseType, "localhost", 3307, defaultDatabaseName), "root", "root")) {
- log.info("Container ready");
- started = true;
- return;
- // CHECKSTYLE:OFF
- } catch (final Exception ignored) {
- // CHECKSTYLE:ON
- }
- TimeUnit.SECONDS.sleep(1);
- }
- throw new RuntimeException("Proxy not started");
- }
-
- /**
- * Start proxy.
- */
- public void start() {
- if (started) {
- return;
- }
- synchronized (this) {
- if (started) {
- return;
- }
- new Thread(() -> {
- try {
- YamlProxyConfiguration yamlConfig = ProxyConfigurationLoader.load(String.format("/env/%s", databaseType.getName().toLowerCase()));
- yamlConfig.getServerConfiguration().getMode().getRepository().getProps().setProperty("server-lists", "localhost:2181");
- new BootstrapInitializer().init(yamlConfig, 3307);
- new ShardingSphereProxy().start(3307);
- } catch (final IOException | SQLException ex) {
- throw new RuntimeException(ex);
- }
- }).start();
- waitProxyStarted(databaseType);
- }
- }
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/it-env.properties b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/it-env.properties
index 5f784c66d11..427f58dc0f3 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/it-env.properties
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-scaling/src/test/resources/env/it-env.properties
@@ -18,5 +18,5 @@
it.cluster.env.type=DOCKER
# it.env.mysql.version=mysql:5.7,mysql:8.0
it.env.mysql.version=
-# it.env.postgresql.version=postgres:12,postgres:13
+# it.env.postgresql.version=postgres:10-alpine,postgres:11-alpine,postgres:12-alpine,postgres:13-alpine,postgres:14-alpine
it.env.postgresql.version=