public void TestSequenceFixIfKeyRemoveAtServer() { const string theKey = "key"; _map.Put(theKey, "value1"); var partitionId = ClientInternal.GetClientPartitionService().GetPartitionId(theKey); var nc = GetNearCache(_map) as NearCache; var metaDataContainer = nc.RepairingHandler.GetMetaDataContainer(partitionId); TestSupport.AssertTrueEventually(() => { var initialSequence = metaDataContainer.Sequence; Assert.AreEqual(1, initialSequence); }); metaDataContainer.Sequence -= 2; //distort the sequence RemoveKeyAtServer(_map.GetName(), theKey); TestSupport.AssertTrueEventually(() => { var latestSequence = metaDataContainer.Sequence; Assert.AreEqual(2, latestSequence); Assert.IsTrue(nc.Records.IsEmpty); }); }
private void TestNoLostInvalidationsStrict(bool strict) { // run test RunTestInternal(); if (!strict) { // test eventually consistent Thread.Sleep(TimeSpan.FromSeconds(10)); } var valuePutLast = _valuePut.Get(); var valueMapStr = _map.Get(Key); var valueMap = int.Parse(valueMapStr); // fail if not eventually consistent string msg = null; if (valueMap < valuePutLast) { msg = "Near Cache did *not* become consistent. (valueMap = " + valueMap + ", valuePut = " + valuePutLast + ")."; // flush Near Cache and re-fetch value FlushClientNearCache(_map); var valueMap2Str = _map.Get(Key); var valueMap2 = int.Parse(valueMap2Str); // test again if (valueMap2 < valuePutLast) { msg += " Unexpected inconsistency! (valueMap2 = " + valueMap2 + ", valuePut = " + valuePutLast + ")."; } else { msg += " Flushing the Near Cache cleared the inconsistency. (valueMap2 = " + valueMap2 + ", valuePut = " + valuePutLast + ")."; } } // stop client ClientInternal.GetLifecycleService().Terminate(); // fail after stopping hazelcast instance if (msg != null) { Logger.Warning(msg); Assert.Fail(msg); } // fail if strict is required and assertion was violated if (strict && _assertionViolationCount.Get() > 0) { msg = "Assertion violated " + _assertionViolationCount.Get() + " times."; Logger.Warning(msg); Assert.Fail(msg); } }
public void Init() { //change the server response version so that near cache fall back to old code var oa = ClientInternal.GetClientClusterService().GetOwnerConnectionAddress(); ClientInternal.GetConnectionManager().GetConnection(oa).ConnectedServerVersionStr = "3.6"; _map = Client.GetMap <object, object>("nearCachedMap-" + TestSupport.RandomString()); var nc = GetNearCache(_map); Assert.AreEqual(typeof(NearCachePre38), nc.GetType()); }
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())); }); }
public void TestSequenceUpdateIfKeyRemoveAtServer() { const string theKey = "key"; _map.Put(theKey, "value"); var partitionId = ClientInternal.GetClientPartitionService().GetPartitionId(theKey); var nc = GetNearCache(_map) as NearCache; var metaDataContainer = nc.RepairingHandler.GetMetaDataContainer(partitionId); var initialSequence = metaDataContainer.Sequence; RemoveKeyAtServer(_map.GetName(), theKey); TestSupport.AssertTrueEventually(() => { var latestSequence = metaDataContainer.Sequence; Assert.Greater(latestSequence, initialSequence); }); }
protected List <object> GetAllValueFromMember(int mapSize, string mapName) { var script = string.Format(@" from java.util import ArrayList map=instance_0.getMap('{0}') list= ArrayList() for i in xrange(0, {1}): list.add(map.get(i)) result=instance_0.getSerializationService().toBytes(list) ", mapName, mapSize); var response = RemoteController.executeOnController(HzCluster.Id, script, Lang.PYTHON); if (!response.Success) { throw new InvalidOperationException(response.ToString()); } var data = new HeapData(response.Result); return(ClientInternal.GetSerializationService().ToObject <List <object> >(data)); }