Esempio n. 1
0
        public void constructor_expected_list_not_null()
        {
            const int expectedLimit = 6;
            LRU       sut           = new LRU(expectedLimit);

            Assert.That(sut.Elements, Is.Not.Null);
        }
Esempio n. 2
0
        public async Task LruRemoveExpired()
        {
            const int n       = 10;
            const int maxSize = n * 2;
            var       maxAge  = TimeSpan.FromMilliseconds(500);

            LRU <string, string> .FetchValueDelegate f = null;
            var flushCounter = 0;

            var target = new LRU <string, string>(maxSize, maxAge, f);

            target.RaiseFlushEvent += (object o, LRU <string, string> .FlushEventArgs args) => flushCounter++;

            for (int i = 0; i < n; i++)
            {
                var s = i.ToString();
                target.Add(s, $"item {s}");
            }

            target.RemoveExpired();
            Assert.Equal(0, flushCounter);
            Assert.Equal(n, target.Count);

            await Task.Delay(maxAge.Add(maxAge));

            target.Add("expected", "value");
            target.RemoveExpired();

            Assert.Equal(n, flushCounter);
            Assert.Equal(1, target.Count);
            Assert.True(target.TryGetValue("expected", out var value));
            Assert.Equal("value", value);
        }
Esempio n. 3
0
 public void put(T key, F value)
 {
     if (elements.ContainsKey(key))
     {
         elements[key].put(key, value);
         moveForward(key);
     }
     else
     {
         if (!chains.ContainsKey(1))
         {
             chains[1] = new LRU <T, F>();
             minCount  = 1;
         }
         chains[1].put(key, value);
         elements[key] = chains[1];
         counter[key]  = 1;
         count++;
         while (count > capacity)
         {
             deleteLastOne();
             count--;
         }
     }
 }
Esempio n. 4
0
        public void constructor_expected_limit()
        {
            const int expectedLimit = 6;

            LRU sut = new LRU(expectedLimit);

            Assert.That(sut.Limit, Is.EqualTo(expectedLimit));
        }
Esempio n. 5
0
        public void add_element_should_contains_in_list()
        {
            LRU sut = new LRU();

            sut.Add(5);

            Assert.That(sut.Elements.First(), Is.EqualTo(5));
        }
Esempio n. 6
0
        private void AddLRUEntry(BufferEntry buffer)
        {
            if (LRU.Count >= Options.LRULimit)
            {
                //FLUSH
            }

            LRU.AddFirst(buffer);
        }
Esempio n. 7
0
        public void every_element_should_be_first_item()
        {
            LRU sut = new LRU();

            sut.Add(5);
            sut.Add(6);

            Assert.That(sut.Elements.First(), Is.EqualTo(6));
        }
Esempio n. 8
0
        public void overload_shoul_keep_same_lenght()
        {
            LRU sut = new LRU(1);

            sut.Add(5);
            sut.Add(6);

            Assert.That(sut.Elements.Count, Is.EqualTo(1));
        }
Esempio n. 9
0
 private int _removeRate      = 1;//比例
 public LRUCaching(int maxitem, int rate)
 {
     this._maxitem    = maxitem;
     this._removeRate = rate;
     this._linklist   = new LRU <TKey>(this._maxitem, this._removeRate, new Action <LinkedListNode <TKey> >(s =>
     {
         _mapping.Remove(s.Value);
     }));
 }
Esempio n. 10
0
        public AdaptiveGrainDirectoryCache(TimeSpan initialExpirationTimer, TimeSpan maxExpirationTimer, double exponentialTimerGrowth, int maxCacheSize)
        {
            cache = new LRU <GrainId, GrainDirectoryCacheEntry>(maxCacheSize, TimeSpan.MaxValue, null);

            this.initialExpirationTimer = initialExpirationTimer;
            this.maxExpirationTimer     = maxExpirationTimer;
            this.exponentialTimerGrowth = exponentialTimerGrowth;

            IntValueStatistic.FindOrCreate(StatisticNames.DIRECTORY_CACHE_SIZE, () => cache.Count);
        }
