You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/11/02 01:44:25 UTC

[shardingsphere] branch master updated: Add standalone mode for show processlist it. (#21893)

This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang 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 ca9c162776c Add standalone mode for show processlist it. (#21893)
ca9c162776c is described below

commit ca9c162776c8514a4b8340a8fb18fa844e3f91f1
Author: Chuxin Chen <ch...@qq.com>
AuthorDate: Wed Nov 2 09:44:18 2022 +0800

    Add standalone mode for show processlist it. (#21893)
---
 .github/workflows/it-showprocesslist.yml           |  5 ++++-
 .../ClusterShowProcessListContainerComposer.java   | 25 ++++++++++++++--------
 .../showprocesslist/engine/ShowProcessListIT.java  |  4 +++-
 .../env/IntegrationTestEnvironment.java            |  3 +++
 .../parameter/ShowProcessListParameterized.java    |  2 ++
 .../src/test/resources/env/it-env.properties       |  2 ++
 6 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/.github/workflows/it-showprocesslist.yml b/.github/workflows/it-showprocesslist.yml
index 0975f8899dc..60986eb8918 100644
--- a/.github/workflows/it-showprocesslist.yml
+++ b/.github/workflows/it-showprocesslist.yml
@@ -61,6 +61,9 @@ jobs:
     env:
       mysql_version: 5.7
     timeout-minutes: 10
+    strategy:
+      matrix:
+        mode: [ Standalone, Cluster ]
     steps:
       - uses: actions/checkout@v3
       - name: Cache Maven Repos
@@ -79,4 +82,4 @@ jobs:
       - name: Build ShowProcesslist IT image
         run: ./mvnw -B clean install -am -pl test/integration-test/showprocesslist -Pit.env.docker -DskipTests
       - name: Run MySQL ShowProcesslist Integration Test
-        run: ./mvnw -nsu -B install -f test/integration-test/showprocesslist/pom.xml -Dit.env.type=docker -Dit.scenarios=cluster_jdbc_proxy
+        run: ./mvnw -nsu -B install -f test/integration-test/showprocesslist/pom.xml -Dit.env.type=docker -Dit.scenarios=cluster_jdbc_proxy -Dit.run.modes=${{ matrix.mode }}
diff --git a/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/container/composer/ClusterShowProcessListContainerComposer.java b/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/container/composer/ClusterShowProcessListContainerComposer.java
index ce83d6c7efe..7722f52403f 100644
--- a/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/container/composer/ClusterShowProcessListContainerComposer.java
+++ b/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/container/composer/ClusterShowProcessListContainerComposer.java
@@ -51,34 +51,41 @@ public final class ClusterShowProcessListContainerComposer {
     
     public ClusterShowProcessListContainerComposer(final ShowProcessListParameterized parameterized) {
         containers = new ITContainers(parameterized.getScenario());
-        governanceContainer = containers.registerContainer(GovernanceContainerFactory.newInstance("ZooKeeper"));
+        governanceContainer = isClusterMode(parameterized.getRunMode()) ? containers.registerContainer(GovernanceContainerFactory.newInstance("ZooKeeper")) : null;
         StorageContainer storageContainer = containers.registerContainer(StorageContainerFactory.newInstance(parameterized.getDatabaseType(), "", parameterized.getScenario(),
                 StorageContainerConfigurationFactory.newInstance(parameterized.getDatabaseType())));
         AdaptorContainerConfiguration containerConfig = new AdaptorContainerConfiguration(parameterized.getScenario(),
-                getMountedResources(parameterized.getScenario(), parameterized.getDatabaseType()), AdapterContainerUtil.getAdapterContainerImage());
-        jdbcContainer = AdapterContainerFactory.newInstance("cluster", "jdbc", parameterized.getDatabaseType(), storageContainer, parameterized.getScenario(), containerConfig);
-        proxyContainer = AdapterContainerFactory.newInstance("cluster", "proxy", parameterized.getDatabaseType(), storageContainer, parameterized.getScenario(), containerConfig);
+                getMountedResources(parameterized.getScenario(), parameterized.getDatabaseType(), parameterized.getRunMode()), AdapterContainerUtil.getAdapterContainerImage());
+        jdbcContainer = AdapterContainerFactory.newInstance(parameterized.getRunMode(), "jdbc", parameterized.getDatabaseType(), storageContainer, parameterized.getScenario(), containerConfig);
+        proxyContainer = AdapterContainerFactory.newInstance(parameterized.getRunMode(), "proxy", parameterized.getDatabaseType(), storageContainer, parameterized.getScenario(), containerConfig);
         if (proxyContainer instanceof DockerITContainer) {
-            ((DockerITContainer) proxyContainer).dependsOn(governanceContainer, storageContainer);
+            if (isClusterMode(parameterized.getRunMode())) {
+                ((DockerITContainer) proxyContainer).dependsOn(governanceContainer);
+            }
+            ((DockerITContainer) proxyContainer).dependsOn(storageContainer);
         }
         containers.registerContainer(proxyContainer);
         containers.registerContainer(jdbcContainer);
     }
     
-    private Map<String, String> getMountedResources(final String scenario, final DatabaseType databaseType) {
+    private Map<String, String> getMountedResources(final String scenario, final DatabaseType databaseType, final String runMode) {
         Map<String, String> result = new HashMap<>(2, 1);
-        result.put("/env/common/cluster/proxy/conf/", ProxyContainerConstants.CONFIG_PATH_IN_CONTAINER);
+        result.put(isClusterMode(runMode) ? "/env/common/cluster/proxy/conf/" : "/env/common/standalone/proxy/conf/", ProxyContainerConstants.CONFIG_PATH_IN_CONTAINER);
         result.put("/env/scenario/" + scenario + "/proxy/conf/" + databaseType.getType().toLowerCase(), ProxyContainerConstants.CONFIG_PATH_IN_CONTAINER);
         return result;
     }
     
+    private boolean isClusterMode(final String runMode) {
+        return "Cluster".equals(runMode);
+    }
+    
     /**
      * Get jdbc data source.
      *
      * @return data source
      */
     public DataSource getJdbcDataSource() {
-        return jdbcContainer.getTargetDataSource(governanceContainer.getServerLists());
+        return jdbcContainer.getTargetDataSource(null == governanceContainer ? null : governanceContainer.getServerLists());
     }
     
     /**
@@ -87,7 +94,7 @@ public final class ClusterShowProcessListContainerComposer {
      * @return data source
      */
     public DataSource getProxyDataSource() {
-        return proxyContainer.getTargetDataSource(governanceContainer.getServerLists());
+        return proxyContainer.getTargetDataSource(null == governanceContainer ? null : governanceContainer.getServerLists());
     }
     
     /**
diff --git a/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/engine/ShowProcessListIT.java b/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/engine/ShowProcessListIT.java
index 74d57e2e965..1787ee10baa 100644
--- a/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/engine/ShowProcessListIT.java
+++ b/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/engine/ShowProcessListIT.java
@@ -60,7 +60,9 @@ public final class ShowProcessListIT {
         Collection<ShowProcessListParameterized> result = new LinkedList<>();
         ENV.getScenarios().forEach(each -> {
             if (ITEnvTypeEnum.DOCKER == ENV.getItEnvType()) {
-                result.add(new ShowProcessListParameterized(new MySQLDatabaseType(), each));
+                for (String runMode : ENV.getRunModes()) {
+                    result.add(new ShowProcessListParameterized(new MySQLDatabaseType(), each, runMode));
+                }
             }
         });
         return result;
diff --git a/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/env/IntegrationTestEnvironment.java b/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/env/IntegrationTestEnvironment.java
index c3395c84000..bd2605a2ca2 100644
--- a/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/env/IntegrationTestEnvironment.java
+++ b/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/env/IntegrationTestEnvironment.java
@@ -33,6 +33,8 @@ public final class IntegrationTestEnvironment {
     
     private static final IntegrationTestEnvironment INSTANCE = new IntegrationTestEnvironment();
     
+    private final Collection<String> runModes;
+    
     private final Properties props;
     
     private final ITEnvTypeEnum itEnvType;
@@ -41,6 +43,7 @@ public final class IntegrationTestEnvironment {
     
     private IntegrationTestEnvironment() {
         props = loadProperties();
+        runModes = Splitter.on(",").trimResults().splitToList(props.getProperty("it.run.modes"));
         itEnvType = ITEnvTypeEnum.valueOf(props.getProperty("it.env.type", ITEnvTypeEnum.NONE.name()).toUpperCase());
         scenarios = getScenarios(props);
     }
diff --git a/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/parameter/ShowProcessListParameterized.java b/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/parameter/ShowProcessListParameterized.java
index bb39ecb04aa..93e13005f4b 100644
--- a/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/parameter/ShowProcessListParameterized.java
+++ b/test/integration-test/showprocesslist/src/test/java/org/apache/shardingsphere/test/integration/showprocesslist/parameter/ShowProcessListParameterized.java
@@ -30,4 +30,6 @@ public final class ShowProcessListParameterized {
     private final DatabaseType databaseType;
     
     private final String scenario;
+    
+    private final String runMode;
 }
diff --git a/test/integration-test/showprocesslist/src/test/resources/env/it-env.properties b/test/integration-test/showprocesslist/src/test/resources/env/it-env.properties
index b13f19d1b55..d21a0b45a8d 100644
--- a/test/integration-test/showprocesslist/src/test/resources/env/it-env.properties
+++ b/test/integration-test/showprocesslist/src/test/resources/env/it-env.properties
@@ -19,3 +19,5 @@
 it.env.type=NONE
 # it.scenarios=cluster_jdbc_proxy
 it.scenarios=cluster_jdbc_proxy
+#it.run.modes=Standalone,Cluster
+it.run.modes=Standalone,Cluster