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); }
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); }
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); }
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); }
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); }