private void ProcessScenario(ScenarioInput scenario)
        {
            Console.WriteLine($"Scenario: {scenario.Directory}\\{scenario.FileName}");
            Console.WriteLine(JsonConvert.SerializeObject(scenario));
            ConfigProxy(scenario);

            for (var currentSystemLanguage = 0; currentSystemLanguage < scenario.UrlFetch.BaseUrl.Length; currentSystemLanguage++)
            {
                scenario.CurrentSystem = currentSystemLanguage;

                for (var count = 1; count <= scenario.Count; count++)
                {
                    foreach (var subScenario in scenario.Clients)
                    {
                        Console.WriteLine($"Scenario: {scenario.Directory}\\{scenario.FileName}");
                        Console.WriteLine($"System Language: {scenario.CurrentSystemName}");
                        Console.WriteLine($"    Bateria de Teste: {count}/{scenario.Count}");
                        Console.WriteLine($"        SubScenario: {subScenario}");
                        Console.WriteLine("         Start sending");

                        if (File.Exists(scenario.ResultPath(count, subScenario)))
                        {
                            File.Delete(scenario.ResultPath(count, subScenario));
                        }

                        if (scenario.AsyncClients)
                        {
                            var tasks = new List <Task <MetricStatus> >();
                            for (var i = 1; i <= subScenario; i++)
                            {
                                tasks.Add(MakeRequestAsync(scenario, i, subScenario));
                            }

                            var results = Task.WhenAll(tasks).GetAwaiter().GetResult();
                            foreach (var result in results)
                            {
                                scenario.AddResult(count, subScenario, result);
                            }
                        }
                        else
                        {
                            for (var i = 1; i <= subScenario; i++)
                            {
                                scenario.AddResult(count, subScenario, MakeRequest(scenario, i, subScenario));
                            }
                        }
                    }
                }
                _resultWriterService.Write(scenario);
            }
        }
        private static void WriteEachClientResultJson(ScenarioInput scenario)
        {
            if (Directory.Exists($"{scenario.Directory}\\{scenario.CurrentSystemName}"))
            {
                Directory.Delete($"{scenario.Directory}\\{scenario.CurrentSystemName}", true);
            }
            else
            {
                Directory.CreateDirectory($"{scenario.Directory}\\{scenario.CurrentSystemName}");
            }

            foreach (var scenarioResult in scenario.Bateries)
            {
                if (!Directory.Exists($"{scenario.Directory}\\{scenario.CurrentSystemName}\\{scenarioResult.Count}"))
                {
                    Directory.CreateDirectory($"{scenario.Directory}\\{scenario.CurrentSystemName}\\{scenarioResult.Count}");
                }

                foreach (var scenarioResultClientResult in scenarioResult.ClientResults)
                {
                    using (var streamWriter =
                               new StreamWriter(scenario.ResultPath(scenarioResult.Count, scenarioResultClientResult.Count)))
                    {
                        var contentJsonUnPrettyfied =
                            JsonConvert.SerializeObject(scenarioResultClientResult.Result, Formatting.Indented);
                        streamWriter.WriteLine(contentJsonUnPrettyfied);
                    }
                }
            }
        }