static void ApplyParams(CustomProgram program, string[] args) { // Читаем настройки по-умолчанию из json-файла string jsonText = File.ReadAllText(@"default.settings", System.Text.Encoding.UTF8); program.ReadParamsFromJson(jsonText); // Читаем настройки из параметров командной строки. for (int paramIndex = 1; paramIndex < args.Length; paramIndex++) { string str = args[paramIndex]; string[] values = str.Split('='); if (values.Length == 2) { string key = values[0]; string value = values[1]; if (value.Length == 0) { value = null; } program.SetFromString(key, value); } } // Логируем параметры выполнения Console.WriteLine(new String('_', Console.WindowWidth)); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Параметры выполнения программы:"); Console.ResetColor(); program.PrintParameters(); Console.Write(new String('_', Console.WindowWidth)); }
static void TryExecuteTask(TestTaskResponseBody data) { FabricateProgram programFabric = CustomProgram.FindProgram(data.program); try { if (programFabric == null) { throw new Exception(String.Format("Программа {0} не найдена", data.program)); } CustomProgram program = programFabric(); // Читаем настройки по-умолчанию string jsonText = File.ReadAllText(@"default.settings", System.Text.Encoding.UTF8); program.ReadParamsFromJson(jsonText); // Читаем параметры из тест-задачи program.ReadParameters(data); ProjectManagerWebClient.ApplyParamsToProgram(program); // Предварительная инициализация program.VerifyParameters(); program.WriteParametersToReport(); // Если на этом этапе все ок - отправляем серверу ПМ подтсверждение - что автотестировщик переходит в режим выполнения теста if (ProjectManagerWebClient.ConfirmTask(data.task)) { // Если подтверждение принято - начинаем тестирование try { program.Report.ProgramName = data.program; program.Report.StartTime = DateTime.UtcNow; program.BeforeRun(); program.Run(); program.Report.Success = true; } catch (Exception e) { program.Report.Success = false; program.Report.ErrorText = e.Message; program.OnError(e); } finally { try { program.AfterRun(); } finally { program.Report.FinishTime = DateTime.UtcNow; ProjectManagerWebClient.SendReport(program.Report); } } } } catch (Exception e) { ProjectManagerWebClient.RejectTestTask(data.task, e.Message); } }