예제 #1
0
        public void Setup()
        {
            _cacheV1 = new PageLocatorV1(null, CacheSize);
            _cacheV2 = new PageLocatorV2(null, CacheSize);
            _cacheV3 = new PageLocatorV3(null, CacheSize);
            _cacheV4 = new PageLocatorV4(null, CacheSize);
            _cacheV5 = new PageLocatorV5(null, CacheSize);
            _cacheV6 = new PageLocatorV6(null, CacheSize);
            _cacheV7 = new PageLocatorV7(null, CacheSize);

            var generator = new Random(RandomSeed);

            _pageNumbers = new List <long>();
            for (int i = 0; i < NumberOfOperations; i++)
            {
                long valueBuffer = generator.Next();
                valueBuffer += (long)generator.Next() << 32;
                valueBuffer += (long)generator.Next() << 64;
                valueBuffer += (long)generator.Next() << 96;

                _pageNumbers.Add(valueBuffer);
            }
        }
예제 #2
0
        public void TestGetReadonly(int cacheSize)
        {
            var cache = new PageLocatorV7(null, cacheSize);

            // Test readonly page
            var p11 = cache.GetReadOnlyPage(5);
            var p12 = cache.GetReadOnlyPage(5);

            Debug.Assert(p11 == p12);

            cache.Reset(5);
            var p13 = cache.GetReadOnlyPage(5);

            Debug.Assert(p12 != p13);

            // Test writeable page
            var p21 = cache.GetWritablePage(6);
            var p22 = cache.GetWritablePage(6);

            Debug.Assert(p21 == p22);

            cache.Reset(6);
            var p23 = cache.GetWritablePage(6);

            Debug.Assert(p22 != p23);

            // Test change of status
            var p31 = cache.GetReadOnlyPage(7);
            var p32 = cache.GetWritablePage(7);

            Debug.Assert(p31 != p32);

            cache.Reset(7);
            var p33 = cache.GetWritablePage(7);

            Debug.Assert(p32 != p33);
        }