Пример #1
0
        public static int ProgrammFlash()
        {
            // 1. Очистка памяти
            int res = ExecuteNrfjprogProcess("--eraseall");

            if (res != 0)
            {
                return(SystemParameters.RETURN_CODE_FAIL);
            }

            // 2. Загрузка прошивки в память
            string localFilePath = Path.GetTempPath() + "tempHex.hex";
            TestExecutionParameters parameters = TestParametersReader.GetTestExecutionParameters();

            try
            {
                // Получение ссылки на Team Foundation Server.
                var tfs = new TeamFoundationServer(parameters.Server);

                // Получение ссылки на Version Control.
                var versionControl = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));
                versionControl.DownloadFile(parameters.ServerPath, 0, VersionSpec.Latest, localFilePath);
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine($"TFS error: {ex.Message}");
                return(SystemParameters.RETURN_CODE_FAIL);
            }

            string arg = "--program " + localFilePath;

            res = ExecuteNrfjprogProcess(arg);

            // Удаляем временный файл
            File.Delete(localFilePath);

            if (res != 0)
            {
                return(SystemParameters.RETURN_CODE_FAIL);
            }

            // 3. Перезапуск
            res = ExecuteNrfjprogProcess("--reset");
            if (res != 0)
            {
                return(SystemParameters.RETURN_CODE_FAIL);
            }

            return(SystemParameters.RETURN_CODE_SUCCESS);
        }
Пример #2
0
        static int Main(string[] args)
        {
            Console.WriteLine("Kordis50ProductTestParser start, dt={0}", DateTime.Now);

            // Разбор параметров командной строки
            int res = TestParametersReader.ReadTestParameters(args);

            if (SystemParameters.FAILED(res))
            {
                System.Console.Error.WriteLine("Failed");
#if DEBUG
                Console.ReadKey(true);
#endif
                return(SystemParameters.RETURN_CODE_FAILED_ARG_PARAMETR);
            }

            // Прошивка платы
            res = FlashProgrammer.ProgrammFlash();
            if (SystemParameters.FAILED(res))
            {
                System.Console.Error.WriteLine("Failed");
#if DEBUG
                Console.ReadKey(true);
#endif
                return(SystemParameters.RETURN_CODE_FAILED_PROGRAMM_FIRMWARE);
            }

            // Чтение и анализ трассировки
            res = TraceReader.ReadTrace();
            if (SystemParameters.FAILED(res))
            {
                System.Console.Error.WriteLine("Failed");
#if DEBUG
                Console.ReadKey(true);
#endif
                return(res);
            }

#if DEBUG
            Console.ReadKey(true);
#endif
            return(SystemParameters.RETURN_CODE_SUCCESS);
        }
Пример #3
0
        private static void SaveLogFile()
        {
            if (!Directory.Exists("Logs"))
            {
                Directory.CreateDirectory("Logs");
            }

            TestExecutionParameters parameters = TestParametersReader.GetTestExecutionParameters();

            string date = DateTime.Now.ToString();

            date = date.Replace('.', '_');
            date = date.Replace(':', '_');
            date = date.Replace(' ', '_');

            string path = @"Logs\" + parameters.TestName + "_" + date + ".log";

            if (File.Exists(LOG_FILE_NAME))
            {
                File.Copy(LOG_FILE_NAME, path);
            }

            File.Delete(LOG_FILE_NAME);
        }
Пример #4
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);
        }