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

panjuan 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 f36e35e  Wait env prepared with JDBC adapter if using docker (#9049)
f36e35e is described below

commit f36e35e463da035ce4e830fa3e22c548a5a472e1
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jan 15 19:39:23 2021 +0800

    Wait env prepared with JDBC adapter if using docker (#9049)
    
    * For test
    
    * For test
    
    * For test
    
    * For test
    
    * Wait env prepared with JDBC adapter if using docker
    
    * Revert test
    
    * Remove useless -D param
    
    * Reduce proxy ready detection times
---
 .github/workflows/it.yml                           | 16 +++++-----
 .../test-engine/integration-test-engine.en.md      |  2 +-
 .../env/IntegrationTestEnvironment.java            | 34 +++++++++++-----------
 3 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/.github/workflows/it.yml b/.github/workflows/it.yml
index e38606c..aa0d5ba 100644
--- a/.github/workflows/it.yml
+++ b/.github/workflows/it.yml
@@ -43,7 +43,7 @@ jobs:
       - name: Build Project
         run: ./mvnw -B clean install -Dmaven.javadoc.skip=true -Drat.skip=true 
-Djacoco.skip=true -DskipITs
       - name: Run Integration Test
-        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=proxy -Dit.scenarios=db -Dit.databases=MySQL 
-Dit.mysql.host=127.0.0.1 -Dit.mysql.port=33060
+        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=proxy -Dit.scenarios=db -Dit.databases=MySQL
   
   mysql-proxy-tbl:
     name: MySQL-Proxy with TBL
@@ -64,7 +64,7 @@ jobs:
       - name: Build Project
         run: ./mvnw -B clean install -Dmaven.javadoc.skip=true -Drat.skip=true 
-Djacoco.skip=true -DskipITs
       - name: Run Integration Test
-        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=proxy -Dit.scenarios=tbl -Dit.databases=MySQL 
-Dit.mysql.host=127.0.0.1 -Dit.mysql.port=33160
+        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=proxy -Dit.scenarios=tbl -Dit.databases=MySQL
   
   mysql-proxy-repilca-query:
     name: MySQL-Proxy with REPLICA-QUERY
@@ -85,7 +85,7 @@ jobs:
       - name: Build Project
         run: ./mvnw -B clean install -Dmaven.javadoc.skip=true -Drat.skip=true 
-Djacoco.skip=true -DskipITs
       - name: Run Integration Test
-        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=proxy -Dit.scenarios=replica_query -Dit.databases=MySQL 
-Dit.mysql.host=127.0.0.1 -Dit.mysql.port=33260
+        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=proxy -Dit.scenarios=replica_query -Dit.databases=MySQL
   
   mysql-proxy-dbtbl-with-proxy-repilca-query:
     name: MySQL-Proxy with DBTBL-WITH-REPLICA-QUERY
@@ -106,7 +106,7 @@ jobs:
       - name: Build Project
         run: ./mvnw -B clean install -Dmaven.javadoc.skip=true -Drat.skip=true 
-Djacoco.skip=true -DskipITs
       - name: Run Integration Test
-        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=proxy -Dit.scenarios=dbtbl_with_replica_query 
-Dit.databases=MySQL -Dit.mysql.host=127.0.0.1 -Dit.mysql.port=33360
+        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=proxy -Dit.scenarios=dbtbl_with_replica_query -Dit.databases=MySQL
   
   mysql-jdbc-db:
     name: MySQL-JDBC with DB
@@ -127,7 +127,7 @@ jobs:
       - name: Build Project
         run: ./mvnw -B clean install -Dmaven.javadoc.skip=true -Drat.skip=true 
-Djacoco.skip=true -DskipITs
       - name: Run Integration Test
-        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=jdbc -Dit.scenarios=db -Dit.databases=MySQL 
-Dit.mysql.host=127.0.0.1 -Dit.mysql.port=33060
+        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=jdbc -Dit.scenarios=db -Dit.databases=MySQL
   
   mysql-jdbc-tbl:
     name: MySQL-JDBC with TBL
@@ -148,7 +148,7 @@ jobs:
       - name: Build Project
         run: ./mvnw -B clean install -Dmaven.javadoc.skip=true -Drat.skip=true 
-Djacoco.skip=true -DskipITs
       - name: Run Integration Test
-        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=jdbc -Dit.scenarios=tbl -Dit.databases=MySQL 
-Dit.mysql.host=127.0.0.1 -Dit.mysql.port=33160
+        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=jdbc -Dit.scenarios=tbl -Dit.databases=MySQL
   
   mysql-jdbc-repilca-query:
     name: MySQL-JDBC with REPLICA-QUERY
@@ -169,7 +169,7 @@ jobs:
       - name: Build Project
         run: ./mvnw -B clean install -Dmaven.javadoc.skip=true -Drat.skip=true 
-Djacoco.skip=true -DskipITs
       - name: Run Integration Test
-        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=jdbc -Dit.scenarios=replica_query -Dit.databases=MySQL 
-Dit.mysql.host=127.0.0.1 -Dit.mysql.port=33260
+        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=jdbc -Dit.scenarios=replica_query -Dit.databases=MySQL
   
   mysql-jdbc-dbtbl-with-proxy-repilca-query:
     name: MySQL-JDBC with DBTBL-WITH-REPLICA-QUERY
@@ -190,4 +190,4 @@ jobs:
       - name: Build Project
         run: ./mvnw -B clean install -Dmaven.javadoc.skip=true -Drat.skip=true 
-Djacoco.skip=true -DskipITs
       - name: Run Integration Test
-        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=jdbc -Dit.scenarios=dbtbl_with_replica_query -Dit.databases=MySQL 
-Dit.mysql.host=127.0.0.1 -Dit.mysql.port=33360
+        run: ./mvnw -B clean install -f 
shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker 
-Dit.adapters=jdbc -Dit.scenarios=dbtbl_with_replica_query -Dit.databases=MySQL
diff --git 
a/docs/document/content/features/test-engine/integration-test-engine.en.md 
b/docs/document/content/features/test-engine/integration-test-engine.en.md
index 851d8b1..b0edc56 100644
--- a/docs/document/content/features/test-engine/integration-test-engine.en.md
+++ b/docs/document/content/features/test-engine/integration-test-engine.en.md
@@ -32,7 +32,7 @@ Firstly, setup configuration file 
`/shardingsphere-integration-test-suite/src/te
 it.run.additional.cases=false
 
 # test scenarios, could define multiple rules
-it.scenarios=db,tbl,dbtbl_with_replica_query_,replica_query_
+it.scenarios=db,tbl,dbtbl_with_replica_query,replica_query
 
 # database type, could define multiple 
databases(H2,MySQL,Oracle,SQLServer,PostgreSQL)
 it.databases=MySQL,PostgreSQL
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/IntegrationTestEnvironment.java
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/IntegrationTestEnvironment.java
index 7e7c981..beabbae 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/IntegrationTestEnvironment.java
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/IntegrationTestEnvironment.java
@@ -67,6 +67,11 @@ public final class IntegrationTestEnvironment {
         Map<String, DatabaseScenarioProperties> databaseProps = 
getDatabaseScenarioProperties();
         databaseEnvironments = 
createDatabaseEnvironments(getDatabaseTypes(engineEnvProps), databaseProps);
         proxyEnvironments = createProxyEnvironments(databaseProps);
+        if (isEnvironmentPrepared) {
+            for (String each : scenarios) {
+                waitForEnvironmentReady(each);
+            }
+        }
     }
     
     private Collection<String> getScenarios(final Properties engineEnvProps) {
@@ -122,21 +127,7 @@ public final class IntegrationTestEnvironment {
         return new DatabaseEnvironment(new MySQLDatabaseType(), 
databaseProps.getProxyHost(), databaseProps.getProxyPort(), 
databaseProps.getProxyUsername(), databaseProps.getProxyPassword());
     }
     
-    /**
-     * Get instance.
-     *
-     * @return singleton instance
-     */
-    public static IntegrationTestEnvironment getInstance() {
-        if (INSTANCE.adapters.contains("proxy")) {
-            for (String each : INSTANCE.scenarios) {
-                waitForProxyReady(each);
-            }
-        }
-        return INSTANCE;
-    }
-    
-    private static void waitForProxyReady(final String scenario) {
+    private void waitForEnvironmentReady(final String scenario) {
         int retryCount = 0;
         while (!isProxyReady(scenario) && retryCount < 30) {
             try {
@@ -148,8 +139,8 @@ public final class IntegrationTestEnvironment {
     }
     
     @SuppressWarnings("CallToDriverManagerGetConnection")
-    private static boolean isProxyReady(final String scenario) {
-        DatabaseEnvironment dbEnv = INSTANCE.proxyEnvironments.get(scenario);
+    private boolean isProxyReady(final String scenario) {
+        DatabaseEnvironment dbEnv = proxyEnvironments.get(scenario);
         try (Connection connection = 
DriverManager.getConnection(dbEnv.getURL(scenario), dbEnv.getUsername(), 
dbEnv.getPassword());
              Statement statement = connection.createStatement()) {
             statement.execute("SELECT 1");
@@ -158,4 +149,13 @@ public final class IntegrationTestEnvironment {
         }
         return true;
     }
+    
+    /**
+     * Get instance.
+     *
+     * @return singleton instance
+     */
+    public static IntegrationTestEnvironment getInstance() {
+        return INSTANCE;
+    }
 }

Reply via email to