Exemple #1
0
        public virtual void TestPutTransient()
        {
            Assert.AreEqual(0, map.Size());
            map.PutTransient("key1", "value1", 100, TimeUnit.Milliseconds);
            Assert.AreEqual("value1", map.Get("key1"));

            TestSupport.AssertTrueEventually(() => { Assert.AreNotEqual("value1", map.Get("key1")); });
        }
Exemple #2
0
        public void TestPut_ttl()
        {
            ReplicatedMap.Put(1, "value1", 5, TimeUnit.Seconds);
            var value = ReplicatedMap.Get(1);

            Assert.AreEqual(value, "value1");
            TestSupport.AssertTrueEventually(() => { Assert.Null(ReplicatedMap.Get(1)); });
        }
        public virtual void TestPutTtl()
        {
            var ttl = 100;

            map.Put("key1", "value1", ttl, TimeUnit.Milliseconds);
            Assert.IsNotNull(map.Get("key1"));

            TestSupport.AssertTrueEventually(() => { Assert.IsNull(map.Get("key1")); });
        }
        public virtual void TestSet()
        {
            map.Set("key1", "value1");
            Assert.AreEqual("value1", map.Get("key1"));
            map.Set("key1", "value2");
            Assert.AreEqual("value2", map.Get("key1"));
            map.Set("key1", "value3", 100, TimeUnit.Milliseconds);
            Assert.AreEqual("value3", map.Get("key1"));

            TestSupport.AssertTrueEventually(() => Assert.IsNull(map.Get("key1")));
        }
        public virtual void TestPutTransient()
        {
            Assert.AreEqual(0, map.Size());
            var ttl = 100;

            map.PutTransient("key1", "value1", 100, TimeUnit.MILLISECONDS);
            Assert.AreEqual("value1", map.Get("key1"));

            TestSupport.AssertTrueEventually(() =>
            {
                Assert.AreNotEqual("value1", map.Get("key1"));
            });
        }
        public void TestPutIfAbsentTTL_whenExpire()
        {
            object key   = "Key";
            object value = "Value";

            var ttl    = 100;
            var result = map.PutIfAbsent(key, value, ttl, TimeUnit.MILLISECONDS);

            TestSupport.AssertTrueEventually(() => {
                Assert.AreEqual(null, result);
                Assert.AreEqual(null, map.Get(key));
            });
        }
        public virtual void TestAsyncPutWithTtl()
        {
            var latch = new CountdownEvent(1);

            map.AddEntryListener(new ExpiredListener(latch), true);

            var f1 = map.PutAsync("key", "value1", 3, TimeUnit.Seconds);

            Assert.IsNull(f1.Result);
            Assert.AreEqual("value1", map.Get("key"));

            Assert.IsTrue(latch.Wait(TimeSpan.FromSeconds(15)));

            TestSupport.AssertTrueEventually(() => { Assert.IsNull(map.Get("key")); });
        }
Exemple #8
0
        public void TestPartitionsUpdatedAfterNewNode()
        {
            var proxy            = (HazelcastClientProxy)_client;
            var partitionService = proxy.GetClient().GetClientPartitionService();

            var partitionCount = partitionService.GetPartitionCount();

            Assert.AreEqual(271, partitionCount);

            var owners = GetPartitionOwners(partitionCount, partitionService);

            Assert.AreEqual(1, owners.Count);

            var member = StartMemberAndWait(_client, _remoteController, _cluster, 2);

            try
            {
                TestSupport.AssertTrueEventually(() =>
                {
                    try
                    {
                        owners = GetPartitionOwners(partitionCount, partitionService);
                    }
                    catch (TargetNotMemberException)
                    {
                        Assert.Fail("Partition table is stale.");
                    }
                    Assert.AreEqual(2, owners.Count);
                });
            }
            finally
            {
                StopMemberAndWait(_client, _remoteController, _cluster, member);

                TestSupport.AssertTrueEventually(() =>
                {
                    try
                    {
                        owners = GetPartitionOwners(partitionCount, partitionService);
                    }
                    catch (TargetNotMemberException)
                    {
                        Assert.Fail("Partition table is stale.");
                    }
                    Assert.AreEqual(1, owners.Count);
                }, 60);
            }
        }
