Гость
Форумы / Программирование [игнор отключен] [закрыт для гостей] / CTEST: объединение тестов из разных директорий в единый маршрут? / 3 сообщений из 3, страница 1 из 1
01.02.2022, 01:17
    #40130904
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CTEST: объединение тестов из разных директорий в единый маршрут?
Допустим, у меня есть список директорий
DIR1, DIR2, DIR3, ...

Для каждой директории есть список ключей для CMAKE с которыми собираются тесты в этой директории. Наборов может быть несколько, допустим, DIR1_KEY1, DIR2_KEY1, DIR2_KEY2, DIR2_KEY3, DIR3_KEY1, DIR3_KEY2, ...

Сейчас процесс тестирования выглядит так: для каждого набора ключей создаем временную директорию (допустим, DIR1_KEY1_TMP), собираем в ней cmake.
Когда собрали все тесты, начинаем обходить эти директории и выполнять тесты.

Некоторые тесты выполняются быстро, некоторые долго.
Допустим, в директории 16 тестов которые исполняются за 1 секунду (в сумме это 1 секунда в 16 потоков) и еще один тест, который исполняется целый час (1 час на одном ядре и еще 15 ядер в простое: в сумме один час). В соседней директории сто тестов, которые выполняются за 15 часов (или за один час в 15 потоков).
В итоге сначала час занимает тестирование первой директории, а потом час второй. Хотя если все тесты слить в единый маршрут, в параллель они должны пройти за час. Все тесты между собой независимые, порядок не имеет значения.

Возможно ли объединить одним запуском CTEST тесты из всех директорий таким образом, чтобы не было простоев?
Сборка довольно нудный процесс через толстый автогенерируемый баш-скрипт, поэтому переделать его в один CMAKE КМК куда сложнее, чем запустить тесты...
...
Рейтинг: 0 / 0
01.02.2022, 07:55
    #40130926
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CTEST: объединение тестов из разных директорий в единый маршрут?
CMake - в топку.

Но в принципе, ты можешь из главного сценария запустить вспомогательную цель которая будет создавать еще один сценарий на основе переменных заданных в главном и тут-же подключать этот свеже-созданный в качестве дочернего.
...
Рейтинг: 0 / 0
01.02.2022, 15:29
    #40131037
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CTEST: объединение тестов из разных директорий в единый маршрут?
White Owl
CMake - в топку.

Но в принципе, ты можешь из главного сценария запустить вспомогательную цель которая будет создавать еще один сценарий на основе переменных заданных в главном и тут-же подключать этот свеже-созданный в качестве дочернего.
Та не... Переделывать с нуля не хотелось бы.

Сейчас этот большой баш-скрипт вызывает сотни cmake-сборок, каждая из которых делает свой список тестов. Потом начинается обход этих директорий и запуск на них тестов. Проблема во временных провалах, когда 1-2 ядра загружены длинными тестами, а остальные в простое, хотя могли бы молотить тесты из соседней директории.

Все это уже работает, только хотелось бы как-то ускорить =)
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / CTEST: объединение тестов из разных директорий в единый маршрут? / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]