IGNITE-7124 .NET: Thin client: Cache benchmark
authorPavel Tupitsyn <ptupitsyn@apache.org>
Wed, 6 Dec 2017 17:14:55 +0000 (20:14 +0300)
committerPavel Tupitsyn <ptupitsyn@apache.org>
Wed, 6 Dec 2017 17:14:55 +0000 (20:14 +0300)
modules/platforms/dotnet/Apache.Ignite.Benchmarks/Apache.Ignite.Benchmarks.csproj
modules/platforms/dotnet/Apache.Ignite.Benchmarks/Interop/PlatformBenchmarkBase.cs
modules/platforms/dotnet/Apache.Ignite.Benchmarks/ThinClient/ThinClientGetBenchmark.cs [new file with mode: 0644]
modules/platforms/dotnet/Apache.Ignite.Benchmarks/ThinClient/ThinClientPutBenchmark.cs [new file with mode: 0644]

index 65dfc1e..b5c2074 100644 (file)
@@ -69,6 +69,8 @@
     <Compile Include="Result\BenchmarkConsoleResultWriter.cs" />
     <Compile Include="Result\BenchmarkFileResultWriter.cs" />
     <Compile Include="Result\IBenchmarkResultWriter.cs" />
+    <Compile Include="ThinClient\ThinClientGetBenchmark.cs" />
+    <Compile Include="ThinClient\ThinClientPutBenchmark.cs" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Apache.Ignite.Core\Apache.Ignite.Core.csproj">
index f437eb8..ca9fb0c 100644 (file)
 namespace Apache.Ignite.Benchmarks.Interop
 {
     using System.Collections.Generic;
+    using System.Net;
     using Apache.Ignite.Benchmarks.Model;
     using Apache.Ignite.Core;
     using Apache.Ignite.Core.Binary;
+    using Apache.Ignite.Core.Client;
 
     /// <summary>
     /// Base class for all platform benchmarks.
@@ -117,5 +119,24 @@ namespace Apache.Ignite.Benchmarks.Interop
         /// Payload.
         /// </summary>
         public int Payload { get; set; }
+
+        /// <summary>
+        /// Gets the client.
+        /// </summary>
+        protected IIgniteClient GetClient()
+        {
+            return Ignition.StartClient(GetClientConfiguration());
+        }
+
+        /// <summary>
+        /// Gets the client configuration.
+        /// </summary>
+        private IgniteClientConfiguration GetClientConfiguration()
+        {
+            return new IgniteClientConfiguration
+            {
+                Host = IPAddress.Loopback.ToString()
+            };
+        }
     }
 }
diff --git a/modules/platforms/dotnet/Apache.Ignite.Benchmarks/ThinClient/ThinClientGetBenchmark.cs b/modules/platforms/dotnet/Apache.Ignite.Benchmarks/ThinClient/ThinClientGetBenchmark.cs
new file mode 100644 (file)
index 0000000..4af5f1f
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * 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.Benchmarks.ThinClient
+{
+    using System.Collections.Generic;
+    using Apache.Ignite.Benchmarks.Interop;
+    using Apache.Ignite.Benchmarks.Model;
+    using Apache.Ignite.Core.Client.Cache;
+
+    /// <summary>
+    /// Cache get benchmark.
+    /// </summary>
+    internal class ThinClientGetBenchmark : PlatformBenchmarkBase
+    {
+        /** Cache name. */
+        private const string CacheName = "cache";
+
+        /** Native cache wrapper. */
+        private ICacheClient<int, Employee> _cache;
+
+        /** <inheritDoc /> */
+        protected override void OnStarted()
+        {
+            base.OnStarted();
+
+            _cache = GetClient().GetCache<int, Employee>(CacheName);
+
+            for (int i = 0; i < Emps.Length; i++)
+                _cache.Put(i, Emps[i]);
+        }
+
+        /** <inheritDoc /> */
+        protected override void GetDescriptors(ICollection<BenchmarkOperationDescriptor> descs)
+        {
+            descs.Add(BenchmarkOperationDescriptor.Create("ThinClientGet", Get, 1));
+        }
+
+        /// <summary>
+        /// Cache get.
+        /// </summary>
+        private void Get(BenchmarkState state)
+        {
+            var idx = BenchmarkUtils.GetRandomInt(Dataset);
+
+            _cache.Get(idx);
+        }
+    }
+}
diff --git a/modules/platforms/dotnet/Apache.Ignite.Benchmarks/ThinClient/ThinClientPutBenchmark.cs b/modules/platforms/dotnet/Apache.Ignite.Benchmarks/ThinClient/ThinClientPutBenchmark.cs
new file mode 100644 (file)
index 0000000..deb9c99
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * 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.Benchmarks.ThinClient
+{
+    using System.Collections.Generic;
+    using Apache.Ignite.Benchmarks.Interop;
+    using Apache.Ignite.Core.Client.Cache;
+
+    /// <summary>
+    /// Cache put benchmark.
+    /// </summary>
+    internal class ThinClientPutBenchmark : PlatformBenchmarkBase
+    {
+        /** Cache name. */
+        private const string CacheName = "cache";
+
+        /** Native cache wrapper. */
+        private ICacheClient<object, object> _cache;
+
+        /** <inheritDoc /> */
+        protected override void OnStarted()
+        {
+            base.OnStarted();
+
+            _cache = GetClient().GetCache<object, object>(CacheName);
+        }
+
+        /** <inheritDoc /> */
+        protected override void GetDescriptors(ICollection<BenchmarkOperationDescriptor> descs)
+        {
+            descs.Add(BenchmarkOperationDescriptor.Create("ThinClientPut", Put, 1));
+        }
+        
+        /// <summary>
+        /// Cache put.
+        /// </summary>
+        private void Put(BenchmarkState state)
+        {
+            int idx = BenchmarkUtils.GetRandomInt(Dataset);
+
+            _cache.Put(idx, Emps[idx]);
+        }
+    }
+}