Exemple #9
0
        public void TestPutWithTTL()
        {
            var context = Client.NewTransactionContext();

            context.BeginTransaction();
            var txnMap    = context.GetMap <object, object>(_name);
            var ttlMillis = 100;

            Assert.IsNull(txnMap.Put("key1", "value1", ttlMillis, TimeUnit.Milliseconds));
            Assert.AreEqual("value1", txnMap.Get("key1"));

            context.CommitTransaction();

            Assert.AreEqual("value1", _map.Get("key1"));
            TestSupport.AssertTrueEventually(() => Assert.IsNull(_map.Get("key1")));
        }
Exemple #10
0
 public void TestStatisticsContent()
 {
     TestSupport.AssertTrueEventually(() =>
     {
         var stat = GetClientStatsFromServer();
         Assert.NotNull(stat);
         Assert.True(stat.Contains("clientName=" + Client.GetName()));
         Assert.True(stat.Contains("lastStatisticsCollectionTime="));
         Assert.True(stat.Contains("enterprise=false"));
         Assert.True(stat.Contains("clientType=CSHARP"));
         Assert.True(stat.Contains("clientVersion=" + VersionUtil.GetDllVersion()));
         var ownerConnectionAddress = ClientInternal.GetClientClusterService().GetOwnerConnectionAddress();
         var ownerConnection        = ClientInternal.GetConnectionManager().GetConnection(ownerConnectionAddress);
         Assert.True(stat.Contains("clusterConnectionTimestamp=" + ownerConnection.ConnectionStartTime));
         Assert.True(stat.Contains("clientAddress=" + ownerConnection.GetLocalSocketAddress()));
     });
 }
Exemple #11
0
        protected Member StartMemberAndWait(IHazelcastInstance client, IRemoteController remoteController, Cluster cluster,
                                            int expectedSize)
        {
            var resetEvent = new ManualResetEventSlim();
            var regId      = client.Cluster.AddMembershipListener(new MembershipListener {
                OnMemberAdded = @event => resetEvent.Set()
            });
            var member = StartMember(remoteController, cluster);

            Assert.IsTrue(resetEvent.Wait(120 * 1000), "The member did not get added in 120 seconds");
            Assert.IsTrue(client.Cluster.RemoveMembershipListener(regId));

            // make sure partitions are updated
            TestSupport.AssertTrueEventually(() => { Assert.AreEqual(expectedSize, GetUniquePartitionOwnerCount(client)); }, 60,
                                             "The partition list did not contain " + expectedSize + " partitions.");

            return(member);
        }
Exemple #12
0
        public void TestNearCacheStatisticsContent()
        {
            var map = Client.GetMap <string, string>("nearCachedMap1");

            map.Put("key", "value");
            map.Get("key");
            map.Get("key");
            map.Get("other-key");

            TestSupport.AssertTrueEventually(() =>
            {
                var stat = GetClientStatsFromServer();
                Assert.NotNull(stat);
                Assert.True(stat.Contains("nc.nearCachedMap1.hits=1"));
                Assert.True(stat.Contains("nc.nearCachedMap1.misses=2"));
                Assert.True(stat.Contains("nc.nearCachedMap1.ownedEntryCount=1"));
            });
        }
        protected int AddNodeAndWait()
        {
            var resetEvent = new ManualResetEventSlim();
            var regId      = Client.GetCluster().AddMembershipListener(new MembershipListener
            {
                OnMemberAdded = @event => resetEvent.Set()
            });
            var id = Cluster.AddNode();

            Assert.IsTrue(resetEvent.Wait(120 * 1000), "The member did not get added in 120 seconds");
            Assert.IsTrue(Client.GetCluster().RemoveMembershipListener(regId));

            // make sure partitions are updated
            TestSupport.AssertTrueEventually(() => { Assert.AreEqual(Cluster.Size, GetUniquePartitionOwnerCount()); },
                                             60, "The partition list did not contain " + Cluster.Size + " partitions.");

            return(id);
        }
