internal static ScraperRuntimeConfiguration Generate()
        {
            var serverConfiguration              = GenerateServerConfiguration();
            var metricsConfiguration             = GenerateMetricsConfiguration();
            var containerLogConfiguration        = GenerateContainerLogConfiguration();
            var applicationInsightsConfiguration = GenerateApplicationInsightsConfiguration();
            var telemetryConfiguration           = GenerateTelemetryConfiguration(containerLogConfiguration, applicationInsightsConfiguration);
            var metricSinkConfiguration          = GenerateMetricSinkConfiguration();
            var resourceDiscovery = GenerateResourceDiscoveryConfiguration();

            var runtimeConfiguration = new ScraperRuntimeConfiguration
            {
                MetricsConfiguration = metricsConfiguration,
                MetricSinks          = metricSinkConfiguration,
                ResourceDiscovery    = resourceDiscovery,
                Server    = serverConfiguration,
                Telemetry = telemetryConfiguration
            };

            return(runtimeConfiguration);
        }
 public static RuntimeConfigurationGenerator WithRuntimeConfiguration(ScraperRuntimeConfiguration runtimeConfiguration)
 {
     return(new RuntimeConfigurationGenerator(runtimeConfiguration));
 }
 private RuntimeConfigurationGenerator(ScraperRuntimeConfiguration runtimeConfiguration)
 {
     _runtimeConfiguration = runtimeConfiguration;
     _isEnableMetricTimestampsInPrometheusSpecified = true;
 }
 private RuntimeConfigurationGenerator(ScraperRuntimeConfiguration runtimeConfiguration)
 {
     _runtimeConfiguration = runtimeConfiguration;
 }
        internal static ScraperRuntimeConfiguration Generate()
        {
            var serverConfiguration = new Faker <ServerConfiguration>()
                                      .StrictMode(true)
                                      .RuleFor(srvConfig => srvConfig.HttpPort, faker => faker.Random.Int())
                                      .Generate();
            var metricsConfiguration = new Faker <MetricsConfiguration>()
                                       .StrictMode(true)
                                       .RuleFor(metricConfiguration => metricConfiguration.AbsolutePath, faker => faker.System.DirectoryPath())
                                       .Generate();

            var containerLogConfiguration = new Faker <ContainerLogConfiguration>()
                                            .StrictMode(true)
                                            .RuleFor(containerConfiguration => containerConfiguration.Verbosity, faker => LogLevel.Error)
                                            .RuleFor(containerConfiguration => containerConfiguration.IsEnabled, faker => faker.Random.Bool())
                                            .Generate();

            var applicationInsightsConfiguration = new Faker <ApplicationInsightsConfiguration>()
                                                   .StrictMode(true)
                                                   .RuleFor(containerConfiguration => containerConfiguration.Verbosity, faker => LogLevel.Error)
                                                   .RuleFor(containerConfiguration => containerConfiguration.IsEnabled, faker => faker.Random.Bool())
                                                   .RuleFor(containerConfiguration => containerConfiguration.InstrumentationKey, faker => faker.Random.Guid().ToString())
                                                   .Generate();

            var telemetryConfiguration = new Faker <TelemetryConfiguration>()
                                         .StrictMode(true)
                                         .RuleFor(telemetry => telemetry.DefaultVerbosity, faker => LogLevel.Error)
                                         .RuleFor(telemetry => telemetry.ContainerLogs, faker => containerLogConfiguration)
                                         .RuleFor(telemetry => telemetry.ApplicationInsights, faker => applicationInsightsConfiguration)
                                         .Generate();
            var statsDConfiguration = new Faker <StatsdSinkConfiguration>()
                                      .StrictMode(true)
                                      .RuleFor(statsdSinkConfiguration => statsdSinkConfiguration.Host, faker => faker.Person.FirstName)
                                      .RuleFor(statsdSinkConfiguration => statsdSinkConfiguration.Port, faker => faker.Random.Int(min: 0))
                                      .RuleFor(statsdSinkConfiguration => statsdSinkConfiguration.MetricPrefix, faker => faker.Person.FirstName)
                                      .Generate();
            var prometheusScrapingEndpointSinkConfiguration = new Faker <PrometheusScrapingEndpointSinkConfiguration>()
                                                              .StrictMode(true)
                                                              .RuleFor(promConfiguration => promConfiguration.BaseUriPath, faker => faker.System.DirectoryPath())
                                                              .RuleFor(promConfiguration => promConfiguration.MetricUnavailableValue, faker => faker.Random.Double(min: 1))
                                                              .RuleFor(promConfiguration => promConfiguration.EnableMetricTimestamps, faker => faker.Random.Bool())
                                                              .Generate();
            var metricSinkConfiguration = new Faker <MetricSinkConfiguration>()
                                          .StrictMode(true)
                                          .RuleFor(sinkConfiguration => sinkConfiguration.Statsd, statsDConfiguration)
                                          .RuleFor(sinkConfiguration => sinkConfiguration.PrometheusScrapingEndpoint, prometheusScrapingEndpointSinkConfiguration)
                                          .Generate();
            var resourceDiscovery = new Faker <ResourceDiscoveryConfiguration>()
                                    .StrictMode(true)
                                    .RuleFor(resourceDiscoveryConfiguration => resourceDiscoveryConfiguration.Host, faker => faker.Person.FirstName)
                                    .RuleFor(resourceDiscoveryConfiguration => resourceDiscoveryConfiguration.Port, faker => faker.Random.Int(min: 1))
                                    .Generate();

            var runtimeConfiguration = new ScraperRuntimeConfiguration
            {
                MetricsConfiguration = metricsConfiguration,
                MetricSinks          = metricSinkConfiguration,
                ResourceDiscovery    = resourceDiscovery,
                Server    = serverConfiguration,
                Telemetry = telemetryConfiguration
            };

            return(runtimeConfiguration);
        }