Пример #1
0
        public void Notify_NimatorResultErrorWithAllTypeOfChecksAndMinThreshold_DataDogNotifyAll()
        {
            // Arrange
            var result       = new NimatorResult(DateTime.Now);
            var message      = "error message";
            var checkResults = new List <CheckResult>
            {
                new CheckResult("C1", NotificationLevel.Critical, message),
                new CheckResult("C2", NotificationLevel.Error, message),
                new CheckResult("C3", NotificationLevel.Warning, message),
                new CheckResult("C4", NotificationLevel.Okay, message)
            };

            result.LayerResults.Add(new LayerResult("L1", checkResults));

            var settings = new DataDogSettings
            {
                Threshold = NotificationLevel.Okay
            };
            var sut = GetSut(settings);

            // Act
            sut.Notify(result);

            // Assert
            sut.Events.Count.ShouldBe(4);
            sut.Events[0].AlertType.ShouldBe(AlertType.Error, AlertTypeComparisonErrorMessage);
            sut.Events[1].AlertType.ShouldBe(AlertType.Error, AlertTypeComparisonErrorMessage);
            sut.Events[2].AlertType.ShouldBe(AlertType.Warning, AlertTypeComparisonErrorMessage);
            sut.Events[3].AlertType.ShouldBe(AlertType.Info, AlertTypeComparisonErrorMessage);
        }
Пример #2
0
        public void Notify_NimatorResultErrorWithOneErrorCheck_DataDogNotifyOneEventWithTags()
        {
            // Arrange
            var result       = new NimatorResult(DateTime.Now);
            var message      = "error message";
            var checkResults = new List <CheckResult>
            {
                new CheckResult("C1", NotificationLevel.Error, message)
            };

            result.LayerResults.Add(new LayerResult("L1", checkResults));
            var sut = GetSut();

            // Act
            sut.Notify(result);

            // Assert
            sut.Events.Count.ShouldBe(1);
            sut.Events[0].StatName.ShouldBe(DataDogEventConverter.MetricsName);
            sut.Events[0].Title.ShouldBe("C1");
            sut.Events[0].AlertType.ShouldBe(AlertType.Error, AlertTypeComparisonErrorMessage);
            sut.Events[0].Message.ShouldContain(message);
            var tags = sut.Events[0].Tags;

            tags.ShouldNotBeNull();
            tags.ShouldContain("check:c1");
            tags.ShouldContain("layer:l1");
            tags.ShouldContain("level:error");
        }
Пример #3
0
        public void Notify_NimatorResultErrorWithSeveralErrorChecks_DataDogNotifyErrorsOnly()
        {
            // Arrange
            var result          = new NimatorResult(DateTime.Now);
            var messageError    = "error message";
            var messageCritical = "critical message";
            var checkResults    = new List <CheckResult>
            {
                new CheckResult("C1", NotificationLevel.Error, messageError),
                new CheckResult("C2", NotificationLevel.Okay),
                new CheckResult("C3", NotificationLevel.Critical, messageCritical)
            };

            result.LayerResults.Add(new LayerResult("L1", checkResults));
            var sut = GetSut();

            // Act
            sut.Notify(result);

            // Assert
            sut.Events.Count.ShouldBe(2);
            sut.Events[0].StatName.ShouldBe(DataDogEventConverter.MetricsName);
            sut.Events[0].Title.ShouldBe("C1");
            sut.Events[0].AlertType.ShouldBe(AlertType.Error, AlertTypeComparisonErrorMessage);
            sut.Events[0].Message.ShouldContain(messageError);
            sut.Events[1].StatName.ShouldBe(DataDogEventConverter.MetricsName);
            sut.Events[1].Title.ShouldBe("C3");
            sut.Events[1].AlertType.ShouldBe(AlertType.Error, AlertTypeComparisonErrorMessage);
            sut.Events[1].Message.ShouldContain(messageCritical);
        }
Пример #4
0
        private static void SendOkayResultForTestCheck()
        {
            NimatorResult       nimatorResult = new NimatorResult(DateTime.Now);
            List <ICheckResult> checks        = new List <ICheckResult>();

            checks.Add(new CheckResult("testCheck", NotificationLevel.Okay));
            ILayerResult layerResult = new LayerResult("firstLayer", checks);

            nimatorResult.LayerResults.Add(layerResult);

            _notifier.Notify(nimatorResult);
        }
