diff --git a/ci/os/internal/Classes/JenkinsTestsMethods.os b/ci/os/internal/Classes/JenkinsTestsMethods.os index f498b62e296..33174a7be4c 100644 --- a/ci/os/internal/Classes/JenkinsTestsMethods.os +++ b/ci/os/internal/Classes/JenkinsTestsMethods.os @@ -34,6 +34,7 @@ Перем ШаблонПайплайна; Перем ШаблонПапки; Перем ШаблонParallelWrapper; +Перем ШаблонParallelBatchWrapper; Перем ЛогинJenkins; Перем ТокенJenkins; Перем ХостJenkins; @@ -96,7 +97,8 @@ ПутьШаблонаВыполнения1cFatal = КаталогШаблоновJenkins + "test_exec_1c_fatal.txt"; ПутьШаблонаПайплайна = КаталогШаблоновJenkins + "conf_pipeline.txt"; ПутьШаблонаПапки = КаталогШаблоновJenkins + "conf_folder.txt"; - ПутьШаблонаParallelWrapper = КаталогШаблоновJenkins + "test_parallel_wrapper.txt"; + ПутьШаблонаParallelWrapper = КаталогШаблоновJenkins + "test_parallel_wrapper.txt"; + ПутьШаблонаParallelBatchWrapper = КаталогШаблоновJenkins + "test_parallel_batch_wrapper.txt"; ШаблонCliWindows = Новый ДвоичныеДанные(ПутьШаблонаCliWindows); ШаблонCliWindows = ПолучитьСтрокуИзДвоичныхДанных(ШаблонCliWindows); @@ -150,6 +152,9 @@ ШаблонParallelWrapper = Новый ДвоичныеДанные(ПутьШаблонаParallelWrapper); ШаблонParallelWrapper = ПолучитьСтрокуИзДвоичныхДанных(ШаблонParallelWrapper); + ШаблонParallelBatchWrapper = Новый ДвоичныеДанные(ПутьШаблонаParallelBatchWrapper); + ШаблонParallelBatchWrapper = ПолучитьСтрокуИзДвоичныхДанных(ШаблонParallelBatchWrapper); + СоздатьНачальнуюСтруктуруJenkins(); Для Каждого Язык Из Языки Цикл @@ -231,8 +236,8 @@ ТекстВыполненияCLI = ПолучитьТекстВыполненияOs(ТаблицаТестов, СписокБиблиотек, Язык, "OPItc_", ПараллельныйРежим); // 1C server IB: последовательно — параллельные сеансы упираются в лимит лицензий ТекстВыполнения1С = ПолучитьТекстВыполнения1c(ТаблицаТестов, СписокБиблиотек, Язык, Ложь); - // CF file IB: параллельно через ibsrv + 1cv8c /WS - ТекстВыполнения1Сf = ПолучитьТекстВыполнения1c(ТаблицаТестов, СписокБиблиотек, Язык, ПараллельныйРежим); + // CF file IB: параллельно через ibsrv + 1cv8c /WS, пакетами по 10 + ТекстВыполнения1Сf = ПолучитьТекстВыполнения1c(ТаблицаТестов, СписокБиблиотек, Язык, ПараллельныйРежим, 10); ТекстПараметров = ПолучитьТекстПараметров(СписокБиблиотек); ТекстJFCLI = СтрШаблон(ШаблонCliWindows, Язык, ТекстВыполненияCLI, КаталогOscript, Версия, ТекстПараметров); @@ -347,7 +352,7 @@ КонецФункции -Функция ПолучитьТекстВыполнения1c(Знач ТаблицаТестов, Знач СписокБиблиотек, Знач Язык, Знач ПараллельныйРежим = Ложь) +Функция ПолучитьТекстВыполнения1c(Знач ТаблицаТестов, Знач СписокБиблиотек, Знач Язык, Знач ПараллельныйРежим = Ложь, Знач РазмерПакета = 0) СтрокаРаздел = ДанныеПроекта.ПолучитьЗначениеНастройкиЛокализации("sectionsString", Язык); СтрокаМетод = ДанныеПроекта.ПолучитьЗначениеНастройкиЛокализации("methodString", Язык); @@ -398,11 +403,38 @@ КонецЦикла; - Возврат ОбъединитьШагиТестирования(ПоследовательныеШаги, ПараллельныеШаги, ПараллельныйРежим); + Возврат ОбъединитьШагиТестирования(ПоследовательныеШаги, ПараллельныеШаги, ПараллельныйРежим, РазмерПакета); КонецФункции -Функция ОбъединитьШагиТестирования(Знач ПоследовательныеШаги, Знач ПараллельныеШаги, Знач ПараллельныйРежим) +Функция СформироватьПараллельныеПакеты(Знач ПараллельныеШаги, Знач РазмерПакета) + + МассивПакетов = Новый Массив; + ТекущийПакет = Новый Массив; + НомерПакета = 0; + + Для Каждого Шаг Из ПараллельныеШаги Цикл + + ТекущийПакет.Добавить(Шаг); + + Если ТекущийПакет.Количество() = РазмерПакета Тогда + НомерПакета = НомерПакета + 1; + МассивПакетов.Добавить(СтрШаблон(ШаблонParallelBatchWrapper, НомерПакета, СтрСоединить(ТекущийПакет, Символы.ПС))); + ТекущийПакет = Новый Массив; + КонецЕсли; + + КонецЦикла; + + Если ТекущийПакет.Количество() > 0 Тогда + НомерПакета = НомерПакета + 1; + МассивПакетов.Добавить(СтрШаблон(ШаблонParallelBatchWrapper, НомерПакета, СтрСоединить(ТекущийПакет, Символы.ПС))); + КонецЕсли; + + Возврат СтрСоединить(МассивПакетов, Символы.ПС); + +КонецФункции + +Функция ОбъединитьШагиТестирования(Знач ПоследовательныеШаги, Знач ПараллельныеШаги, Знач ПараллельныйРежим, Знач РазмерПакета = 0) Текст = СтрСоединить(ПоследовательныеШаги, Символы.ПС); @@ -412,7 +444,13 @@ Текст = Текст + Символы.ПС; КонецЕсли; - Текст = Текст + СтрШаблон(ШаблонParallelWrapper, СтрСоединить(ПараллельныеШаги, Символы.ПС)); + Если РазмерПакета > 0 Тогда + ТекстПараллели = СформироватьПараллельныеПакеты(ПараллельныеШаги, РазмерПакета); + Иначе + ТекстПараллели = СтрШаблон(ШаблонParallelWrapper, СтрСоединить(ПараллельныеШаги, Символы.ПС)); + КонецЕсли; + + Текст = Текст + ТекстПараллели; ИначеЕсли ПараллельныеШаги.Количество() > 0 Тогда diff --git a/ci/pipelines/tests_full/1cf_test_en.jenkinsfile b/ci/pipelines/tests_full/1cf_test_en.jenkinsfile index f86353dfed6..5d3701f38e7 100644 --- a/ci/pipelines/tests_full/1cf_test_en.jenkinsfile +++ b/ci/pipelines/tests_full/1cf_test_en.jenkinsfile @@ -182,7 +182,7 @@ pipeline { } } } - stage('Testing') { + stage('Testing-1') { parallel { stage('Testing-Telegram') { when { @@ -314,6 +314,11 @@ pipeline { } } } + } + } + + stage('Testing-2') { + parallel { stage('Testing-MongoDB') { when { expression { return params['MongoDB'] } @@ -444,6 +449,11 @@ pipeline { } } } + } + } + + stage('Testing-3') { + parallel { stage('Testing-Dropbox') { when { expression { return params['Dropbox'] } @@ -574,6 +584,11 @@ pipeline { } } } + } + } + + stage('Testing-4') { + parallel { stage('Testing-GreenAPI') { when { expression { return params['GreenAPI'] } @@ -704,6 +719,11 @@ pipeline { } } } + } + } + + stage('Testing-5') { + parallel { stage('Testing-Janx') { when { expression { return params['Janx'] } diff --git a/ci/pipelines/tests_full/1cf_test_ru.jenkinsfile b/ci/pipelines/tests_full/1cf_test_ru.jenkinsfile index d90684bf63a..d342f9a8de4 100644 --- a/ci/pipelines/tests_full/1cf_test_ru.jenkinsfile +++ b/ci/pipelines/tests_full/1cf_test_ru.jenkinsfile @@ -182,7 +182,7 @@ pipeline { } } } - stage('Testing') { + stage('Testing-1') { parallel { stage('Testing-Telegram') { when { @@ -314,6 +314,11 @@ pipeline { } } } + } + } + + stage('Testing-2') { + parallel { stage('Testing-MongoDB') { when { expression { return params['MongoDB'] } @@ -444,6 +449,11 @@ pipeline { } } } + } + } + + stage('Testing-3') { + parallel { stage('Testing-Dropbox') { when { expression { return params['Dropbox'] } @@ -574,6 +584,11 @@ pipeline { } } } + } + } + + stage('Testing-4') { + parallel { stage('Testing-GreenAPI') { when { expression { return params['GreenAPI'] } @@ -704,6 +719,11 @@ pipeline { } } } + } + } + + stage('Testing-5') { + parallel { stage('Testing-Janx') { when { expression { return params['Janx'] } diff --git a/service/templates/jenkins/test_parallel_batch_wrapper.txt b/service/templates/jenkins/test_parallel_batch_wrapper.txt new file mode 100644 index 00000000000..b937de09645 --- /dev/null +++ b/service/templates/jenkins/test_parallel_batch_wrapper.txt @@ -0,0 +1,5 @@ + stage('Testing-%1') { + parallel { +%2 + } + }