Example #1
0
        public void Validate_NoHostIsConfigured_Succeeds(string host)
        {
            // Arrange
            var metricsDeclarationProvider     = GetMetricDeclarationProvider();
            var resourceDiscoveryConfiguration = CreateRuntimeConfiguration();

            resourceDiscoveryConfiguration.Value.Host = host;

            // Act
            var azureAuthenticationValidationStep = new ResourceDiscoveryValidationStep(resourceDiscoveryConfiguration, metricsDeclarationProvider, NullLogger <ResourceDiscoveryValidationStep> .Instance);
            var validationResult = azureAuthenticationValidationStep.Run();

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
Example #2
0
        public void ServiceBusNamespaceMetricsDeclaration_UseAllowedDimension_Succeeded()
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithServiceBusMetric(metricDimension: "OperationResult")
                                 .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
        public void EventHubsMetricsDeclaration_UseEntityNameDimensionWithoutTopicName_Succeeded()
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithEventHubsMetric(metricDimension: "EntityName", topicName: string.Empty)
                                 .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
Example #4
0
        public void ServiceBusNamespaceMetricsDeclaration_UseEntityNameDimensionAndTopicName_Fails()
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithServiceBusMetric(queueName: string.Empty, topicName: "test-topic", metricDimension: "EntityName")
                                 .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);
        }
Example #5
0
        public void Validate_PortIsZero_Fails()
        {
            // Arrange
            var metricsDeclarationProvider     = GetMetricDeclarationProvider();
            var resourceDiscoveryConfiguration = CreateRuntimeConfiguration();

            resourceDiscoveryConfiguration.Value.Port = 0;

            // Act
            var azureAuthenticationValidationStep = new ResourceDiscoveryValidationStep(resourceDiscoveryConfiguration, metricsDeclarationProvider, NullLogger <ResourceDiscoveryValidationStep> .Instance);
            var validationResult = azureAuthenticationValidationStep.Run();

            // Assert
            PromitorAssert.ValidationFailed(validationResult);
        }
Example #6
0
        public void GenericMetricsDeclaration_DeclarationWithFilter_Succeeded()
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithGenericMetric(filter: "EntityName eq \'invoices\'")
                                 .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
Example #7
0
        public void ApplicationGatewayMetricsDeclaration_DeclarationWithoutMetricDescription_Succeeded()
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithApplicationGatewayMetric(metricDescription: string.Empty)
                                 .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
Example #8
0
        public void RedisCacheMetricsDeclaration_DeclarationWithoutResourceButWithResourceDiscoveryGroupInfo_Succeeds()
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithRedisCacheMetric(omitResource: true, resourceDiscoveryGroupName: "sample-collection")
                                 .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
Example #9
0
        public void RedisCacheMetricsDeclaration_DeclarationWithoutResourceAndResourceDiscoveryGroupInfo_Fails()
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithRedisCacheMetric(omitResource: true)
                                 .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);
        }
Example #10
0
        public void ConfigurationPath_FileExists_Succeeds()
        {
            // Arrange
            const string invalidConfigurationPath = "Files/valid-sample.yaml";
            var          configOptions            = Options.Create(new MetricsConfiguration {
                AbsolutePath = invalidConfigurationPath
            });

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

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
Example #11
0
        public void DataShareMetricsDeclaration_DeclarationWithoutShareName_Succeeds()
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithDataShareMetric(shareName: string.Empty)
                                 .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
Example #12
0
        public void ConfigurationPath_FileDoesNotExist_Fails()
        {
            // Arrange
            const string validConfigurationPath = "Invalid";
            var          configOptions          = Options.Create(new MetricsConfiguration {
                AbsolutePath = validConfigurationPath
            });

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

            // Assert
            PromitorAssert.ValidationFailed(validationResult);
        }
Example #13
0
        public void AutomationAccountMetricsDeclaration_DeclarationWithRunbookNameForUnsupportedMetric_Fails()
        {
            // Arrange
            var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                        .WithAutomationAccountMetric(runbookName: "example-runbook", azureMetricName: "unsupported")
                                        .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationFailed(validationResult);
        }
Example #14
0
        public void EventHubsMetricsDeclaration_UseEntityNameAsDimension_Blocked()
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithEventHubsMetric(metricDimension: "EntityName")
                                 .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationFailed(validationResult);
        }
