public static int ReadTrace() { TestExecutionParameters parameters = TestParametersReader.GetTestExecutionParameters(); var initialDateTime = DateTime.Now; int returnCode = SystemParameters.RETURN_CODE_SUCCESS; // Запуск процесса rttLogger _rttLoggerProcess = new Process(); returnCode = StartRttLoggerProcess(); if (SystemParameters.FAILED(returnCode)) { return(returnCode); } // Подготовка параметров _lineCounter = 0; _currentState = TestExecutionStates.NotStarted; File.Delete(LOG_FILE_NAME_COPY); // Ожидаем начало выполнения теста if (!WaitForState(TestExecutionStates.Started, parameters.StartTimeout)) { // Тест не запустился за отведенное время Console.WriteLine("ERROR: timeout start, timeout={0}, duration={1}", parameters.StartTimeout, DateTime.Now - initialDateTime); returnCode = SystemParameters.RETURN_CODE_FAILED_START_TEST; } if (SystemParameters.SUCCESSED(returnCode)) { // Тест начал выполняться, ожидаем его завершения if (!WaitForState(TestExecutionStates.StopFailed, parameters.EndTimeout)) { // Тест не завершился за отведенное время Console.WriteLine("ERROR: timeout end, timeout={0}, duration={1}", parameters.EndTimeout, DateTime.Now - initialDateTime); returnCode = SystemParameters.RETURN_CODE_FAILED_STOP_TEST; } } if (SystemParameters.SUCCESSED(returnCode)) { // Тест завершился. Проверяем код результата if (_currentState == TestExecutionStates.StopSucceeded) { // Тест выполнен успешно Console.WriteLine("test PASSED, dt={0}", DateTime.Now); returnCode = SystemParameters.RETURN_CODE_SUCCESS; } else { // Тест завершился ошибкой Console.WriteLine("ERROR: test FAILED, dt={0}", DateTime.Now); returnCode = SystemParameters.RETURN_CODE_TEST_FAILED; } } try { // Остановка процесса StopRttLoggerProcess(); } catch { // Если не удалось завершить процесс JLinkRTTLogger, значит он уже завершен. } SaveLogFile(); File.Delete(LOG_FILE_NAME); return(returnCode); }