Beispiel #1
0
        public void UpdateSizes_EmptyWithOneUpdate()
        {
            MockRepository mockRepository;
            Mock <IMultiInstancePerformanceCounterCategory> multiInstancePerformanceCounterCategoryMock;
            Mock <NumberOfItems64PerformanceCounter>        numberOfItems64PerformanceCounterMock;
            const string cacheName = "foo";
            const long   cacheSize = 42;
            Queue <long> queue;

            mockRepository = new MockRepository(MockBehavior.Strict);
            numberOfItems64PerformanceCounterMock = mockRepository.Create <NumberOfItems64PerformanceCounter>();
            numberOfItems64PerformanceCounterMock.Setup(pc => pc.SetValue(0));
            numberOfItems64PerformanceCounterMock.Setup(pc => pc.SetValue(cacheSize));
            numberOfItems64PerformanceCounterMock.Setup(pc => pc.Dispose());
            multiInstancePerformanceCounterCategoryMock = mockRepository.Create <IMultiInstancePerformanceCounterCategory>();
            multiInstancePerformanceCounterCategoryMock.Setup(mipcc => mipcc.GetPerformanceCounter <NumberOfItems64PerformanceCounter>(CachePerformanceCounters.SizeCounterName, cacheName))
            .Returns(numberOfItems64PerformanceCounterMock.Object);

            queue = new Queue <long>();
            queue.Enqueue(cacheSize);

            using (AsynchronousLoggingCacheMetricReporter metricRepository = new AsynchronousLoggingCacheMetricReporter(multiInstancePerformanceCounterCategoryMock.Object, false))
            {
                metricRepository.AddSizeCallback(cacheName, queue.Dequeue);

                AsynchronousLoggingCacheMetricReporter.UpdateSizes(metricRepository);

                Assert.That(metricRepository,
                            Has.Property("SizeCounters").Property("Keys").EquivalentTo(new[] { cacheName }));
                Assert.That(metricRepository, Has.Property("HitRateCounters").Empty);
            }

            mockRepository.VerifyAll();
        }
Beispiel #2
0
        public void UpdateHits_EmptyWithMultipleUpdates()
        {
            MockRepository mockRepository;
            Mock <IMultiInstancePerformanceCounterCategory> multiInstancePerformanceCounterCategoryMock;
            Mock <PercentageRatePerformanceCounter>         hitRatePerformanceCounterMock;
            Mock <NumberOfItems64PerformanceCounter>        totalHitsPerformanceCounterMock;
            Mock <NumberOfItems64PerformanceCounter>        totalMissesPerformanceCounterMock;
            const string          cacheName = "foo";
            const long            hits1     = 42;
            const long            misses1   = 54;
            const long            hits2     = 420;
            const long            misses2   = 540;
            Queue <HitsAndMisses> queue;

            mockRepository = new MockRepository(MockBehavior.Strict);
            hitRatePerformanceCounterMock = mockRepository.Create <PercentageRatePerformanceCounter>();
            hitRatePerformanceCounterMock.Setup(pc => pc.Zero());
            hitRatePerformanceCounterMock.Setup(pc => pc.AddHits(hits1));
            hitRatePerformanceCounterMock.Setup(pc => pc.AddHits(hits2));
            hitRatePerformanceCounterMock.Setup(pc => pc.AddMisses(misses1));
            hitRatePerformanceCounterMock.Setup(pc => pc.AddMisses(misses2));
            hitRatePerformanceCounterMock.Setup(pc => pc.Dispose());
            totalHitsPerformanceCounterMock = mockRepository.Create <NumberOfItems64PerformanceCounter>();
            totalHitsPerformanceCounterMock.Setup(pc => pc.SetValue(0));
            totalHitsPerformanceCounterMock.Setup(pc => pc.IncrementBy(hits1));
            totalHitsPerformanceCounterMock.Setup(pc => pc.IncrementBy(hits2));
            totalHitsPerformanceCounterMock.Setup(pc => pc.Dispose());
            totalMissesPerformanceCounterMock = mockRepository.Create <NumberOfItems64PerformanceCounter>();
            totalMissesPerformanceCounterMock.Setup(pc => pc.SetValue(0));
            totalMissesPerformanceCounterMock.Setup(pc => pc.IncrementBy(misses1));
            totalMissesPerformanceCounterMock.Setup(pc => pc.IncrementBy(misses2));
            totalMissesPerformanceCounterMock.Setup(pc => pc.Dispose());
            multiInstancePerformanceCounterCategoryMock = mockRepository.Create <IMultiInstancePerformanceCounterCategory>();
            multiInstancePerformanceCounterCategoryMock.Setup(mipcc => mipcc.GetPerformanceCounter <PercentageRatePerformanceCounter>(CachePerformanceCounters.HitRateCounterName, cacheName))
            .Returns(hitRatePerformanceCounterMock.Object);
            multiInstancePerformanceCounterCategoryMock.Setup(mipcc => mipcc.GetPerformanceCounter <NumberOfItems64PerformanceCounter>(CachePerformanceCounters.TotalHitsCounterName, cacheName))
            .Returns(totalHitsPerformanceCounterMock.Object);
            multiInstancePerformanceCounterCategoryMock.Setup(mipcc => mipcc.GetPerformanceCounter <NumberOfItems64PerformanceCounter>(CachePerformanceCounters.TotalMissesCounterName, cacheName))
            .Returns(totalMissesPerformanceCounterMock.Object);

            queue = new Queue <HitsAndMisses>();
            queue.Enqueue(new HitsAndMisses(hits1, misses1));
            queue.Enqueue(new HitsAndMisses(hits2, misses2));

            using (AsynchronousLoggingCacheMetricReporter metricRepository = new AsynchronousLoggingCacheMetricReporter(multiInstancePerformanceCounterCategoryMock.Object, false, true))
            {
                metricRepository.AddHitsAndMissesCallback(cacheName, queue.Dequeue);

                AsynchronousLoggingCacheMetricReporter.UpdateHitRates(metricRepository);
                AsynchronousLoggingCacheMetricReporter.UpdateHitRates(metricRepository);

                Assert.That(metricRepository, Has.Property("SizeCounters").Empty);
                Assert.That(metricRepository, Has.Property("HitRateCounters").Property("Keys").EquivalentTo(new[] { cacheName }));
                Assert.That(metricRepository, Has.Property("TotalHitsCounters").Property("Keys").EquivalentTo(new[] { cacheName }));
                Assert.That(metricRepository, Has.Property("TotalMissesCounters").Property("Keys").EquivalentTo(new[] { cacheName }));
            }

            mockRepository.VerifyAll();
        }
