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 FetchAllLatencyMetricsSuccessfully() { //Arrange var redisAdapterMock = new Mock <IRedisAdapter>(); var bucketsPattern = metricsLatencyKeyPrefix.Replace("{metricName}.bucket.{bucketNumber}", "*"); var pattern = metricsLatencyKeyPrefix.Replace("{metricName}", "time_test").Replace("{bucketNumber}", "*"); var currentBucketPattern = pattern.Replace("*", "0"); var currentBucketPattern2 = pattern.Replace("*", "6"); var pattern2 = metricsLatencyKeyPrefix.Replace("{metricName}", "time_test_2").Replace("{bucketNumber}", "*"); var currentBucketPattern3 = pattern2.Replace("*", "6"); redisAdapterMock.Setup(x => x.Keys(bucketsPattern)).Returns(new RedisKey[] { currentBucketPattern, currentBucketPattern2, currentBucketPattern3 }); redisAdapterMock.Setup(x => x.Get(currentBucketPattern)).Returns("1"); redisAdapterMock.Setup(x => x.Get(currentBucketPattern2)).Returns("2"); redisAdapterMock.Setup(x => x.Get(currentBucketPattern3)).Returns("1"); var cache = new RedisMetricsCache(redisAdapterMock.Object, "10.0.0.1", "net-1.0.2"); cache.SetLatency("time_test", 1); cache.SetLatency("time_test", 9); cache.SetLatency("time_test", 8); cache.SetLatency("time_test_2", 8); //Act var result = cache.FetchAllLatencyTrackersAndClear(); //Assert Assert.IsNotNull(result); var result1 = result.First(x => x.Key == "time_test"); Assert.IsNotNull(result1); Assert.AreEqual(1, result1.Value.GetLatency(0)); Assert.AreEqual(2, result1.Value.GetLatency(6)); long[] latencies = result1.Value.GetLatencies(); Assert.AreEqual(3, latencies.Sum()); var result2 = result.First(x => x.Key == "time_test_2"); Assert.IsNotNull(result2); Assert.AreEqual(1, result2.Value.GetLatency(6)); }
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)); }