Пример #1
0
 internal Engine(Config config, string configJsonPath, MetricsProvider metrics)
 {
     _config           = config;
     _configJsonPath   = Path.GetFullPath(configJsonPath);
     _configJsonFolder = Path.GetDirectoryName(_configJsonPath);
     _metrics          = metrics;
 }
Пример #2
0
        static void Main(string[] args)
        {
            Stopwatch globalSw        = Stopwatch.StartNew();
            DateTime  globalStartTime = DateTime.Now;

            MetricsProvider metrics = new MetricsProvider(globalSw, globalStartTime);

            metrics.AddEvent(EventType.Start);

            Console.WriteLine("Средство нагрузочного тестирования веб-сервисов \"Норма\". Ланит, 2020");
            Console.WriteLine();

            if (args.Length == 0)
            {
                WriteErrorMessage("Не задан параметр командной строки");
                return;
            }

            if (args.Length > 1)
            {
                WriteErrorMessage("Слишком много параметров командной строки");
                return;
            }

            if (string.IsNullOrWhiteSpace(args[0]) || !File.Exists(args[0]))
            {
                WriteErrorMessage("Не найден файл \"" + args[0] + "\"");
                return;
            }


            Console.WriteLine("Проверка конфигурации и подготовка к проведению теста...");


            // Загрузка конфигурации
            metrics.AddEvent(EventType.LoadConfigStart);

            string json   = File.ReadAllText(args[0]);
            Config config = null;

            try
            {
                config = Newtonsoft.Json.JsonConvert.DeserializeObject <Config>(json);
            }
            catch
            {
                WriteErrorMessage("Файл \"" + args[0] + "\" содержит некорректные данные");
                return;
            }

            metrics.AddEvent(EventType.LoadConfigEnd);
            metrics.SetConfig(json, config);


            if (config == null)
            {
                WriteErrorMessage("Файл \"" + args[0] + "\" содержит некорректные данные");
                return;
            }


            // Проведение теста
            ConfigReportData crd;

            using (Engine engine = new Engine(config, args[0], metrics))
            {
                try
                {
                    if (!engine.Prepare())
                    {
                        WriteErrorMessage(engine.GetError());
                        return;
                    }

                    Console.WriteLine("Подготовка к тесту завершена");
                    Console.WriteLine();

                    engine.Run();
                    crd = engine.GetConfigReportData();
                }
                catch (Exception ex)
                {
                    WriteErrorMessage(ex.ToString());
                    return;
                }
            }

            metrics.AddEvent(EventType.Complete);

            Console.WriteLine("Сохранение отчётов...");
            metrics.WriteLogs(crd);

            Console.WriteLine("Нажмите ENTER для завершения");
            Console.ReadLine();
        }