Example #15
0
        public void EventHubsMetricsDeclaration_DeclarationWithoutServiceBusNamespace_Fails()
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithEventHubsMetric(eventHubsNamespace: string.Empty)
                                 .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationFailed(validationResult);
        }
        public void AppPlanMetricsDeclaration_DeclarationWithInvalidMetricLimit_Fails(int metricLimit)
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithAppPlanMetric(azureMetricLimit: metricLimit)
                                 .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);
        }
        public void BlobStorageMetricsDeclaration_ValidDeclarationWithTimeSpentInQueue_Succeeds()
        {
            // Arrange
            var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                        .WithBlobStorageMetric(azureMetricName: AzureStorageConstants.Queues.Metrics.TimeSpentInQueue)
                                        .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
        public void AppPlanMetricsDeclaration_ValidDeclaration_Succeeds()
        {
            // Arrange
            var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                        .WithAppPlanMetric()
                                        .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
Example #19
0
        public void PostgreSqlMetricsDeclaration_DeclarationWithArcBasedServer_Fails()
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithPostgreSqlMetric(serverType: PostgreSqlServerType.Arc)
                                 .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);
        }
Example #20
0
        public void PostgreSqlMetricsDeclaration_DeclarationWithSpecificServerType_Succeeds(PostgreSqlServerType serverType)
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithPostgreSqlMetric(serverType: serverType)
                                 .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
Example #21
0
        public void RedisCacheMetricsDeclaration_DeclarationWithoutCacheName_Fails()
        {
            // Arrange
            var rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                 .WithRedisCacheMetric(cacheName: string.Empty)
                                 .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);
        }
Example #22
0
        public void FileStorageMetricsDeclaration_ValidDeclarationWithAzureMetricNameInDifferentCasing_Succeeds()
        {
            // Arrange
            var azureMetricName       = AzureStorageConstants.Queues.Metrics.MessageCount.ToUpper();
            var rawMetricsDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                        .WithFileStorageMetric(azureMetricName: azureMetricName)
                                        .Build(Mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawMetricsDeclaration, Mapper);

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

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
        public void Validate_EmptySubscriptionsAreConfigured_Fails()
        {
            // Arrange
            var azureLandscapeConfiguration = CreateLandscapeConfiguration();

            azureLandscapeConfiguration.Value.Subscriptions = new List <string> {
                string.Empty
            };

            // Act
            var azureLandscapeValidationStep = new AzureLandscapeValidationStep(azureLandscapeConfiguration, NullLogger <AzureLandscapeValidationStep> .Instance);
            var validationResult             = azureLandscapeValidationStep.Run();

            // Assert
            PromitorAssert.ValidationFailed(validationResult);
        }
Example #24
0
        public void Validate_NoResourceDiscoveryHostIsNotConfiguredButMetricWithDiscoveryIsDefined_Fails()
        {
            // Arrange
            var metricsDeclarationProvider     = GetMetricDeclarationProvider(useDiscoveryGroup: true);
            var resourceDiscoveryConfiguration = CreateRuntimeConfiguration();

            resourceDiscoveryConfiguration.Value.Host = string.Empty;

            // Act
            // ReSharper disable once ExpressionIsAlwaysNull
            var azureAuthenticationValidationStep = new ResourceDiscoveryValidationStep(resourceDiscoveryConfiguration, metricsDeclarationProvider, NullLogger <ResourceDiscoveryValidationStep> .Instance);
            var validationResult = azureAuthenticationValidationStep.Run();

            // Assert
            PromitorAssert.ValidationFailed(validationResult);
        }
Example #25
0
        public void MetricsDeclaration_DeclarationWithDuplicateMetricNames_Fails()
        {
            // Arrange
            const string metricName     = "my_metric";
            var          rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                          .WithServiceBusMetric(metricName)
                                          .WithServiceBusMetric(metricName)
                                          .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);
        }
