This is an automated email from the ASF dual-hosted git repository.
apkhmv pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 91dbe869b2 IGNITE-18784 Fix tests for Windows (#2527)
91dbe869b2 is described below
commit 91dbe869b2f263e54ed3b4feeec32c55c0ba00e0
Author: Mikhail <[email protected]>
AuthorDate: Tue Sep 5 14:30:15 2023 +0300
IGNITE-18784 Fix tests for Windows (#2527)
---
.../AbstractClusterStateStorageManagerTest.java | 11 +++++---
.../RocksDbClusterStateStorageManagerTest.java | 4 ---
.../compute/loader/JobClassLoaderFactoryTest.java | 13 +++++----
.../compute/loader/JobContextManagerTest.java | 3 ++-
.../internal/testframework/IgniteTestUtils.java | 6 ++---
.../apache/ignite/raft/jraft/core/ItNodeTest.java | 3 ---
.../ItNodeBootstrapConfigurationTest.java | 2 +-
.../sql/engine/exec/rel/AbstractExecutionTest.java | 13 ++++++++-
.../sql/engine/exec/rel/ExecutionTest.java | 9 ++++++-
.../internal/sql/engine/planner/PlannerTest.java | 31 ++++++++++------------
10 files changed, 54 insertions(+), 41 deletions(-)
diff --git
a/modules/cluster-management/src/test/java/org/apache/ignite/internal/cluster/management/raft/AbstractClusterStateStorageManagerTest.java
b/modules/cluster-management/src/test/java/org/apache/ignite/internal/cluster/management/raft/AbstractClusterStateStorageManagerTest.java
index 06e0c8e39e..c43d225cad 100644
---
a/modules/cluster-management/src/test/java/org/apache/ignite/internal/cluster/management/raft/AbstractClusterStateStorageManagerTest.java
+++
b/modules/cluster-management/src/test/java/org/apache/ignite/internal/cluster/management/raft/AbstractClusterStateStorageManagerTest.java
@@ -25,6 +25,8 @@ import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
+import java.io.IOException;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Set;
@@ -108,7 +110,7 @@ public abstract class
AbstractClusterStateStorageManagerTest {
* Tests the snapshot-related methods.
*/
@Test
- void testSnapshot() {
+ void testSnapshot() throws IOException {
ClusterTag clusterTag1 = clusterTag(msgFactory, "cluster");
var state = msgFactory.clusterState()
.cmgNodes(Set.copyOf(List.of("foo", "bar")))
@@ -119,7 +121,10 @@ public abstract class
AbstractClusterStateStorageManagerTest {
storageManager.putClusterState(state);
- assertThat(storageManager.snapshot(workDir),
willCompleteSuccessfully());
+ Path snapshotDir = workDir.resolve("snapshot");
+ Files.createDirectory(snapshotDir);
+
+ assertThat(storageManager.snapshot(snapshotDir),
willCompleteSuccessfully());
IgniteProductVersion igniteVersion =
IgniteProductVersion.fromString("3.3.3");
ClusterTag clusterTag = clusterTag(msgFactory, "new_cluster");
@@ -134,7 +139,7 @@ public abstract class
AbstractClusterStateStorageManagerTest {
new ClusterNodeImpl("nonono", "nononono", new
NetworkAddress("localhost", 123));
- storageManager.restoreSnapshot(workDir);
+ storageManager.restoreSnapshot(snapshotDir);
assertThat(storageManager.getClusterState(), is(equalTo(state)));
}
diff --git
a/modules/cluster-management/src/test/java/org/apache/ignite/internal/cluster/management/raft/RocksDbClusterStateStorageManagerTest.java
b/modules/cluster-management/src/test/java/org/apache/ignite/internal/cluster/management/raft/RocksDbClusterStateStorageManagerTest.java
index 95646969e1..7da6769ee9 100644
---
a/modules/cluster-management/src/test/java/org/apache/ignite/internal/cluster/management/raft/RocksDbClusterStateStorageManagerTest.java
+++
b/modules/cluster-management/src/test/java/org/apache/ignite/internal/cluster/management/raft/RocksDbClusterStateStorageManagerTest.java
@@ -17,13 +17,9 @@
package org.apache.ignite.internal.cluster.management.raft;
-import org.junit.jupiter.api.condition.DisabledOnOs;
-import org.junit.jupiter.api.condition.OS;
-
/**
* Tests for {@link RaftStorageManager} based on {@link
RocksDbClusterStateStorage}.
*/
-@DisabledOnOs(value = OS.WINDOWS, disabledReason =
"https://issues.apache.org/jira/browse/IGNITE-17601")
public class RocksDbClusterStateStorageManagerTest extends
AbstractClusterStateStorageManagerTest {
@Override
ClusterStateStorage clusterStateStorage() {
diff --git
a/modules/compute/src/test/java/org/apache/ignite/internal/compute/loader/JobClassLoaderFactoryTest.java
b/modules/compute/src/test/java/org/apache/ignite/internal/compute/loader/JobClassLoaderFactoryTest.java
index 1f1edb5320..37eb84b2cb 100644
---
a/modules/compute/src/test/java/org/apache/ignite/internal/compute/loader/JobClassLoaderFactoryTest.java
+++
b/modules/compute/src/test/java/org/apache/ignite/internal/compute/loader/JobClassLoaderFactoryTest.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.compute.loader;
+import static org.apache.ignite.internal.testframework.IgniteTestUtils.getPath;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertSame;
@@ -40,7 +41,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
class JobClassLoaderFactoryTest extends BaseIgniteAbstractTest {
- private final Path unitsDir =
Path.of(JobClassLoaderFactory.class.getClassLoader().getResource("units").getPath());
+ private final Path unitsDir =
getPath(JobClassLoaderFactory.class.getClassLoader().getResource("units"));
private final JobClassLoaderFactory jobClassLoaderFactory = new
JobClassLoaderFactory();
@@ -154,18 +155,16 @@ class JobClassLoaderFactoryTest extends
BaseIgniteAbstractTest {
@DisplayName("Load resource from unit directory")
public void unit1_5_0_0() throws IOException {
- String resourcePath = JobClassLoaderFactoryTest.class.getClassLoader()
- .getResource("units/unit1/5.0.0/test.txt")
- .getPath();
- String expectedContent = Files.readString(Path.of(resourcePath));
+ Path resourcePath = unitsDir.resolve("unit1/5.0.0/test.txt");
+ String expectedContent = Files.readString(resourcePath);
// when unit with files is loaded
List<DisposableDeploymentUnit> units = toDisposableDeploymentUnits(new
DeploymentUnit("unit1", "5.0.0"));
// then the files are accessible
try (JobClassLoader classLoader =
jobClassLoaderFactory.createClassLoader(units)) {
- String resource =
Files.readString(Path.of(classLoader.getResource("test.txt").getPath()));
- String subDirResource =
Files.readString(Path.of(classLoader.getResource("subdir/test.txt").getPath()));
+ String resource =
Files.readString(getPath(classLoader.getResource("test.txt")));
+ String subDirResource =
Files.readString(getPath(classLoader.getResource("subdir/test.txt")));
assertEquals(expectedContent, resource);
assertEquals(expectedContent, subDirResource);
diff --git
a/modules/compute/src/test/java/org/apache/ignite/internal/compute/loader/JobContextManagerTest.java
b/modules/compute/src/test/java/org/apache/ignite/internal/compute/loader/JobContextManagerTest.java
index de78e698f7..06de97fa2a 100644
---
a/modules/compute/src/test/java/org/apache/ignite/internal/compute/loader/JobContextManagerTest.java
+++
b/modules/compute/src/test/java/org/apache/ignite/internal/compute/loader/JobContextManagerTest.java
@@ -21,6 +21,7 @@ import static
java.util.concurrent.CompletableFuture.completedFuture;
import static org.apache.ignite.compute.version.Version.LATEST;
import static org.apache.ignite.internal.deployunit.DeploymentStatus.OBSOLETE;
import static org.apache.ignite.internal.deployunit.DeploymentStatus.REMOVING;
+import static org.apache.ignite.internal.testframework.IgniteTestUtils.getPath;
import static
org.apache.ignite.internal.testframework.matchers.CompletableFutureExceptionMatcher.willThrowFast;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertSame;
@@ -60,7 +61,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
class JobContextManagerTest extends BaseIgniteAbstractTest {
- private final Path unitsDir =
Path.of(JobClassLoaderFactory.class.getClassLoader().getResource("units").getPath());
+ private final Path unitsDir =
getPath(JobClassLoaderFactory.class.getClassLoader().getResource("units"));
@Spy
private IgniteDeployment deployment = new DummyIgniteDeployment(unitsDir);
diff --git
a/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/IgniteTestUtils.java
b/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/IgniteTestUtils.java
index c21b6e70e9..a3d5f96290 100644
---
a/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/IgniteTestUtils.java
+++
b/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/IgniteTestUtils.java
@@ -832,7 +832,7 @@ public final class IgniteTestUtils {
* @return A file system path matching the path component of the resource
URL.
*/
public static String getResourcePath(Class<?> cls, String resourceName) {
- return getPath(cls.getClassLoader().getResource(resourceName));
+ return
getPath(cls.getClassLoader().getResource(resourceName)).toString();
}
/**
@@ -853,9 +853,9 @@ public final class IgniteTestUtils {
* @param url A resource URL.
* @return A file system path matching the path component of the URL.
*/
- public static String getPath(URL url) {
+ public static Path getPath(URL url) {
try {
- return Path.of(url.toURI()).toString();
+ return Path.of(url.toURI());
} catch (URISyntaxException e) {
throw new RuntimeException(e); // Shouldn't happen if the URL is
obtained from the class loader.
}
diff --git
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/jraft/core/ItNodeTest.java
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/jraft/core/ItNodeTest.java
index e228be7472..61eb954321 100644
---
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/jraft/core/ItNodeTest.java
+++
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/jraft/core/ItNodeTest.java
@@ -133,8 +133,6 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
-import org.junit.jupiter.api.condition.DisabledOnOs;
-import org.junit.jupiter.api.condition.OS;
import org.junit.jupiter.api.extension.ExtendWith;
/**
@@ -1771,7 +1769,6 @@ public class ItNodeTest extends BaseIgniteAbstractTest {
}
@Test
- @DisabledOnOs(value = OS.WINDOWS, disabledReason =
"https://issues.apache.org/jira/browse/IGNITE-17601")
public void testSetPeer2() throws Exception {
List<TestPeer> peers = TestUtils.generatePeers(testInfo, 3);
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItNodeBootstrapConfigurationTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItNodeBootstrapConfigurationTest.java
index 675c08133c..ff1d2f6ade 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItNodeBootstrapConfigurationTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItNodeBootstrapConfigurationTest.java
@@ -56,7 +56,7 @@ public class ItNodeBootstrapConfigurationTest {
assertThat(igniteException.getCause(),
is(instanceOf(NodeConfigParseException.class)));
assertThat(
igniteException.getCause().getMessage(),
- containsString("Failed to parse config content from file " +
workDir + "/ignite-config.conf")
+ containsString("Failed to parse config content from file " +
workDir.resolve(TestIgnitionManager.DEFAULT_CONFIG_NAME))
);
}
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/AbstractExecutionTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/AbstractExecutionTest.java
index 2b2670b423..5dddf6e991 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/AbstractExecutionTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/AbstractExecutionTest.java
@@ -33,6 +33,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.LockSupport;
import java.util.function.Function;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rel.type.RelDataTypeField;
import org.apache.ignite.internal.sql.engine.exec.ArrayRowHandler;
@@ -96,6 +97,14 @@ public abstract class AbstractExecutionTest extends
IgniteAbstractTest {
new LogUncaughtExceptionHandler(log),
false,
0);
+
+ StripedThreadPoolExecutor stripedThreadPoolExecutor =
(StripedThreadPoolExecutor) IgniteTestUtils.getFieldValue(
+ taskExecutor,
+ QueryTaskExecutorImpl.class,
+ "stripedThreadPoolExecutor"
+ );
+ stripedThreadPoolExecutor.shutdown();
+
IgniteTestUtils.setFieldValue(taskExecutor,
"stripedThreadPoolExecutor", testExecutor);
}
@@ -184,6 +193,7 @@ public abstract class AbstractExecutionTest extends
IgniteAbstractTest {
@Override public void shutdown() {
stop.set(true);
+ exec.shutdown();
fut.cancel(true);
super.shutdown();
@@ -193,9 +203,10 @@ public abstract class AbstractExecutionTest extends
IgniteAbstractTest {
@Override public List<Runnable> shutdownNow() {
stop.set(true);
+ List<Runnable> runnables = exec.shutdownNow();
fut.cancel(true);
- return super.shutdownNow();
+ return Stream.concat(runnables.stream(),
super.shutdownNow().stream()).collect(Collectors.toList());
}
}
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/ExecutionTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/ExecutionTest.java
index e5316694eb..78fab094fe 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/ExecutionTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/ExecutionTest.java
@@ -63,7 +63,6 @@ import org.junit.jupiter.params.provider.MethodSource;
* ExecutionTest.
* TODO Documentation https://issues.apache.org/jira/browse/IGNITE-15859
*/
-@DisabledOnOs(value = OS.WINDOWS, disabledReason =
"https://issues.apache.org/jira/browse/IGNITE-17601")
public class ExecutionTest extends AbstractExecutionTest {
@Test
public void testSimpleExecution() {
@@ -462,6 +461,14 @@ public class ExecutionTest extends AbstractExecutionTest {
*/
@ParameterizedTest
@MethodSource("provideArgumentsForCnlJtest")
+ @DisabledOnOs(value = OS.WINDOWS, disabledReason =
+ "This test uses
AbstractExecutionTest.IgniteTestStripedThreadPoolExecutor"
+ + "which use LockSupport.parkNanos as way to sleep with
nanotime to emulate different JVM pauses or another cases."
+ + "Windows doesn't support park() with nanos argument,"
+ + " see
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/hotspot/os/windows/os_windows.cpp#L5228C59-L5228C59"
+ + "So, as described above Windows OS doesn't support
nanotime park "
+ + "without additional manipulation (different hacks via
JNI)."
+ )
public void testCorrelatedNestedLoopJoin(int leftSize, int rightSize, int
rightBufSize, JoinRelType joinType) {
ExecutionContext<Object[]> ctx = executionContext(true);
IgniteTypeFactory tf = ctx.getTypeFactory();
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/PlannerTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/PlannerTest.java
index 399d242f41..6f77d2d849 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/PlannerTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/PlannerTest.java
@@ -70,14 +70,11 @@ import org.apache.ignite.network.ClusterNode;
import org.jetbrains.annotations.Nullable;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.DisabledOnOs;
-import org.junit.jupiter.api.condition.OS;
/**
* PlannerTest.
* TODO Documentation https://issues.apache.org/jira/browse/IGNITE-15859
*/
-@DisabledOnOs(value = OS.WINDOWS, disabledReason =
"https://issues.apache.org/jira/browse/IGNITE-17601")
public class PlannerTest extends AbstractPlannerTest {
private static final String DEVELOPER_TABLE = "DEVELOPER";
@@ -432,11 +429,11 @@ public class PlannerTest extends AbstractPlannerTest {
RelNode rel = relRoot.rel;
assertNotNull(rel);
- assertEquals("LogicalProject(DEPTNO=[$0], DEPTNO0=[$4])\n"
- + " LogicalFilter(condition=[=(+($0, $4), 2)])\n"
- + " LogicalJoin(condition=[true],
joinType=[inner])\n"
- + " IgniteLogicalTableScan(table=[[PUBLIC,
DEPT]])\n"
- + " IgniteLogicalTableScan(table=[[PUBLIC,
EMP]])\n",
+ assertEquals("LogicalProject(DEPTNO=[$0], DEPTNO0=[$4])" +
System.lineSeparator()
+ + " LogicalFilter(condition=[=(+($0, $4), 2)])" +
System.lineSeparator()
+ + " LogicalJoin(condition=[true],
joinType=[inner])" + System.lineSeparator()
+ + " IgniteLogicalTableScan(table=[[PUBLIC,
DEPT]])" + System.lineSeparator()
+ + " IgniteLogicalTableScan(table=[[PUBLIC,
EMP]])" + System.lineSeparator(),
RelOptUtil.toString(rel));
// Transformation chain
@@ -449,11 +446,11 @@ public class PlannerTest extends AbstractPlannerTest {
assertNotNull(phys);
assertEquals(
- "IgniteProject(DEPTNO=[$3], DEPTNO0=[$2])\n"
+ "IgniteProject(DEPTNO=[$3], DEPTNO0=[$2])" +
System.lineSeparator()
+ "
IgniteCorrelatedNestedLoopJoin(condition=[=(+($3, $2), 2)], joinType=[inner], "
- + "variablesSet=[[$cor2]])\n"
- + " IgniteTableScan(table=[[PUBLIC, EMP]])\n"
- + " IgniteTableScan(table=[[PUBLIC, DEPT]],
filters=[=(+($t0, $cor2.DEPTNO), 2)])\n",
+ + "variablesSet=[[$cor2]])" +
System.lineSeparator()
+ + " IgniteTableScan(table=[[PUBLIC, EMP]])" +
System.lineSeparator()
+ + " IgniteTableScan(table=[[PUBLIC, DEPT]],
filters=[=(+($t0, $cor2.DEPTNO), 2)])" + System.lineSeparator(),
RelOptUtil.toString(phys),
"Invalid plan:\n" + RelOptUtil.toString(phys)
);
@@ -479,11 +476,11 @@ public class PlannerTest extends AbstractPlannerTest {
RelNode phys = physicalPlan(sql, publicSchema,
"CorrelatedNestedLoopJoin");
assertNotNull(phys);
- assertEquals("IgniteSort(sort0=[$3], sort1=[$0], dir0=[ASC],
dir1=[ASC])\n"
- + " IgniteProject(DEPTNO=[$3], NAME=[$4], ID=[$0],
NAME0=[$1])\n"
- + " IgniteNestedLoopJoin(condition=[AND(=($3, $2),
>=($1, $4))], joinType=[inner])\n"
- + " IgniteTableScan(table=[[PUBLIC, EMP]])\n"
- + " IgniteTableScan(table=[[PUBLIC, DEPT]])\n",
+ assertEquals("IgniteSort(sort0=[$3], sort1=[$0], dir0=[ASC],
dir1=[ASC])" + System.lineSeparator()
+ + " IgniteProject(DEPTNO=[$3], NAME=[$4], ID=[$0],
NAME0=[$1])" + System.lineSeparator()
+ + " IgniteNestedLoopJoin(condition=[AND(=($3, $2),
>=($1, $4))], joinType=[inner])" + System.lineSeparator()
+ + " IgniteTableScan(table=[[PUBLIC, EMP]])" +
System.lineSeparator()
+ + " IgniteTableScan(table=[[PUBLIC, DEPT]])" +
System.lineSeparator(),
RelOptUtil.toString(phys));
}