|
CTEST: объединение тестов из разных директорий в единый маршрут?
|
|||
---|---|---|---|
#18+
Допустим, у меня есть список директорий 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 КМК куда сложнее, чем запустить тесты... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 01:17 |
|
CTEST: объединение тестов из разных директорий в единый маршрут?
|
|||
---|---|---|---|
#18+
CMake - в топку. Но в принципе, ты можешь из главного сценария запустить вспомогательную цель которая будет создавать еще один сценарий на основе переменных заданных в главном и тут-же подключать этот свеже-созданный в качестве дочернего. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 07:55 |
|
CTEST: объединение тестов из разных директорий в единый маршрут?
|
|||
---|---|---|---|
#18+
White Owl CMake - в топку. Но в принципе, ты можешь из главного сценария запустить вспомогательную цель которая будет создавать еще один сценарий на основе переменных заданных в главном и тут-же подключать этот свеже-созданный в качестве дочернего. Сейчас этот большой баш-скрипт вызывает сотни cmake-сборок, каждая из которых делает свой список тестов. Потом начинается обход этих директорий и запуск на них тестов. Проблема во временных провалах, когда 1-2 ядра загружены длинными тестами, а остальные в простое, хотя могли бы молотить тесты из соседней директории. Все это уже работает, только хотелось бы как-то ускорить =) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 15:29 |
|
|
start [/forum/topic.php?fid=16&fpage=1&tid=1339588]: |
0ms |
get settings: |
15ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
52ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
85ms |
get tp. blocked users: |
1ms |
others: | 6ms |
total: | 173ms |
0 / 0 |