public void SetLatencyShouldUpdateMetricWhenExisting() { //Arrange var redisAdapterMock = new Mock <IRedisAdapter>(); var bucketsPattern = metricsLatencyKeyPrefix.Replace("{metricName}", "time_test").Replace("{bucketNumber}", "*"); var currentBucketPattern = bucketsPattern.Replace("*", "0"); var currentBucketPattern2 = bucketsPattern.Replace("*", "6"); redisAdapterMock.Setup(x => x.Keys(bucketsPattern)).Returns(new RedisKey[] { currentBucketPattern, currentBucketPattern2 }); redisAdapterMock.Setup(x => x.Get(currentBucketPattern)).Returns("1"); redisAdapterMock.Setup(x => x.Get(currentBucketPattern2)).Returns("2"); var cache = new RedisMetricsCache(redisAdapterMock.Object, "10.0.0.1", "net-1.0.2"); //Act cache.SetLatency("time_test", 1); cache.SetLatency("time_test", 9); cache.SetLatency("time_test", 8); //Assert ILatencyTracker timer = cache.GetLatencyTracker("time_test"); Assert.AreEqual(1, timer.GetLatency(0)); Assert.AreEqual(2, timer.GetLatency(6)); long[] latencies = timer.GetLatencies(); Assert.AreEqual(3, latencies.Sum()); redisAdapterMock.Verify(mock => mock.IcrBy(metricsLatencyKeyPrefix.Replace("{metricName}", "time_test").Replace("{bucketNumber}", "0"), 1), Times.Once()); redisAdapterMock.Verify(mock => mock.IcrBy(metricsLatencyKeyPrefix.Replace("{metricName}", "time_test").Replace("{bucketNumber}", "6"), 1), Times.Exactly(2)); }
public void SetLatencyShouldUpdateMetricWhenExisting() { //Arrange var timers = new ConcurrentDictionary <string, ILatencyTracker>(); var cache = new InMemoryMetricsCache(null, timers); //Act cache.SetLatency("time_test", 1); cache.SetLatency("time_test", 9); cache.SetLatency("time_test", 8); //Assert ILatencyTracker timer = cache.GetLatencyTracker("time_test"); Assert.AreEqual(1, timer.GetLatency(0)); Assert.AreEqual(2, timer.GetLatency(6)); long[] latencies = timer.GetLatencies(); Assert.AreEqual(3, latencies.Sum()); }
public void TimeShouldAddNewMetricWhenNotExisting() { //Arrange var timers = new ConcurrentDictionary <string, ILatencyTracker>(); var cache = new InMemoryMetricsCache(null, timers); var metricsLog = new InMemoryMetricsLog(null, cache); //Act metricsLog.Time("time_test", 1); //Assert ILatencyTracker timer = cache.GetLatencyTracker("time_test"); Assert.IsNotNull(timer); Assert.AreEqual(1, timer.GetLatency(0)); long[] latencies = timer.GetLatencies(); Assert.AreEqual(1, latencies.Sum()); }
public void TimeSucessfully() { //Arrange var timers = new ConcurrentDictionary <string, ILatencyTracker>(); var metricsCache = new InMemoryMetricsCache(null, timers); var metricsLog = new AsyncMetricsLog(null, metricsCache, 10, 3000); //Act metricsLog.Time("time_test", 1); //Assert Thread.Sleep(2000); ILatencyTracker timer = metricsCache.GetLatencyTracker("time_test"); Assert.IsNotNull(timer); Assert.AreEqual(1, timer.GetLatency(0)); long[] latencies = timer.GetLatencies(); Assert.AreEqual(1, latencies.Sum()); }
public void SetLatencyShouldAddNewMetricWhenNotExisting() { //Arrange var redisAdapterMock = new Mock <IRedisAdapter>(); var bucketsPattern = metricsLatencyKeyPrefix.Replace("{metricName}", "time_test").Replace("{bucketNumber}", "*"); var currentBucketPattern = bucketsPattern.Replace("*", "0"); redisAdapterMock.Setup(x => x.Keys(bucketsPattern)).Returns(new RedisKey[] { currentBucketPattern }); redisAdapterMock.Setup(x => x.Get(currentBucketPattern)).Returns("1"); var cache = new RedisMetricsCache(redisAdapterMock.Object, "10.0.0.1", "net-1.0.2", "machine_name_test"); //Act cache.SetLatency("time_test", 1); //Assert ILatencyTracker timer = cache.GetLatencyTracker("time_test"); Assert.IsNotNull(timer); Assert.AreEqual(1, timer.GetLatency(0)); long[] latencies = timer.GetLatencies(); Assert.AreEqual(1, latencies.Sum()); redisAdapterMock.Verify(mock => mock.IcrBy(metricsLatencyKeyPrefix.Replace("{metricName}", "time_test").Replace("{bucketNumber}", "0"), 1)); }