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 2021/02/19 05:56:41 UTC

[shardingsphere] branch master updated: Rename ITParameterized (#9433)

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

zhangyonglun 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 ecf04be  Rename ITParameterized (#9433)
ecf04be is described below

commit ecf04bef123ce9eb8b249341a7b799c2acb03654
Author: Liang Zhang <te...@163.com>
AuthorDate: Fri Feb 19 13:56:06 2021 +0800

    Rename ITParameterized (#9433)
    
    * Refactor ITRunnerScheduler
    
    * Refactor ITRunnerScheduler.getRunnerExecutors
    
    * Refactor ITRunnerScheduler.getRunnerExecutors
    
    * Refactor ITRunnerScheduler.getRunnerExecutors
    
    * Rename ITParameterized
---
 .../test/integration/engine/it/BaseIT.java         |  4 +-
 ...llelParameterized.java => ITParameterized.java} | 10 ++---
 .../engine/junit/ITRunnerScheduler.java            | 52 +++++++++++++---------
 3 files changed, 35 insertions(+), 31 deletions(-)

diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/BaseIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/BaseIT.java
index 58b90c1..6e07d6c 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/BaseIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/BaseIT.java
@@ -22,7 +22,7 @@ import lombok.Getter;
 import org.apache.shardingsphere.driver.api.yaml.YamlShardingSphereDataSourceFactory;
 import org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.test.integration.engine.junit.ParallelParameterized;
+import org.apache.shardingsphere.test.integration.engine.junit.ITParameterized;
 import org.apache.shardingsphere.test.integration.env.EnvironmentPath;
 import org.apache.shardingsphere.test.integration.env.EnvironmentType;
 import org.apache.shardingsphere.test.integration.env.IntegrationTestEnvironment;
@@ -41,7 +41,7 @@ import java.sql.SQLException;
 import java.util.Map;
 import java.util.TimeZone;
 
-@RunWith(ParallelParameterized.class)
+@RunWith(ITParameterized.class)
 @Getter(AccessLevel.PROTECTED)
 public abstract class BaseIT {
     
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/junit/ParallelParameterized.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/junit/ITParameterized.java
similarity index 81%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/junit/ParallelParameterized.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/junit/ITParameterized.java
index 20943c3..d0b3cf9 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/junit/ParallelParameterized.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/junit/ITParameterized.java
@@ -20,16 +20,12 @@ package org.apache.shardingsphere.test.integration.engine.junit;
 import org.junit.runners.Parameterized;
 
 /**
- * Parallel parameterized.
- * 
- * <p>
- *     Reflective call only, do not use programmatically.
- * </p>
+ * Integration test parameterized.
  */
-public final class ParallelParameterized extends Parameterized {
+public final class ITParameterized extends Parameterized {
     
     //CHECKSTYLE:OFF
-    public ParallelParameterized(final Class<?> klass) throws Throwable {
+    public ITParameterized(final Class<?> klass) throws Throwable {
         //CHECKSTYLE:ON
         super(klass);
         setScheduler(new ITRunnerScheduler());
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/junit/ITRunnerScheduler.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/junit/ITRunnerScheduler.java
index 36564aa2..95a4782 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/junit/ITRunnerScheduler.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/junit/ITRunnerScheduler.java
@@ -41,56 +41,64 @@ public final class ITRunnerScheduler implements RunnerScheduler {
     
     private final Field parametersField;
     
-    private volatile Field runnerField;
-    
     private final Map<String, ITRunnerExecutor> runnerExecutors;
     
-    @SneakyThrows
+    private volatile Field runnerField;
+    
     public ITRunnerScheduler() {
-        parametersField = BlockJUnit4ClassRunnerWithParameters.class.getDeclaredField("parameters");
-        parametersField.setAccessible(true);
-        runnerExecutors = new HashMap<>();
-        initRunnerExecutors();
+        parametersField = getParametersField();
+        runnerExecutors = getITRunnerExecutors();
+    }
+    
+    @SneakyThrows(NoSuchFieldException.class)
+    private Field getParametersField() {
+        Field result = BlockJUnit4ClassRunnerWithParameters.class.getDeclaredField("parameters");
+        result.setAccessible(true);
+        return result;
     }
     
-    private void initRunnerExecutors() {
+    private Map<String, ITRunnerExecutor> getITRunnerExecutors() {
+        Map<String, ITRunnerExecutor> result = new HashMap<>(IntegrationTestEnvironment.getInstance().getDataSourceEnvironments().size() * 3, 1);
         for (DatabaseType each : IntegrationTestEnvironment.getInstance().getDataSourceEnvironments().keySet()) {
-            runnerExecutors.put(getRunnerExecutorKey(each.getName(), SQLCommandType.DQL.name()), new ITRunnerParallelExecutor());
+            result.put(getITRunnerExecutorKey(each.getName(), SQLCommandType.DQL.name()), new ITRunnerParallelExecutor());
             if (each instanceof PostgreSQLDatabaseType) {
-                runnerExecutors.put(getRunnerExecutorKey(each.getName(), SQLCommandType.DDL.name()), new ITRunnerSerialExecutor());
+                result.put(getITRunnerExecutorKey(each.getName(), SQLCommandType.DDL.name()), new ITRunnerSerialExecutor());
             } else {
-                runnerExecutors.put(getRunnerExecutorKey(each.getName(), SQLCommandType.DDL.name()), new ITRunnerScenariosExecutor());
+                result.put(getITRunnerExecutorKey(each.getName(), SQLCommandType.DDL.name()), new ITRunnerScenariosExecutor());
             }
-            runnerExecutors.put(getRunnerExecutorKey(each.getName(), ""), new ITRunnerScenariosExecutor());
+            result.put(getITRunnerExecutorKey(each.getName(), ""), new ITRunnerScenariosExecutor());
         }
+        return result;
     }
     
-    private String getRunnerExecutorKey(final String databaseType, final String sqlCommandType) {
+    private String getITRunnerExecutorKey(final String databaseType, final String sqlCommandType) {
         return String.join("_", databaseType, sqlCommandType);
     }
     
-    @SneakyThrows
     @Override
     public void schedule(final Runnable childStatement) {
-        // TODO Gets the parameters of the Runnable closure
+        Object[] parameters = getITParameters(childStatement);
+        ParameterizedArray parameterizedArray = (ParameterizedArray) parameters[0];
+        getITRunnerExecutor(parameterizedArray).execute(parameterizedArray, childStatement);
+    }
+    
+    @SneakyThrows(ReflectiveOperationException.class)
+    private Object[] getITParameters(final Runnable childStatement) {
         if (null == runnerField) {
             runnerField = childStatement.getClass().getDeclaredField("val$each");
             runnerField.setAccessible(true);
         }
-        BlockJUnit4ClassRunnerWithParameters runner = (BlockJUnit4ClassRunnerWithParameters) runnerField.get(childStatement);
-        Object[] parameters = (Object[]) parametersField.get(runner);
-        ParameterizedArray parameterizedArray = (ParameterizedArray) parameters[0];
-        getITRunnerExecutor(parameterizedArray).execute(parameterizedArray, childStatement);
+        return (Object[]) parametersField.get(runnerField.get(childStatement));
     }
     
     private ITRunnerExecutor getITRunnerExecutor(final ParameterizedArray parameterizedArray) {
         switch (parameterizedArray.getSqlCommandType()) {
             case DQL:
-                return runnerExecutors.get(getRunnerExecutorKey(parameterizedArray.getDatabaseType().getName(), SQLCommandType.DQL.name()));
+                return runnerExecutors.get(getITRunnerExecutorKey(parameterizedArray.getDatabaseType().getName(), SQLCommandType.DQL.name()));
             case DDL:
-                return runnerExecutors.get(getRunnerExecutorKey(parameterizedArray.getDatabaseType().getName(), SQLCommandType.DDL.name()));
+                return runnerExecutors.get(getITRunnerExecutorKey(parameterizedArray.getDatabaseType().getName(), SQLCommandType.DDL.name()));
             default:
-                return runnerExecutors.get(getRunnerExecutorKey(parameterizedArray.getDatabaseType().getName(), ""));
+                return runnerExecutors.get(getITRunnerExecutorKey(parameterizedArray.getDatabaseType().getName(), ""));
         }
     }