Beispiel #3
0
        public void UpdateSizes_Empty()
        {
            Mock <IMultiInstancePerformanceCounterCategory> multiInstancePerformanceCounterCategoryMock;

            multiInstancePerformanceCounterCategoryMock = new Mock <IMultiInstancePerformanceCounterCategory>();

            using (AsynchronousLoggingCacheMetricReporter metricRepository = new AsynchronousLoggingCacheMetricReporter(multiInstancePerformanceCounterCategoryMock.Object, true))
            {
                AsynchronousLoggingCacheMetricReporter.UpdateSizes(metricRepository);

                Assert.That(metricRepository, Has.Property("SizeCounters").Empty);
                Assert.That(metricRepository, Has.Property("HitRateCounters").Empty);
            }
        }
Beispiel #4
0
        public void Ctor()
        {
            IMultiInstancePerformanceCounterCategory multiInstancePerformanceCounterCategory;

            multiInstancePerformanceCounterCategory = new Mock <IMultiInstancePerformanceCounterCategory>().Object;

            // ReSharper disable once SuggestUseVarKeywordEvident
            using (AsynchronousLoggingCacheMetricReporter metricRepository =
                       new AsynchronousLoggingCacheMetricReporter(multiInstancePerformanceCounterCategory, false))
            {
                Assert.That(metricRepository, Has.Property("Category").EqualTo(multiInstancePerformanceCounterCategory));
                Assert.That(metricRepository, Has.Property("Stopping").False);
                Assert.That(metricRepository, Has.Property("SizeCounters").Empty);
                Assert.That(metricRepository, Has.Property("HitRateCounters").Empty);
                Assert.That(metricRepository, Has.Property("LogHitRates").False);
            }
        }
        public void BasicTest()
        {
            LoggingCache <int, int>    loggingCache;
            DictionaryCache <int, int> dictionaryCache;
            const int maxCached = 200;

            using (AsynchronousLoggingCacheMetricReporter metricReporter = new AsynchronousLoggingCacheMetricReporter())
            {
                dictionaryCache = new DictionaryCache <int, int>();
                loggingCache    = new LoggingCache <int, int>(dictionaryCache, "test", metricReporter);
                for (int i = 0; i < maxCached; i++)
                {
                    loggingCache.Add(i, i);
                }

                // Hits
                int b = loggingCache[20];
                int c = loggingCache[21];

                // Misses
                int d = loggingCache[maxCached + 1];
                int e = loggingCache[maxCached + 2];
            }
        }