예제 #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
        private static TestExecutionStates TestStateAnalizer(string str)
        {
            TestExecutionParameters parameters = new TestExecutionParameters();

            if (str.Contains(parameters.START_TEST_VALUE))
            {
                _currentState = TestExecutionStates.Started;
            }

            else if (str.Contains(parameters.END_TEST_FAILED_VALUE))
            {
                _currentState = TestExecutionStates.StopFailed;
            }

            else if (str.Contains(parameters.END_TEST_SUCCEEDED_VALUE))
            {
                _currentState = TestExecutionStates.StopSucceeded;
            }

            return(_currentState);
        }
예제 #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);
        }
예제 #5
0
        public static int ReadTestParameters(string[] args)
        {
            parameters = new TestExecutionParameters();

            // Параметры берутся из командной строки
            if (args.Length == 0)
            {
                Console.WriteLine("There are no CMD line parameters");
                Console.WriteLine("Required argument:");
                Console.WriteLine("    <NameOfTest>");
                Console.WriteLine("    {0}<path to server>", CmdLineParameterNames.Server);
                Console.WriteLine("    {0}<path to hex on a server>", CmdLineParameterNames.ServerPath);
                Console.WriteLine("Optional arguments:");
                Console.WriteLine("    {0}<value in seconds>", CmdLineParameterNames.EndTimeout);
                Console.WriteLine("    {0}<value in seconds>", CmdLineParameterNames.EndTimeout);
                Console.WriteLine(@"example args of command line: testName -server:http://atfs16:8080/tfs -serverPath:$/Kordis50/Product/Firmware/Product_test_A835.hex -StartTimeout:180 -endTimeout:180");

                return(SystemParameters.RETURN_CODE_FAIL);
            }

            // Разбор параметров командной строки
            for (uint i = 0; i < args.Length; i++)
            {
                uint   value;
                string outString;

                if (CmdParser.GetParameterUnsignedIntegerValueFromStringArgument(args[i], CmdLineParameterNames.StartTimeout, out value) ==
                    CommandLineArgumentsParsingResult.Success)
                {
                    parameters.StartTimeout = value;
                }
                else if (CmdParser.GetParameterUnsignedIntegerValueFromStringArgument(args[i], CmdLineParameterNames.EndTimeout, out value) ==
                         CommandLineArgumentsParsingResult.Success)
                {
                    parameters.EndTimeout = value;
                }
                else if (CmdParser.GetStringArgument(args[i], CmdLineParameterNames.Server, out outString) ==
                         CommandLineArgumentsParsingResult.Success)
                {
                    parameters.Server = outString;
                }
                else if (CmdParser.GetStringArgument(args[i], CmdLineParameterNames.ServerPath, out outString) ==
                         CommandLineArgumentsParsingResult.Success)
                {
                    parameters.ServerPath = outString;
                }
                else if (i == 0)
                {
                    // Первый параметр командной строки - всегда имя теста
                    testName            = args[0];
                    parameters.TestName = testName;
                    Console.WriteLine("TestName={0}", testName);
                }
                else
                {
                    Console.WriteLine("Unknown arg: {0}", args[i]);
                }
            }

            // Проверка корректности параметров
            if ((testName.Length == 0) || (parameters.Server == "") || (parameters.ServerPath == ""))
            {
                Console.WriteLine("ERROR: empty test name or server name, or path on a server");
                return(SystemParameters.RETURN_CODE_FAIL);
            }

            Console.WriteLine("Initial parameters: \n\tParameters.StartTimeout={0}, \n\tParameters.EndTimeout={1}",
                              parameters.StartTimeout, parameters.EndTimeout);

            return(SystemParameters.RETURN_CODE_SUCCESS);
        }