From 963dfec1237b77b978b43ca9fa44b5b44b7af044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B0=D0=BF=D1=80=D0=B0=D0=BB=D0=BE=D0=B2=20=D0=90?= =?UTF-8?q?=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Mon, 1 Nov 2021 22:41:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=B2=D1=82=D0=BE=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D1=8B=20VA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VA-Тесты/АвтоТестыVA.sbsl | 169 ++++++++++++++++++++++++++++++-------- 1 file changed, 134 insertions(+), 35 deletions(-) diff --git a/VA-Тесты/АвтоТестыVA.sbsl b/VA-Тесты/АвтоТестыVA.sbsl index a17f377..cefb567 100644 --- a/VA-Тесты/АвтоТестыVA.sbsl +++ b/VA-Тесты/АвтоТестыVA.sbsl @@ -36,23 +36,119 @@ Консоль.Записать("Обновление:") Консоль.Записать("\тСкрипт АвтотестыVA") - Консоль.Записать("\т- скачивание новой версии") - пер временныйСкрипт = СкачатьНовуюВерсиюСкрипта() - пер версияНовогоСкрипта = ВерсияНовогоСкрипта(временныйСкрипт) + Консоль.Записать("\т\т- скачивание последней версии") + пер новыйСкрипт = СкачатьПоследнююВерсиюСкрипта() + пер версияНовогоСкрипта = ВерсияНовогоСкрипта(новыйСкрипт) если ВЕРСИЯ != версияНовогоСкрипта - Консоль.Записать("\т- изменение версии скрипта \"%ВЕРСИЯ\" -> \"%версияНовогоСкрипта\"") - пер файлТекущегоСкрипта = ФайлТекущегоСкрипта() - пер новоеИмя = файлТекущегоСкрипта.Путь + "/АвтотестыVA_%версияНовогоСкрипта.sbsl" - Файлы.Скопировать(временныйСкрипт, новоеИмя) + пер текущийСкрипт = ФайлТекущегоСкрипта() + Консоль.Записать("\т\т- текущий скрипт: %{текущийСкрипт.Путь}") - Консоль.Записать("\т- перезапуск обновления") - ВыполнитьСкрипт(новоеИмя, "update", []) - возврат + Консоль.Записать("\т\т- изменение версии скрипта \"%ВЕРСИЯ\" -> \"%версияНовогоСкрипта\"") + пер новоеИмяСкрипта = ПерезаписатьСкрипт(текущийСкрипт, новыйСкрипт) + + если новоеИмяСкрипта != Неопределено + Консоль.Записать("\т\т- перезапуск обновления") + ВыполнитьСкрипт(новоеИмяСкрипта, "update", []) + возврат + иначе + Консоль.Записать("\т\т- текущая версия исполнителя не позволяет перезаписать скрипт") ; - Консоль.Записать("\т- скрипт не требует обновления") + ; + Консоль.Записать("\т\т- скрипт не требует обновления") + + Консоль.Записать("\тVanessa Automation") + Консоль.Записать("\т\т- скачивание последней версии") + знч версияОбработки = СкачатьПоследнююВерсиюVanessaAutomation() + если версияОбработки == Неопределено + Консоль.Записать("\т\т- не удалось скачать обработку") + иначе + Консоль.Записать("\т\т- записана обработка версии %версияОбработки") + ; + + Консоль.Записать("\тШаблоны фич и шагов") + + Консоль.Записать("\т\т- скачивание шагов") + знч количествоШагов = СкачатьШаблоны("steps") + Консоль.Записать("\т\т- записано %количествоШагов") + + Консоль.Записать("\т\т- скачивание фич") + знч количествоФич = СкачатьШаблоны("templates") + Консоль.Записать("\т\т- записано %количествоФич") + + Консоль.Записать("Обновление завершено.") ; -метод СкачатьНовуюВерсиюСкрипта(): Файл +метод СкачатьШаблоны(имяПапки: Строка): Число + пер клиентHttp = КлиентHttp.СБазовымUrl("https://api.github.com/") + пер запросGet = клиентHttp.ЗапросGet("/repos/DoublesunRUS/devscripts/contents/VA-Тесты/%имяПапки") + исп ответHttp = запросGet.Выполнить() + + пер списокФайлов = СериализацияJson.ПрочитатьОбъект(ответHttp.Тело) как Массив + + знч пользовательскаяПапка = СредаИсполнения.ПолучитьСвойство("user.dir") + + клиентHttp = КлиентHttp.СБазовымUrl("https://raw.githubusercontent.com/") + пер папка = новый Файл("%пользовательскаяПапка/%имяПапки/") + если папка.ЯвляетсяКаталогом() + Файлы.Удалить(папка) + ; + для данныеФайла из списокФайлов + знч имя = данныеФайла.Получить("name") + знч путь = данныеФайла.Получить("path") + запросGet = клиентHttp.ЗапросGet("/DoublesunRUS/devscripts/master/%путь") + исп ответФайл = запросGet.Выполнить() + пер файл = Файлы.Создать("%пользовательскаяПапка/%имяПапки/%имя") + исп потокЗаписи = файл.ОткрытьПотокЗаписи() + ответФайл.Тело.КопироватьВ(потокЗаписи) + потокЗаписи.Закрыть() + ; + + возврат списокФайлов.Размер() +; + +метод СкачатьПоследнююВерсиюVanessaAutomation(): Строка? + пер клиентHttp = КлиентHttp.СБазовымUrl("https://github.com/") + пер запросGet = клиентHttp.ЗапросGet("/Pr-Mex/vanessa-automation/releases/latest") + .УстановитьМаксимумПеренаправлений(0) + исп ответHttp = запросGet.Выполнить() + знч новыйUrl = ответHttp.Заголовки.ПолучитьПервый("Location") + знч номерВерсии = новыйUrl.Подстрока(новыйUrl.НайтиСКонца("/") + 1) + + знч версияUrl = + "/Pr-Mex/vanessa-automation/releases/download/%номерВерсии/vanessa-automation-single.%номерВерсии.zip" + запросGet = клиентHttp.ЗапросGet(версияUrl) + исп ответФайл = запросGet.Выполнить() + + знч пользовательскаяПапка = СредаИсполнения.ПолучитьСвойство("user.dir") + пер обработка = новый Файл("%пользовательскаяПапка/vanessa-automation-single.epf") + исп потокЗаписи = обработка.ОткрытьПотокЗаписи() + + пер файлZip = новый ЧтениеZip(ответФайл.Тело) + если не файлZip.Следующий() + возврат Неопределено + ; + + исп потокОбработки = файлZip.ПолучитьПотокЭлемента() + потокОбработки.КопироватьВ(потокЗаписи) + + возврат номерВерсии +; + +метод ПерезаписатьСкрипт(текущийСкрипт: Файл, новыйСкрипт: Файл): Строка? + если не текущийСкрипт.Существует() + знч текстОшибки = "Файл со скриптом перестал существовать: %{текущийСкрипт.Путь}" + выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки) + ; + если текущийСкрипт.Каталог == Неопределено + возврат Неопределено // Обход ошибки Исполнителя + ; + + Файлы.Скопировать(новыйСкрипт, текущийСкрипт.Путь) + + возврат текущийСкрипт.Путь +; + +метод СкачатьПоследнююВерсиюСкрипта(): Файл пер клиентHttp = КлиентHttp.СБазовымUrl("https://raw.githubusercontent.com/") пер запросGet = клиентHttp.ЗапросGet("/DoublesunRUS/devscripts/master/VA-Тесты/АвтоТестыVA.sbsl") исп ответHttp = запросGet.Выполнить() @@ -76,8 +172,8 @@ иначе расширениеИсполнителя = "sh" ; - знч путьКИсполнителю = СредаИсполнения.ПолучитьСвойство("logback.configurationFile").Удалить("config" + Файлы - .СимволРазделителя + "logback.xml") + "bin/executor_j11." + расширениеИсполнителя + знч путьКИсполнителю = СредаИсполнения.ПолучитьСвойство("logback.configurationFile").Удалить("config" + Файлы.СимволРазделителя + + "logback.xml") + "bin/executor_j11." + расширениеИсполнителя пер аргументыПроцессаОс = ["-s", имяФайлаСкрипта, "-m", имяКомандыСкрипта] если не параметрыСкрипта.Пусто() @@ -181,8 +277,7 @@ пер ДелатьОтчетВФорматеjUnit: Булево = Истина пер ОтчетJUnit: VAParamsОтчетJUnit - конструктор(КаталогПроекта, КаталогФич, КаталогиБиблиотек, ВыполнениеСценариев, КлиентТестирования, ОтчетAllure, - ОтчетJUnit) + конструктор(КаталогПроекта, КаталогФич, КаталогиБиблиотек, ВыполнениеСценариев, КлиентТестирования, ОтчетAllure, ОтчетJUnit) ; структура VAParamsВыполнениеСценариев @@ -237,7 +332,8 @@ ; знч массивСтроки = строкаФайла.Разделить("\т", Истина) если массивСтроки.Размер() != 3 - выбросить новый ИсключениеИндексВнеГраниц("В каждой строке автофича файла должно быть 3 значения, разделенных табуляцией.") + выбросить новый ИсключениеИндексВнеГраниц( + "В каждой строке автофича файла должно быть 3 значения, разделенных табуляцией.") ; знч пользователиАвтофичи = массивСтроки[2].Разделить(",") @@ -251,7 +347,8 @@ возврат автофичи ; -метод СоздатьФайлыФичПоАвтофичам(путьФич: Строка, автофичи: Соответствие, пользователи: Массив, путьШаблонов: Строка, имяФайлаШаблонаШапки: Строка) +метод СоздатьФайлыФичПоАвтофичам(путьФич: Строка, автофичи: Соответствие, пользователи: Массив, путьШаблонов: Строка, + имяФайлаШаблонаШапки: Строка) если автофичи.Пусто() возврат ; @@ -318,8 +415,8 @@ .КаталогАвтофич}") ; - СоздатьФайлыФичПоАвтофичам(настройки.НастройкиVA.КаталогФич, автофичи, настройки.НастройкиАвтофич.Пользователи, настройки - .НастройкиАвтофич.КаталогШаблоновШагов, настройки.НастройкиАвтофич.ФайлШаблонаШапки) + СоздатьФайлыФичПоАвтофичам(настройки.НастройкиVA.КаталогФич, автофичи, настройки.НастройкиАвтофич.Пользователи, + настройки.НастройкиАвтофич.КаталогШаблоновШагов, настройки.НастройкиАвтофич.ФайлШаблонаШапки) ; метод RunTests(имяФайлаНастроек: Строка) @@ -341,7 +438,8 @@ пер временныеИБПользователей = новый Соответствие() для пользователь из настройки.НастройкиАвтофич.Пользователи знч временныйКаталогИБ = Файлы.СоздатьВременныйКаталог("Test1CD") - CreateInfobaseFromTemplate(настройки.НастройкиТестовойБазы.ПутьКDT, временныйКаталогИБ.Путь, исполняемыйФайлПлатформы) + CreateInfobaseFromTemplate(настройки.НастройкиТестовойБазы.ПутьКDT, временныйКаталогИБ.Путь, + исполняемыйФайлПлатформы) временныеИБПользователей.Вставить(пользователь.Представление, временныйКаталогИБ) ; @@ -362,18 +460,19 @@ пер настройкиVAParamsОтчетJUnit = новый VAParamsОтчетJUnit("%{настройки.НастройкиVA.КаталогОтчетов}/junit") пер настройкиVAParams = новый VAParams(настройки.НастройкиVA.КаталогПроекта, каталогФич, настройки.НастройкиVA - .КаталогиБиблиотек, настройкиVAParamsВыполнениеСценариев, настройкиVAParamsКлиентТестирования, - настройкиVAParamsОтчетAllure, настройкиVAParamsОтчетJUnit) + .КаталогиБиблиотек, настройкиVAParamsВыполнениеСценариев, настройкиVAParamsКлиентТестирования, настройкиVAParamsОтчетAllure, + настройкиVAParamsОтчетJUnit) знч временныйФайлНастроекVA = Файлы.СоздатьВременныйФайл("VAParams", ".json") исп потокНастроекVA = временныйФайлНастроекVA.ОткрытьПотокЗаписи() СериализацияJson.ЗаписатьОбъект(потокНастроекVA, настройкиVAParams) потокНастроекVA.Закрыть() - знч параметрыVA = "StartFeaturePlayer;DisableUserSettingsLoader;DisableLoadTestClientsTable;DisableLoadConfig;ClearStepsCache;VAParams=%временныйФайлНастроекVA" + знч параметрыVA = + "StartFeaturePlayer;DisableUserSettingsLoader;DisableLoadTestClientsTable;DisableLoadConfig;ClearStepsCache;VAParams=%временныйФайлНастроекVA" - пер командаПлатформы = ExecuteDataProcessorTestManager(настройки.НастройкиVA.ПутьVanessaAutomationSingle, - параметрыVA, временныйКаталогИБ.Путь, исполняемыйФайлПлатформы, настройки.НастройкиТестовойБазы + пер командаПлатформы = ExecuteDataProcessorTestManager(настройки.НастройкиVA.ПутьVanessaAutomationSingle, параметрыVA, + временныйКаталогИБ.Путь, исполняемыйФайлПлатформы, настройки.НастройкиТестовойБазы .ИмяПользователя, настройки.НастройкиТестовойБазы .ПарольПользователя) командыПлатформы.Добавить(командаПлатформы) @@ -399,11 +498,12 @@ исп потокФайлаНастроек = файлНастроек.ОткрытьПотокЧтения() пер настройкиJson = новый НастройкиЧтенияОбъектовJson() настройкиJson.ИгнорироватьНеизвестныеСвойства = Истина - пер настройки = СериализацияJson.ПрочитатьОбъект(потокФайлаНастроек, Тип(ОписаниеНастроек), настройкиJson) как ОписаниеНастроек + пер настройки = СериализацияJson.ПрочитатьОбъект(потокФайлаНастроек, Тип(ОписаниеНастроек), + настройкиJson) как ОписаниеНастроек пер пользователи = новый Массив() для пользователь из настройки.НастройкиАвтофич.Пользователи - знч описаниеПользователя = новый ОписаниеПользователя(пользователь["ПредставлениеПользователя"], пользователь["ИмяПользователя"], - пользователь["ПарольПользователя"]) + знч описаниеПользователя = новый ОписаниеПользователя(пользователь["ПредставлениеПользователя"], + пользователь["ИмяПользователя"], пользователь["ПарольПользователя"]) пользователи.Добавить(описаниеПользователя) ; настройки.НастройкиАвтофич.Пользователи = пользователи @@ -612,8 +712,8 @@ Консоль.Записать("ИБ успешно создана.") ; -метод ExecuteDataProcessorTestManager(имяВнешнейОбработки: Строка, вспомогательныеПараметры: Строка, путьКИБ: Строка, имяФайлаПлатформы: Строка, - имяПользователя: Строка = "", пароль: Строка = ""): ОписаниеКомандыПлатформы +метод ExecuteDataProcessorTestManager(имяВнешнейОбработки: Строка, вспомогательныеПараметры: Строка, путьКИБ: Строка, + имяФайлаПлатформы: Строка, имяПользователя: Строка = "", пароль: Строка = ""): ОписаниеКомандыПлатформы пер параметрыПроцесса = новый Массив() параметрыПроцесса.Добавить("ENTERPRISE") параметрыПроцесса.Добавить("/TestManager") @@ -641,8 +741,7 @@ возврат командаПлатформы ; -метод ВыполнитьКомандуПлатформы(имяКоманды: Строка, параметры: Массив, выводитьОшибки: Булево = - Истина): ОписаниеКомандыПлатформы +метод ВыполнитьКомандуПлатформы(имяКоманды: Строка, параметры: Массив, выводитьОшибки: Булево = Истина): ОписаниеКомандыПлатформы знч временныйФайлЛогов = Файлы.СоздатьВременныйФайл() параметры.Добавить("/Out") @@ -675,8 +774,8 @@ выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки) ; - текстОшибки += Строки.Шаблон("\в\нКоманда: $0\в\нПараметры: $1", [командаПлатформы.имяКоманды, Строки.Соединить(командаПлатформы - .параметры, " ")]) + текстОшибки += Строки.Шаблон("\в\нКоманда: $0\в\нПараметры: $1", [командаПлатформы.имяКоманды, Строки.Соединить( + командаПлатформы.параметры, " ")]) исп ошибкиВыполненияСкрипта = командаПлатформы.временныйФайлЛогов.ОткрытьПотокЧтения() текстОшибки += "\в\н" + ошибкиВыполненияСкрипта.ПрочитатьКакТекст(КодировкаПотокаВыводаПлатформы())