You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/05/31 07:35:44 UTC
[13/19] ignite git commit: IGNITE-5333 .NET: Include
Apache.Ignite.exe in the main NuGet package
IGNITE-5333 .NET: Include Apache.Ignite.exe in the main NuGet package
This closes #2028
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/8237ac6f
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/8237ac6f
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/8237ac6f
Branch: refs/heads/ignite-5075
Commit: 8237ac6f6b8071dcb18b2a05a429e94cba22e71d
Parents: b0e49ad
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Tue May 30 16:04:28 2017 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Tue May 30 16:04:28 2017 +0300
----------------------------------------------------------------------
.../StartupTest.cs | 78 ++++++++++++++++++++
.../Apache.Ignite.Core.Tests.NuGet/TestUtil.cs | 30 ++++++++
.../Apache.Ignite.Core.nuspec | 7 +-
.../Impl/Common/IgniteHome.cs | 3 +-
.../platforms/dotnet/Apache.Ignite/App.config | 11 +++
5 files changed, 125 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/8237ac6f/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/StartupTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/StartupTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/StartupTest.cs
index 5b38bde..db62e09 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/StartupTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/StartupTest.cs
@@ -17,6 +17,11 @@
namespace Apache.Ignite.Core.Tests.NuGet
{
+ using System;
+ using System.Diagnostics;
+ using System.IO;
+ using System.Linq;
+ using System.Threading;
using Apache.Ignite.Core.Cache.Configuration;
using NUnit.Framework;
@@ -26,6 +31,24 @@ namespace Apache.Ignite.Core.Tests.NuGet
public class StartupTest
{
/// <summary>
+ /// Tears down the test.
+ /// </summary>
+ [TearDown]
+ public void TearDown()
+ {
+ Ignition.StopAll(true);
+
+ foreach (var proc in Process.GetProcesses())
+ {
+ if (proc.ProcessName.Equals("Apache.Ignite"))
+ {
+ proc.Kill();
+ proc.WaitForExit();
+ }
+ }
+ }
+
+ /// <summary>
/// Tests code configuration.
/// </summary>
[Test]
@@ -62,5 +85,60 @@ namespace Apache.Ignite.Core.Tests.NuGet
Assert.AreEqual(5, cache[1]);
}
}
+
+ /// <summary>
+ /// Tests the executable that is included in NuGet.
+ /// </summary>
+ [Test]
+ public void TestApacheIgniteExe()
+ {
+ var asm = GetType().Assembly;
+ var version = asm.GetName().Version.ToString(3);
+ var packageDirName = "Apache.Ignite." + version + "*";
+
+ var asmDir = Path.GetDirectoryName(asm.Location);
+ Assert.IsNotNull(asmDir, asmDir);
+
+ var packagesDir = Path.GetFullPath(Path.Combine(asmDir, @"..\..\packages"));
+ Assert.IsTrue(Directory.Exists(packagesDir), packagesDir);
+
+ var packageDir = Directory.GetDirectories(packagesDir, packageDirName).Single();
+ Assert.IsTrue(Directory.Exists(packageDir), packageDir);
+
+ var exePath = Path.Combine(packageDir, @"lib\net40\Apache.Ignite.exe");
+ Assert.IsTrue(File.Exists(exePath), exePath);
+
+ var springPath = Path.GetFullPath(@"config\ignite-config.xml");
+ Assert.IsTrue(File.Exists(springPath), springPath);
+
+ var procInfo = new ProcessStartInfo(exePath, "-springConfigUrl=" + springPath)
+ {
+ CreateNoWindow = true,
+ UseShellExecute = false,
+ RedirectStandardOutput = true,
+ RedirectStandardError = true
+ };
+
+ var proc = Process.Start(procInfo);
+ Assert.IsNotNull(proc);
+ Assert.IsFalse(proc.HasExited);
+
+ TestUtil.AttachProcessConsoleReader(proc);
+
+ using (var ignite = Ignition.Start(@"config\ignite-config.xml"))
+ {
+ for (var i = 0; i < 100; i++)
+ {
+ if (ignite.GetCluster().GetNodes().Count == 2)
+ {
+ return;
+ }
+
+ Thread.Sleep(100);
+ }
+
+ Assert.Fail("Failed to join to remote node.");
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/8237ac6f/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestUtil.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestUtil.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestUtil.cs
index 43e5097..2f0a110 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestUtil.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestUtil.cs
@@ -17,6 +17,10 @@
namespace Apache.Ignite.Core.Tests.NuGet
{
+ using System;
+ using System.Diagnostics;
+ using System.IO;
+ using System.Threading;
using Apache.Ignite.Core.Discovery;
using Apache.Ignite.Core.Discovery.Tcp;
using Apache.Ignite.Core.Discovery.Tcp.Static;
@@ -39,5 +43,31 @@ namespace Apache.Ignite.Core.Tests.NuGet
}
};
}
+
+ /// <summary>
+ /// Attaches the process console reader.
+ /// </summary>
+ public static void AttachProcessConsoleReader(Process process)
+ {
+ Attach(process, process.StandardOutput, false);
+ Attach(process, process.StandardError, true);
+ }
+
+ /// <summary>
+ /// Attach output reader to the process.
+ /// </summary>
+ private static void Attach(Process proc, TextReader reader, bool err)
+ {
+ new Thread(() =>
+ {
+ while (!proc.HasExited)
+ {
+ Console.WriteLine(err ? ">>> {0} ERR: {1}" : ">>> {0} OUT: {1}", proc.Id, reader.ReadLine());
+ }
+ })
+ {
+ IsBackground = true
+ }.Start();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/8237ac6f/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.nuspec
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.nuspec b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.nuspec
index 8f562f1..7dc9f9a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.nuspec
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.nuspec
@@ -53,9 +53,10 @@ More info: https://apacheignite-net.readme.io/
<file src="NuGet\Install.ps1" target="tools" />
<file src="NuGet\Uninstall.ps1" target="tools" />
<file src="NuGet\PostBuild.ps1" target="tools" />
-
- <!-- Other files should go to Content folder to be automatically included in project. -->
- <!--<file src="..\..\..\..\config\default-config.xml" target="Content\Config" />-->
+
+ <!-- Include Apache.Ignite.exe -->
+ <file src="..\Apache.Ignite\bin\$configuration$\Apache.Ignite.exe" target="lib\net40" />
+ <file src="..\Apache.Ignite\bin\$configuration$\Apache.Ignite.exe.config" target="lib\net40" />
<!--
Library files (jars) should not be included in project, so that NuGet package restore works properly.
http://git-wip-us.apache.org/repos/asf/ignite/blob/8237ac6f/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs
index 0290095..3d4ad4d 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs
@@ -116,7 +116,8 @@ namespace Apache.Ignite.Core.Impl.Common
|| // NuGet home
(dir.EnumerateDirectories().Any(x => x.Name == "Libs") &&
(dir.EnumerateFiles("Apache.Ignite.Core.dll").Any() ||
- dir.EnumerateFiles("Apache.Ignite.*.nupkg").Any()));
+ dir.EnumerateFiles("Apache.Ignite.*.nupkg").Any() ||
+ dir.EnumerateFiles("Apache.Ignite.nuspec").Any()));
}
catch (IOException)
{
http://git-wip-us.apache.org/repos/asf/ignite/blob/8237ac6f/modules/platforms/dotnet/Apache.Ignite/App.config
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite/App.config b/modules/platforms/dotnet/Apache.Ignite/App.config
index d1d6643..8550529 100644
--- a/modules/platforms/dotnet/Apache.Ignite/App.config
+++ b/modules/platforms/dotnet/Apache.Ignite/App.config
@@ -23,6 +23,10 @@
-->
<configuration>
+ <configSections>
+ <section name="igniteConfiguration" type="Apache.Ignite.Core.IgniteConfigurationSection, Apache.Ignite.Core" />
+ </configSections>
+
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
@@ -31,7 +35,14 @@
<gcServer enabled="true" />
</runtime>
+ <igniteConfiguration xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection">
+ <!-- Customize Ignite configuration here. -->
+ </igniteConfiguration>
+
<appSettings>
+ <!-- Use Ignite configuration section defined above. -->
+ <add key="Ignite.ConfigSectionName" value="igniteConfiguration" />
+
<!-- Path to spring configuration file relative from IGNITE_HOME (if not provided "config/default-config.xml" is used) -->
<!-- <add key="Ignite.SpringConfigUrl" value="my-config.xml"/> -->