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));
     }
 

Reply via email to