From d8c2e7f7d749bd8cb88c38a5f6eb5576f374a477 Mon Sep 17 00:00:00 2001 From: korlov42 Date: Thu, 10 Dec 2020 12:56:36 +0300 Subject: [PATCH 1/2] test param refactoring --- .../exec/rel/AbstractExecutionTest.java | 50 +++++++++++++++---- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractExecutionTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractExecutionTest.java index f10f91f529502..11c204db5e131 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractExecutionTest.java +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractExecutionTest.java @@ -18,7 +18,6 @@ package org.apache.ignite.internal.processors.query.calcite.exec.rel; import java.util.ArrayDeque; -import java.util.ArrayList; import java.util.Deque; import java.util.HashMap; import java.util.List; @@ -31,6 +30,8 @@ import java.util.concurrent.locks.LockSupport; import java.util.stream.Collectors; import java.util.stream.IntStream; +import java.util.stream.Stream; + import com.google.common.collect.ImmutableMap; import org.apache.ignite.internal.GridKernalContext; import org.apache.ignite.internal.processors.query.calcite.exec.ArrayRowHandler; @@ -82,20 +83,48 @@ public class AbstractExecutionTest extends GridCommonAbstractTest { protected int nodesCnt = 3; /** */ - @Parameterized.Parameters(name = "Execution direction = {0}") - public static List parameters() { - ArrayList params = new ArrayList<>(); + enum ExecutionStrategy { + /** */ + FIFO { + @Override public T2 nextTask(Deque> tasks) { + return tasks.pollFirst(); + } + }, - params.add(new Object[]{true}); - params.add(new Object[]{false}); - params.add(new Object[]{null}); + /** */ + LIFO { + @Override public T2 nextTask(Deque> tasks) { + return tasks.pollLast(); + } + }, - return params; + /** */ + RANDOM { + @Override public T2 nextTask(Deque> tasks) { + return ThreadLocalRandom.current().nextBoolean() ? tasks.pollLast() : tasks.pollFirst(); + } + }; + + /** + * Returns next task acoording to the strategy. + * + * @param tasks Task list. + * @return Next task. + */ + public T2 nextTask(Deque> tasks) { + throw new UnsupportedOperationException(); + } + } + + /** */ + @Parameterized.Parameters(name = "Execution strategy = {0}") + public static List parameters() { + return Stream.of(ExecutionStrategy.values()).map(s -> new Object[]{s}).collect(Collectors.toList()); } /** Execution direction. */ @Parameterized.Parameter - public static Boolean execDir; + public static ExecutionStrategy execStgy; /** */ @Before @@ -161,8 +190,7 @@ public IgniteTestStripedThreadPoolExecutor(int concurrentLvl, String igniteInsta while (!stop.get()) { synchronized (tasks) { while (!tasks.isEmpty()) { - T2 r = execDir != null ? (execDir ? tasks.pollLast() : tasks.pollFirst()) : - ThreadLocalRandom.current().nextBoolean() ? tasks.pollLast() : tasks.pollFirst(); + T2 r = execStgy.nextTask(tasks); exec.execute(() -> super.execute(r.getKey(), r.getValue())); } From 37dc2bb6cb20abe7c9b9977ead37a1169968992e Mon Sep 17 00:00:00 2001 From: korlov42 Date: Thu, 10 Dec 2020 12:59:32 +0300 Subject: [PATCH 2/2] fix typo --- .../query/calcite/exec/rel/AbstractExecutionTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractExecutionTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractExecutionTest.java index 11c204db5e131..6f71c884220ea 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractExecutionTest.java +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractExecutionTest.java @@ -106,7 +106,7 @@ enum ExecutionStrategy { }; /** - * Returns next task acoording to the strategy. + * Returns a next task according to the strategy. * * @param tasks Task list. * @return Next task.