Exemple #14
0
        public virtual void TestAsyncPutWithTtl()
        {
            var latch = new CountdownEvent(1);

            map.AddEntryListener(new EntryAdapter <object, object>(
                                     delegate { },
                                     delegate { },
                                     delegate { },
                                     delegate { latch.Signal(); }
                                     ), true);

            var f1 = map.PutAsync("key", "value1", 1, TimeUnit.Seconds);

            Assert.IsNull(f1.Result);
            Assert.AreEqual("value1", map.Get("key"));

            Assert.IsTrue(latch.Wait(TimeSpan.FromSeconds(10)));

            TestSupport.AssertTrueEventually(() => { Assert.IsNull(map.Get("key")); });
        }
        public void TestRetryAsyncRequest()
        {
            int count  = 100;
            var nodeId = AddNodeAndWait();
            var map    = Client.GetMap <int, string>(TestSupport.RandomString());

            for (var i = 0; i < count; i++)
            {
                map.PutAsync(i, TestSupport.RandomString());
            }
            Cluster.RemoveNode(nodeId);
            TestSupport.AssertTrueEventually(() =>
            {
                var keys = map.KeySet();
                for (var i = 0; i < count; i++)
                {
                    Assert.IsTrue(keys.Contains(i), "Key " + i + " was not found");
                }
                Assert.AreEqual(count, map.Size());
            }, timeoutSeconds: 60);
        }
Exemple #16
0
        public void TestNearCacheGetAsync()
        {
            _map.Put("key", "value");

            var val = _map.GetAsync("key");

            var result = val.Result;

            Assert.AreEqual("value", result);

            var clientNearCache = GetNearCache(_map);

            TestSupport.AssertTrueEventually(() => { Assert.AreEqual(1, clientNearCache.Cache.Count); });

            val    = _map.GetAsync("key");
            result = val.Result;
            Assert.AreEqual("value", result);

            var cacheRecord = clientNearCache.Cache.Values.ToArray()[0];

            Assert.AreEqual(1, cacheRecord.Hit.Get());
        }
        public void TestSchedule_completed()
        {
            var executed  = false;
            var continued = false;

            _clientExecutionService.Schedule(() =>
            {
                executed = true;
            }, 2, TimeUnit.Seconds)
            .ContinueWith(t =>
            {
                if (!t.IsCanceled)
                {
                    continued = true;
                }
            }
                          );
            TestSupport.AssertTrueEventually(() =>
            {
                Assert.True(executed);
                Assert.True(continued);
            });
        }
        public void TestListenerEventOrder()
        {
            const int maxSize = 10000;
            var       map2    = Client.GetMap <int, int>(TestSupport.RandomString());

            map2.Put(1, 0);

            var eventDataReceived = new Queue <int>();

            var listener = new EntryAdapter <int, int>(
                e => { },
                e => { },
                e =>
            {
                var value = e.GetValue();
                eventDataReceived.Enqueue(value);
            },
                e => { });

            map2.AddEntryListener(listener, true);

            for (var i = 1; i < maxSize; i++)
            {
                map2.Put(1, i);
            }

            TestSupport.AssertTrueEventually(() => Assert.AreEqual(maxSize - 1, eventDataReceived.Count));

            var oldEventData = -1;

            foreach (var eventData in eventDataReceived)
            {
                Assert.Less(oldEventData, eventData);
                oldEventData = eventData;
            }
        }
        public void TestRetryRequestsWhenInstanceIsShutdown()
        {
            var nodeId = AddNodeAndWait();
            var map    = Client.GetMap <int, string>(TestSupport.RandomString());

            for (int i = 0; i < Count; i++)
            {
                map.Put(i, TestSupport.RandomString());
                if (i == Count / 2)
                {
                    Cluster.RemoveNode(nodeId);
                }
            }

            TestSupport.AssertTrueEventually(() =>
            {
                var keys = map.KeySet();
                for (int i = 0; i < Count; i++)
                {
                    Assert.IsTrue(keys.Contains(i), "Key " + i + " was not found");
                }
                Assert.AreEqual(Count, map.Size());
            }, timeoutSeconds: 60);
        }