Esempio n. 11
0
        public void Constructor_Defatult_Limit()
        {
            //ARRANGE
            const int defaultLimit = 12;

            //ACT
            LRU sut = new LRU();

            //ASSERT
            Assert.That(sut.Limit, Is.EqualTo(defaultLimit));
        }
Esempio n. 12
0
 internal void Close()
 {
     lock (this)
     {
         file.Close();
         hashTable = null;
         dirtyPages = null;
         lru = null;
         freePages = null;
     }
 }
Esempio n. 13
0
        public void Add_ExistValut_Should_Move_To_Top()
        {
            LRU sut = new LRU(4);

            sut.Add(5);
            sut.Add(4);
            sut.Add(3);
            sut.Add(5);

            Assert.That(sut.Elements.Last, Is.Not.EqualTo(5));
        }
Esempio n. 14
0
        public void overload_should_no_keep_last_element()
        {
            LRU sut = new LRU(1);

            sut.Add(5);
            sut.Add(6);
            List <object> expected = new List <object>()
            {
                6
            };

            CollectionAssert.AreEqual(sut.Elements, expected);
        }
Esempio n. 15
0
        public static void Init(TwitterAccountManager mgr)
        {
            LRU <Uri, BitmapImage> .CreateDelegate create = delegate(Uri key) { return(new BitmapImage(key)); };
            _friendsCache   = new LRU <Uri, BitmapImage> (create, 2048);
            _nonfriendCache = new LRU <Uri, BitmapImage> (create, 1024);

            mgr.AccountsPropertyChanged += delegate(object sender, EventArgs e) {
                TwitterAccount[] accounts = mgr.Accounts;
                for (int i = 0; i < accounts.Length; i++)
                {
                    accounts[i].TwitterClient.PropertyChanged -= TwitterClient_PropertyChanged;
                    accounts[i].TwitterClient.PropertyChanged += TwitterClient_PropertyChanged;
                }
            };
        }
Esempio n. 16
0
        public void LruCountTest()
        {
            const int maxSize = 10;
            var maxAge = new TimeSpan(0, 1, 0, 0);
            LRU<string, string>.FetchValueDelegate f = null;

            var target = new LRU<string, string>(maxSize, maxAge, f);
            Assert.Equal(0, target.Count);  // "Count wrong after construction"

            target.Add("1", "one");
            Assert.Equal(1, target.Count);  // "Count wrong after adding one item"
            
            target.Add("2", "two");
            Assert.Equal(2, target.Count);  // "Count wrong after adding two items"
        }
Esempio n. 17
0
        public void LruCountTest()
        {
            const int maxSize = 10;
            var       maxAge  = new TimeSpan(0, 1, 0, 0);

            var target = new LRU <string, string>(maxSize, maxAge);

            Assert.Equal(0, target.Count);  // "Count wrong after construction"

            target.Add("1", "one");
            Assert.Equal(1, target.Count);  // "Count wrong after adding one item"

            target.Add("2", "two");
            Assert.Equal(2, target.Count);  // "Count wrong after adding two items"
        }
Esempio n. 18
0
        public void LruCountTest()
        {
            const int maxSize = 10;
            var       maxAge  = new TimeSpan(0, 1, 0, 0);

            LRU <string, string> .FetchValueDelegate f = null;

            var target = new LRU <string, string>(maxSize, maxAge, f);

            Assert.AreEqual(0, target.Count, "Count wrong after construction");

            target.Add("1", "one");
            Assert.AreEqual(1, target.Count, "Count wrong after adding one item");

            target.Add("2", "two");
            Assert.AreEqual(2, target.Count, "Count wrong after adding two items");
        }