Example #26
0
        public void Validate_AtlassianStatuspageIsFullyConfigured_Success()
        {
            // Arrange
            const string metricName     = "my_metric";
            var          rawDeclaration = MetricsDeclarationBuilder.WithMetadata()
                                          .WithServiceBusMetric(metricName)
                                          .Build(_mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper);
            var runtimeConfiguration       = CreateRuntimeConfiguration(metricName);

            // Act
            var azureAuthenticationValidationStep = new AtlassianStatuspageMetricSinkValidationStep(runtimeConfiguration, metricsDeclarationProvider, NullLogger <AtlassianStatuspageMetricSinkValidationStep> .Instance);
            var validationResult = azureAuthenticationValidationStep.Run();

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
        public void SystemAssignedManagedIdentity_ValidWithoutApplicationKey_Succeeds()
        {
            // Arrange
            var inMemoryConfiguration = new Dictionary <string, string>
            {
                { ConfigurationKeys.Authentication.Mode, AuthenticationMode.SystemAssignedManagedIdentity.ToString() },
            };

            var config = CreateConfiguration(inMemoryConfiguration);

            // Act
            var azureAuthenticationValidationStep = new AzureAuthenticationValidationStep(config, NullLogger <AzureAuthenticationValidationStep> .Instance);
            var validationResult = azureAuthenticationValidationStep.Run();

            // Assert
            PromitorAssert.ValidationIsSuccessful(validationResult);
        }
        public void Validate_DuplicateSubscriptionsAreConfigured_Fails()
        {
            // Arrange
            var subscriptionId = Guid.NewGuid().ToString();
            var azureLandscapeConfiguration = CreateLandscapeConfiguration();

            azureLandscapeConfiguration.Value.Subscriptions = new List <string> {
                subscriptionId, subscriptionId
            };

            // Act
            var azureLandscapeValidationStep = new AzureLandscapeValidationStep(azureLandscapeConfiguration, NullLogger <AzureLandscapeValidationStep> .Instance);
            var validationResult             = azureLandscapeValidationStep.Run();

            // Assert
            PromitorAssert.ValidationFailed(validationResult);
        }
Example #29
0
        public void Validate_AtlassianStatuspageWithPromitorMetricUsingResourceDiscovery_Fails()
        {
            // Arrange
            const string metricName = "my_metric";
            const string resourceDiscoveryGroupName = "my_discovery_group";
            var          rawDeclaration             = MetricsDeclarationBuilder.WithMetadata()
                                                      .WithServiceBusMetric(resourceDiscoveryGroupName: resourceDiscoveryGroupName)
                                                      .Build(_mapper);
            var metricsDeclarationProvider = new MetricsDeclarationProviderStub(rawDeclaration, _mapper);
            var runtimeConfiguration       = CreateRuntimeConfiguration(metricName);

            // Act
            var azureAuthenticationValidationStep = new AtlassianStatuspageMetricSinkValidationStep(runtimeConfiguration, metricsDeclarationProvider, NullLogger <AtlassianStatuspageMetricSinkValidationStep> .Instance);
            var validationResult = azureAuthenticationValidationStep.Run();

            // Assert
            PromitorAssert.ValidationFailed(validationResult);
        }
        public void UserAssignedManagedIdentity_IdentityIdIsWhitespace_Fails()
        {
            // Arrange
            const string invalidApplicationId  = " ";
            var          inMemoryConfiguration = new Dictionary <string, string>
            {
                { ConfigurationKeys.Authentication.IdentityId, invalidApplicationId },
                { ConfigurationKeys.Authentication.Mode, AuthenticationMode.UserAssignedManagedIdentity.ToString() },
            };
            var config = CreateConfiguration(inMemoryConfiguration);

            // Act
            var azureAuthenticationValidationStep = new AzureAuthenticationValidationStep(config, NullLogger <AzureAuthenticationValidationStep> .Instance);
            var validationResult = azureAuthenticationValidationStep.Run();

            // Assert
            PromitorAssert.ValidationFailed(validationResult);
        }