You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2022/11/29 13:06:11 UTC

[shardingsphere] branch master updated: Add SQLParserParameterizedArray (#22507)

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

sunnianjun 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 c1892ae3406 Add SQLParserParameterizedArray (#22507)
c1892ae3406 is described below

commit c1892ae3406244b2d91f60ea5590fb2f452cbd71
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Tue Nov 29 21:05:58 2022 +0800

    Add SQLParserParameterizedArray (#22507)
---
 ...ShardingSphereIntegrationTestParameterized.java |  4 +-
 .../DatabaseTypeParallelRunnerExecutorFactory.java | 44 ----------------------
 .../ParameterizedParallelRunnerScheduler.java      | 11 +++---
 .../parallel/impl/CaseParallelRunnerExecutor.java  |  7 +++-
 .../impl/ScenarioParallelRunnerExecutor.java       |  6 +++
 ...ere.test.runner.executor.ParallelRunnerExecutor | 19 ++++++++++
 .../test/runner/ParallelParameterized.java         |  4 +-
 .../runner/executor/ParallelRunnerExecutor.java    |  9 +++++
 ...tory.java => ParallelRunnerExecutorEngine.java} | 30 +++++++--------
 .../executor/ParallelRunnerExecutorFactory.java    | 39 ++++++++++++-------
 .../impl/DefaultParallelRunnerExecutor.java        |  6 +++
 .../runner/scheduler/ParallelRunnerScheduler.java  |  8 ++--
 ...ere.test.runner.executor.ParallelRunnerExecutor | 18 +++++++++
 13 files changed, 116 insertions(+), 89 deletions(-)

diff --git a/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/ShardingSphereIntegrationTestParameterized.java b/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/ShardingSphereIntegrationTestParameterized.java
index b7456868e3e..8fdb1e10271 100644
--- a/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/ShardingSphereIntegrationTestParameterized.java
+++ b/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/ShardingSphereIntegrationTestParameterized.java
@@ -19,9 +19,9 @@ package org.apache.shardingsphere.test.integration.framework.runner;
 
 import org.apache.shardingsphere.test.integration.env.runtime.IntegrationTestEnvironment;
 import org.apache.shardingsphere.test.integration.env.runtime.cluster.ClusterEnvironment;
-import org.apache.shardingsphere.test.integration.framework.runner.parallel.DatabaseTypeParallelRunnerExecutorFactory;
 import org.apache.shardingsphere.test.integration.framework.runner.parallel.ParameterizedParallelRunnerScheduler;
 import org.apache.shardingsphere.test.runner.ParallelRunningStrategy;
+import org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutorEngine;
 import org.junit.runners.Parameterized;
 
 /**
@@ -36,7 +36,7 @@ public final class ShardingSphereIntegrationTestParameterized extends Parameteri
         if (ClusterEnvironment.Type.DOCKER != IntegrationTestEnvironment.getInstance().getClusterEnvironment().getType()) {
             ParallelRunningStrategy parallelRunningStrategy = clazz.getAnnotation(ParallelRunningStrategy.class);
             if (null != parallelRunningStrategy) {
-                setScheduler(new ParameterizedParallelRunnerScheduler(parallelRunningStrategy.value(), new DatabaseTypeParallelRunnerExecutorFactory()));
+                setScheduler(new ParameterizedParallelRunnerScheduler(parallelRunningStrategy.value(), new ParallelRunnerExecutorEngine()));
             }
         }
     }
diff --git a/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/DatabaseTypeParallelRunnerExecutorFactory.java b/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/DatabaseTypeParallelRunnerExecutorFactory.java
deleted file mode 100644
index a34b3f733e3..00000000000
--- a/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/DatabaseTypeParallelRunnerExecutorFactory.java
+++ /dev/null
@@ -1,44 +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.test.integration.framework.runner.parallel;
-
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.test.integration.framework.runner.parallel.impl.CaseParallelRunnerExecutor;
-import org.apache.shardingsphere.test.integration.framework.runner.parallel.impl.ScenarioParallelRunnerExecutor;
-import org.apache.shardingsphere.test.runner.ParallelRunningStrategy.ParallelLevel;
-import org.apache.shardingsphere.test.runner.executor.impl.DefaultParallelRunnerExecutorFactory;
-import org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutor;
-
-/**
- * Database type parallel runner executor factory.
- */
-public final class DatabaseTypeParallelRunnerExecutorFactory extends DefaultParallelRunnerExecutorFactory<DatabaseType> {
-    
-    @Override
-    public ParallelRunnerExecutor newInstance(final ParallelLevel parallelLevel) {
-        switch (parallelLevel) {
-            case CASE:
-                return new CaseParallelRunnerExecutor();
-            case SCENARIO:
-                return new ScenarioParallelRunnerExecutor();
-            default:
-                throw new UnsupportedOperationException("Unsupported runtime strategy.");
-        }
-    }
-    
-}
diff --git a/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/ParameterizedParallelRunnerScheduler.java b/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/ParameterizedParallelRunnerScheduler.java
index b2be69368c8..d64e2a73f55 100644
--- a/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/ParameterizedParallelRunnerScheduler.java
+++ b/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/ParameterizedParallelRunnerScheduler.java
@@ -17,11 +17,10 @@
 
 package org.apache.shardingsphere.test.integration.framework.runner.parallel;
 
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.test.runner.param.RunnerParameters;
 import org.apache.shardingsphere.test.integration.framework.param.model.ITParameterizedArray;
 import org.apache.shardingsphere.test.runner.ParallelRunningStrategy.ParallelLevel;
-import org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutorFactory;
+import org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutorEngine;
+import org.apache.shardingsphere.test.runner.param.RunnerParameters;
 import org.apache.shardingsphere.test.runner.scheduler.ParallelRunnerScheduler;
 
 /**
@@ -29,13 +28,13 @@ import org.apache.shardingsphere.test.runner.scheduler.ParallelRunnerScheduler;
  */
 public final class ParameterizedParallelRunnerScheduler extends ParallelRunnerScheduler {
     
-    public ParameterizedParallelRunnerScheduler(final ParallelLevel parallelLevel, final ParallelRunnerExecutorFactory<DatabaseType> executorFactory) {
-        super(parallelLevel, executorFactory);
+    public ParameterizedParallelRunnerScheduler(final ParallelLevel parallelLevel, final ParallelRunnerExecutorEngine executorEngine) {
+        super(parallelLevel, executorEngine);
     }
     
     @Override
     public void schedule(final Runnable childStatement) {
         ITParameterizedArray parameterizedArray = (ITParameterizedArray) new RunnerParameters(childStatement).getParameterizedArray();
-        getExecutorFactory().getExecutor(parameterizedArray.getDatabaseType(), getParallelLevel()).execute(parameterizedArray, childStatement);
+        getExecutorEngine().getExecutor(parameterizedArray.getDatabaseType(), getParallelLevel()).execute(parameterizedArray, childStatement);
     }
 }
diff --git a/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/impl/CaseParallelRunnerExecutor.java b/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/impl/CaseParallelRunnerExecutor.java
index f804d2519df..5a47dc1c909 100644
--- a/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/impl/CaseParallelRunnerExecutor.java
+++ b/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/impl/CaseParallelRunnerExecutor.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.test.integration.framework.runner.parallel.impl;
 
 import org.apache.shardingsphere.test.integration.framework.param.model.ITParameterizedArray;
-
+import org.apache.shardingsphere.test.runner.ParallelRunningStrategy.ParallelLevel;
 import org.apache.shardingsphere.test.runner.executor.impl.DefaultParallelRunnerExecutor;
 
 /**
@@ -30,4 +30,9 @@ public final class CaseParallelRunnerExecutor extends DefaultParallelRunnerExecu
     public void execute(final ITParameterizedArray parameterizedArray, final Runnable childStatement) {
         execute(childStatement);
     }
+    
+    @Override
+    public ParallelLevel getParallelLevel() {
+        return ParallelLevel.CASE;
+    }
 }
diff --git a/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/impl/ScenarioParallelRunnerExecutor.java b/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/impl/ScenarioParallelRunnerExecutor.java
index 587303b08db..a29545a1ebb 100644
--- a/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/impl/ScenarioParallelRunnerExecutor.java
+++ b/test/integration-test/test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/runner/parallel/impl/ScenarioParallelRunnerExecutor.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.test.integration.framework.runner.parallel.imp
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import lombok.EqualsAndHashCode;
 import org.apache.shardingsphere.test.integration.framework.param.model.ITParameterizedArray;
+import org.apache.shardingsphere.test.runner.ParallelRunningStrategy.ParallelLevel;
 import org.apache.shardingsphere.test.runner.executor.impl.DefaultParallelRunnerExecutor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -45,6 +46,11 @@ public final class ScenarioParallelRunnerExecutor extends DefaultParallelRunnerE
         return getExecutorServiceMap().get(scenarioKey);
     }
     
+    @Override
+    public ParallelLevel getParallelLevel() {
+        return ParallelLevel.SCENARIO;
+    }
+    
     /**
      * Scenario key.
      */
diff --git a/test/integration-test/test-suite/src/test/resources/META-INF/services/org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutor b/test/integration-test/test-suite/src/test/resources/META-INF/services/org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutor
new file mode 100644
index 00000000000..09d270b9818
--- /dev/null
+++ b/test/integration-test/test-suite/src/test/resources/META-INF/services/org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutor
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+
+org.apache.shardingsphere.test.integration.framework.runner.parallel.impl.CaseParallelRunnerExecutor
+org.apache.shardingsphere.test.integration.framework.runner.parallel.impl.ScenarioParallelRunnerExecutor
diff --git a/test/runner/src/main/java/org/apache/shardingsphere/test/runner/ParallelParameterized.java b/test/runner/src/main/java/org/apache/shardingsphere/test/runner/ParallelParameterized.java
index c397c724356..664bfebfa52 100644
--- a/test/runner/src/main/java/org/apache/shardingsphere/test/runner/ParallelParameterized.java
+++ b/test/runner/src/main/java/org/apache/shardingsphere/test/runner/ParallelParameterized.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.test.runner;
 
 import org.apache.shardingsphere.test.runner.ParallelRunningStrategy.ParallelLevel;
-import org.apache.shardingsphere.test.runner.executor.impl.DefaultParallelRunnerExecutorFactory;
+import org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutorEngine;
 import org.apache.shardingsphere.test.runner.scheduler.ParallelRunnerScheduler;
 import org.junit.runners.Parameterized;
 
@@ -31,7 +31,7 @@ public final class ParallelParameterized extends Parameterized {
     public ParallelParameterized(final Class<?> clazz) throws Throwable {
         // CHECKSTYLE:ON
         super(clazz);
-        setScheduler(new ParallelRunnerScheduler(getParallelLevel(clazz), new DefaultParallelRunnerExecutorFactory<>()));
+        setScheduler(new ParallelRunnerScheduler(getParallelLevel(clazz), new ParallelRunnerExecutorEngine<>()));
     }
     
     private ParallelLevel getParallelLevel(final Class<?> clazz) {
diff --git a/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/ParallelRunnerExecutor.java b/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/ParallelRunnerExecutor.java
index 9dc4489307b..c7a1e774857 100644
--- a/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/ParallelRunnerExecutor.java
+++ b/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/ParallelRunnerExecutor.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.test.runner.executor;
 
+import org.apache.shardingsphere.test.runner.ParallelRunningStrategy.ParallelLevel;
+
 /**
  * Parallel runner executor.
  */
@@ -41,4 +43,11 @@ public interface ParallelRunnerExecutor<T> {
      * Override to implement any behavior that must occur after all children have been scheduled (for example, waiting for them all to finish).
      */
     void finished();
+    
+    /**
+     * Get parallel level.
+     * 
+     * @return parallel level
+     */
+    ParallelLevel getParallelLevel();
 }
diff --git a/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/impl/DefaultParallelRunnerExecutorFactory.java b/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/ParallelRunnerExecutorEngine.java
similarity index 62%
rename from test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/impl/DefaultParallelRunnerExecutorFactory.java
rename to test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/ParallelRunnerExecutorEngine.java
index 2caaf9aee84..53ad5aeed57 100644
--- a/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/impl/DefaultParallelRunnerExecutorFactory.java
+++ b/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/ParallelRunnerExecutorEngine.java
@@ -15,46 +15,44 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.runner.executor.impl;
+package org.apache.shardingsphere.test.runner.executor;
 
 import org.apache.shardingsphere.test.runner.ParallelRunningStrategy.ParallelLevel;
-import org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutor;
-import org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutorFactory;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
- * Default parallel runner executor factory.
+ * Parallel runner executor engine.
+ * 
+ * @param <T> key type which bind to executor
  */
-public class DefaultParallelRunnerExecutorFactory<T> implements ParallelRunnerExecutorFactory<T> {
+public final class ParallelRunnerExecutorEngine<T> {
     
     private final Map<T, ParallelRunnerExecutor> executors = new ConcurrentHashMap<>();
     
     /**
-     * Create executor instance by parallel level.
+     * Get executor.
      *
+     * @param key key bind to the executor
      * @param parallelLevel parallel level
-     * @return executor by parallel level
+     * @return got executor
      */
-    public ParallelRunnerExecutor newInstance(final ParallelLevel parallelLevel) {
-        return new DefaultParallelRunnerExecutor<>();
-    }
-    
-    @Override
-    public final ParallelRunnerExecutor getExecutor(final T key, final ParallelLevel parallelLevel) {
+    public ParallelRunnerExecutor getExecutor(final T key, final ParallelLevel parallelLevel) {
         if (executors.containsKey(key)) {
             return executors.get(key);
         }
-        ParallelRunnerExecutor newExecutor = newInstance(parallelLevel);
+        ParallelRunnerExecutor newExecutor = ParallelRunnerExecutorFactory.newInstance(parallelLevel);
         if (null != executors.putIfAbsent(key, newExecutor)) {
             newExecutor.finished();
         }
         return executors.get(key);
     }
     
-    @Override
-    public final void finishAllExecutors() {
+    /**
+     * Finish all executors.
+     */
+    public void finishAllExecutors() {
         executors.values().forEach(ParallelRunnerExecutor::finished);
     }
 }
diff --git a/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/ParallelRunnerExecutorFactory.java b/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/ParallelRunnerExecutorFactory.java
index b38ea7558d9..ae97e5d796b 100644
--- a/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/ParallelRunnerExecutorFactory.java
+++ b/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/ParallelRunnerExecutorFactory.java
@@ -17,26 +17,37 @@
 
 package org.apache.shardingsphere.test.runner.executor;
 
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import lombok.SneakyThrows;
 import org.apache.shardingsphere.test.runner.ParallelRunningStrategy.ParallelLevel;
 
+import java.util.HashMap;
+import java.util.Map;
+import java.util.ServiceLoader;
+
 /**
- * Parallel Runner Executor factory.
- * 
- * @param <T> key type which bind to executor
+ * Parallel runner executor factory.
  */
-public interface ParallelRunnerExecutorFactory<T> {
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class ParallelRunnerExecutorFactory {
     
-    /**
-     * Get executor.
-     *
-     * @param key key bind to the executor
-     * @param parallelLevel parallel level
-     * @return got executor
-     */
-    ParallelRunnerExecutor getExecutor(T key, ParallelLevel parallelLevel);
+    private static final Map<ParallelLevel, Class<? extends ParallelRunnerExecutor>> EXECUTORS = new HashMap<>();
+    
+    static {
+        for (ParallelRunnerExecutor each : ServiceLoader.load(ParallelRunnerExecutor.class)) {
+            EXECUTORS.put(each.getParallelLevel(), each.getClass());
+        }
+    }
     
     /**
-     * Finish all executors.
+     * Create new instance of parallel runner executor.
+     * 
+     * @param parallelLevel parallel level
+     * @return created instance
      */
-    void finishAllExecutors();
+    @SneakyThrows(ReflectiveOperationException.class)
+    public static ParallelRunnerExecutor newInstance(final ParallelLevel parallelLevel) {
+        return EXECUTORS.get(parallelLevel).getDeclaredConstructor().newInstance();
+    }
 }
diff --git a/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/impl/DefaultParallelRunnerExecutor.java b/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/impl/DefaultParallelRunnerExecutor.java
index 75ea7b61389..353258f6fa3 100644
--- a/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/impl/DefaultParallelRunnerExecutor.java
+++ b/test/runner/src/main/java/org/apache/shardingsphere/test/runner/executor/impl/DefaultParallelRunnerExecutor.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.test.runner.executor.impl;
 
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import lombok.Getter;
+import org.apache.shardingsphere.test.runner.ParallelRunningStrategy.ParallelLevel;
 import org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutor;
 import java.util.Collection;
 import java.util.LinkedList;
@@ -91,4 +92,9 @@ public class DefaultParallelRunnerExecutor<T> implements ParallelRunnerExecutor<
             defaultExecutorService.shutdownNow();
         }
     }
+    
+    @Override
+    public ParallelLevel getParallelLevel() {
+        return ParallelLevel.NORMAL;
+    }
 }
diff --git a/test/runner/src/main/java/org/apache/shardingsphere/test/runner/scheduler/ParallelRunnerScheduler.java b/test/runner/src/main/java/org/apache/shardingsphere/test/runner/scheduler/ParallelRunnerScheduler.java
index 2af350138fc..df8640daff6 100644
--- a/test/runner/src/main/java/org/apache/shardingsphere/test/runner/scheduler/ParallelRunnerScheduler.java
+++ b/test/runner/src/main/java/org/apache/shardingsphere/test/runner/scheduler/ParallelRunnerScheduler.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.test.runner.scheduler;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.test.runner.ParallelRunningStrategy.ParallelLevel;
-import org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutorFactory;
+import org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutorEngine;
 import org.junit.runners.model.RunnerScheduler;
 
 /**
@@ -32,15 +32,15 @@ public class ParallelRunnerScheduler implements RunnerScheduler {
     
     private final ParallelLevel parallelLevel;
     
-    private final ParallelRunnerExecutorFactory executorFactory;
+    private final ParallelRunnerExecutorEngine executorEngine;
     
     @Override
     public void schedule(final Runnable childStatement) {
-        executorFactory.getExecutor("", parallelLevel).execute(childStatement);
+        executorEngine.getExecutor("", parallelLevel).execute(childStatement);
     }
     
     @Override
     public final void finished() {
-        executorFactory.finishAllExecutors();
+        executorEngine.finishAllExecutors();
     }
 }
diff --git a/test/runner/src/main/resources/META-INF/services/org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutor b/test/runner/src/main/resources/META-INF/services/org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutor
new file mode 100644
index 00000000000..4b1ce068cdf
--- /dev/null
+++ b/test/runner/src/main/resources/META-INF/services/org.apache.shardingsphere.test.runner.executor.ParallelRunnerExecutor
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+org.apache.shardingsphere.test.runner.executor.impl.DefaultParallelRunnerExecutor