Beispiel #1
0
        public Task <MetricStatus> Execute(ConfigurationSection configurationSection)
        {
            // Console.WriteLine($"Teste:     {configurationSection.ToJson()}");
            // Console.WriteLine();

            _resiliencePatterns.Configure(configurationSection);
            _requestHandle.Configure(configurationSection);
            // InitializePrometheusServer(configurationSection);

            return(ProcessRequests(configurationSection));
        }
Beispiel #2
0
        private void InitializePrometheusServer(ConfigurationSection configurationSection)
        {
            if (configurationSection.PrometheusConfiguration == null || string.IsNullOrEmpty(configurationSection.PrometheusConfiguration.Hostname) ||
                !configurationSection.PrometheusConfiguration.Port.HasValue)
            {
                return;
            }

            var prometheusConfigurationHostname = configurationSection.PrometheusConfiguration.Hostname;
            var prometheusConfigurationPort     = configurationSection.PrometheusConfiguration.Port;

            new MetricServer(
                hostname: prometheusConfigurationHostname,
                port: prometheusConfigurationPort.Value)
            .Start();
        }
Beispiel #3
0
        private async Task <MetricStatus> ProcessRequests(ConfigurationSection configurationSection)
        {
            var watch = new Stopwatch();

            watch.Start();
            Console.WriteLine($"[{DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss")}] Start process requests");

            while (_metrics.Client.Success < configurationSection.RequestConfiguration.SuccessRequests &&
                   (configurationSection.RequestConfiguration.MaxRequests.HasValue ? _metrics.Client.Total < configurationSection.RequestConfiguration.MaxRequests : true))
            {
                await ProcessRequest(configurationSection);
            }

            watch.Stop();
            _metrics.IncrementClientTotalTime(watch.ElapsedMilliseconds);

            Console.WriteLine($"[{DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss")}] Ended process requests with {watch.ElapsedMilliseconds} ms");
            return(_metrics.MetricStatus);
        }
Beispiel #4
0
 private Task <HttpResponseMessage> ProcessRequest(ConfigurationSection configurationSection)
 => _requestHandle.HandleRequest(configurationSection.UrlConfiguration);