IGNITE-2492 .NET: Peer assembly loading - add TestCacheGetOnRemoteNode
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/2ac39082 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/2ac39082 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/2ac39082 Branch: refs/heads/ignite-2.1 Commit: 2ac39082c6aa660085ea94df121166920821b427 Parents: 92becc8 Author: Pavel Tupitsyn <ptupit...@apache.org> Authored: Mon Jul 10 17:05:08 2017 +0300 Committer: Pavel Tupitsyn <ptupit...@apache.org> Committed: Mon Jul 10 17:05:08 2017 +0300 ---------------------------------------------------------------------- .../Apache.Ignite.Core.Tests.csproj | 1 + .../Deployment/CacheGetFunc.cs | 50 ++++++++++++++++++++ .../Deployment/PeerAssemblyLoadingTest.cs | 24 ++++++++++ 3 files changed, 75 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/2ac39082/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj index d91f0e6..4787c4d 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj +++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj @@ -78,6 +78,7 @@ <Compile Include="Binary\BinarySelfTestSimpleName.cs" /> <Compile Include="Binary\EnumsTestOnline.cs" /> <Compile Include="Cache\PersistentStoreTest.cs" /> + <Compile Include="Deployment\CacheGetFunc.cs" /> <Compile Include="Deployment\GetAddressFunc.cs" /> <Compile Include="Deployment\PeerAssemblyLoadingAllApisTest.cs" /> <Compile Include="Deployment\PeerAssemblyLoadingVersioningTest.cs" /> http://git-wip-us.apache.org/repos/asf/ignite/blob/2ac39082/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Deployment/CacheGetFunc.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Deployment/CacheGetFunc.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Deployment/CacheGetFunc.cs new file mode 100644 index 0000000..2679130 --- /dev/null +++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Deployment/CacheGetFunc.cs @@ -0,0 +1,50 @@ +/* + * 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.Core.Tests.Deployment +{ + using Apache.Ignite.Core.Compute; + using Apache.Ignite.Core.Resource; + + /// <summary> + /// Function to get a value from cache. + /// </summary> + public class CacheGetFunc<TKey, TValue> : IComputeFunc<TValue> + { + /// <summary> + /// Gets or sets the cache key. + /// </summary> + public TKey Key { get; set; } + + /// <summary> + /// Gets or sets the name of the cache. + /// </summary> + public string CacheName { get; set; } + + /// <summary> + /// Gets or sets the ignite. + /// </summary> + [InstanceResource] + public IIgnite Ignite { get;set; } + + /** <inheritdoc /> */ + public TValue Invoke() + { + return Ignite.GetCache<TKey, TValue>(CacheName).Get(Key); + } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/2ac39082/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Deployment/PeerAssemblyLoadingTest.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Deployment/PeerAssemblyLoadingTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Deployment/PeerAssemblyLoadingTest.cs index 8245333..da896dd 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Deployment/PeerAssemblyLoadingTest.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Deployment/PeerAssemblyLoadingTest.cs @@ -131,6 +131,30 @@ namespace Apache.Ignite.Core.Tests.Deployment } /// <summary> + /// Tests the cache get operation on remote node. + /// </summary> + [Test] + public void TestCacheGetOnRemoteNode() + { + TestDeployment(remoteCompute => + { + var cache = remoteCompute.ClusterGroup.Ignite.GetOrCreateCache<int, Address>("addr"); + cache[1] = new Address("street", 123); + + // This will fail for <object, object> func, because cache operations are not p2p-enabled. + // However, generic nature of the func causes Address to be peer-deployed before cache.Get call. + var func = new CacheGetFunc<int, Address> + { + CacheName = cache.Name, + Key = 1 + }; + + var res = remoteCompute.Call(func); + Assert.AreEqual("street", res.Street); + }); + } + + /// <summary> /// Tests the peer deployment. /// </summary> public static void TestDeployment(Action<ICompute> test, bool enablePeerDeployment = true)