예제 #1
0
        public void SingleLowHealthInData()
        {
            // Arrange
            var mockConfig = new Mock <IConfiguration>();

            mockConfig
            .SetupGet(conf => conf["ServiceManager:DiscrepancyService:Health:Threshold"])
            .Returns(90.ToString());
            mockConfig
            .SetupGet(conf => conf["ServiceManager:DiscrepancyService:Health:MaxFailures"])
            .Returns(2.ToString());                     // 3 is discrepancy

            var discrepancyService = new DiscrepancyService(
                new Mock <ILogger <DiscrepancyService> >().Object,
                new Mock <IDataContext>().Object,
                new Mock <INotificationService>().Object,
                mockConfig.Object
                );

            var input = new List <HealthReport>()
            {
                ConfigureHealthReport(95, DateTime.UtcNow),                                     // good
                ConfigureHealthReport(89, DateTime.UtcNow.AddMinutes(-1)),                      // bad
                ConfigureHealthReport(70, DateTime.UtcNow.AddMinutes(-2)),                      // bad
                ConfigureHealthReport(75, DateTime.UtcNow.AddMinutes(-3)),                      // bad
                ConfigureHealthReport(100, DateTime.UtcNow.AddMinutes(-4)),                     // good
                ConfigureHealthReport(56, DateTime.UtcNow.AddMinutes(-5)),                      // bad
                ConfigureHealthReport(69, DateTime.UtcNow.AddMinutes(-6)),                      // bad
                ConfigureHealthReport(99, DateTime.UtcNow.AddMinutes(-7)),                      // good
            };

            var expected = new List <Discrepancy> {
                new Discrepancy
                {
                    DateFirstOffense = input[3].Timestamp,
                    Type             = DiscrepancyType.LowHealth,
                    MetricType       = Metrics.Health,
                    MetricSource     = "the-source"
                }
            };

            // Act
            var actual = discrepancyService
                         .FindLowHealthInDataPoints(
                input,
                new Metric
            {
                Type   = Metrics.Health.AsInt(),
                Source = "the-source"
            }
                );

            // Assert
            Assert.Equal(expected, actual);
        }
예제 #2
0
        public void PermanentLowHealthInData()
        {
            // Arrange
            var mockConfig = new Mock <IConfiguration>();

            mockConfig
            .SetupGet(conf => conf["ServiceManager:DiscrepancyService:Health:Threshold"])
            .Returns(90.ToString());
            mockConfig
            .SetupGet(conf => conf["ServiceManager:DiscrepancyService:Health:MaxFailures"])
            .Returns(2.ToString());                     // 3 is discrepancy

            var discrepancyService = new DiscrepancyService(
                new Mock <ILogger <DiscrepancyService> >().Object,
                new Mock <IDataContext>().Object,
                new Mock <INotificationService>().Object,
                mockConfig.Object
                );

            var input = new List <HealthReport>()
            {
                ConfigureHealthReport(80, DateTime.UtcNow),                                     // bad
                ConfigureHealthReport(89, DateTime.UtcNow.AddMinutes(-1)),                      // bad
                ConfigureHealthReport(70, DateTime.UtcNow.AddMinutes(-2)),                      // bad
                ConfigureHealthReport(60, DateTime.UtcNow.AddMinutes(-3)),                      // bad
                ConfigureHealthReport(85, DateTime.UtcNow.AddMinutes(-4)),                      // bad
                ConfigureHealthReport(56, DateTime.UtcNow.AddMinutes(-5)),                      // bad
                ConfigureHealthReport(69, DateTime.UtcNow.AddMinutes(-6)),                      // bad
                ConfigureHealthReport(9, DateTime.UtcNow.AddMinutes(-7)),                       // bad
            };

            // Act
            var actual = discrepancyService
                         .FindLowHealthInDataPoints(
                input,
                new Metric
            {
                Type   = Metrics.Health.AsInt(),
                Source = "the-source"
            }
                );

            // Assert
            Assert.Empty(actual);
        }
예제 #3
0
        public void LowHealthNoData()
        {
            // Arrange
            var discrepancyService = new DiscrepancyService(
                new Mock <ILogger <DiscrepancyService> >().Object,
                new Mock <IDataContext>().Object,
                new Mock <INotificationService>().Object,
                new Mock <IConfiguration>().Object
                );

            // Act
            var actual = discrepancyService
                         .FindLowHealthInDataPoints(
                new List <HealthReport>(),
                new Metric
            {
                Type   = Metrics.Health.AsInt(),
                Source = "the-source"
            }
                );

            // Assert
            Assert.Empty(actual);
        }