You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by pt...@apache.org on 2017/04/24 11:09:17 UTC
ignite git commit: IGNITE-5066 .NET: Add continuous query test to
verify that the problem from 1.9 no longer reproduces
Repository: ignite
Updated Branches:
refs/heads/ignite-2.0 1214d7e7e -> 5a433469a
IGNITE-5066 .NET: Add continuous query test to verify that the problem from 1.9 no longer reproduces
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5a433469
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5a433469
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5a433469
Branch: refs/heads/ignite-2.0
Commit: 5a433469afca394fc97b59cc16dbe83b2d24f8c5
Parents: 1214d7e
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Mon Apr 24 14:09:01 2017 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Mon Apr 24 14:09:01 2017 +0300
----------------------------------------------------------------------
.../Apache.Ignite.Core.Tests.csproj | 1 +
.../Query/Continuous/ContinuousQueryTest.cs | 115 +++++++++++++++++++
2 files changed, 116 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/5a433469/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 f4f5e59..c6b183b 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
@@ -101,6 +101,7 @@
<Compile Include="Cache\Query\CacheDmlQueriesTestSimpleName.cs" />
<Compile Include="Cache\Query\CacheLinqTestSimpleName.cs" />
<Compile Include="Cache\Query\CacheQueriesTestSimpleName.cs" />
+ <Compile Include="Cache\Query\Continuous\ContinuousQueryTest.cs" />
<Compile Include="Cache\Store\CacheStoreAdapterTest.cs" />
<Compile Include="Cache\Store\NamedNodeCacheStoreTest.cs" />
<Compile Include="Cache\TestReferenceObject.cs" />
http://git-wip-us.apache.org/repos/asf/ignite/blob/5a433469/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Continuous/ContinuousQueryTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Continuous/ContinuousQueryTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Continuous/ContinuousQueryTest.cs
new file mode 100644
index 0000000..5148dcc
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Continuous/ContinuousQueryTest.cs
@@ -0,0 +1,115 @@
+\ufeff/*
+ * 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.Cache.Query.Continuous
+{
+ using System;
+ using System.Collections.Concurrent;
+ using System.Collections.Generic;
+ using System.Threading;
+ using Apache.Ignite.Core.Cache;
+ using Apache.Ignite.Core.Cache.Event;
+ using Apache.Ignite.Core.Cache.Query.Continuous;
+ using NUnit.Framework;
+
+ /// <summary>
+ /// Tests continuous queries.
+ /// </summary>
+ [Category(TestUtils.CategoryIntensive)]
+ public class ContinuousQueryTest
+ {
+ /// <summary>
+ /// Tests same query on multiple nodes.
+ /// This tests verifies that there are no exception on Java side during event delivery.
+ /// </summary>
+ [Test]
+ public void TestSameQueryMultipleNodes()
+ {
+ using (var ignite = StartIgnite())
+ {
+ var cache = ignite.GetOrCreateCache<Guid, Data>("data");
+ cache.QueryContinuous(new ContinuousQuery<Guid, Data>(new Listener()));
+
+ using (var ignite2 = StartIgnite())
+ {
+ var cache2 = ignite2.GetOrCreateCache<Guid, Data>("data");
+ cache2.QueryContinuous(new ContinuousQuery<Guid, Data>(new Listener()));
+
+ for (var i = 0; i < 100; i++)
+ {
+ PutEntry(cache2);
+ PutEntry(cache);
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// Puts the entry and verifies events.
+ /// </summary>
+ private static void PutEntry(ICache<Guid, Data> cache)
+ {
+ // Put new entry.
+ var entry = new Data {Id = Guid.NewGuid()};
+ cache.Put(entry.Id, entry);
+
+ // Wait for events.
+ Thread.Sleep(100);
+
+ ICacheEntryEvent<Guid, Data> e;
+
+ // Two listeners - two events.
+ Assert.IsTrue(Listener.Events.TryPop(out e));
+ Assert.AreEqual(entry.Id, e.Key);
+
+ Assert.IsTrue(Listener.Events.TryPop(out e));
+ Assert.AreEqual(entry.Id, e.Key);
+ }
+
+ /// <summary>
+ /// Starts the ignite.
+ /// </summary>
+ private static IIgnite StartIgnite()
+ {
+ return Ignition.Start(new IgniteConfiguration(TestUtils.GetTestConfiguration())
+ {
+ BinaryConfiguration = new Core.Binary.BinaryConfiguration(typeof(Data)),
+ AutoGenerateIgniteInstanceName = true
+ });
+ }
+
+ private class Data
+ {
+ public Guid Id;
+ }
+
+ private class Listener : ICacheEntryEventListener<Guid, Data>
+ {
+ public static readonly ConcurrentStack<ICacheEntryEvent<Guid, Data>> Events
+ = new ConcurrentStack<ICacheEntryEvent<Guid, Data>>();
+
+ public void OnEvent(IEnumerable<ICacheEntryEvent<Guid, Data>> evts)
+ {
+ foreach (var e in evts)
+ {
+ Events.Push(e);
+ }
+ }
+ }
+ }
+}