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); }
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); }
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); }