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(), ""));
}
}