This is an automated email from the ASF dual-hosted git repository. sk0x50 pushed a commit to branch ignite-3.0.0-beta1 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 052edf735a2e142aa2ac8cdcc1d5514507271d36 Author: Mikhail <[email protected]> AuthorDate: Fri Oct 28 16:01:30 2022 +0400 IGNITE-17966: Fix problem with stuck Gradle processes in .NET tests (#1258) --- .../apache/ignite/internal/TestHybridClock.java | 0 .../dotnet/Apache.Ignite.Tests/JavaServer.cs | 88 ++++------------------ modules/replicator/build.gradle | 1 + 3 files changed, 14 insertions(+), 75 deletions(-) diff --git a/modules/core/src/test/java/org/apache/ignite/internal/TestHybridClock.java b/modules/core/src/testFixtures/java/org/apache/ignite/internal/TestHybridClock.java similarity index 100% rename from modules/core/src/test/java/org/apache/ignite/internal/TestHybridClock.java rename to modules/core/src/testFixtures/java/org/apache/ignite/internal/TestHybridClock.java diff --git a/modules/platforms/dotnet/Apache.Ignite.Tests/JavaServer.cs b/modules/platforms/dotnet/Apache.Ignite.Tests/JavaServer.cs index 077626b295..97b5592323 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Tests/JavaServer.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Tests/JavaServer.cs @@ -35,16 +35,11 @@ namespace Apache.Ignite.Tests private const int ConnectTimeoutSeconds = 120; - /** Maven command to execute the main class. */ - private const string MavenCommandExec = "exec:java@platform-test-node-runner"; + private const string GradleCommandExec = ":ignite-runner:runnerPlatformTest --no-daemon" + + " -x compileJava -x compileTestFixturesJava -x compileIntegrationTestJava -x compileTestJava"; - /** Maven arg to perform a dry run to ensure that code is compiled and all artifacts are downloaded. */ - private const string MavenCommandDryRunArg = " -Dexec.args=dry-run"; - - /** Full path to Maven binary. */ - private static readonly string MavenPath = GetMaven(); - - private static volatile bool _dryRunComplete; + /** Full path to Gradle binary. */ + private static readonly string GradlePath = GetGradle(); private readonly Process? _process; @@ -72,7 +67,6 @@ namespace Apache.Ignite.Tests Log(">>> Java server is not detected, starting..."); - EnsureBuild(); var process = CreateProcess(); var evt = new ManualResetEventSlim(false); @@ -124,54 +118,7 @@ namespace Apache.Ignite.Tests Log(">>> Java server stopped."); } - /// <summary> - /// Performs a dry run of the Maven executable to ensure that code is compiled and all artifacts are downloaded. - /// Does not start the actual node. - /// </summary> - private static void EnsureBuild() - { - if (_dryRunComplete) - { - return; - } - - using var process = CreateProcess(dryRun: true); - - DataReceivedEventHandler handler = (_, eventArgs) => - { - var line = eventArgs.Data; - if (line == null) - { - return; - } - - Log(line); - }; - - process.OutputDataReceived += handler; - process.ErrorDataReceived += handler; - - process.Start(); - - process.BeginErrorReadLine(); - process.BeginOutputReadLine(); - - // 5 min timeout for the build process (may take time to download artifacts on slow networks). - if (!process.WaitForExit(5 * 60_000)) - { - process.Kill(); - throw new Exception("Failed to wait for Maven exec dry run."); - } - - if (process.ExitCode != 0) - { - throw new Exception($"Maven exec failed with code {process.ExitCode}, check log for details."); - } - - _dryRunComplete = true; - } - - private static Process CreateProcess(bool dryRun = false) + private static Process CreateProcess() { var file = TestUtils.IsWindows ? "cmd.exe" : "/bin/bash"; @@ -183,11 +130,11 @@ namespace Apache.Ignite.Tests ArgumentList = { TestUtils.IsWindows ? "/c" : "-c", - $"{MavenPath} {MavenCommandExec}" + (dryRun ? MavenCommandDryRunArg : string.Empty) + $"{GradlePath} {GradleCommandExec}" }, CreateNoWindow = true, UseShellExecute = false, - WorkingDirectory = Path.Combine(TestUtils.RepoRootDir, "modules", "runner"), + WorkingDirectory = TestUtils.RepoRootDir, RedirectStandardOutput = true, RedirectStandardError = true } @@ -244,22 +191,13 @@ namespace Apache.Ignite.Tests } } - /// <summary> - /// Gets maven path. - /// </summary> - private static string GetMaven() + private static string GetGradle() { - var extensions = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) - ? new[] {".cmd", ".bat"} - : new[] {string.Empty}; - - return new[] {"MAVEN_HOME", "M2_HOME", "M3_HOME", "MVN_HOME"} - .Select(Environment.GetEnvironmentVariable) - .Where(x => !string.IsNullOrEmpty(x)) - .Select(x => Path.Combine(x!, "bin", "mvn")) - .SelectMany(x => extensions.Select(ext => x + ext)) - .Where(File.Exists) - .FirstOrDefault() ?? "mvn"; + var gradleWrapper = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) + ? "gradlew.bat" + : "gradlew"; + + return Path.Combine(TestUtils.RepoRootDir, gradleWrapper); } } } diff --git a/modules/replicator/build.gradle b/modules/replicator/build.gradle index 5f4b43d3ba..1f9d57cc7f 100644 --- a/modules/replicator/build.gradle +++ b/modules/replicator/build.gradle @@ -24,6 +24,7 @@ dependencies { annotationProcessor project(":ignite-network-annotation-processor") implementation project(':ignite-core') implementation project(':ignite-raft') + implementation project(':ignite-raft-client') implementation project(':ignite-configuration') implementation project(':ignite-network-api') implementation libs.jetbrains.annotations
