コード例 #1
0
        public void Deserialize_MetricDefaults_UsesDefaultsDeserializer()
        {
            // Arrange
            const string config =
                @"version: v1
metricDefaults:
  aggregation:
    interval: '00:05:00'";
            var yamlNode       = YamlUtils.CreateYamlNode(config);
            var metricDefaults = new MetricDefaultsV1();

            _defaultsDeserializer.Setup(d => d.Deserialize(It.IsAny <YamlMappingNode>())).Returns(metricDefaults);

            // Act
            var declaration = _deserializer.Deserialize(yamlNode);

            // Assert
            Assert.Same(metricDefaults, declaration.MetricDefaults);
        }
コード例 #2
0
        protected MetricDefaultsV1 GenerateBogusMetricDefaults(string defaultScrapingInterval)
        {
            var bogusAggregationGenerator = new Faker <AggregationV1>()
                                            .StrictMode(ensureRulesForAllProperties: true)
                                            .RuleFor(aggregation => aggregation.Interval, faker => TimeSpan.FromMinutes(faker.Random.Int()));

            var generatedAggregation = bogusAggregationGenerator.Generate();
            var metricDefaults       = new MetricDefaultsV1
            {
                Aggregation = generatedAggregation,
            };

            if (!string.IsNullOrWhiteSpace(defaultScrapingInterval))
            {
                metricDefaults.Scraping.Schedule = defaultScrapingInterval;
            }

            return(metricDefaults);
        }
コード例 #3
0
        public MetricsDeclarationV1 InterpretYamlStream(YamlMappingNode rootNode)
        {
            AzureMetadataV1 azureMetadata = null;

            if (rootNode.Children.ContainsKey("azureMetadata"))
            {
                var azureMetadataNode       = (YamlMappingNode)rootNode.Children[new YamlScalarNode("azureMetadata")];
                var azureMetadataSerializer = new AzureMetadataDeserializer(Logger);
                azureMetadata = azureMetadataSerializer.Deserialize(azureMetadataNode);
            }

            MetricDefaultsV1 metricDefaults = null;

            if (rootNode.Children.ContainsKey("metricDefaults"))
            {
                var metricDefaultsNode       = (YamlMappingNode)rootNode.Children[new YamlScalarNode("metricDefaults")];
                var metricDefaultsSerializer = new MetricDefaultsDeserializer(Logger);
                metricDefaults = metricDefaultsSerializer.Deserialize(metricDefaultsNode);
            }

            List <MetricDefinitionV1> metrics = null;

            if (rootNode.Children.ContainsKey("metrics"))
            {
                var metricsNode         = (YamlSequenceNode)rootNode.Children[new YamlScalarNode("metrics")];
                var metricsDeserializer = new MetricsDeserializer(Logger);
                metrics = metricsDeserializer.Deserialize(metricsNode);
            }

            var metricsDeclaration = new MetricsDeclarationV1
            {
                AzureMetadata  = azureMetadata,
                MetricDefaults = metricDefaults,
                Metrics        = metrics
            };

            return(metricsDeclaration);
        }
コード例 #4
0
        public void MetricsDeclaration_WithInvalidDefaultMetricLimit_Fails(int metricLimit)
        {
            // Arrange
            var metricDefaults = new MetricDefaultsV1
            {
                Scraping = new ScrapingV1
                {
                    Schedule = @"0 * * ? * *"
                },
                Limit = metricLimit
            };
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithDefaults(metricDefaults)
                                 .Build(_mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper);

            // Act
            var scrapingScheduleValidationStep = new MetricsDeclarationValidationStep(metricsDeclarationProvider, NullLogger <MetricsDeclarationValidationStep> .Instance);
            var validationResult = scrapingScheduleValidationStep.Run();

            // Assert
            PromitorAssert.ValidationFailed(validationResult);
        }
コード例 #5
0
        private MetricsDeclarationProviderStub CreateMetricsDeclarationProvider(string metricName, Dictionary <string, string> labels = null, Dictionary <string, string> defaultLabels = null)
        {
            var mapperConfiguration = new MapperConfiguration(c => c.AddProfile <V1MappingProfile>());
            var mapper        = mapperConfiguration.CreateMapper();
            var metricBuilder = MetricsDeclarationBuilder.WithMetadata();

            if (defaultLabels != null)
            {
                var defaults = new MetricDefaultsV1
                {
                    Labels = defaultLabels
                };

                metricBuilder.WithDefaults(defaults);
            }

            var rawDeclaration = metricBuilder.WithServiceBusMetric(metricName, labels: labels)
                                 .Build(mapper);

            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, mapper);

            return(metricsDeclarationProvider);
        }
コード例 #6
0
        protected void AssertMetricDefaults(Promitor.Core.Scraping.Configuration.Model.MetricsDeclaration deserializedConfiguration, MetricDefaultsV1 metricDefaults)
        {
            var deserializedMetricDefaults = deserializedConfiguration.MetricDefaults;

            Assert.NotNull(deserializedMetricDefaults);
            Assert.NotNull(deserializedMetricDefaults.Aggregation);
            Assert.Equal(metricDefaults.Aggregation.Interval, deserializedMetricDefaults.Aggregation.Interval);
        }
コード例 #7
0
        public MetricsDeclarationBuilder WithDefaults(MetricDefaultsV1 defaults)
        {
            _metricDefaults = defaults;

            return(this);
        }