Ejemplo n.º 1
0
        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);
        }