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 RedisMetricsCache(IRedisAdapter redisAdapter,
                          string machineIP,
                          string sdkVersion,
                          string machineName,
                          string userPrefix = null) : base(redisAdapter, machineIP, sdkVersion, machineName, userPrefix)
 {
     _latencyTracker = new BinarySearchLatencyTracker();
 }
Esempio n. 3
0
        public void TimeShouldNotAddMetricIfNoNameSpecified()
        {
            //Arrange
            var timers     = new ConcurrentDictionary <string, ILatencyTracker>();
            var cache      = new InMemoryMetricsCache(null, timers);
            var metricsLog = new InMemoryMetricsLog(null, cache);

            //Act
            metricsLog.Time("", 1000);

            //Assert
            ILatencyTracker timer = cache.GetLatencyTracker("");

            Assert.IsNull(timer);
        }
Esempio n. 4
0
        public void TimeShouldNotUpdateMetricIfDeltaIsLessThanZero()
        {
            //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.IsNull(timer);
        }
Esempio n. 5
0
        public void SetLatencyShouldAddNewMetricWhenNotExisting()
        {
            //Arrange
            var timers = new ConcurrentDictionary <string, ILatencyTracker>();
            var cache  = new InMemoryMetricsCache(null, timers);

            //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());
        }
        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());
        }
Esempio n. 7
0
        public void TimeShouldUpdateMetricWhenExisting()
        {
            //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);
            metricsLog.Time("time_test", 9);
            metricsLog.Time("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());
        }
Esempio n. 8
0
        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));
        }