Esempio n. 19
0
        public void TestMethod1()
        {
            var MyPeople = new List<Person>();  // moya bol'shaya pamyat'
            MyPeople.Add(new Person(321, "Alex"));
            MyPeople.Add(new Person(324, "Avi"));
            MyPeople.Add(new Person(345, "Fillip"));
            MyPeople.Add(new Person(348, "Grisha"));

            LRU<Person> lru = new LRU<Person>(3);
            lru.Push(MyPeople[0].Id, new Person(MyPeople[0].Id, MyPeople[0].Name));
            lru.Push(MyPeople[1].Id, new Person(MyPeople[1].Id, MyPeople[1].Name));
            lru.Push(MyPeople[2].Id, new Person(MyPeople[2].Id, MyPeople[2].Name));
            lru.Push(MyPeople[3].Id, new Person(MyPeople[3].Id, MyPeople[3].Name));
            lru.Push(MyPeople[2].Id, new Person(MyPeople[2].Id, MyPeople[2].Name));  // dobavit' Fillipa

            var t = lru.Get(345);
        }
Esempio n. 20
0
        public void LruMaximumSizeTest()
        {
            const int maxSize = 10;
            var       maxAge  = new TimeSpan(0, 1, 0, 0);

            var target = new LRU <string, string>(maxSize, maxAge);

            for (var i = 1; i <= maxSize + 5; i++)
            {
                var s = i.ToString();
                target.Add(s, "item " + s);
                Thread.Sleep(10);
            }

            Assert.Equal(maxSize, target.Count);  // "LRU grew larger than maximum size"
            for (var i = 1; i <= 5; i++)
            {
                var s = i.ToString();
                Assert.False(target.ContainsKey(s), "'Older' entry is still in cache");
            }
        }
Esempio n. 21
0
        public void LruMaximumSizeTest()
        {
            const int maxSize = 10;
            var maxAge = new TimeSpan(0, 1, 0, 0);
            LRU<string, string>.FetchValueDelegate f = null;

            var target = new LRU<string, string>(maxSize, maxAge, f);
            for (var i = 1; i <= maxSize + 5; i++)
            {
                var s = i.ToString();
                target.Add(s, "item " + s);
                Thread.Sleep(10);                
            }

            Assert.Equal(maxSize, target.Count);  // "LRU grew larger than maximum size"
            for (var i = 1; i <= 5; i++)
            {
                var s = i.ToString();
                Assert.False(target.ContainsKey(s), "'Older' entry is still in cache");
            }
        }
Esempio n. 22
0
        public void LruUsageTest()
        {
            const int maxSize = 10;
            var       maxAge  = new TimeSpan(0, 1, 0, 0);

            LRU <string, string> .FetchValueDelegate f = null;

            var target = new LRU <string, string>(maxSize, maxAge, f);

            // Fill the LRU with "1" through "10"
            for (var i = 1; i <= maxSize; i++)
            {
                var s = i.ToString();
                target.Add(s, "item " + s);
                Thread.Sleep(10);
            }

            // Use "10", then "9", etc.
            for (var i = maxSize; i >= 1; i--)
            {
                var    s = i.ToString();
                string val;
                target.TryGetValue(s, out val);
            }

            // Add a new item to push the least recently used out -- which should be item "10"
            var s1 = (maxSize + 1).ToString();

            target.Add(s1, "item " + s1);

            Assert.Equal(maxSize, target.Count);  // "Cache has exceeded maximum size"
            var s0 = maxSize.ToString();

            Assert.False(target.ContainsKey(s0), "Least recently used item was not expelled");
            for (var i = 1; i < maxSize; i++)
            {
                var s = i.ToString();
                Assert.True(target.ContainsKey(s), "Recently used item " + s + " was incorrectly expelled");
            }
        }
