Beispiel #1
0
        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);
            });
        }
Beispiel #2
0
        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());
        }
Beispiel #4
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()));
     });
 }
Beispiel #5
0
        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);
            });
        }
Beispiel #6
0
        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));
        }