Exemplo n.º 1
0
        private Conditions ParseConditions()
        {
            Conditions conditions = new Conditions();

            if (SeverityCondition != null)
            {
                conditions.Severity = new Condition(
                    operatorProperty: SeverityCondition.Split(':')[0],
                    values: SeverityCondition.Split(':')[1].Split(','));
            }

            if (MonitorServiceCondition != null)
            {
                conditions.MonitorService = new Condition(
                    operatorProperty: MonitorServiceCondition.Split(':')[0],
                    values: MonitorServiceCondition.Split(':')[1].Split(','));
            }

            if (MonitorCondition != null)
            {
                conditions.MonitorCondition = new Condition(
                    operatorProperty: MonitorCondition.Split(':')[0],
                    values: MonitorCondition.Split(':')[1].Split(','));
            }

            if (TargetResourceTypeCondition != null)
            {
                conditions.MonitorCondition = new Condition(
                    operatorProperty: TargetResourceTypeCondition.Split(':')[0],
                    values: TargetResourceTypeCondition.Split(':')[1].Split(','));
            }

            if (DescriptionCondition != null)
            {
                conditions.Description = new Condition(
                    operatorProperty: DescriptionCondition.Split(':')[0],
                    values: DescriptionCondition.Split(':')[1].Split(','));
            }

            if (AlertRuleIdCondition != null)
            {
                conditions.AlertRuleId = new Condition(
                    operatorProperty: AlertRuleIdCondition.Split(':')[0],
                    values: AlertRuleIdCondition.Split(':')[1].Split(','));
            }

            if (AlertContextCondition != null)
            {
                conditions.AlertContext = new Condition(
                    operatorProperty: AlertContextCondition.Split(':')[0],
                    values: AlertContextCondition.Split(':')[1].Split(','));
            }

            return(conditions);
        }
Exemplo n.º 2
0
        private void ValidateMetricAnomalyAlertConfiguration(MetricAnomalyAlertConfiguration configuration)
        {
            Assert.That(configuration.DetectionConfigurationId, Is.Not.Null.And.Not.Empty);
            Assert.That(configuration.AlertScope, Is.Not.Null);

            if (configuration.AlertScope.ScopeType == MetricAnomalyAlertScopeType.WholeSeries)
            {
                Assert.That(configuration.AlertScope.SeriesGroupInScope, Is.Null);
                Assert.That(configuration.AlertScope.TopNGroupInScope, Is.Null);
            }
            else if (configuration.AlertScope.ScopeType == MetricAnomalyAlertScopeType.SeriesGroup)
            {
                Assert.That(configuration.AlertScope.TopNGroupInScope, Is.Null);
                ValidateGroupKey(configuration.AlertScope.SeriesGroupInScope);
            }
            else if (configuration.AlertScope.ScopeType == MetricAnomalyAlertScopeType.TopN)
            {
                Assert.That(configuration.AlertScope.SeriesGroupInScope, Is.Null);
                Assert.That(configuration.AlertScope.TopNGroupInScope, Is.Not.Null);
            }
            else
            {
                throw new ArgumentOutOfRangeException("Invalid ScopeType value!");
            }

            Assert.That(configuration.AlertConditions, Is.Not.Null);

            MetricBoundaryCondition boundaryCondition = configuration.AlertConditions.MetricBoundaryCondition;
            SeverityCondition       severityCondition = configuration.AlertConditions.SeverityCondition;

            if (boundaryCondition != null)
            {
                if (boundaryCondition.Direction == BoundaryDirection.Up)
                {
                    Assert.That(boundaryCondition.UpperBound, Is.Not.Null);
                    Assert.That(boundaryCondition.LowerBound, Is.Null);
                }
                else if (boundaryCondition.Direction == BoundaryDirection.Down)
                {
                    Assert.That(boundaryCondition.UpperBound, Is.Null);
                    Assert.That(boundaryCondition.LowerBound, Is.Not.Null);
                }
                else if (boundaryCondition.Direction == BoundaryDirection.Both)
                {
                    Assert.That(boundaryCondition.UpperBound, Is.Not.Null);
                    Assert.That(boundaryCondition.LowerBound, Is.Not.Null);
                }
                else
                {
                    throw new ArgumentOutOfRangeException("Invalid BoundaryDirection value!");
                }

                if (boundaryCondition.CompanionMetricId != null)
                {
                    Assert.That(boundaryCondition.CompanionMetricId, Is.Not.Empty);
                }

                Assert.That(boundaryCondition.ShouldAlertIfDataPointMissing, Is.Not.Null);
            }

            if (severityCondition != null)
            {
                Assert.That(severityCondition.MinimumAlertSeverity, Is.Not.EqualTo(default(AnomalySeverity)));
                Assert.That(severityCondition.MaximumAlertSeverity, Is.Not.EqualTo(default(AnomalySeverity)));
            }

            if (configuration.AlertSnoozeCondition != null)
            {
                Assert.That(configuration.AlertSnoozeCondition.SnoozeScope, Is.Not.EqualTo(default(SnoozeScope)));
            }

            Assert.That(configuration.UseDetectionResultToFilterAnomalies, Is.Not.Null);
        }