Esempio n. 23
0
    protected void moveForward(T key)
    {
        var lru   = elements[key];
        var value = elements[key].Get(key);

        lru.remove(key);
        if (lru.Count == 0)
        {
            chains.Remove(counter[key]);
            if (counter[key] == minCount)
            {
                minCount++;
            }
        }
        counter[key]++;
        if (!chains.ContainsKey(counter[key]))
        {
            chains[counter[key]] = new LRU <T, F>(capacity);
        }
        chains[counter[key]].put(key, value);
        elements[key] = chains[counter[key]];
    }
    static void Main(String[] args)
    {
        string[] tokens  = Console.ReadLine().Split();
        int      N       = int.Parse(tokens[0]);
        int      S       = int.Parse(tokens[1]);
        int      pfCount = 0; // page fault count

        LRU lruObj = new LRU();

        for (int T = N; T > 0;)
        {
            tokens = Console.ReadLine().Split();
            T     -= tokens.Length;

            for (int i = 0; i < tokens.Length; i++)
            {
                int      item = int.Parse(tokens[i]);
                ListNode pos  = lruObj.find(item);

                if (pos == null)
                {
                    if (lruObj.Count == S)
                    {
                        lruObj.Dequeue();
                    }
                    lruObj.Enqueue(item);
                    pfCount++;
                }
                else
                {
                    lruObj.UpdateAsMRU(pos);
                }
            }
        }
        Console.WriteLine(pfCount);
        Console.WriteLine(lruObj.GetAllItems());
    }
Esempio n. 25
0
        public void LruUsageTest()
        {
            const int maxSize = 10;
            var maxAge = new TimeSpan(0, 1, 0, 0);
            LRU<string, string>.FetchValueDelegate f = null;

            var target = new LRU<string, string>(maxSize, maxAge, f);

            // Fill the LRU with "1" through "10"
            for (var i = 1; i <= maxSize; i++)
            {
                var s = i.ToString();
                target.Add(s, "item " + s);
                Thread.Sleep(10);
            }

            // Use "10", then "9", etc.
            for (var i = maxSize; i >= 1; i--)
            {
                var s = i.ToString();
                string val;
                target.TryGetValue(s, out val);
            }
            
            // Add a new item to push the least recently used out -- which should be item "10"
            var s1 = (maxSize + 1).ToString();
            target.Add(s1, "item " + s1);

            Assert.Equal(maxSize, target.Count);  // "Cache has exceeded maximum size"
            var s0 = maxSize.ToString();
            Assert.False(target.ContainsKey(s0), "Least recently used item was not expelled");
            for (var i = 1; i < maxSize; i++)
            {
                var s = i.ToString();
                Assert.True(target.ContainsKey(s), "Recently used item " + s + " was incorrectly expelled");
            }
        }
Esempio n. 26
0
 public LRUBasedGrainDirectoryCache(int maxCacheSize, TimeSpan maxEntryAge)
 {
     cache = new LRU <GrainId, TValue>(maxCacheSize, maxEntryAge, null);
 }
Esempio n. 27
0
 private void MoveLRUEntry(BufferEntry buffer)
 {
     LRU.MoveToFirst(buffer);
 }
Esempio n. 28
0
        public void Add_null_Should_Throw_ArgumentNullException()
        {
            LRU sut = new LRU();

            Assert.Throws <ArgumentNullException>(() => sut.Add(null));
        }
Esempio n. 29
0
 internal void Open(IFile f)
 {
     file = f;
     hashTable = new Page[poolSize];
     dirtyPages = new Page[poolSize];
     nDirtyPages = 0;
     lru = new LRU();
     freePages = null;
     if (!autoExtended)
     {
         for (int i = poolSize; --i >= 0; )
         {
             Page pg = new Page();
             pg.next = freePages;
             freePages = pg;
         }
     }
 }
Esempio n. 30
0
 public LRUBasedGrainDirectoryCache(int maxCacheSize, TimeSpan maxEntryAge)
 {
     cache = new LRU <GrainId, IReadOnlyList <Tuple <SiloAddress, ActivationId> > >(maxCacheSize, maxEntryAge, null);
 }
Esempio n. 31
0
 internal SocketManager(IMessagingConfiguration config)
 {
     cache = new LRU<IPEndPoint, Socket>(MAX_SOCKETS, config.MaxSocketAge, SendingSocketCreator);
     cache.RaiseFlushEvent += FlushHandler;
 }
Esempio n. 32
0
        private static void FlushHandler(Object sender, LRU<IPEndPoint, Socket>.FlushEventArgs args)
        {
            if (args.Value == null) return;

            CloseSocket(args.Value);
            NetworkingStatisticsGroup.OnClosedSendingSocket();
        }