Esempio n. 1
0
        public void SweepOldRejuvenateSome(int COUNT)
        {
            using (var cache = PileCacheTestCore.MakeDurableCache())
            {
                var tA = cache.GetOrCreateTable <long>("A");

                for (var i = 0; i < COUNT; i++)
                {
                    var key   = i * 7;
                    var value = "value of " + i.ToString();
                    var pr    = tA.Put(key, value, maxAgeSec: 20);
                    Aver.AreObjectEqualTest(PutResult.Inserted, pr);
                }

                Aver.AreEqual(COUNT, tA.Count);

                const int WAIT = 45;
                for (var j = 0; j < WAIT; j++)
                {
                    Console.WriteLine("Wait loop iteration #{0} of {1}", j, WAIT);
                    for (var i = 0; i < COUNT; i++)
                    {
                        var odd = (i & 1) != 0;
                        if (odd)
                        {
                            continue;//do not rejuvenate ODD
                        }
                        var key = i * 7;
                        Aver.IsTrue(tA.Rejuvenate(key));
                    }
                    Thread.Sleep(1000);
                }

                for (var i = 0; i < COUNT; i++)
                {
                    var key   = i * 7;
                    var value = "value of " + i.ToString();
                    var odd   = (i & 1) != 0;
                    var got   = tA.Get(key) as string;

                    if (odd)
                    {
                        Aver.IsNull(got);
                    }
                    else
                    {
                        Aver.AreEqual(value, got);
                    }
                }

                Aver.AreEqual(COUNT / 2, cache.Pile.ObjectCount);//Half of objects died
            }
        }
Esempio n. 2
0
        public void SweepOld(int COUNT)
        {
            using (var cache = PileCacheTestCore.MakeDurableCache())
            {
                var tA = cache.GetOrCreateTable <long>("A");

                for (var i = 0; i < COUNT; i++)
                {
                    var key   = i * 7;
                    var value = "value of " + i.ToString();
                    var odd   = (i & 1) != 0;
                    var pr    = tA.Put(key, value, maxAgeSec: odd ? 1 : 0);
                    Aver.AreObjectEqualTest(PutResult.Inserted, pr);
                }

                Aver.AreEqual(COUNT, tA.Count);
                Thread.Sleep(15000);

                for (var i = 0; i < COUNT; i++)
                {
                    var key   = i * 7;
                    var value = "value of " + i.ToString();
                    var odd   = (i & 1) != 0;
                    var got   = tA.Get(key) as string;

                    if (odd)
                    {
                        Aver.IsNull(got);
                    }
                    else
                    {
                        Aver.AreEqual(value, got);
                    }
                }

                Aver.AreEqual(COUNT / 2, cache.Pile.ObjectCount);//Half of objects died
            }
        }