Пример #5
0
        public void Notify_NimatorResultOk_NoDataDogNotify()
        {
            // Arrange
            var result = new NimatorResult(DateTime.Now);
            var sut    = GetSut();

            // Act
            sut.Notify(result);

            // Assert
            sut.Events.ShouldBeEmpty();
        }
Пример #6
0
        private static void SendMultipleChecksInLayer()
        {
            NimatorResult nimatorResult = new NimatorResult(DateTime.Now);

            List <ICheckResult> checks = new List <ICheckResult>();

            checks.Add(new CheckResult("testCheck1", NotificationLevel.Okay));
            checks.Add(new CheckResult("testCheck2", NotificationLevel.Warning));
            checks.Add(new CheckResult("testCheck3", NotificationLevel.Error));
            checks.Add(new CheckResult("testCheck4", NotificationLevel.Critical));

            ILayerResult layerResult = new LayerResult("secondLayer", checks);

            nimatorResult.LayerResults.Add(layerResult);

            _notifier.Notify(nimatorResult);
        }
Пример #7
0
        public void MetricResult_ShouldHaveCorrectlyFormattedStatName()
        {
            var result = new NimatorResult(DateTime.Now);
            List <ICheckResult> checkResults = new List <ICheckResult>();

            checkResults.Add(new CheckResult("BasicLogin", NotificationLevel.Okay));
            result.LayerResults.Add(new LayerResult(layerName: "Infrastructure", checkResults: checkResults));

            var sut = GetSut();

            // Act
            sut.Notify(result);

            // Assert
            sut.Metrics.Count.ShouldBe(2);
            sut.Metrics.ShouldContain(metric => metric.StatName.EndsWith("check.BasicLogin.result"));
        }
Пример #8
0
        public void Ctor_NotEmptySourceEnvironment_MessageContainsEnvironment(string sourceEnv)
        {
            // Arrange
            var result = new NimatorResult(DateTime.Now);
            var checks = new List <ICheckResult>
            {
                new CheckResult("My Check", NotificationLevel.Critical)
            };

            result.LayerResults.Add(new LayerResult("My Test", checks));

            // Act
            var message = new SlackMessage(result, NotificationLevel.Error, sourceEnv);

            // Assert
            message?.Text.ShouldNotBeNull();
            message.Text.ShouldNotContain(SlackMessage.ENV_PREFIX);
        }
Пример #9
0
        public void WhenCheckHasNotificationLevelNotOkay_MetricIsHealthy_ShouldBeFalse(NotificationLevel notificationLevel)
        {
            var result = new NimatorResult(DateTime.Now);
            List <ICheckResult> checkResults = new List <ICheckResult>();

            checkResults.Add(new CheckResult("BasicLogin", notificationLevel));
            result.LayerResults.Add(new LayerResult(layerName: "Infrastructure", checkResults: checkResults));

            var sut = GetSut();

            // Act
            sut.Notify(result);

            // Assert
            sut.Metrics.Count.ShouldBe(2);
            sut.Metrics.ShouldContain(metric => metric.StatName.EndsWith(".isHealthy") &&
                                      metric.Value.Equals(0));
        }
Пример #10
0
        public void MetricResult_ShouldBeExpectedValue_WhenCheckHasNotificationLevelOf_(
            NotificationLevel notificationLevel, int expectedValue)
        {
            var result = new NimatorResult(DateTime.Now);
            List <ICheckResult> checkResults = new List <ICheckResult>();

            checkResults.Add(new CheckResult("BasicLogin", notificationLevel));
            result.LayerResults.Add(new LayerResult(layerName: "Infrastructure", checkResults: checkResults));

            var sut = GetSut();

            // Act
            sut.Notify(result);

            // Assert
            sut.Metrics.Count.ShouldBe(2);
            sut.Metrics.ShouldContain(metric => metric.StatName.EndsWith(".result") &&
                                      metric.Value.Equals(expectedValue));
        }