Exemple #20
0
        private void TestInvalidate(Action <IMap <string, string>, string> invalidatingAction)
        {
            var map = Client.GetMap <string, string>("nearCacheMapInvalidate-" + TestSupport.RandomString());

            try
            {
                map.Put("key", "value");

                var val = map.Get("key");
                Assert.AreEqual("value", val);

                var clientNearCache = GetNearCache(map);

                Assert.AreEqual(1, clientNearCache.Cache.Count);

                var client = CreateClient();
                try
                {
                    invalidatingAction(client.GetMap <string, string>(map.GetName()), "key");
                }
                finally
                {
                    client.Shutdown();
                }

                TestSupport.AssertTrueEventually(() =>
                {
                    Assert.IsFalse(clientNearCache.Cache.ContainsKey(ToKeyData("key")),
                                   "key should have been invalidated");
                });
            }
            finally
            {
                map.Destroy();
            }
        }
        public void TestScheduleWithCancellation_cancelled()
        {
            var executed  = false;
            var continued = false;

            _clientExecutionService.ScheduleWithCancellation(() =>
            {
                executed = true;
            }, 2, TimeUnit.Seconds, cts.Token)
            .ContinueWith(t =>
            {
                if (!t.IsCanceled)
                {
                    continued = true;
                }
            }
                          );
            cts.Cancel();
            TestSupport.AssertTrueEventually(() =>
            {
                Assert.False(executed);
                Assert.False(continued);
            });
        }
Exemple #22
0
        public void TestListenerReconnect()
        {
            var member = StartMember(_remoteController, _cluster);
            var client = CreateClient();

            var name       = TestSupport.RandomString();
            var map        = client.GetMap <string, string>(name);
            var eventCount = 0;
            var count      = 2;
            var regId      = map.AddEntryListener(new EntryAdapter <string, string>
            {
                Added = e => { Interlocked.Increment(ref eventCount); }
            }, true);

            // try to start and stop the instance several times
            for (var i = 0; i < count; i++)
            {
                var clientDisconnected = TestSupport.WaitForClientState(client,
                                                                        LifecycleEvent.LifecycleState.ClientDisconnected);
                _remoteController.shutdownMember(_cluster.Id, member.Uuid);
                TestSupport.AssertCompletedEventually(clientDisconnected, taskName: "clientDisconnected");
                Interlocked.Exchange(ref eventCount, 0);
                var clientConnected = TestSupport.WaitForClientState(client,
                                                                     LifecycleEvent.LifecycleState.ClientConnected);
                member = _remoteController.startMember(_cluster.Id);
                TestSupport.AssertCompletedEventually(clientConnected, taskName: "clientConnected");

                TestSupport.AssertTrueEventually(() =>
                {
                    map.Put(Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
                    return(eventCount > 0);
                });
            }
            Assert.IsTrue(map.RemoveEntryListener(regId));
            map.Destroy();
        }
Exemple #23
0
        public void TestNearCacheTtlEviction()
        {
            var map  = Client.GetMap <int, int>("nearCacheTtl-" + TestSupport.RandomString());
            var keys = Enumerable.Range(0, 10).ToList();

            foreach (var k in keys)
            {
                map.Put(k, k);
            }

            map.GetAll(keys);
            var cache = GetNearCache(map);

            Assert.AreEqual(keys.Count, cache.Cache.Count);
            TestSupport.AssertTrueEventually(() =>
            {
                map.Get(100); //force ttl check
                foreach (var k in keys)
                {
                    var keyData = ((HazelcastClientProxy)Client).GetClient().GetSerializationService().ToData(k);
                    Assert.IsFalse(cache.Cache.ContainsKey(keyData), "key " + k + " should have expired.");
                }
            });
        }
Exemple #24
0
 private void AssertCounterValueEventually(long expectedValue, IPNCounter counter)
 {
     TestSupport.AssertTrueEventually(() => { Assert.AreEqual(expectedValue, counter.Get()); });
 }