You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2015/09/07 15:44:57 UTC
[2/2] ignite git commit: IGNITE-1367: Moved .Net executable to Ignite.
IGNITE-1367: Moved .Net executable to Ignite.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c2d19b17
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c2d19b17
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c2d19b17
Branch: refs/heads/master
Commit: c2d19b177c7ebde873f9eecd609aed33b4050a0c
Parents: 99187cf
Author: Pavel Tupitsyn <pt...@gridgain.com>
Authored: Mon Sep 7 16:45:31 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Mon Sep 7 16:45:31 2015 +0300
----------------------------------------------------------------------
.../Apache.Ignite.Core/Cluster/IClusterGroup.cs | 2 +-
.../Impl/Common/DelegateTypeDescriptor.cs | 17 +-
.../Impl/Compute/ComputeImpl.cs | 2 +-
.../Impl/Compute/ComputeJobHolder.cs | 6 +
.../Apache.Ignite.Core/Impl/IgniteManager.cs | 2 +-
.../Properties/AssemblyInfo.cs | 1 +
.../platform/src/main/dotnet/Apache.Ignite.sln | 10 +
.../dotnet/Apache.Ignite/Apache.Ignite.csproj | 76 +++++++
.../src/main/dotnet/Apache.Ignite/App.config | 56 +++++
.../Config/AppSettingsConfigurator.cs | 113 ++++++++++
.../Apache.Ignite/Config/ArgsConfigurator.cs | 164 ++++++++++++++
.../Apache.Ignite/Config/ConfigValueParser.cs | 42 ++++
.../Apache.Ignite/Config/IConfigurator.cs | 34 +++
.../main/dotnet/Apache.Ignite/IgniteRunner.cs | 171 ++++++++++++++
.../Apache.Ignite/Properties/AssemblyInfo.cs | 35 +++
.../Apache.Ignite/Service/IgniteService.cs | 219 ++++++++++++++++++
.../Apache.Ignite/Service/NativeMethods.cs | 57 +++++
.../Apache.Ignite/Service/ServiceDescription.cs | 32 +++
.../Apache.Ignite.Core.Tests.csproj | 5 +-
.../Cache/CacheForkedTest.cs | 1 -
.../Forked/ForkedPortableClosureTaskTest.cs | 3 -
.../Compute/Forked/ForkedResourceTaskTest.cs | 2 +-
.../Forked/ForkedSerializableClosureTaskTest.cs | 2 +-
.../Compute/Forked/ForkedTaskAdapterTest.cs | 3 -
.../Config/Apache.Ignite.exe.config.test | 41 ++++
.../Config/Ignite.exe.config.test | 41 ----
.../native-client-test-cache-portables.xml | 226 -------------------
.../Config/native-client-test-cache.xml | 30 ---
.../Apache.Ignite.Core.Tests/ExecutableTest.cs | 39 ++--
.../IgniteStartStopTest.cs | 28 ---
.../Apache.Ignite.Core.Tests/LoadDllTest.cs | 2 +-
.../Process/IgniteProcess.cs | 33 +--
.../Apache.Ignite.Core.Tests/TestUtils.cs | 2 +-
33 files changed, 1098 insertions(+), 399 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite.Core/Cluster/IClusterGroup.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Cluster/IClusterGroup.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Cluster/IClusterGroup.cs
index 1fa11b5..21d6931 100644
--- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Cluster/IClusterGroup.cs
+++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Cluster/IClusterGroup.cs
@@ -174,7 +174,7 @@ namespace Apache.Ignite.Core.Cluster
IClusterGroup ForYoungest();
/// <summary>
- /// Creates grid projection for nodes supporting .Net, i.e. for nodes started with Ignite.exe.
+ /// Creates grid projection for nodes supporting .Net, i.e. for nodes started with Apache.Ignite.exe.
/// </summary>
/// <returns>Grid projection for nodes supporting .Net.</returns>
IClusterGroup ForDotNet();
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Common/DelegateTypeDescriptor.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Common/DelegateTypeDescriptor.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Common/DelegateTypeDescriptor.cs
index 680228d..8d7cb3a 100644
--- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Common/DelegateTypeDescriptor.cs
+++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Common/DelegateTypeDescriptor.cs
@@ -48,10 +48,7 @@ namespace Apache.Ignite.Core.Impl.Common
/** */
private readonly Func<object, object, object, bool> _cacheEntryFilter;
-
- /** */
- private readonly Func<object, object, object, byte, bool> _cacheDrEntryFilter;
-
+
/** */
private readonly Tuple<Func<object, IMutableCacheEntryInternal, object, object>, Tuple<Type, Type>>
_cacheEntryProcessor;
@@ -110,17 +107,7 @@ namespace Apache.Ignite.Core.Impl.Common
{
return Get(type)._cacheEntryFilter;
}
-
- /// <summary>
- /// Gets the <see cref="ICacheDrEntryFilter{K, V}" /> invocator.
- /// </summary>
- /// <param name="type">Type.</param>
- /// <returns>Precompiled invocator delegate.</returns>
- public static Func<object, object, object, byte, bool> GetCacheDrEntryFilter(Type type)
- {
- return Get(type)._cacheDrEntryFilter;
- }
-
+
/// <summary>
/// Gets the <see cref="ICacheEntryProcessor{K, V, A, R}" /> invocator.
/// </summary>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeImpl.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeImpl.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeImpl.cs
index 789e1c4..45c847a 100644
--- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeImpl.cs
+++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeImpl.cs
@@ -573,7 +573,7 @@ namespace Apache.Ignite.Core.Impl.Compute
/// <returns>Handle to the job holder</returns>
private long WriteJob(IComputeJob job, PortableWriterImpl writer)
{
- var jobHolder = new ComputeJobHolder(_prj.Ignite as Ignite, job);
+ var jobHolder = new ComputeJobHolder((Ignite) _prj.Ignite, job);
var jobHandle = Marshaller.Ignite.HandleRegistry.Allocate(jobHolder);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJobHolder.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJobHolder.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJobHolder.cs
index 9bdb5cf..4e63282 100644
--- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJobHolder.cs
+++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeJobHolder.cs
@@ -18,6 +18,7 @@
namespace Apache.Ignite.Core.Impl.Compute
{
using System;
+ using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Apache.Ignite.Core.Common;
using Apache.Ignite.Core.Impl.Cluster;
@@ -48,6 +49,8 @@ namespace Apache.Ignite.Core.Impl.Compute
/// <param name="reader"></param>
public ComputeJobHolder(IPortableReader reader)
{
+ Debug.Assert(reader != null);
+
var reader0 = (PortableReaderImpl) reader.RawReader();
_ignite = reader0.Marshaller.Ignite;
@@ -62,6 +65,9 @@ namespace Apache.Ignite.Core.Impl.Compute
/// <param name="job">Job.</param>
public ComputeJobHolder(Ignite grid, IComputeJob job)
{
+ Debug.Assert(grid != null);
+ Debug.Assert(job != null);
+
_ignite = grid;
_job = job;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/IgniteManager.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/IgniteManager.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/IgniteManager.cs
index 6203b3c..0edaeab 100644
--- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/IgniteManager.cs
+++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/IgniteManager.cs
@@ -39,7 +39,7 @@ namespace Apache.Ignite.Core.Impl
internal const string EnvIgniteHome = "IGNITE_HOME";
/** Environment variable: whether to set test classpath or not. */
- private const string EnvIgniteNativeTestClasspath = "IGNITE_NATIVE_TEST_CLASSPATH";
+ internal const string EnvIgniteNativeTestClasspath = "IGNITE_NATIVE_TEST_CLASSPATH";
/** Classpath prefix. */
private const string ClasspathPrefix = "-Djava.class.path=";
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
index 5dbfce9..1876e24 100644
--- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
+++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
@@ -37,6 +37,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyFileVersion("1.5.0")]
[assembly: CLSCompliant(true)]
+[assembly: InternalsVisibleTo("Apache.Ignite")]
#if !EXCLUDE_TESTS
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite.sln
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.sln b/modules/platform/src/main/dotnet/Apache.Ignite.sln
index 11fc4ce..e9886ed 100644
--- a/modules/platform/src/main/dotnet/Apache.Ignite.sln
+++ b/modules/platform/src/main/dotnet/Apache.Ignite.sln
@@ -11,6 +11,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "..\cpp\common\pro
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.Core.Tests.TestDll", "..\..\test\dotnet\Apache.Ignite.Core.Tests.TestDll\Apache.Ignite.Core.Tests.TestDll.csproj", "{F4A69E2D-908E-4F0F-A794-84D508D60E5F}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite", "Apache.Ignite\Apache.Ignite.csproj", "{27F7F3C6-BDDE-43A9-B565-856F8395A04B}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -51,6 +53,14 @@ Global
{F4A69E2D-908E-4F0F-A794-84D508D60E5F}.Release|x64.Build.0 = Release|x64
{F4A69E2D-908E-4F0F-A794-84D508D60E5F}.Release|x86.ActiveCfg = Release|x86
{F4A69E2D-908E-4F0F-A794-84D508D60E5F}.Release|x86.Build.0 = Release|x86
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Debug|x64.ActiveCfg = Debug|x64
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Debug|x64.Build.0 = Debug|x64
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Debug|x86.ActiveCfg = Debug|x86
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Debug|x86.Build.0 = Debug|x86
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Release|x64.ActiveCfg = Release|x64
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Release|x64.Build.0 = Release|x64
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Release|x86.ActiveCfg = Release|x86
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite/Apache.Ignite.csproj
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite/Apache.Ignite.csproj b/modules/platform/src/main/dotnet/Apache.Ignite/Apache.Ignite.csproj
new file mode 100644
index 0000000..7f6db3a
--- /dev/null
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/Apache.Ignite.csproj
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{27F7F3C6-BDDE-43A9-B565-856F8395A04B}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Apache.Ignite</RootNamespace>
+ <AssemblyName>Apache.Ignite</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+ <PlatformTarget>x64</PlatformTarget>
+ <OutputPath>bin\x64\Debug\</OutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+ <PlatformTarget>x64</PlatformTarget>
+ <OutputPath>bin\x64\Release\</OutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+ <PlatformTarget>x86</PlatformTarget>
+ <OutputPath>bin\x86\Debug\</OutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+ <PlatformTarget>x86</PlatformTarget>
+ <OutputPath>bin\x86\Release\</OutputPath>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.ServiceProcess" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Config\AppSettingsConfigurator.cs" />
+ <Compile Include="Config\ArgsConfigurator.cs" />
+ <Compile Include="Config\ConfigValueParser.cs" />
+ <Compile Include="Config\IConfigurator.cs" />
+ <Compile Include="IgniteRunner.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Service\IgniteService.cs">
+ <SubType>Component</SubType>
+ </Compile>
+ <Compile Include="Service\NativeMethods.cs" />
+ <Compile Include="Service\ServiceDescription.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Apache.Ignite.Core\Apache.Ignite.Core.csproj">
+ <Project>{4cd2f726-7e2b-46c4-a5ba-057bb82eecb6}</Project>
+ <Name>Apache.Ignite.Core</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <PropertyGroup>
+ <PostBuildEvent>copy $(TargetPath) $(SolutionDir)..\..\test\dotnet\Apache.Ignite.Core.Tests\$(OutDir)
+copy $(TargetPath).config $(SolutionDir)..\..\test\dotnet\Apache.Ignite.Core.Tests\$(OutDir)</PostBuildEvent>
+ </PropertyGroup>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite/App.config
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite/App.config b/modules/platform/src/main/dotnet/Apache.Ignite/App.config
new file mode 100644
index 0000000..a9e8c39
--- /dev/null
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/App.config
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+
+<!--
+ Apache Ignite .Net startup application configuration file.
+-->
+
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
+ </startup>
+
+ <runtime>
+ <gcServer enabled="true" />
+ </runtime>
+
+ <appSettings>
+ <!-- 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"/> -->
+
+ <!-- Absolute path to spring configuration file (if not provided "config/default-config.xml" is used) -->
+ <!-- <add key="Ignite.SpringConfigUrl" value="C:\my-dir\my-config.xml"/> -->
+
+ <!-- Path to Java library jvm.dll (if not provided JAVA_HOME environment variable is used to find jvm.dll) -->
+ <!-- <add key="Ignite.JvmDllPath" value="C:\Program Files\Java\jdk1.7.0_45\jre\bin\server\jvm.dll"/> -->
+
+ <!-- Additional classpath passed to JVM (enlist additional jar files here) -->
+ <!-- <add key="Ignite.JvmClasspath" value="c:\my-dir\my-lib1.jar;c:\my-dir\my-lib2.jar"/> -->
+
+ <!-- JVM Options passed to JVM -->
+ <!-- <add key="Ignite.JvmOption.1" value="-Xmx512m"/> -->
+ <!-- <add key="Ignite.JvmOption.2" value="-DIGNITE_QUIET=false"/> -->
+
+ <!-- Additional .Net assemblies to be loaded on startup. -->
+ <!-- <add key="Ignite.Assembly.1" value="System.Data.Linq,Culture=neutral,Version=1.0.0.0,PublicKeyToken=b77a5c561934e089"/> -->
+ <!-- <add key="Ignite.Assembly.2" value="my-assembly.dll"/> -->
+ </appSettings>
+
+</configuration>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite/Config/AppSettingsConfigurator.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite/Config/AppSettingsConfigurator.cs b/modules/platform/src/main/dotnet/Apache.Ignite/Config/AppSettingsConfigurator.cs
new file mode 100644
index 0000000..b2e827e
--- /dev/null
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/Config/AppSettingsConfigurator.cs
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Config
+{
+ using System.Collections.Generic;
+ using System.Collections.Specialized;
+ using Apache.Ignite.Core;
+
+ /// <summary>
+ /// Configurator which uses application configuration.
+ /// </summary>
+ internal class AppSettingsConfigurator : IConfigurator<NameValueCollection>
+ {
+ /** Common configuration property prefix. */
+ private static readonly string CfgPrefix = "Ignite.".ToLower();
+
+ /** Configuration property: Ignite home. */
+ private static readonly string CfgHome = "Home".ToLower();
+
+ /** Configuration property: Spring config URL. */
+ private static readonly string CfgSpringCfgUrl = "SpringConfigUrl".ToLower();
+
+ /** Configuration property: Path to JVM dll. */
+ private static readonly string CfgJvmDll = "JvmDll".ToLower();
+
+ /** Configuration property: JVM classpath. */
+ private static readonly string CfgJvmClasspath = "JvmClasspath".ToLower();
+
+ /** Configuration property: suppress warnings flag. */
+ private static readonly string CfgSuppressWarn = "SuppressWarnings".ToLower();
+
+ /** Configuration property: JVM option prefix. */
+ private static readonly string CfgJvmOptPrefix = "JvmOption".ToLower();
+
+ /** Configuration property: assembly prefix. */
+ private static readonly string CfgAssemblyPrefix = "Assembly".ToLower();
+
+ /** Configuration property: JVM min memory. */
+ private static readonly string CfgJvmMinMem = "JvmInitialMemoryMB".ToLower();
+
+ /** Configuration property: JVM max memory. */
+ private static readonly string CfgJvmMaxMem = "JvmMaxMemoryMB".ToLower();
+
+ /** <inheritDoc /> */
+ public void Configure(IgniteConfiguration cfg, NameValueCollection src)
+ {
+ var jvmOpts = new List<string>();
+ var assemblies = new List<string>();
+
+ foreach (string key in src.Keys)
+ {
+ var key0 = key.ToLower();
+
+ if (key0.StartsWith(CfgPrefix))
+ {
+ key0 = key0.Substring(CfgPrefix.Length);
+
+ var val = src[key];
+
+ if (CfgHome.Equals(key0))
+ cfg.IgniteHome = val;
+ else if (CfgSpringCfgUrl.Equals(key0))
+ cfg.SpringConfigUrl = val;
+ else if (CfgJvmDll.Equals(key0))
+ cfg.JvmDllPath = val;
+ else if (CfgJvmClasspath.Equals(key0))
+ cfg.JvmClasspath = val;
+ else if (CfgSuppressWarn.Equals(key0))
+ cfg.SuppressWarnings = val != null && bool.TrueString.ToLower().Equals(val.ToLower());
+ else if (key0.StartsWith(CfgJvmOptPrefix))
+ jvmOpts.Add(val);
+ else if (key0.StartsWith(CfgAssemblyPrefix))
+ assemblies.Add(val);
+ else if (CfgJvmMinMem.Equals(key0))
+ cfg.JvmInitialMemoryMb = ConfigValueParser.ParseInt(val, key);
+ else if (CfgJvmMaxMem.Equals(key0))
+ cfg.JvmMaxMemoryMb = ConfigValueParser.ParseInt(val, key);
+ }
+ }
+
+ if (jvmOpts.Count > 0)
+ {
+ if (cfg.JvmOptions == null)
+ cfg.JvmOptions = jvmOpts;
+ else
+ jvmOpts.ForEach(val => cfg.JvmOptions.Add(val));
+ }
+
+ if (assemblies.Count > 0)
+ {
+ if (cfg.Assemblies == null)
+ cfg.Assemblies = assemblies;
+ else
+ assemblies.ForEach(val => cfg.Assemblies.Add(val));
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite/Config/ArgsConfigurator.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite/Config/ArgsConfigurator.cs b/modules/platform/src/main/dotnet/Apache.Ignite/Config/ArgsConfigurator.cs
new file mode 100644
index 0000000..b0651d7
--- /dev/null
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/Config/ArgsConfigurator.cs
@@ -0,0 +1,164 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Config
+{
+ using System.Collections.Generic;
+ using Apache.Ignite.Core;
+
+ /// <summary>
+ /// Configurator which uses arguments array.
+ /// </summary>
+ internal class ArgsConfigurator : IConfigurator<string[]>
+ {
+ /** Command line argument: Ignite home. */
+ private static readonly string CmdIgniteHome = "-IgniteHome=".ToLower();
+
+ /** Command line argument: Spring config URL. */
+ private static readonly string CmdSpringCfgUrl = "-SpringConfigUrl=".ToLower();
+
+ /** Command line argument: Path to JVM dll. */
+ private static readonly string CmdJvmDll = "-JvmDll=".ToLower();
+
+ /** Command line argument: JVM classpath. */
+ private static readonly string CmdJvmClasspath = "-JvmClasspath=".ToLower();
+
+ /** Command line argument: suppress warnings flag. */
+ private static readonly string CmdSuppressWarn = "-SuppressWarnings=".ToLower();
+
+ /** Command line argument: JVM option prefix. */
+ private static readonly string CmdJvmOpt = "-J".ToLower();
+
+ /** Command line argument: assembly. */
+ private static readonly string CmdAssembly = "-Assembly=".ToLower();
+
+ /** Command line argument: JvmInitialMemoryMB. */
+ private static readonly string CmdJvmMinMem = "-JvmInitialMemoryMB=".ToLower();
+
+ /** Command line argument: JvmMaxMemoryMB. */
+ private static readonly string CmdJvmMaxMem = "-JvmMaxMemoryMB=".ToLower();
+
+ /// <summary>
+ /// Convert configuration to arguments.
+ /// </summary>
+ /// <param name="cfg"></param>
+ /// <returns></returns>
+ internal static string[] ToArgs(IgniteConfiguration cfg)
+ {
+ var args = new List<string>();
+
+ if (cfg.IgniteHome != null)
+ args.Add(CmdIgniteHome + cfg.IgniteHome);
+
+ if (cfg.SpringConfigUrl != null)
+ args.Add(CmdSpringCfgUrl + cfg.SpringConfigUrl);
+
+ if (cfg.JvmDllPath != null)
+ args.Add(CmdJvmDll + cfg.JvmDllPath);
+
+ if (cfg.JvmClasspath != null)
+ args.Add(CmdJvmClasspath + cfg.JvmClasspath);
+
+ if (cfg.SuppressWarnings)
+ args.Add(CmdSuppressWarn + bool.TrueString);
+
+ if (cfg.JvmOptions != null)
+ {
+ foreach (var jvmOpt in cfg.JvmOptions)
+ args.Add(CmdJvmOpt + jvmOpt);
+ }
+
+ if (cfg.Assemblies != null)
+ {
+ foreach (var assembly in cfg.Assemblies)
+ args.Add(CmdAssembly + assembly);
+ }
+
+ args.Add(CmdJvmMinMem + cfg.JvmInitialMemoryMb);
+ args.Add(CmdJvmMaxMem + cfg.JvmMaxMemoryMb);
+
+ return args.ToArray();
+ }
+
+ /// <summary>
+ /// Convert arguments to configuration.
+ /// </summary>
+ /// <param name="args">Arguments.</param>
+ /// <returns>Configuration.</returns>
+ internal static IgniteConfiguration FromArgs(string[] args)
+ {
+ var cfg = new IgniteConfiguration();
+
+ new ArgsConfigurator().Configure(cfg, args);
+
+ return cfg;
+ }
+
+ /** <inheritDoc /> */
+ public void Configure(IgniteConfiguration cfg, string[] src)
+ {
+ var jvmOpts = new List<string>();
+ var assemblies = new List<string>();
+
+ foreach (var arg in src)
+ {
+ var argLow = arg.ToLower();
+
+ if (argLow.StartsWith(CmdIgniteHome))
+ cfg.IgniteHome = arg.Substring(CmdIgniteHome.Length);
+ else if (argLow.StartsWith(CmdSpringCfgUrl))
+ cfg.SpringConfigUrl = arg.Substring(CmdSpringCfgUrl.Length);
+ else if (argLow.StartsWith(CmdJvmDll))
+ cfg.JvmDllPath = arg.Substring(CmdJvmDll.Length);
+ else if (argLow.StartsWith(CmdJvmClasspath))
+ cfg.JvmClasspath = arg.Substring(CmdJvmClasspath.Length);
+ else if (argLow.StartsWith(CmdSuppressWarn))
+ {
+ var val = arg.Substring(CmdSuppressWarn.Length);
+
+ cfg.SuppressWarnings = bool.TrueString.ToLower().Equals(val.ToLower());
+ }
+ else if (argLow.StartsWith(CmdJvmMinMem))
+ cfg.JvmInitialMemoryMb = ConfigValueParser.ParseInt(arg.Substring(CmdJvmMinMem.Length),
+ CmdJvmMinMem);
+ else if (argLow.StartsWith(CmdJvmMaxMem))
+ cfg.JvmMaxMemoryMb = ConfigValueParser.ParseInt(arg.Substring(CmdJvmMaxMem.Length),
+ CmdJvmMaxMem);
+ else if (argLow.StartsWith(CmdJvmOpt))
+ jvmOpts.Add(arg.Substring(CmdJvmOpt.Length));
+ else if (argLow.StartsWith(CmdAssembly))
+ assemblies.Add(arg.Substring(CmdAssembly.Length));
+ }
+
+ if (jvmOpts.Count > 0)
+ {
+ if (cfg.JvmOptions == null)
+ cfg.JvmOptions = jvmOpts;
+ else
+ jvmOpts.ForEach(val => cfg.JvmOptions.Add(val));
+ }
+
+ if (assemblies.Count > 0)
+ {
+ if (cfg.Assemblies == null)
+ cfg.Assemblies = assemblies;
+ else
+ assemblies.ForEach(val => cfg.Assemblies.Add(val));
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite/Config/ConfigValueParser.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite/Config/ConfigValueParser.cs b/modules/platform/src/main/dotnet/Apache.Ignite/Config/ConfigValueParser.cs
new file mode 100644
index 0000000..796b8e1
--- /dev/null
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/Config/ConfigValueParser.cs
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Config
+{
+ using System;
+
+ /// <summary>
+ /// Parses Ignite config values.
+ /// </summary>
+ internal class ConfigValueParser
+ {
+ /// <summary>
+ /// Parses provided string to int. Throws a custom exception if failed.
+ /// </summary>
+ public static int ParseInt(string value, string propertyName)
+ {
+ int result;
+
+ if (int.TryParse(value, out result))
+ return result;
+
+ throw new InvalidOperationException(
+ string.Format("Failed to configure Ignite: property '{0}' has value '{1}', which is not an integer.",
+ propertyName, value));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite/Config/IConfigurator.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite/Config/IConfigurator.cs b/modules/platform/src/main/dotnet/Apache.Ignite/Config/IConfigurator.cs
new file mode 100644
index 0000000..f5c0acf
--- /dev/null
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/Config/IConfigurator.cs
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Config
+{
+ using Apache.Ignite.Core;
+
+ /// <summary>
+ /// Configurator which is capable of setting configuration properties taken from somewhere.
+ /// </summary>
+ internal interface IConfigurator<in T>
+ {
+ /// <summary>
+ /// Set configuration.
+ /// </summary>
+ /// <param name="cfg">Configuration.</param>
+ /// <param name="src">Source.</param>
+ void Configure(IgniteConfiguration cfg, T src);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite/IgniteRunner.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite/IgniteRunner.cs b/modules/platform/src/main/dotnet/Apache.Ignite/IgniteRunner.cs
new file mode 100644
index 0000000..122994f
--- /dev/null
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/IgniteRunner.cs
@@ -0,0 +1,171 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite
+{
+ using System;
+ using System.Collections.Generic;
+ using System.Configuration;
+ using System.Linq;
+ using System.ServiceProcess;
+ using Apache.Ignite.Config;
+ using Apache.Ignite.Core;
+ using Apache.Ignite.Core.Impl;
+ using Apache.Ignite.Service;
+
+ /// <summary>
+ /// Runner class.
+ /// </summary>
+ public class IgniteRunner
+ {
+ /** Help commands. */
+ private static readonly IList<string> Help = new List<string> { "/help", "-help", "--help" };
+
+ /** Argument meaning that this is service call. */
+ internal static readonly string Svc = "/service";
+
+ /** Service install command. */
+ internal static readonly string SvcInstall = "/install";
+
+ /** Service uninstall command. */
+ internal static readonly string SvcUninstall = "/uninstall";
+
+ /// <summary>
+ /// Application entry point.
+ /// </summary>
+ internal static void Main(string[] args)
+ {
+ IgniteConfiguration cfg;
+
+ bool svc = false;
+ bool install = false;
+
+ try
+ {
+ // Check for special cases.
+ if (args.Length > 0)
+ {
+ string first = args[0].ToLower();
+
+ if (Help.Contains(first))
+ {
+ PrintHelp();
+
+ return;
+ }
+
+ if (Svc.Equals(first))
+ {
+ args = RemoveFirstArg(args);
+
+ svc = true;
+ }
+
+ else if (SvcInstall.Equals(first))
+ {
+ args = RemoveFirstArg(args);
+
+ install = true;
+ }
+ else if (SvcUninstall.Equals(first))
+ {
+ IgniteService.Uninstall();
+
+ return;
+ }
+ }
+
+ if (!svc)
+ {
+ // Pick application configuration.
+ cfg = new IgniteConfiguration();
+
+ new AppSettingsConfigurator().Configure(cfg, ConfigurationManager.AppSettings);
+
+ // Pick command line arguments.
+ new ArgsConfigurator().Configure(cfg, args);
+
+ if (install)
+ IgniteService.DoInstall(cfg);
+ else
+ {
+ Ignition.Start(cfg);
+
+ IgniteManager.DestroyJvm();
+ }
+
+ return;
+ }
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine("ERROR: " + e.Message);
+
+ Environment.Exit(-1);
+ }
+
+ // If we are here, then this is a service call.
+ cfg = new IgniteConfiguration();
+
+ // Use only arguments, not app.config.
+ new ArgsConfigurator().Configure(cfg, args);
+
+ ServiceBase.Run(new IgniteService(cfg));
+ }
+
+ /// <summary>
+ /// Prints help.
+ /// </summary>
+ private static void PrintHelp()
+ {
+ Console.WriteLine("Usage: Apache.Ignite.exe [/install] [/uninstall] [-options]");
+ Console.WriteLine("");
+ Console.WriteLine("\t/install [-options] installs Ignite Windows service with provided options");
+ Console.WriteLine("\t/uninstall uninstalls Ignite Windows service");
+ Console.WriteLine("");
+ Console.WriteLine("Options:");
+ Console.WriteLine("\t-IgniteHome path to Ignite installation directory (if not provided IGNITE_HOME environment variable is used)");
+ Console.WriteLine("\t-springConfigUrl path to spring configuration file (if not provided \"config/default-config.xml\" is used)");
+ Console.WriteLine("\t-jvmDllPath path to JVM library jvm.dll (if not provided JAVA_HOME environment variable is used)");
+ Console.WriteLine("\t-jvmClasspath classpath passed to JVM (enlist additional jar files here)");
+ Console.WriteLine("\t-suppressWarnings wether to print warnings");
+ Console.WriteLine("\t-J<javaOption> JVM options passed to created JVM");
+ Console.WriteLine("\t-assembly=userLib.dll additional .Net assemblies");
+ Console.WriteLine("\t-jvmInitialMemoryMB Initial Java heap size, in megabytes. Maps to -Xms Java parameter. Defaults to 512.");
+ Console.WriteLine("\t-jvmMaxMemoryMB Maximum Java heap size, in megabytes. Maps to -Xmx Java parameter. Defaults to 1024.");
+ Console.WriteLine("");
+ Console.WriteLine("Examples:");
+ Console.WriteLine("\tApache.Ignite.exe -J-Xms1024m -J-Xmx1024m -springConfigUrl=C:/woer/gg-test/my-test-gg-confignative.xml");
+ Console.WriteLine("\tApache.Ignite.exe -IgniteHome=c:/apache-ignite -jvmClasspath=libs/myLib1.jar;libs/myLib2.jar");
+ Console.WriteLine("\tApache.Ignite.exe -assembly=c:/myProject/libs/lib1.dll -assembly=c:/myProject/libs/lib2.dll");
+ Console.WriteLine("\tApache.Ignite.exe -jvmInitialMemoryMB=1024 -jvmMaxMemoryMB=4096");
+ Console.WriteLine("");
+ Console.WriteLine("Note:");
+ Console.WriteLine("Command line settings have priority over Apache.Ignite.exe.config settings. JVM options and assemblies are concatenated; data from config file comes first, then data from command line.");
+ }
+
+ /// <summary>
+ /// Remove the first argument.
+ /// </summary>
+ /// <param name="args">Arguments.</param>
+ /// <returns>New arguments.</returns>
+ private static string[] RemoveFirstArg(string[] args)
+ {
+ return args.Skip(1).ToArray();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs b/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..03f7fb9
--- /dev/null
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Apache.Ignite")]
+[assembly: AssemblyDescription("Apache Ignite .NET Executable")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Apache Software Foundation")]
+[assembly: AssemblyProduct("Apache Ignite")]
+[assembly: AssemblyCopyright("Copyright © 2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+[assembly: Guid("0f9702ec-da7d-4ce5-b4b7-73310c885355")]
+
+[assembly: AssemblyVersion("1.5.0")]
+[assembly: AssemblyFileVersion("1.5.0")]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite/Service/IgniteService.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite/Service/IgniteService.cs b/modules/platform/src/main/dotnet/Apache.Ignite/Service/IgniteService.cs
new file mode 100644
index 0000000..a818171
--- /dev/null
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/Service/IgniteService.cs
@@ -0,0 +1,219 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Service
+{
+ using System;
+ using System.ComponentModel;
+ using System.IO;
+ using System.Linq;
+ using System.Reflection;
+ using System.Runtime.InteropServices;
+ using System.ServiceProcess;
+ using System.Text;
+ using Apache.Ignite.Config;
+ using Apache.Ignite.Core;
+ using Apache.Ignite.Core.Common;
+
+ /// <summary>
+ /// Ignite windows service.
+ /// </summary>
+ internal class IgniteService : ServiceBase
+ {
+ /** Service name. */
+ internal static readonly string SvcName = "Apache Ignite";
+
+ /** Service display name. */
+ internal static readonly string SvcDisplayName = "Apache Ignite .NET " +
+ Assembly.GetExecutingAssembly().GetName().Version.ToString(4);
+
+ /** Service description. */
+ internal static readonly string SvcDesc = "Apache Ignite .Net Service.";
+
+ /** Current executable name. */
+ internal static readonly string ExeName =
+ new FileInfo(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath).FullName;
+
+ /** Current executable fully qualified name. */
+ internal static readonly string FullExeName = Path.GetFileName(FullExeName);
+
+ /** Ignite configuration to start with. */
+ private readonly IgniteConfiguration _cfg;
+
+ /// <summary>
+ /// Constructor.
+ /// </summary>
+ public IgniteService(IgniteConfiguration cfg)
+ {
+ AutoLog = true;
+ CanStop = true;
+ ServiceName = SvcName;
+
+ _cfg = cfg;
+ }
+
+ /** <inheritDoc /> */
+ protected override void OnStart(string[] args)
+ {
+ Ignition.Start(_cfg);
+ }
+
+ /** <inheritDoc /> */
+ protected override void OnStop()
+ {
+ Ignition.StopAll(true);
+ }
+
+ /// <summary>
+ /// Install service programmatically.
+ /// </summary>
+ /// <param name="cfg">Ignite configuration.</param>
+ internal static void DoInstall(IgniteConfiguration cfg)
+ {
+ // 1. Check if already defined.
+ if (ServiceController.GetServices().Any(svc => SvcName.Equals(svc.ServiceName)))
+ {
+ throw new IgniteException("Ignite service is already installed (uninstall it using \"" +
+ ExeName + " " + IgniteRunner.SvcUninstall + "\" first)");
+ }
+
+ // 2. Create startup arguments.
+ var args = ArgsConfigurator.ToArgs(cfg);
+
+ if (args.Length > 0)
+ {
+ Console.WriteLine("Installing \"" + SvcName + "\" service with the following startup " +
+ "arguments:");
+
+ foreach (var arg in args)
+ Console.WriteLine("\t" + arg);
+ }
+ else
+ Console.WriteLine("Installing \"" + SvcName + "\" service ...");
+
+ // 3. Actual installation.
+ Install0(args);
+
+ Console.WriteLine("\"" + SvcName + "\" service installed successfully.");
+ }
+
+ /// <summary>
+ /// Uninstall service programmatically.
+ /// </summary>
+ internal static void Uninstall()
+ {
+ var svc = ServiceController.GetServices().FirstOrDefault(x => SvcName == x.ServiceName);
+
+ if (svc == null)
+ {
+ Console.WriteLine("\"" + SvcName + "\" service is not installed.");
+ }
+ else if (svc.Status != ServiceControllerStatus.Stopped)
+ {
+ throw new IgniteException("Ignite service is running, please stop it first.");
+ }
+ else
+ {
+ Console.WriteLine("Uninstalling \"" + SvcName + "\" service ...");
+
+ Uninstall0();
+
+ Console.WriteLine("\"" + SvcName + "\" service uninstalled successfully.");
+ }
+ }
+
+ /// <summary>
+ /// Native service installation.
+ /// </summary>
+ /// <param name="args">Arguments.</param>
+ private static void Install0(string[] args)
+ {
+ // 1. Prepare arguments.
+ var binPath = new StringBuilder(FullExeName).Append(" ").Append(IgniteRunner.Svc);
+
+ foreach (var arg in args)
+ binPath.Append(" ").Append(arg);
+
+ // 2. Get SC manager.
+ var scMgr = OpenServiceControlManager();
+
+ // 3. Create service.
+ var svc = NativeMethods.CreateService(
+ scMgr,
+ SvcName,
+ SvcDisplayName,
+ 983551, // Access constant.
+ 0x10, // Service type SERVICE_WIN32_OWN_PROCESS.
+ 0x2, // Start type SERVICE_AUTO_START.
+ 0x2, // Error control SERVICE_ERROR_SEVERE.
+ binPath.ToString(),
+ null,
+ IntPtr.Zero,
+ null,
+ null, // Use priviliged LocalSystem account.
+ null
+ );
+
+ if (svc == IntPtr.Zero)
+ throw new IgniteException("Failed to create the service.", new Win32Exception());
+
+ // 4. Set description.
+ var desc = new ServiceDescription {desc = Marshal.StringToHGlobalUni(SvcDesc)};
+
+
+ try
+ {
+ if (!NativeMethods.ChangeServiceConfig2(svc, 1u, ref desc))
+ throw new IgniteException("Failed to set service description.", new Win32Exception());
+ }
+ finally
+ {
+ Marshal.FreeHGlobal(desc.desc);
+ }
+ }
+
+ /// <summary>
+ /// Native service uninstallation.
+ /// </summary>
+ private static void Uninstall0()
+ {
+ var scMgr = OpenServiceControlManager();
+
+ var svc = NativeMethods.OpenService(scMgr, SvcName, 65536);
+
+ if (svc == IntPtr.Zero)
+ throw new IgniteException("Failed to uninstall the service.", new Win32Exception());
+
+ NativeMethods.DeleteService(svc);
+ }
+
+ /// <summary>
+ /// Opens SC manager.
+ /// </summary>
+ /// <returns>SC manager pointer.</returns>
+ private static IntPtr OpenServiceControlManager()
+ {
+ var ptr = NativeMethods.OpenSCManager(null, null, 983103);
+
+ if (ptr == IntPtr.Zero)
+ throw new IgniteException("Failed to initialize Service Control manager " +
+ "(did you run the command as administrator?)", new Win32Exception());
+
+ return ptr;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite/Service/NativeMethods.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite/Service/NativeMethods.cs b/modules/platform/src/main/dotnet/Apache.Ignite/Service/NativeMethods.cs
new file mode 100644
index 0000000..56ab15d
--- /dev/null
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/Service/NativeMethods.cs
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Service
+{
+ using System;
+ using System.Runtime.InteropServices;
+
+ /// <summary>
+ /// Native methods.
+ /// </summary>
+ internal class NativeMethods
+ {
+ [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
+ public static extern IntPtr OpenSCManager(string machineName, string dbName, int access);
+
+ [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
+ public static extern IntPtr CreateService(
+ IntPtr db,
+ string svcName,
+ string displayName,
+ int access,
+ int svcType,
+ int startType,
+ int errControl,
+ string binPath,
+ string loadOrderGrp,
+ IntPtr pTagId,
+ string dependencies,
+ string servicesStartName,
+ string pwd
+ );
+
+ [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
+ public static extern IntPtr OpenService(IntPtr db, string svcName, int access);
+
+ [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
+ public static extern bool DeleteService(IntPtr svc);
+
+ [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
+ public static extern bool ChangeServiceConfig2(IntPtr svc, uint infoLevel, ref ServiceDescription desc);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/main/dotnet/Apache.Ignite/Service/ServiceDescription.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/dotnet/Apache.Ignite/Service/ServiceDescription.cs b/modules/platform/src/main/dotnet/Apache.Ignite/Service/ServiceDescription.cs
new file mode 100644
index 0000000..a81a737
--- /dev/null
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/Service/ServiceDescription.cs
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Service
+{
+ using System;
+ using System.Runtime.InteropServices;
+
+ /// <summary>
+ /// Service description structure.
+ /// </summary>
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+ public struct ServiceDescription
+ {
+ /** Pointer to description. */
+ public IntPtr desc;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
index 62440a1..226f95f 100644
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
@@ -190,9 +190,6 @@
<Content Include="Config\native-client-test-cache-parallel-store.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
- <Content Include="Config\native-client-test-cache-portables.xml">
- <CopyToOutputDirectory>Always</CopyToOutputDirectory>
- </Content>
<Content Include="Config\native-client-test-cache-store.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
@@ -213,7 +210,7 @@
</Content>
</ItemGroup>
<ItemGroup>
- <Content Include="Config\Ignite.exe.config.test">
+ <Content Include="Config\Apache.Ignite.exe.config.test">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Cache/CacheForkedTest.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Cache/CacheForkedTest.cs b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Cache/CacheForkedTest.cs
index 04aff5f..2f3e0d0 100644
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Cache/CacheForkedTest.cs
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Cache/CacheForkedTest.cs
@@ -24,7 +24,6 @@ namespace Apache.Ignite.Core.Tests.Cache
/// <summary>
/// Tests cache with a standalone process.
/// </summary>
- [Ignore("IGNITE-1367")]
public class CacheForkedTest
{
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedPortableClosureTaskTest.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedPortableClosureTaskTest.cs b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedPortableClosureTaskTest.cs
index 4b303ce..4ce917b 100644
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedPortableClosureTaskTest.cs
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedPortableClosureTaskTest.cs
@@ -17,12 +17,9 @@
namespace Apache.Ignite.Core.Tests.Compute.Forked
{
- using NUnit.Framework;
-
/// <summary>
/// Forked closure execution tests for portable objects.
/// </summary>
- [Ignore("IGNITE-1367")]
public class ForkedPortableClosureTaskTest : PortableClosureTaskTest
{
/// <summary>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedResourceTaskTest.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedResourceTaskTest.cs b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedResourceTaskTest.cs
index 00fd28a..84c1ba2 100644
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedResourceTaskTest.cs
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedResourceTaskTest.cs
@@ -22,7 +22,7 @@ namespace Apache.Ignite.Core.Tests.Compute.Forked
/// <summary>
/// Forked resource task test.
/// </summary>
- [Ignore("IGNITE-1367")]
+ [Ignore("IGNITE-1381")]
public class ForkedResourceTaskTest : ResourceTaskTest
{
/// <summary>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedSerializableClosureTaskTest.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedSerializableClosureTaskTest.cs b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedSerializableClosureTaskTest.cs
index edc18f2..0324125 100644
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedSerializableClosureTaskTest.cs
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedSerializableClosureTaskTest.cs
@@ -22,7 +22,7 @@ namespace Apache.Ignite.Core.Tests.Compute.Forked
/// <summary>
/// Forked closure execution tests for serializable objects.
/// </summary>
- [Ignore("IGNITE-1367")]
+ [Ignore("IGNITE-1381")]
public class ForkedSerializableClosureTaskTest : SerializableClosureTaskTest
{
/// <summary>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedTaskAdapterTest.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedTaskAdapterTest.cs b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedTaskAdapterTest.cs
index e7bad17..a4cf182 100644
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedTaskAdapterTest.cs
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Compute/Forked/ForkedTaskAdapterTest.cs
@@ -17,12 +17,9 @@
namespace Apache.Ignite.Core.Tests.Compute.Forked
{
- using NUnit.Framework;
-
/// <summary>
/// Forked task adapter test.
/// </summary>
- [Ignore("IGNITE-1367")]
public class ForkedTaskAdapterTest : TaskAdapterTest
{
/// <summary>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/Apache.Ignite.exe.config.test
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/Apache.Ignite.exe.config.test b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/Apache.Ignite.exe.config.test
new file mode 100644
index 0000000..2bda365
--- /dev/null
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/Apache.Ignite.exe.config.test
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
+ </startup>
+
+ <runtime>
+ <gcServer enabled="true" />
+ </runtime>
+
+ <appSettings>
+ <add key="Ignite.SpringConfigUrl" value="config\compute\compute-standalone.xml" />
+ <add key="Ignite.Assembly.1" value="test-1.dll" />
+ <add key="Ignite.Assembly.2" value="test-2.dll" />
+ <add key="Ignite.JvmOption.1" value="-DOPT1" />
+ <add key="Ignite.JvmOption.2" value="-DOPT2" />
+ <add key="Ignite.JvmOption.3" value="-Xms601m" />
+ <add key="Ignite.JvmOption.4" value="-Xmx702m" />
+ <add key="Ignite.JvmInitialMemoryMB" value="601" />
+ <add key="Ignite.JvmMaxMemoryMB" value="702" />
+ </appSettings>
+
+</configuration>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/Ignite.exe.config.test
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/Ignite.exe.config.test b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/Ignite.exe.config.test
deleted file mode 100644
index 305fbd5..0000000
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/Ignite.exe.config.test
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<configuration>
- <startup>
- <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
- </startup>
-
- <runtime>
- <gcServer enabled="true" />
- </runtime>
-
- <appSettings>
- <add key="GridGain.SpringConfigUrl" value="config\compute\compute-standalone.xml" />
- <add key="GridGain.Assembly.1" value="test-1.dll" />
- <add key="GridGain.Assembly.2" value="test-2.dll" />
- <add key="GridGain.JvmOption.1" value="-DOPT1" />
- <add key="GridGain.JvmOption.2" value="-DOPT2" />
- <add key="GridGain.JvmOption.3" value="-Xms601m" />
- <add key="GridGain.JvmOption.4" value="-Xmx702m" />
- <add key="GridGain.JvmInitialMemoryMB" value="601" />
- <add key="GridGain.JvmMaxMemoryMB" value="702" />
- </appSettings>
-
-</configuration>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/native-client-test-cache-portables.xml
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/native-client-test-cache-portables.xml b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/native-client-test-cache-portables.xml
deleted file mode 100644
index 1d90c99..0000000
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/native-client-test-cache-portables.xml
+++ /dev/null
@@ -1,226 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:util="http://www.springframework.org/schema/util"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/util
- http://www.springframework.org/schema/util/spring-util.xsd">
-
- <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
- <property name="localHost" value="127.0.0.1"/>
-
- <property name="marshaller">
- <bean class="org.gridgain.grid.marshaller.optimized.GridOptimizedMarshaller">
- <property name="requireSerializable" value="false"/>
- </bean>
- </property>
-
- <property name="includeEventTypes">
- <util:constant static-field="org.apache.ignite.events.IgniteEventType.EVTS_CACHE"/>
- </property>
-
- <property name="portableConfiguration">
- <bean class="org.gridgain.grid.configuration.PortableConfiguration">
- <property name="typeConfigurations">
- <list>
- <bean class="org.apache.ignite.portable.PortableTypeConfiguration">
- <property name="className" value="org.gridgain.client.GridClientTestPortable"/>
- </bean>
- <bean class="org.apache.ignite.portable.PortableTypeConfiguration">
- <property name="className" value="org.gridgain.client.model.PortablePerson"/>
- </bean>
- <bean class="org.apache.ignite.portable.PortableTypeConfiguration">
- <property name="className" value="org.gridgain.client.model.ImplicitPortablePerson"/>
- </bean>
- <bean class="org.apache.ignite.portable.PortableTypeConfiguration">
- <property name="className" value="NoDefPortablePerson"/>
- </bean>
- </list>
- </property>
- </bean>
- </property>
-
- <property name="cacheConfiguration">
- <list>
- <bean parent="cache-template">
- <property name="name" value="local"/>
- <property name="cacheMode" value="LOCAL"/>
- <property name="atomicityMode" value="TRANSACTIONAL"/>
- </bean>
-
- <bean parent="cache-template">
- <property name="name" value="local_atomic"/>
- <property name="cacheMode" value="LOCAL"/>
- <property name="atomicityMode" value="ATOMIC"/>
- </bean>
-
- <bean parent="cache-template">
- <property name="name" value="partitioned"/>
- <property name="cacheMode" value="PARTITIONED"/>
- <property name="atomicityMode" value="TRANSACTIONAL"/>
- </bean>
-
- <bean parent="cache-template">
- <property name="name" value="partitioned_atomic"/>
- <property name="cacheMode" value="PARTITIONED"/>
- <property name="atomicityMode" value="ATOMIC"/>
- <property name="atomicWriteOrderMode" value="PRIMARY"/>
- </bean>
-
- <bean parent="cache-template">
- <property name="name" value="partitioned_near"/>
- <property name="cacheMode" value="PARTITIONED"/>
- <property name="atomicityMode" value="TRANSACTIONAL"/>
- <property name="nearConfiguration">
- <bean class="org.apache.ignite.configuration.NearCacheConfiguration" />
- </property>
- </bean>
-
- <bean parent="cache-template">
- <property name="name" value="partitioned_atomic_near"/>
- <property name="cacheMode" value="PARTITIONED"/>
- <property name="atomicityMode" value="ATOMIC"/>
- <property name="atomicWriteOrderMode" value="PRIMARY"/>
- <property name="nearConfiguration">
- <bean class="org.apache.ignite.configuration.NearCacheConfiguration" />
- </property>
- </bean>
-
- <bean parent="cache-template">
- <property name="name" value="replicated"/>
- <property name="cacheMode" value="REPLICATED"/>
- <property name="atomicityMode" value="TRANSACTIONAL"/>
- </bean>
-
- <bean parent="cache-template">
- <property name="name" value="replicated_atomic"/>
- <property name="cacheMode" value="REPLICATED"/>
- <property name="atomicityMode" value="ATOMIC"/>
- <property name="atomicWriteOrderMode" value="PRIMARY"/>
- </bean>
- </list>
- </property>
-
- <property name="swapSpaceSpi">
- <bean class="org.gridgain.grid.spi.swapspace.inmemory.GridTestSwapSpaceSpi"/>
- </property>
-
- <property name="indexingSpi">
- <list>
- <bean class="org.gridgain.grid.spi.indexing.h2.GridH2IndexingSpi">
- </bean>
- </list>
- </property>
-
- <property name="discoverySpi">
- <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
- <property name="ipFinder">
- <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
- <property name="addresses">
- <list>
- <!-- In distributed environment, replace with actual host IP address. -->
- <value>127.0.0.1:47500..47501</value>
- </list>
- </property>
- </bean>
- </property>
- </bean>
- </property>
-
- <property name="platformConfiguration">
- <bean class="org.apache.ignite.platform.dotnet.PlatformDotNetConfiguration">
- <property name="portableConfiguration">
- <bean class="org.apache.ignite.platform.dotnet.PlatformDotNetPortableConfiguration">
- <property name="types">
- <util:list value-type="java.lang.String">
-
- </util:list>
- </property>
- </bean>
- </property>
- </bean>
- </property>
- </bean>
-
- <bean id="cache-template" abstract="true" class="org.apache.ignite.cache.CacheConfiguration">
- <property name="rebalanceMode" value="SYNC"/>
- <property name="writeSynchronizationMode" value="FULL_SYNC"/>
- <property name="swapEnabled" value="true"/>
- <property name="portableEnabled" value="true"/>
- <property name="txSerializableEnabled" value="true"/>
- <property name="backups" value="1"/>
-
- <property name="store">
- <bean class="org.gridgain.grid.internal.processors.cache.GridCacheGenericTestStore"/>
- </property>
-
- <property name="typeMetadata">
- <list>
- <bean class="org.apache.ignite.cache.CacheTypeMetadata">
- <property name="valueType" value="PortablePerson"/>
- <property name="ascendingFields">
- <map>
- <entry key="age" value="java.lang.Integer"/>
- </map>
- </property>
- <property name="queryFields">
- <map>
- <entry key="name" value="java.lang.String"/>
- </map>
- </property>
- <property name="textFields">
- <list>
- <value>address</value>
- </list>
- </property>
- </bean>
- <bean class="org.apache.ignite.cache.CacheTypeMetadata">
- <property name="valueType" value="ImplicitPortablePerson"/>
- <property name="ascendingFields">
- <map>
- <entry key="age" value="java.lang.Integer"/>
- </map>
- </property>
- <property name="queryFields">
- <map>
- <entry key="name" value="java.lang.String"/>
- </map>
- </property>
- </bean>
- <bean class="org.apache.ignite.cache.CacheTypeMetadata">
- <property name="valueType" value="NoDefPortablePerson"/>
- <property name="ascendingFields">
- <map>
- <entry key="age" value="java.lang.Integer"/>
- </map>
- </property>
- <property name="queryFields">
- <map>
- <entry key="name" value="java.lang.String"/>
- </map>
- </property>
- </bean>
- </list>
- </property>
- </bean>
-</beans>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/native-client-test-cache.xml
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/native-client-test-cache.xml b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/native-client-test-cache.xml
index 5d65ae8..c48e867 100644
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/native-client-test-cache.xml
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Config/native-client-test-cache.xml
@@ -29,27 +29,6 @@
<property name="localHost" value="127.0.0.1"/>
<property name="connectorConfiguration"><null/></property>
- <property name="marshaller">
- <bean class="org.apache.ignite.marshaller.portable.PortableMarshaller">
- <property name="typeConfigurations">
- <list>
- <bean class="org.apache.ignite.portable.PortableTypeConfiguration">
- <property name="className" value="org.gridgain.client.ClientTestPortable"/>
- </bean>
- <bean class="org.apache.ignite.portable.PortableTypeConfiguration">
- <property name="className" value="org.gridgain.internal.client.model.PortablePerson"/>
- </bean>
- <bean class="org.apache.ignite.portable.PortableTypeConfiguration">
- <property name="className" value="org.gridgain.internal.client.model.ImplicitPortablePerson"/>
- </bean>
- <bean class="org.apache.ignite.portable.PortableTypeConfiguration">
- <property name="className" value="NoDefPortablePerson"/>
- </bean>
- </list>
- </property>
- </bean>
- </property>
-
<property name="includeEventTypes">
<util:constant static-field="org.apache.ignite.events.EventType.EVTS_CACHE"/>
</property>
@@ -132,15 +111,6 @@
<bean class="org.apache.ignite.spi.swapspace.inmemory.GridTestSwapSpaceSpi"/>
</property>
- <!-- TODO: -->
- <!--<property name="indexingSpi">
- <list>
- <bean class="org.gridgain.grid.spi.indexing.h2.GridH2IndexingSpi">
- <property name="defaultIndexFixedTyping" value="false"/>
- </bean>
- </list>
- </property>-->
-
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/ExecutableTest.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/ExecutableTest.cs b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/ExecutableTest.cs
index 9c47cbc..e4530cb 100644
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/ExecutableTest.cs
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/ExecutableTest.cs
@@ -33,7 +33,6 @@ namespace Apache.Ignite.Core.Tests
/// <summary>
/// Tests for executable.
/// </summary>
- [Ignore("IGNITE-1367")]
public class ExecutableTest
{
/** Spring configuration path. */
@@ -98,18 +97,18 @@ namespace Apache.Ignite.Core.Tests
[Test]
public void TestConfig()
{
- IgniteProcess.ReplaceConfiguration("config\\Ignite.exe.config.test");
+ IgniteProcess.ReplaceConfiguration("config\\Apache.Ignite.exe.config.test");
GenerateDll("test-1.dll");
GenerateDll("test-2.dll");
- IgniteProcess proc = new IgniteProcess(
+ var proc = new IgniteProcess(
"-jvmClasspath=" + TestUtils.CreateTestClasspath()
);
Assert.IsTrue(_grid.WaitTopology(2, 30000));
- RemoteConfiguration cfg = RemoteConfig();
+ var cfg = RemoteConfig();
Assert.AreEqual(SpringCfgPath, cfg.SpringConfigUrl);
Assert.IsTrue(cfg.JvmOptions.Contains("-DOPT1") && cfg.JvmOptions.Contains("-DOPT2"));
@@ -127,7 +126,7 @@ namespace Apache.Ignite.Core.Tests
GenerateDll("test-1.dll");
GenerateDll("test-2.dll");
- IgniteProcess proc = new IgniteProcess(
+ var proc = new IgniteProcess(
"-jvmClasspath=" + TestUtils.CreateTestClasspath(),
"-springConfigUrl=" + SpringCfgPath,
"-assembly=test-1.dll",
@@ -136,7 +135,7 @@ namespace Apache.Ignite.Core.Tests
Assert.IsTrue(_grid.WaitTopology(2, 30000));
- RemoteConfiguration cfg = RemoteConfig();
+ var cfg = RemoteConfig();
Assert.IsTrue(cfg.Assemblies.Contains("test-1.dll") && cfg.Assemblies.Contains("test-2.dll"));
}
@@ -147,7 +146,7 @@ namespace Apache.Ignite.Core.Tests
[Test]
public void TestJvmOptsCmd()
{
- IgniteProcess proc = new IgniteProcess(
+ var proc = new IgniteProcess(
"-jvmClasspath=" + TestUtils.CreateTestClasspath(),
"-springConfigUrl=" + SpringCfgPath,
"-J-DOPT1",
@@ -156,7 +155,7 @@ namespace Apache.Ignite.Core.Tests
Assert.IsTrue(_grid.WaitTopology(2, 30000));
- RemoteConfiguration cfg = RemoteConfig();
+ var cfg = RemoteConfig();
Assert.IsTrue(cfg.JvmOptions.Contains("-DOPT1") && cfg.JvmOptions.Contains("-DOPT2"));
}
@@ -211,7 +210,7 @@ namespace Apache.Ignite.Core.Tests
[Test]
public void TestJvmMemoryOptsAppConfig()
{
- IgniteProcess.ReplaceConfiguration("config\\Ignite.exe.config.test");
+ IgniteProcess.ReplaceConfiguration("config\\Apache.Ignite.exe.config.test");
GenerateDll("test-1.dll");
GenerateDll("test-2.dll");
@@ -285,10 +284,10 @@ namespace Apache.Ignite.Core.Tests
/// <returns>Node configuration.</returns>
private static IgniteConfiguration Configuration(string path)
{
- IgniteConfiguration cfg = new IgniteConfiguration();
+ var cfg = new IgniteConfiguration();
- PortableConfiguration portCfg = new PortableConfiguration();
+ var portCfg = new PortableConfiguration();
ICollection<PortableTypeConfiguration> portTypeCfgs = new List<PortableTypeConfiguration>();
@@ -307,7 +306,7 @@ namespace Apache.Ignite.Core.Tests
"-Xcheck:jni",
"-Xms4g",
"-Xmx4g",
- "-DGRIDGAIN_QUIET=false",
+ "-DIGNITE_QUIET=false",
"-Xnoagent",
"-Djava.compiler=NONE",
"-Xdebug",
@@ -326,21 +325,21 @@ namespace Apache.Ignite.Core.Tests
/// <param name="outputPath"></param>
private static void GenerateDll(string outputPath)
{
- CSharpCodeProvider codeProvider = new CSharpCodeProvider();
+ var codeProvider = new CSharpCodeProvider();
#pragma warning disable 0618
- ICodeCompiler icc = codeProvider.CreateCompiler();
+ var icc = codeProvider.CreateCompiler();
#pragma warning restore 0618
- CompilerParameters parameters = new CompilerParameters();
+ var parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.OutputAssembly = outputPath;
- string src = "namespace GridGain.Client.Test { public class Foo {}}";
+ var src = "namespace Apache.Ignite.Client.Test { public class Foo {}}";
- CompilerResults results = icc.CompileAssemblyFromSource(parameters, src);
+ var results = icc.CompileAssemblyFromSource(parameters, src);
Assert.False(results.Errors.HasErrors);
}
@@ -372,11 +371,11 @@ namespace Apache.Ignite.Core.Tests
public RemoteConfiguration Invoke()
{
- Ignite grid0 = (Ignite) ((IgniteProxy) _grid).Target;
+ var grid0 = (Ignite) ((IgniteProxy) _grid).Target;
- IgniteConfiguration cfg = grid0.Configuration;
+ var cfg = grid0.Configuration;
- RemoteConfiguration res = new RemoteConfiguration
+ var res = new RemoteConfiguration
{
IgniteHome = cfg.IgniteHome,
SpringConfigUrl = cfg.SpringConfigUrl,
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2d19b17/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/IgniteStartStopTest.cs
----------------------------------------------------------------------
diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/IgniteStartStopTest.cs b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/IgniteStartStopTest.cs
index d2b2efa..ec7e157 100644
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/IgniteStartStopTest.cs
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/IgniteStartStopTest.cs
@@ -186,34 +186,6 @@ namespace Apache.Ignite.Core.Tests
}
}
- /*
- [Test]
- public void TestStartInvalidJvmOptions()
- {
- GridGain.Impl.IgniteManager.DestroyJvm();
-
- IgniteConfiguration cfg = new IgniteConfiguration();
-
- cfg.NativeXmlConfig = "config\\start-test-grid1.xml";
- cfg.NativeJvmOptions = new List<string> { "invalid_option"};
-
- try
- {
- Ignition.Start(cfg);
-
- Assert.Fail("Start should fail.");
- }
- catch (IgniteException e)
- {
- Console.WriteLine("Expected exception: " + e);
- }
-
- cfg.NativeJvmOptions = new List<string> { "-Xmx1g", "-Xms1g" };
-
- Ignition.Start(cfg);
- }
- */
-
/// <summary>
///
/// </summary>