ctest(1)
- Синопсис
- Описание
- Запуск тестов
- Просмотр справки
- Сопоставление меток
- Резюме меток и подпроектов
- Режим сборки и тестирования
- Показать как JSON-объектную модель
- См. также
Синопсис
Run Tests
ctest [<options>] [--test-dir <path-to-build>]
Build and Test Mode
ctest --build-and-test <path-to-source> <path-to-build>
--build-generator <generator> [<options>...]
[--build-options <opts>...]
[--test-command <command> [<args>...]]
Dashboard Client
ctest -D <dashboard> [-- <dashboard-options>...]
ctest -M <model> -T <action> [-- <dashboard-options>...]
ctest -S <script> [-- <dashboard-options>...]
ctest -SP <script> [-- <dashboard-options>...]
View Help
ctest --help[-<topic>] Описание
Исполняемый файл ctest — это программа-драйвер тестов CMake. Деревья сборки, сгенерированные CMake для проектов, использующих команды enable_testing() и add_test(), имеют поддержку тестирования. Эта программа запустит тесты и сообщит результаты.
Запуск тестов
-
--preset <preset>, --preset=<preset> -
Используйте предустановку тестов для указания параметров тестов. Директория двоичных файлов проекта определяется по ключу
configurePreset. Текущая рабочая директория должна содержать файлы предустановок CMake. Подробности см. вpreset.
-
--list-presets -
Отображает доступные предустановки тестов. Текущая рабочая директория должна содержать файлы предустановок CMake.
-
-C <cfg>, --build-config <cfg> -
Выберите конфигурацию для тестирования.
Некоторые сгенерированные CMake деревья сборки могут иметь несколько конфигураций сборки в одном дереве. Этот параметр позволяет указать, какая из них должна быть протестирована. Примеры конфигураций —
DebugиRelease.
-
--progress -
Включить краткий вывод о ходе выполнения тестов.
Когда вывод ctest направляется непосредственно в терминал, ход выполнения набора тестов отображается обновлением той же строки, а не выводом сообщений о начале и завершении каждого теста в новых строках. Это может значительно уменьшить объем вывода при тестировании. Сообщения о завершении теста по-прежнему выводятся в отдельной строке для неудачных тестов, а окончательный сводный отчет также будет записан.
Этот параметр также можно включить, установив переменную среды
CTEST_PROGRESS_OUTPUT.
-
-V, --verbose -
Включить подробный вывод тестов.
Вывод тестов обычно подавляется, и отображается только сводная информация. Этот параметр покажет весь вывод тестов.
-
-VV, --extra-verbose -
Включить более подробный вывод тестов.
Вывод тестов обычно подавляется, и отображается только сводная информация. Этот параметр покажет ещё больший объём вывода тестов.
-
--debug -
Отображение более подробной внутренней информации CTest.
Эта функция приведет к большому количеству вывода, который в основном полезен для отладки проблем с панелью управления.
-
--output-on-failure -
Вывод всего, что выводит программа теста, если тест должен завершиться неудачей. Этот параметр также можно включить, установив переменную среды
CTEST_OUTPUT_ON_FAILURE
-
--stop-on-failure -
Остановить выполнение тестов при первом сбое.
-
-F -
Включить переключение.
Этот параметр позволяет CTest возобновить выполнение набора тестов, который был ранее прерван. Если прерывания не было, параметр
-Fне окажет никакого влияния.
-
-j <jobs>, --parallel <jobs> -
Выполнять тесты параллельно с использованием указанного количества задач.
Этот параметр сообщает CTest выполнить тесты параллельно с использованием заданного количества задач. Этот параметр также можно установить, установив переменную среды
CTEST_PARALLEL_LEVEL.Этот параметр можно использовать со свойством теста
PROCESSORS.
-
--resource-spec-file <file> -
Запустить CTest с включенным распределением ресурсов, используя указанный в
<file>файл спецификации ресурсов.Когда ctest запускается как клиент панели управления, это устанавливает параметр
ResourceSpecFileшага CTest Test.
-
--test-load <level> -
При одновременном выполнении тестов (например, с помощью
-j) стараться не запускать тесты, которые могут вызвать превышение заданного порога нагрузки процессора.Когда ctest запускается как клиент панели управления, это устанавливает параметр
TestLoadшага CTest Test.
-
-Q, --quiet -
Сделать CTest тихим.
Этот параметр подавит весь вывод. Файл журнала вывода по-прежнему будет создан, если указан параметр
--output-log. Параметры, такие как--verbose,--extra-verboseи--debug, игнорируются, если указан--quiet.
-
-O <file>, --output-log <file> -
Вывод в файл журнала.
Этот параметр сообщает CTest записывать весь вывод в
<file>файл журнала.
-
--output-junit <file> -
Новый в версии 3.21.
Запись результатов тестов в формате JUnit.
Этот параметр сообщает CTest записывать результаты тестов в
<file>в формате XML JUnit. Если<file>уже существует, он будет перезаписан. При использовании параметра-Sдля запуска скрипта панели управления используйте ключевое словоOUTPUT_JUNITс командойctest_test().
-
-N, --show-only[=<format>] -
Отключить фактическое выполнение тестов.
Этот параметр указывает CTest на вывод списка тестов, которые должны быть запущены, но не запускать их. Полезно в сочетании с параметрами
-Rи-E.Добавлена в версии 3.14: Параметр
--show-onlyпринимает значение<format>.<format>может принимать следующие значения.-
human -
Выходные данные для удобства восприятия. Не гарантируется стабильность. По умолчанию.
-
json-v1 -
Вывести информацию о тестах в формате JSON. См. Представление в формате JSON.
-
-
-L <regex>, --label-regex <regex> -
Запускать тесты с метками, соответствующими регулярному выражению, как описано в строке(REGEX).
Этот параметр указывает CTest на запуск только тех тестов, метки которых соответствуют заданному регулярному выражению. При использовании нескольких параметров
-L, тест будет запущен только в том случае, если каждое регулярное выражение соответствует хотя бы одной метке теста (т. е. несколько меток-Lобразуют отношениеAND). См. Сопоставление меток.
-
-R <regex>, --tests-regex <regex> -
Запускать тесты, соответствующие регулярному выражению.
Этот параметр указывает CTest на запуск только тех тестов, имена которых соответствуют заданному регулярному выражению.
-
-E <regex>, --exclude-regex <regex> -
Исключить тесты, соответствующие регулярному выражению.
Этот параметр указывает CTest на НЕ запуск тестов, имена которых соответствуют заданному регулярному выражению.
-
-LE <regex>, --label-exclude <regex> -
Исключить тесты с метками, соответствующими регулярному выражению.
Этот параметр указывает CTest на НЕ запуск тестов, метки которых соответствуют заданному регулярному выражению. При использовании нескольких параметров
-LE, тест будет исключен только в том случае, если каждое регулярное выражение соответствует хотя бы одной метке теста (т. е. несколько меток-LEобразуют отношениеAND). См. Сопоставление меток.
-
-FA <regex>, --fixture-exclude-any <regex> -
Исключить фикстуры, соответствующие
<regex>, из автоматического добавления тестов в набор тестов.Если тест в наборе выполняемых тестов требует конкретной фикстуры, настройки и завершающие тесты фикстуры обычно добавляются в набор тестов автоматически. Этот параметр предотвращает добавление настроек или завершающих тестов для фикстур, соответствующих
<regex>. Обратите внимание, что все другие функции фикстур сохраняются, включая зависимости тестов и пропуск тестов, которые имеют тесты настройки фикстуры, которые завершились ошибкой.
-
-FS <regex>, --fixture-exclude-setup <regex> -
То же, что и
-FA, но исключаются только соответствующие тесты настройки.
-
-FC <regex>, --fixture-exclude-cleanup <regex> -
То же, что и
-FA, но исключаются только соответствующие тесты завершения.
-
-I [Start,End,Stride,test#,test#|Test file], --tests-information -
Запустить определенное количество тестов по номеру.
Этот параметр заставляет CTest запускать тесты, начиная с номера
Start, заканчивая номеромEnd, и увеличивая наStride. Любые дополнительные номера послеStrideсчитаются отдельными номерами тестов.Start,End, илиStrideмогут быть пустыми. Дополнительно можно указать файл, содержащий тот же синтаксис, что и в командной строке.
-
-U, --union -
При указании параметров
-Rи-Iпо умолчанию запускается пересечение тестов. Указанием-Uзапускается объединение тестов вместо этого.
-
--rerun-failed -
Запустить только тесты, которые завершились ошибкой ранее.
Этот параметр указывает CTest на выполнение только тех тестов, которые завершились ошибкой во время предыдущего запуска. При указании этого параметра CTest игнорирует все другие параметры, предназначенные для изменения списка запускаемых тестов (
-L,-R,-E,-LE,-Iи т. д.). В случае, если CTest выполняется и ни один тест не завершился ошибкой, последующие вызовы CTest с параметром--rerun-failedбудут запускать набор тестов, который последний раз завершился ошибкой (если таковой есть).
-
--repeat <mode>:<n> -
Повторять тесты в соответствии с заданными
<mode>до<n>раз. Режимы:-
until-fail -
Требуется, чтобы каждый тест выполнялся
<n>раз без ошибок, чтобы пройти. Это полезно для поиска спорадических ошибок в тестовых случаях. -
until-pass -
Разрешить каждому тесту выполняться до
<n>раз, чтобы пройти. Повторяет тесты, если они завершаются ошибкой по любой причине. Это полезно для переносимости спорадических ошибок в тестовых случаях. -
after-timeout -
Разрешить каждому тесту выполняться до
<n>раз, чтобы пройти. Повторяет тесты только в случае таймаута. Это полезно для переносимости спорадических таймаутов в тестовых случаях на загруженных машинах.
-
-
--repeat-until-fail <n> -
Эквивалентно
--repeat until-fail:<n>.
-
--max-width <width> -
Установить максимальную ширину для имени теста для вывода.
Установить максимальную ширину для каждого имени теста, отображаемого в выводе. Это позволяет пользователю расширить вывод, чтобы избежать обрезки имени теста, что может быть очень раздражающим.
-
--interactive-debug-mode [0|1] -
Установить интерактивный режим на
0или1.Этот параметр заставляет CTest запускать тесты в интерактивном или неинтерактивном режиме. В режиме панели мониторинга (
Experimental,Nightly,Continuous) по умолчанию используется неинтерактивный режим. В неинтерактивном режиме переменная средыDASHBOARD_TEST_FROM_CTESTустанавливается.До CMake 3.11 интерактивный режим в Windows позволял отображать системные всплывающие окна отладки. Теперь, из-за использования CTest
libuvдля запуска процессов тестирования, все системные всплывающие окна отладки всегда блокируются.
-
--no-label-summary -
Отключить сводку по времени для меток.
Этот параметр указывает CTest не печатать сводку по времени для каждой метки, связанной с запущенными тестами. Если на тестах нет меток, дополнительного вывода не будет.
-
--no-subproject-summary -
Отключить сводку по времени для подпроектов.
Этот параметр указывает CTest не печатать сводку по времени для каждого подпроекта, связанного с запущенными тестами. Если на тестах нет подпроектов, дополнительного вывода не будет.
-
--test-dir <dir> -
Указать каталог, в котором следует искать тесты, обычно каталог построения проекта CMake. Если не указано, используется текущий каталог.
-
--test-output-size-passed <size> -
Добавлена в версии 3.4.
Ограничить вывод для пройденных тестов до
<size>байт.
-
--test-output-size-failed <size> -
Добавлена в версии 3.4.
Ограничить вывод для завершившихся ошибкой тестов до
<size>байт.
-
--test-output-truncation <mode> -
Добавлена в версии 3.24.
Обрезать
tail(по умолчанию),middleилиheadвывода теста после достижения максимального размера вывода.
-
--overwrite -
Перезаписать опцию конфигурации CTest.
По умолчанию CTest использует параметры конфигурации из файла конфигурации. Этот параметр перепишет параметр конфигурации.
-
--force-new-ctest-process -
Запустить дочерние экземпляры CTest в новых процессах.
По умолчанию CTest запустит дочерние экземпляры CTest в рамках одного процесса. Если это поведение нежелательно, этот аргумент принудительно запустит новые процессы для дочерних процессов CTest.
-
--schedule-random -
Использовать случайный порядок для планирования тестов.
Этот параметр запустит тесты в случайном порядке. Он обычно используется для обнаружения неявных зависимостей в наборе тестов.
-
--submit-index -
Устаревший параметр для старой функции сервера панели управления Dart2. Не использовать.
-
--timeout <seconds> -
Установить время ожидания по умолчанию для тестов.
Этот параметр устанавливает время ожидания для всех тестов, которые еще не имеют времени ожидания, установленного через свойство
TIMEOUT.
-
--stop-time <time> -
Установить время, по которому все тесты должны быть остановлены.
Установите фактическое время суток, по которому все тесты должны завершиться по таймауту. Пример:
7:00:00 -0400. Принимается любой формат времени, распознаваемый парсером даты curl. Локальное время предполагается, если часовой пояс не указан.
-
--print-labels -
Вывести все доступные метки тестов.
Этот параметр не выполнит никаких тестов, он просто выведет список всех меток, связанных с набором тестов.
-
--no-tests=<action> -
Рассматривать отсутствие тестов либо как ошибку (когда
<action>установлено вerror) либо игнорировать (когда<action>установлено вignore).Если тесты не найдены, поведение CTest по умолчанию всегда регистрирует сообщение об ошибке, но возвращает код ошибки только в режиме сценария. Этот параметр унифицирует поведение CTest, возвращая код ошибки, если тесты не найдены, или игнорируя это.
Новое в версии 3.26.
Этот параметр также может быть установлен, установив переменную окружения
CTEST_NO_TESTS_ACTION.
View Help
Чтобы вывести информацию о версии или выбранные страницы из документации CMake, используйте один из следующих параметров:
-
-version [<file>], --version [<file>], /V [<file>] -
Показать заголовок программы/версии и выйти. Вывод выводится в указанный
<file>файл, если задан.
-
-h, -H, --help, -help, -usage, /? -
Вывести информацию о использовании и выйти.
Информация о использовании описывает базовый интерфейс командной строки и его параметры.
-
--help-full [<file>] -
Вывести все руководства справки и выйти.
Все руководства выводятся в удобочитаемом текстовом формате. Вывод выводится в указанный
<file>файл, если задан.
-
--help-manual <man> [<file>] -
Вывести одно руководство справки и выйти.
Указанное руководство выводится в удобочитаемом текстовом формате. Вывод выводится в указанный
<file>файл, если задан.
-
--help-manual-list [<file>] -
Вывести список доступных руководств справки и выйти.
Список содержит все руководства, для которых справка может быть получена с помощью параметра
--help-manualи названия руководства. Вывод выводится в указанный<file>файл, если задан.
-
--help-command <cmd> [<file>] -
Вывести справку по одной команде и выйти.
Запись справки
cmake-commands(7)для<cmd>выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-command-list [<file>] -
Вывести список команд со справочной информацией и выйти.
Список содержит все команды, для которых справка может быть получена с помощью параметра
--help-commandи имени команды. Вывод выводится в указанный<file>файл, если задан.
-
--help-commands [<file>] -
Вывести руководство cmake-commands и выйти.
Руководство
cmake-commands(7)выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-module <mod> [<file>] -
Вывести справку по одному модулю и выйти.
Запись справки
cmake-modules(7)для<mod>выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-module-list [<file>] -
Вывести список модулей со справочной информацией и выйти.
Список содержит все модули, для которых справка может быть получена с помощью параметра
--help-moduleи имени модуля. Вывод выводится в указанный<file>файл, если задан.
-
--help-modules [<file>] -
Вывести руководство cmake-modules и выйти.
Руководство
cmake-modules(7)выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-policy <cmp> [<file>] -
Вывести справку по одному политике и выйти.
Запись справки
cmake-policies(7)для<cmp>выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-policy-list [<file>] -
Вывести список политик со справочной информацией и выйти.
Список содержит все политики, для которых справка может быть получена с помощью параметра
--help-policyи имени политики. Вывод выводится в указанный<file>файл, если задан.
-
--help-policies [<file>] -
Вывести руководство cmake-policies и выйти.
Руководство
cmake-policies(7)выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-property <prop> [<file>] -
Вывести справку по одному свойству и выйти.
Записи справки
cmake-properties(7)для<prop>выводятся в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-property-list [<file>] -
Вывести список свойств со справочной информацией и выйти.
Список содержит все свойства, для которых справка может быть получена с помощью параметра
--help-propertyи имени свойства. Вывод выводится в указанный<file>файл, если задан.
-
--help-properties [<file>] -
Вывести руководство cmake-properties и выйти.
Руководство
cmake-properties(7)выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-variable <var> [<file>] -
Вывести справку по одной переменной и выйти.
Запись справки
cmake-variables(7)для<var>выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
-
--help-variable-list [<file>] -
Вывести список переменных со справочной информацией и выйти.
Список содержит все переменные, для которых справка может быть получена с помощью параметра
--help-variableи имени переменной. Вывод выводится в указанный<file>файл, если задан.
-
--help-variables [<file>] -
Вывести руководство cmake-variables и выйти.
Руководство
cmake-variables(7)выводится в удобочитаемом текстовом формате. Вывод выводится в указанный<file>файл, если задан.
Сопоставление меток
К тестам могут быть прикреплены метки. Тесты могут быть включены или исключены из выполнения теста путем фильтрации по меткам. Каждый отдельный фильтр — это регулярное выражение, применяемое к меткам, прикрепленным к тесту.
При использовании -L, для того чтобы тест был включен в выполнение теста, каждое регулярное выражение должно соответствовать хотя бы одной метке. Использование более одного параметра -L означает «соответствие всем этим».
Параметр -LE работает так же, как -L, но исключает тесты, а не включает их. Тест исключается, если каждое регулярное выражение соответствует хотя бы одной метке.
Если к тесту нет прикрепленных меток, то -L никогда не включит этот тест, и -LE никогда не исключит этот тест. В качестве примера тестов с метками рассмотрим пять тестов с следующими метками:
- test1 имеет метки tuesday и production
- test2 имеет метки tuesday и test
- test3 имеет метки wednesday и production
- test4 имеет метку wednesday
- test5 имеет метки friday и test
Запуск ctest с -L tuesday -L test выберет test2, у которого есть обе метки. Запуск CTest с -L test выберет test2 и test5, потому что у обоих есть метка, соответствующая этому регулярному выражению.
Поскольку соответствие работает с регулярными выражениями, обратите внимание, что запуск CTest с -L es будет соответствовать всем пяти тестам. Для выбора тестов tuesday и wednesday вместе используйте одно регулярное выражение, которое соответствует любому из них, например -L "tue|wed".
Краткое описание меток и подпроектов
CTest выводит сводку временных данных для каждого LABEL и подпроекта, связанных с запущенными тестами. Сводка по меткам не будет включать метки, сопоставленные с подпроектами.
Новое в версии 3.22: Динамически добавленные метки во время выполнения теста также будут отображаться в сводке по времени. См. Дополнительные метки.
Когда свойство теста PROCESSORS установлено, CTest отобразит взвешенное время выполнения теста в сводках по меткам и подпроектам. Время отображается с sec*proc вместо только sec.
Взвешенная сводка по времени, отчётная для каждой метки или подпроекта j вычисляется следующим образом:
Weighted Time Summary for Label/Subproject j =
sum(raw_test_time[j,i] * num_processors[j,i], i=1...num_tests[j])
for labels/subprojects j=1...total
где:
-
raw_test_time[j,i]: Время реального выполнения тестаiдля метки или подпроектаj -
num_processors[j,i]: Значение свойства CTestPROCESSORSдля тестаiдля метки или подпроектаj -
num_tests[j]: Количество тестов, связанных с меткой или подпроектомj -
total: Общее количество меток или подпроектов, у которых выполняется как минимум один тест
Следовательно, взвешенная сводка по времени для каждой метки или подпроекта представляет собой время, затраченное CTest на выполнение тестов для каждой метки или подпроекта, и дает хорошее представление о суммарных затратах на тесты для каждой метки или подпроекта по сравнению с другими метками или подпроектами.
Например, если SubprojectA показал 100 sec*proc и SubprojectB показал 10 sec*proc, то CTest выделил примерно в 10 раз больше времени CPU/ядра на выполнение тестов для SubprojectA по сравнению с SubprojectB (например, если будут затрачены усилия для снижения стоимости набора тестов для всего проекта, то снижение стоимости набора тестов для SubprojectA скорее всего окажет большее влияние, чем усилия по снижению стоимости набора тестов для SubprojectB).
Режим сборки и тестирования
CTest предоставляет командную строку для конфигурирования (т.е. запуска cmake), сборки и/или выполнения теста:
ctest --build-and-test <path-to-source> <path-to-build>
--build-generator <generator>
[<options>...]
[--build-options <opts>...]
[--test-command <command> [<args>...]]
Шаги конфигурации и тестирования необязательны. Аргументы этой командной строки — это каталоги исходных файлов и бинарных файлов. Параметр --build-generator обязателен для использования --build-and-test. Если указан --test-command, он будет запущен после завершения сборки. Другие параметры, влияющие на этот режим, включают:
-
--build-and-test -
Переключение в режим сборки и тестирования.
-
--build-target -
Указывает конкретную цель для сборки. Параметр можно указать несколько раз с различными целями, в этом случае каждая цель собирается по очереди. Очистка будет выполнена перед сборкой каждой цели, если не задан параметр
--build-noclean.Если цель
--build-targetне указана, собирается цельall.
-
--build-nocmake -
Выполнение сборки без предварительного запуска cmake.
Пропуск шага cmake.
-
--build-run-dir -
Указывает каталог для запуска программ.
Каталог, в котором будут программы после компиляции.
-
--build-two-config -
Запуск CMake дважды.
-
--build-exe-dir -
Указывает каталог для исполняемого файла.
-
--build-generator -
Указывает используемый генератор. См. руководство
cmake-generators(7).
-
--build-generator-platform -
Указывает платформу, специфичную для генератора.
-
--build-generator-toolset -
Указывает набор инструментов, специфичный для генератора.
-
--build-project -
Указывает имя проекта для сборки.
-
--build-makeprogram -
Указывает явную программу make, используемую CMake для конфигурации и сборки проекта. Применимо только для генераторов на основе Make и Ninja.
-
--build-noclean -
Пропустить шаг очистки make.
-
--build-config-sample -
Пример исполняемого файла для определения конфигурации, которая должна быть использована. Например,
Debug,Releaseи т. д.
-
--build-options -
Дополнительные параметры для настройки сборки (т.е. для CMake, а не для инструмента сборки). Обратите внимание, что если это указано, то ключевое слово
--build-optionsи его аргументы должны быть последним параметром, указанным в командной строке, за исключением возможного исключения--test-command.
-
--test-command -
Команда для выполнения шага тестирования с параметром
--build-and-test. Все аргументы, следующие за этим ключевым словом, будут считаться частью командной строки для теста, поэтому это должен быть последний указанный параметр.
-
--test-timeout -
Предельное время в секундах
Клиент панели мониторинга
CTest может работать как клиент приложения панели мониторинга качества ПО CDash. В качестве клиента панели мониторинга CTest выполняет последовательность шагов для конфигурирования, сборки и тестирования программного обеспечения, а затем отправляет результаты на сервер CDash. Командная строка для отправки в CDash:
ctest -D <dashboard> [-- <dashboard-options>...] ctest -M <model> -T <action> [-- <dashboard-options>...] ctest -S <script> [-- <dashboard-options>...] ctest -SP <script> [-- <dashboard-options>...]
Параметры для клиента панели мониторинга включают:
-
-D <dashboard>, --dashboard <dashboard> -
Выполнение теста панели мониторинга.
Этот параметр сообщает CTest работать как клиенту CDash и выполнить тест панели мониторинга. Все тесты
<Mode><Test>, где<Mode>может бытьExperimental,Nightly, иContinuous, а<Test>может бытьStart,Update,Configure,Build,Test,Coverage, иSubmit.Если
<dashboard>не является одним из распознанных значений<Mode><Test>, это будет рассматриваться как определение переменной (см. dashboard-options ниже).
-
-M <model>, --test-model <model> -
Устанавливает модель для панели мониторинга.
Этот параметр сообщает CTest работать как клиенту CDash, где
<model>может бытьExperimental,Nightly, иContinuous. Объединение-Mи-Tаналогично-D.
-
-T <action>, --test-action <action> -
Устанавливает действие панели мониторинга для выполнения.
Этот параметр сообщает CTest работать как клиенту CDash и выполнить какое-либо действие, такое как
start,build,testи т.д. См. Шаги клиента панели мониторинга для получения полного списка действий. Объединение-Mи-Tаналогично-D.
-
-S <script>, --script <script> -
Выполнение панели мониторинга для конфигурации.
Этот параметр сообщает CTest загрузить скрипт конфигурации, который устанавливает ряд параметров, таких как каталоги бинарных файлов и исходных файлов. Затем CTest выполнит необходимые действия для создания и запуска панели мониторинга. Этот параметр по сути настраивает панель мониторинга и затем запускает
ctest -Dс соответствующими параметрами.
-
-SP <script>, --script-new-process <script> -
Выполнить панель управления для конфигурации.
Этот параметр выполняет те же операции, что и
-S, но выполняет их в отдельном процессе. Это полезно в случаях, когда сценарий может изменить среду, и вы не хотите, чтобы изменённая среда влияла на другие-Sсценарии.
Доступные <dashboard-options> следующие:
-
-D <var>:<type>=<value> -
Определить переменную для режима сценария.
Передать значения переменных в командной строке. Используйте вместе с
-Sдля передачи значений переменных в скрипт панели управления. Разбор-Dаргументов в качестве значений переменных выполняется только в том случае, если значение, следующее за-D, не соответствует ни одному из известных типов панелей управления.
-
--group <group> -
Указать, в какую группу вы хотите отправить результаты
Отправить панель управления в указанную группу вместо стандартной. По умолчанию панель управления отправляется в группы Nightly, Experimental или Continuous, но с помощью этого параметра группа может быть произвольной.
Заменяет устаревший параметр
--track. Несмотря на смену имени, его поведение не изменилось.
-
-A <file>, --add-notes <file> -
Добавить файл заметок при отправке.
Этот параметр сообщает CTest о включении файла заметок при отправке панели управления.
-
--tomorrow-tag -
NightlyилиExperimentalначинается с тега следующего дня.Это полезно, если сборка не завершится за один день.
-
--extra-submit <file>[;<file>] -
Отправить дополнительные файлы на панель управления.
Этот параметр отправит дополнительные файлы на панель управления.
-
--http1.0 -
Отправить используя
HTTP 1.0.Этот параметр заставит CTest использовать
HTTP 1.0для отправки файлов на панель управления вместоHTTP 1.1.
-
--no-compress-output -
Не сжимать выходные данные тестов при отправке.
Этот флаг отключит автоматическое сжатие выходных данных тестов. Используйте его для сохранения совместимости со старой версией CDash, которая не поддерживает сжатые выходные данные тестов.
Шаги клиента панели управления
CTest определяет упорядоченный список шагов тестирования, некоторые или все из которых могут быть выполнены в качестве клиента панели управления:
-
Start -
Начать новую отправку на панель управления, которая будет состоять из результатов, записанных следующими шагами. См. раздел Шаг запуска CTest ниже.
-
Update -
Обновить дерево исходного кода из его репозитория управления версиями. Записать старые и новые версии, а также список обновленных файлов исходного кода. См. раздел Шаг обновления CTest ниже.
-
Configure -
Настроить программное обеспечение, выполнив команду в дереве сборки. Записать журнал вывода конфигурации. См. раздел Шаг конфигурации CTest ниже.
-
Build -
Собрать программное обеспечение, выполнив команду в дереве сборки. Записать журнал вывода сборки и обнаружить предупреждения и ошибки. См. раздел Шаг сборки CTest ниже.
-
Test -
Протестировать программное обеспечение, загрузив
CTestTestfile.cmakeиз дерева сборки и выполнив определенные тесты. Записать вывод и результат каждого теста. См. раздел Шаг тестирования CTest ниже. -
Coverage -
Вычислить покрытие исходного кода, запустив инструмент анализа покрытия и записав его вывод. См. раздел Шаг покрытия CTest ниже.
-
MemCheck -
Запустить набор тестов программного обеспечения с помощью инструмента проверки памяти. Записать выходные данные тестов, результаты и проблемы, сообщенные инструментом. См. раздел Шаг проверки памяти CTest ниже.
-
Submit -
Отправить результаты, записанные другими шагами тестирования, на сервер панели управления качеством программного обеспечения. См. раздел Шаг отправки CTest ниже.
Режимы работы клиента панели управления
CTest определяет три режима работы в качестве клиента панели управления:
-
Nightly -
Этот режим предназначен для вызова один раз в день, обычно ночью. Он по умолчанию включает шаги
Start,Update,Configure,Build,Test,Coverage, иSubmit. Выбранные шаги выполняются даже если шагUpdateне сообщает о изменениях в дереве исходного кода. -
Continuous -
Этот режим предназначен для многократного вызова в течение дня. Он по умолчанию включает шаги
Start,Update,Configure,Build,Test,Coverage, иSubmit, но завершается после шагаUpdateесли он не сообщает о изменениях в дереве исходного кода. -
Experimental -
Этот режим предназначен для вызова разработчиком для тестирования локальных изменений. Он по умолчанию включает шаги
Start,Configure,Build,Test,Coverage, иSubmit.
Клиент панели управления через командную строку CTest
CTest может проводить тестирование на уже сгенерированном дереве сборки. Запустите команду ctest с текущей рабочей директорией, установленной в дереве сборки, и используйте одну из этих подписей:
ctest -D <mode>[<step>] ctest -M <mode> [-T <step>]...
<mode> должен быть одним из вышеуказанных Режим работы клиента панели управления, а каждый <step> должен быть одним из вышеуказанных Шаги клиента панели управления.
CTest считывает настройки Настройки конфигурации клиента панели управления из файла в дереве сборки, который называется либо CTestConfiguration.ini, либо DartConfiguration.tcl (имена являются историческими). Формат файла:
# Lines starting in '#' are comments. # Other non-blank lines are key-value pairs. <setting>: <value>
где <setting> — имя настройки, а <value> — значение настройки.
В деревьях сборки, сгенерированных CMake, этот конфигурационный файл генерируется модулем CTest, если он включен проектом. Модуль использует переменные для получения значения каждой настройки, как документировано ниже.
Клиент панели управления через скрипт CTest
CTest может проводить тестирование, управляемое скриптом cmake-language(7), который создает и поддерживает дерево исходного кода и сборки, а также выполняет шаги тестирования. Запустите команду ctest с текущей рабочей директорией, установленной вне любого дерева сборки, и используйте одну из этих подписей:
ctest -S <script> ctest -SP <script>
Файл <script> должен вызывать команды Команды CTest для явного выполнения шагов тестирования, как документировано ниже. Команды получают настройки Настройки конфигурации клиента панели управления из своих аргументов или из переменных, установленных в скрипте.
Настройки конфигурации клиента панели управления
Шаги Шаги клиента панели управления могут быть настроены с помощью именованных настроек, как описано в следующих разделах.
Шаг запуска CTest
Начать новую отправку на панель управления, которая будет состоять из результатов, записанных следующими шагами.
В скрипте CTest Script команда ctest_start() выполняет этот шаг. Аргументы команды могут указывать некоторые настройки шага. Сначала команда выполняет указанную в командной строке команду переменной CTEST_CHECKOUT_COMMAND, если она установлена, чтобы инициализировать директорию исходного кода.
Настройки конфигурации включают:
-
BuildDirectory -
Полный путь к дереву сборки проекта.
-
Переменная CTest Script:
CTEST_BINARY_DIRECTORY -
Переменная модуля
CTest:PROJECT_BINARY_DIR
-
Переменная CTest Script:
-
SourceDirectory -
Полный путь к дереву исходного кода проекта.
-
Переменная CTest Script:
CTEST_SOURCE_DIRECTORY -
Переменная модуля
CTest:PROJECT_SOURCE_DIR
-
Переменная CTest Script:
Шаг обновления CTest
В скрипте CTest Script команда ctest_update() выполняет этот шаг. Аргументы команды могут указывать некоторые настройки шага.
Настройки конфигурации для указания инструмента управления версиями включают:
-
BZRCommand -
bzrутилита командной строки, используемая, если исходное дерево управляется Bazaar.-
Скрипт CTest переменная:
CTEST_BZR_COMMAND -
CTestпеременная модуля: нет
-
Скрипт CTest переменная:
-
BZRUpdateOptions -
Опции командной строки для
BZRCommandпри обновлении исходного кода.-
Скрипт CTest переменная:
CTEST_BZR_UPDATE_OPTIONS -
CTestпеременная модуля: нет
-
Скрипт CTest переменная:
-
CVSCommand -
cvsутилита командной строки, используемая, если исходное дерево управляется CVS.-
Скрипт CTest переменная:
CTEST_CVS_COMMAND -
CTestпеременная модуля:CVSCOMMAND
-
Скрипт CTest переменная:
-
CVSUpdateOptions -
Опции командной строки для
CVSCommandпри обновлении исходного кода.-
Скрипт CTest переменная:
CTEST_CVS_UPDATE_OPTIONS -
CTestпеременная модуля:CVS_UPDATE_OPTIONS
-
Скрипт CTest переменная:
-
GITCommand -
gitутилита командной строки, используемая, если исходное дерево управляется Git.-
Скрипт CTest переменная:
CTEST_GIT_COMMAND -
CTestпеременная модуля:GITCOMMAND
Исходное дерево обновляется с помощью
git fetch, за которым следуетgit reset --hardвFETCH_HEAD. Результат аналогиченgit pull, за исключением того, что любые локальные изменения перезаписываются. ИспользуйтеGITUpdateCustomдля указания другого подхода. -
Скрипт CTest переменная:
-
GITInitSubmodules -
Если установлено, CTest обновит подмодули репозитория перед обновлением.
-
Скрипт CTest переменная:
CTEST_GIT_INIT_SUBMODULES -
CTestпеременная модуля:CTEST_GIT_INIT_SUBMODULES
-
Скрипт CTest переменная:
-
GITUpdateCustom -
Укажите пользовательскую команду (в виде списка, разделённого точкой с запятой), которую нужно выполнить в исходном дереве (рабочей области Git), чтобы обновить его вместо запуска
GITCommand.-
Скрипт CTest переменная:
CTEST_GIT_UPDATE_CUSTOM -
CTestпеременная модуля:CTEST_GIT_UPDATE_CUSTOM
-
Скрипт CTest переменная:
-
GITUpdateOptions -
Опции командной строки для
GITCommandпри обновлении исходного кода.-
Скрипт CTest переменная:
CTEST_GIT_UPDATE_OPTIONS -
CTestпеременная модуля:GIT_UPDATE_OPTIONS
-
Скрипт CTest переменная:
-
HGCommand -
hgутилита командной строки, используемая, если исходное дерево управляется Mercurial.-
Скрипт CTest переменная:
CTEST_HG_COMMAND -
CTestпеременная модуля: нет
-
Скрипт CTest переменная:
-
HGUpdateOptions -
Опции командной строки для
HGCommandпри обновлении исходного кода.-
Скрипт CTest переменная:
CTEST_HG_UPDATE_OPTIONS -
CTestпеременная модуля: нет
-
Скрипт CTest переменная:
-
P4Client -
Значение параметра
-cдляP4Command.-
Скрипт CTest переменная:
CTEST_P4_CLIENT -
CTestпеременная модуля:CTEST_P4_CLIENT
-
Скрипт CTest переменная:
-
P4Command -
p4утилита командной строки, используемая, если исходное дерево управляется Perforce.-
Скрипт CTest переменная:
CTEST_P4_COMMAND -
CTestпеременная модуля:P4COMMAND
-
Скрипт CTest переменная:
-
P4Options -
Опции командной строки для
P4Commandдля всех вызовов.-
Скрипт CTest переменная:
CTEST_P4_OPTIONS -
CTestпеременная модуля:CTEST_P4_OPTIONS
-
Скрипт CTest переменная:
-
P4UpdateCustom -
Укажите пользовательскую команду (в виде списка, разделённого точкой с запятой), которую нужно выполнить в исходном дереве (дереве Perforce), чтобы обновить его вместо запуска
P4Command.- Скрипт CTest переменная: нет
-
CTestпеременная модуля:CTEST_P4_UPDATE_CUSTOM
-
P4UpdateOptions -
Опции командной строки для
P4Commandпри обновлении исходного кода.-
Скрипт CTest переменная:
CTEST_P4_UPDATE_OPTIONS -
CTestпеременная модуля:CTEST_P4_UPDATE_OPTIONS
-
Скрипт CTest переменная:
-
SVNCommand -
svnутилита командной строки, используемая, если исходное дерево управляется Subversion.-
Скрипт CTest переменная:
CTEST_SVN_COMMAND -
CTestпеременная модуля:SVNCOMMAND
-
Скрипт CTest переменная:
-
SVNOptions -
Опции командной строки для
SVNCommandдля всех вызовов.-
Скрипт CTest переменная:
CTEST_SVN_OPTIONS -
CTestпеременная модуля:CTEST_SVN_OPTIONS
-
Скрипт CTest переменная:
-
SVNUpdateOptions -
Опции командной строки для
SVNCommandпри обновлении исходного кода.-
Скрипт CTest переменная:
CTEST_SVN_UPDATE_OPTIONS -
CTestпеременная модуля:SVN_UPDATE_OPTIONS
-
Скрипт CTest переменная:
-
UpdateCommand
-
Укажите утилиту командной строки для управления системами контроля версий без автоматического определения VCS, управляющего деревом исходного кода.
-
Скрипт CTest переменная:
CTEST_UPDATE_COMMAND -
CTestмодульная переменная:<VCS>COMMANDеслиUPDATE_TYPEравно<vcs>, иначеUPDATE_COMMAND
-
Скрипт CTest переменная:
-
UpdateOptions -
Параметры командной строки для
UpdateCommand.-
Скрипт CTest переменная:
CTEST_UPDATE_OPTIONS -
CTestмодульная переменная:<VCS>_UPDATE_OPTIONSеслиUPDATE_TYPEравно<vcs>, иначеUPDATE_OPTIONS
-
Скрипт CTest переменная:
-
UpdateType -
Укажите систему контроля версий, управляющую деревом исходного кода, если её нельзя автоматически определить. Значение может быть
bzr,cvs,git,hg,p4, илиsvn.- Скрипт CTest переменная: нет, определено из дерева исходного кода
-
CTestмодульная переменная:UPDATE_TYPEесли задано, иначеCTEST_UPDATE_TYPE
-
UpdateVersionOnly -
Укажите, что команда обновления контроля версий должна только обнаружить текущую версию, а не обновлять её до другой версии.
-
Скрипт CTest переменная:
CTEST_UPDATE_VERSION_ONLY
-
Скрипт CTest переменная:
-
UpdateVersionOverride -
Укажите текущую версию вашего дерева исходного кода.
При установке этой переменной на непустую строку, CTest сообщит указанное вами значение, а не будет использовать команду обновления для определения текущей версии, которая есть в системе контроля версий. Использование этой переменной подразумевает
UpdateVersionOnly. Как иUpdateVersionOnly, использование этой переменной указывает CTest не обновлять дерево исходного кода до другой версии.-
Скрипт CTest переменная:
CTEST_UPDATE_VERSION_OVERRIDE
-
Скрипт CTest переменная:
Дополнительные параметры конфигурации включают:
-
NightlyStartTime -
В режиме информационной панели
Nightly, укажите "время начала ночной сборки". В системах централизованного управления версиями (cvsиsvn) шагUpdateпроверяет версию программного обеспечения на момент этого времени, чтобы несколько клиентов выбрали общую версию для тестирования. Это не определено в системах распределенного управления версиями, поэтому этот параметр игнорируется.-
Скрипт CTest переменная:
CTEST_NIGHTLY_START_TIME -
CTestмодульная переменная:NIGHTLY_START_TIMEесли задано, иначеCTEST_NIGHTLY_START_TIME
-
Скрипт CTest переменная:
Шаг конфигурации CTest
В скрипте CTest команда ctest_configure() выполняет этот шаг. Аргументы команды могут указать некоторые параметры шага.
Параметры конфигурации включают:
-
ConfigureCommand -
Команда запуска процесса конфигурации программного обеспечения. Она будет выполнена в месте, указанном параметром
BuildDirectory.-
Скрипт CTest переменная:
CTEST_CONFIGURE_COMMAND -
CTestмодульная переменная:CMAKE_COMMANDза которым следуетPROJECT_SOURCE_DIR
-
Скрипт CTest переменная:
-
LabelsForSubprojects -
Укажите список меток, разделённых точкой с запятой, которые будут обрабатываться как подпроекты. Это отображение будет передано в CDash при отправке результатов конфигурации, тестирования или сборки.
-
Скрипт CTest переменная:
CTEST_LABELS_FOR_SUBPROJECTS -
CTestмодульная переменная:CTEST_LABELS_FOR_SUBPROJECTS
-
Скрипт CTest переменная:
Шаг сборки CTest
В скрипте CTest команда ctest_build() выполняет этот шаг. Аргументы команды могут указать некоторые параметры шага.
Параметры конфигурации включают:
-
DefaultCTestConfigurationType -
При использовании системы сборки, позволяющей выбирать конфигурацию во время сборки (например,
Debug,Release), это указывает на стандартную конфигурацию для сборки, если опция-Cне передана команде ctest. Значение будет подставлено в значениеMakeCommand, заменив литеральную строку${CTEST_CONFIGURATION_TYPE}.-
Скрипт CTest переменная:
CTEST_CONFIGURATION_TYPE -
CTestмодульная переменная:DEFAULT_CTEST_CONFIGURATION_TYPE, инициализированная переменной средыCMAKE_CONFIG_TYPE
-
Скрипт CTest переменная:
-
LabelsForSubprojects -
Укажите список меток, разделённых точкой с запятой, которые будут обрабатываться как подпроекты. Это отображение будет передано в CDash при отправке результатов конфигурации, тестирования или сборки.
-
Скрипт CTest переменная:
CTEST_LABELS_FOR_SUBPROJECTS -
CTestмодульная переменная:CTEST_LABELS_FOR_SUBPROJECTS
-
Скрипт CTest переменная:
-
MakeCommand -
Команда запуска процесса сборки программного обеспечения. Она будет выполнена в месте, указанном параметром
BuildDirectory.-
Скрипт CTest переменная:
CTEST_BUILD_COMMAND -
CTestмодульная переменная:MAKECOMMAND, инициализированная командойbuild_command()
-
Скрипт CTest переменная:
-
UseLaunchers -
Для деревьев сборки, сгенерированных CMake с использованием одного из генераторов Makefile или генератора
Ninja, укажите, включена ли функцияCTEST_USE_LAUNCHERSмодулемCTestUseLaunchers(также включён модулемCTest). При включении сгенерированная система сборки оборачивает каждый вызов компилятора, компоновщика или пользовательской командной строки «запускающим» модулем, взаимодействующим с CTest через переменные среды и файлы для отчёта о подробных предупреждениях и ошибках сборки. В противном случае CTest должен «извлекать» диагностику из журнала вывода сборки.-
Скрипт CTest переменная:
CTEST_USE_LAUNCHERS -
CTestмодульная переменная:CTEST_USE_LAUNCHERS
-
Скрипт CTest переменная:
Шаг тестирования CTest
В скрипте CTest, команда ctest_test() выполняет этот шаг. Аргументы команды могут указать некоторые настройки шага.
Настройки конфигурации включают:
-
ResourceSpecFile -
Укажите файл спецификации ресурсов файл спецификации ресурсов.
-
Переменная скрипта CTest:
CTEST_RESOURCE_SPEC_FILE -
Переменная модуля
CTest:CTEST_RESOURCE_SPEC_FILE
Дополнительную информацию см. в разделе Распределение ресурсов.
-
Переменная скрипта CTest:
-
LabelsForSubprojects -
Укажите список меток, разделенных точкой с запятой, которые будут обрабатываться как подпроекты. Это отображение будет передано в CDash при отправке результатов конфигурации, тестирования или сборки.
-
Переменная скрипта CTest:
CTEST_LABELS_FOR_SUBPROJECTS -
Переменная модуля
CTest:CTEST_LABELS_FOR_SUBPROJECTS
-
Переменная скрипта CTest:
-
TestLoad -
Во время параллельного выполнения тестов (например, с
-j) старайтесь не запускать тесты, которые могут привести к превышению заданного порога нагрузки ЦП.-
Переменная скрипта CTest:
CTEST_TEST_LOAD -
Переменная модуля
CTest:CTEST_TEST_LOAD
-
Переменная скрипта CTest:
-
TimeOut -
Значение по умолчанию для таймаута каждого теста, если не указано свойством теста
TIMEOUTили флагом--timeout.-
Переменная скрипта CTest:
CTEST_TEST_TIMEOUT -
Переменная модуля
CTest:DART_TESTING_TIMEOUT
-
Переменная скрипта CTest:
Чтобы отправить дополнительные значения тестов в CDash, см. Дополнительные измерения тестов.
Шаг CTest Coverage
В скрипте CTest, команда ctest_coverage() выполняет этот шаг. Аргументы команды могут указать некоторые настройки шага.
Настройки конфигурации включают:
-
CoverageCommand -
Утилита командной строки для выполнения анализа покрытия программного обеспечения. Она будет выполнена в месте, указанном настройкой
BuildDirectory.-
Переменная скрипта CTest:
CTEST_COVERAGE_COMMAND -
Переменная модуля
CTest:COVERAGE_COMMAND
-
Переменная скрипта CTest:
-
CoverageExtraFlags -
Укажите параметры командной строки для утилиты
CoverageCommand.-
Переменная скрипта CTest:
CTEST_COVERAGE_EXTRA_FLAGS -
Переменная модуля
CTest:COVERAGE_EXTRA_FLAGS
Эти параметры являются первыми аргументами, передаваемыми
CoverageCommand. -
Переменная скрипта CTest:
Шаг CTest MemCheck
В скрипте CTest, команда ctest_memcheck() выполняет этот шаг. Аргументы команды могут указать некоторые настройки шага.
Настройки конфигурации включают:
-
MemoryCheckCommand -
Утилита командной строки для выполнения динамического анализа. Команды тестов будут запускаться через эту утилиту.
-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_COMMAND -
Переменная модуля
CTest:MEMORYCHECK_COMMAND
-
Переменная скрипта CTest:
-
MemoryCheckCommandOptions -
Укажите параметры командной строки для утилиты
MemoryCheckCommand. Они будут помещены перед строкой команды теста.-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_COMMAND_OPTIONS -
Переменная модуля
CTest:MEMORYCHECK_COMMAND_OPTIONS
-
Переменная скрипта CTest:
-
MemoryCheckType -
Укажите тип проверки памяти для выполнения.
-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_TYPE -
Переменная модуля
CTest:MEMORYCHECK_TYPE
-
Переменная скрипта CTest:
-
MemoryCheckSanitizerOptions -
Укажите параметры санитайзеров при выполнении с поддержкой санитайзера в сборке.
-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_SANITIZER_OPTIONS -
Переменная модуля
CTest:MEMORYCHECK_SANITIZER_OPTIONS
-
Переменная скрипта CTest:
-
MemoryCheckSuppressionFile -
Укажите файл, содержащий правила подавления для утилиты
MemoryCheckCommand. Он будет передан с параметрами, соответствующими утилите.-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_SUPPRESSIONS_FILE -
Переменная модуля
CTest:MEMORYCHECK_SUPPRESSIONS_FILE
-
Переменная скрипта CTest:
Дополнительные настройки конфигурации включают:
-
BoundsCheckerCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой с Bounds Checker.- CTest Script переменная: none
-
CTestмодульная переменная: none
-
PurifyCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой с Purify.- CTest Script переменная: none
-
CTestмодульная переменная:PURIFYCOMMAND
-
ValgrindCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой с Valgrind.- CTest Script переменная: none
-
CTestмодульная переменная:VALGRIND_COMMAND
-
ValgrindCommandOptions -
Укажите параметры командной строки для инструмента
ValgrindCommand. Они будут помещены перед командной строкой теста.- CTest Script переменная: none
-
CTestмодульная переменная:VALGRIND_COMMAND_OPTIONS
-
DrMemoryCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой с DrMemory.- CTest Script переменная: none
-
CTestмодульная переменная:DRMEMORY_COMMAND
-
DrMemoryCommandOptions -
Укажите параметры командной строки для инструмента
DrMemoryCommand. Они будут помещены перед командной строкой теста.- CTest Script переменная: none
-
CTestмодульная переменная:DRMEMORY_COMMAND_OPTIONS
-
CudaSanitizerCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой с cuda-memcheck или compute-sanitizer.- CTest Script переменная: none
-
CTestмодульная переменная:CUDA_SANITIZER_COMMAND
-
CudaSanitizerCommandOptions -
Укажите параметры командной строки для инструмента
CudaSanitizerCommand. Они будут помещены перед командной строкой теста.- CTest Script переменная: none
-
CTestмодульная переменная:CUDA_SANITIZER_COMMAND_OPTIONS
Шаг CTest Submit
В CTest Script команда ctest_submit() выполняет этот шаг. Аргументы команды могут указать некоторые параметры шага.
Параметры конфигурации включают:
-
BuildName -
Опишите платформу клиента для панели мониторинга коротким описанием. (Операционная система, компилятор и т.д.)
-
Сценарий CTest переменная:
CTEST_BUILD_NAME -
CTestмодульная переменная:BUILDNAME
-
Сценарий CTest переменная:
-
CDashVersion -
Устаревшая опция. Не используется.
- Сценарий CTest переменная: ни одна, обнаружена с сервера
-
CTestмодульная переменная:CTEST_CDASH_VERSION
-
CTestSubmitRetryCount -
Укажите количество попыток повторной отправки при сбое сети.
-
Сценарий CTest переменная: ни одна, используйте опцию
ctest_submit()RETRY_COUNT. -
CTestмодульная переменная:CTEST_SUBMIT_RETRY_COUNT
-
Сценарий CTest переменная: ни одна, используйте опцию
-
CTestSubmitRetryDelay -
Укажите задержку перед повторной отправкой при сбое сети.
-
Сценарий CTest переменная: ни одна, используйте опцию
ctest_submit()RETRY_DELAY. -
CTestмодульная переменная:CTEST_SUBMIT_RETRY_DELAY
-
Сценарий CTest переменная: ни одна, используйте опцию
-
CurlOptions -
Укажите список опций, разделенных точкой с запятой, для управления библиотекой Curl, которую CTest использует для подключения к серверу. Возможные опции —
CURLOPT_SSL_VERIFYPEER_OFFиCURLOPT_SSL_VERIFYHOST_OFF.-
Сценарий CTest переменная:
CTEST_CURL_OPTIONS -
CTestмодульная переменная:CTEST_CURL_OPTIONS
-
Сценарий CTest переменная:
-
DropLocation -
Устаревшая опция. Если
SubmitURLне задано, оно строится изDropMethod,DropSiteUser,DropSitePassword,DropSite, иDropLocation.-
Сценарий CTest переменная:
CTEST_DROP_LOCATION -
CTestмодульная переменная:DROP_LOCATIONесли задано, иначеCTEST_DROP_LOCATION
-
Сценарий CTest переменная:
-
DropMethod -
Устаревшая опция. Если
SubmitURLне задано, оно строится изDropMethod,DropSiteUser,DropSitePassword,DropSite, иDropLocation.-
Сценарий CTest переменная:
CTEST_DROP_METHOD -
CTestмодульная переменная:DROP_METHODесли задано, иначеCTEST_DROP_METHOD
-
Сценарий CTest переменная:
-
DropSite -
Устаревшая опция. Если
SubmitURLне задано, оно строится изDropMethod,DropSiteUser,DropSitePassword,DropSite, иDropLocation.-
Сценарий CTest переменная:
CTEST_DROP_SITE -
CTestмодульная переменная:DROP_SITEесли задано, иначеCTEST_DROP_SITE
-
Сценарий CTest переменная:
-
DropSitePassword -
Устаревшая опция. Если
SubmitURLне задано, оно строится изDropMethod,DropSiteUser,DropSitePassword,DropSite, иDropLocation.-
Сценарий CTest переменная:
CTEST_DROP_SITE_PASSWORD -
CTestмодульная переменная:DROP_SITE_PASSWORDесли задано, иначеCTEST_DROP_SITE_PASWORD
-
Сценарий CTest переменная:
-
DropSiteUser -
Устаревшая опция. Если
SubmitURLне задано, оно строится изDropMethod,DropSiteUser,DropSitePassword,DropSite, иDropLocation.-
Сценарий CTest переменная:
CTEST_DROP_SITE_USER -
CTestмодульная переменная:DROP_SITE_USERесли задано, иначеCTEST_DROP_SITE_USER
-
Сценарий CTest переменная:
-
IsCDash -
Устаревшая опция. Не используется.
-
Сценарий CTest переменная:
CTEST_DROP_SITE_CDASH -
CTestмодульная переменная:CTEST_DROP_SITE_CDASH
-
Сценарий CTest переменная:
-
ScpCommand -
Устаревшая опция. Не используется.
-
Сценарий CTest переменная:
CTEST_SCP_COMMAND -
CTestмодульная переменная:SCPCOMMAND
-
Сценарий CTest переменная:
-
Site -
Опишите домен хоста панели мониторинга коротким описанием. (Имя хоста, домен и т.д.)
-
Сценарий CTest переменная:
CTEST_SITE -
CTestмодульная переменная:SITE, инициализирована командойsite_name()
-
Сценарий CTest переменная:
-
SubmitURL -
URL сервера панели мониторинга для отправки данных (
httpилиhttps).-
Сценарий CTest переменная:
CTEST_SUBMIT_URL -
CTestмодульная переменная:SUBMIT_URLесли задано, иначеCTEST_SUBMIT_URL
-
Сценарий CTest переменная:
-
SubmitInactivityTimeout -
Время ожидания отправки, после чего оно отменяется, если не завершено. Укажите нулевое значение для отключения таймаута.
-
Сценарий CTest переменная:
CTEST_SUBMIT_INACTIVITY_TIMEOUT -
CTestмодульная переменная:CTEST_SUBMIT_INACTIVITY_TIMEOUT
-
Сценарий CTest переменная:
-
TriggerSite -
Устаревшая опция. Не используется.
-
Сценарий CTest переменная:
CTEST_TRIGGER_SITE -
CTestмодульная переменная:TRIGGER_SITEесли задано, иначеCTEST_TRIGGER_SITE
-
Сценарий CTest переменная:
Показать в формате JSON объекта
Введено в версии 3.14.
При использовании опции командной строки --show-only=json-v1, информация о тесте выводится в формате JSON. Версия 1.0 модели JSON-объекта определяется следующим образом:
-
kind -
Строка "ctestInfo".
-
version -
Объект JSON, определяющий компоненты версии. Его члены:
-
major -
Целое неотрицательное число, определяющее компонент основной версии.
-
minor -
Целое неотрицательное число, определяющее компонент дополнительной версии.
-
-
backtraceGraph -
Объект JSON, представляющий информацию о стеке вызовов с указанными членами:
-
commands -
Список имён команд.
-
files -
Список имён файлов.
-
nodes -
Список узлов в виде объектов JSON с членами:
-
command -
Индекс в члене
commandsобъектаbacktraceGraph. -
file -
Индекс в члене
filesобъектаbacktraceGraph. -
line -
Номер строки в файле, где был добавлен стековый след.
-
parent -
Индекс в члене
nodesобъектаbacktraceGraph, представляющий родительский элемент в графе.
-
-
-
tests -
Массив JSON, перечисляющий информацию о каждом тесте. Каждый элемент — объект JSON с членами:
-
name -
Имя теста.
-
config -
Конфигурация, на которой может выполняться тест. Пустая строка означает любую конфигурацию.
-
command -
Список, где первый элемент — команда теста, а оставшиеся элементы — аргументы команды.
-
backtrace -
Индекс в члене
nodesобъектаbacktraceGraph. -
properties -
Свойства теста. Может содержать ключи для каждого из поддерживаемых свойств тестов.
-
Распределение ресурсов
CTest предоставляет механизм, позволяющий тестам точно определять необходимые ресурсы и пользователям – доступные ресурсы на выполняющей машине. Это позволяет CTest отслеживать, какие ресурсы используются, а какие свободны, и планировать тесты таким образом, чтобы они не пытались захватить недоступные ресурсы.
Когда используется функция распределения ресурсов, CTest не будет перераспределять ресурсы. Например, если у ресурса есть 8 слотов, CTest не будет запускать тесты, которые в совокупности используют больше 8 слотов за раз. Это ограничивает количество одновременно запускаемых тестов, даже если используется большое значение аргумента -j, если эти тесты используют слоты одного и того же ресурса. Кроме того, это означает, что отдельный тест, использующий больше ресурсов, чем доступно на машине, вообще не будет запущен (и будет отображён как Not Run).
Типичный пример использования этой функции – тесты, требующие использования графического процессора (GPU). Несколько тестов могут одновременно выделять память из GPU, но если слишком много тестов пытаются сделать это одновременно, некоторые из них не смогут выделить память, что приведёт к провалу теста, даже если бы тест был успешным при наличии необходимой памяти. Используя функцию распределения ресурсов, каждый тест может указать, сколько памяти он требует от GPU, что позволит CTest планировать тесты так, чтобы одновременный запуск нескольких таких тестов не исчерпал пул памяти GPU.
Обратите внимание, что CTest не имеет понятия о том, что такое GPU или сколько у него памяти, и не имеет возможности общаться с GPU для получения этой информации или выполнения управления памятью. CTest просто отслеживает список абстрактных типов ресурсов, каждый из которых имеет определённое количество слотов, доступных для использования тестами. Каждый тест указывает количество слотов, которые ему требуются от определённого ресурса, а CTest затем планирует их таким образом, чтобы общее количество используемых слотов не превышало указанной ёмкости. При выполнении теста и выделении слотов ресурса этому тесту, тесты могут предполагать, что они имеют исключительное использование этих слотов на протяжении всего процесса теста.
Функция распределения ресурсов CTest состоит из двух входных данных:
- Файл спецификации ресурсов, описанный ниже, который описывает доступные ресурсы на системе.
- Свойство тестов
RESOURCE_GROUPS, которое описывает ресурсы, необходимые для теста.
При выполнении теста CTest перечисляет выделенные ресурсы в виде набора переменных среды, как описано ниже. Определение, к какому ресурсу подключиться, остается на усмотрение автора теста.
Свойство RESOURCE_GROUPS указывает CTest, какие ресурсы ожидается использовать тестом, сгруппированные таким образом, что это имеет смысл для теста. Сам тест должен прочитать переменные среды переменные среды, чтобы определить, какие ресурсы были выделены для каждой группы. Например, каждая группа может соответствовать процессу, который тест запустит при выполнении.
Обратите внимание, что даже если тест указывает свойство RESOURCE_GROUPS, он по-прежнему может выполняться без распределения ресурсов (и без соответствующих переменных среды переменных среды), если пользователь не передал файл спецификации ресурсов. Передача этого файла, либо через аргумент командной строки --resource-spec-file, либо аргумент RESOURCE_SPEC_FILE для ctest_test(), активирует функцию распределения ресурсов. Тесты должны проверить переменную среды CTEST_RESOURCE_GROUP_COUNT, чтобы узнать, активировано ли распределение ресурсов. Эта переменная всегда (и только) определена, если распределение ресурсов активировано. Если распределение ресурсов не активировано, то переменная CTEST_RESOURCE_GROUP_COUNT не будет существовать, даже если она существует для родительского процесса ctest. Если тесту абсолютно необходимо распределение ресурсов, он может вернуть код ошибки или использовать свойства SKIP_RETURN_CODE или SKIP_REGULAR_EXPRESSION для указания пропущенного теста.
Файл спецификации ресурсов
Файл спецификации ресурсов — это файл JSON, передаваемый CTest, либо в командной строке как ctest --resource-spec-file, либо как аргумент RESOURCE_SPEC_FILE команды ctest_test(). Если используется скрипт панели мониторинга и RESOURCE_SPEC_FILE не указано, используется значение CTEST_RESOURCE_SPEC_FILE из скрипта панели мониторинга. Если --resource-spec-file, RESOURCE_SPEC_FILE, и CTEST_RESOURCE_SPEC_FILE в скрипте панели мониторинга не указаны, используется значение CTEST_RESOURCE_SPEC_FILE из CMake сборки. Если ничто из этого не указано, файл спецификации ресурсов не используется.
Файл спецификации ресурсов должен быть объектом JSON. Все примеры в этом документе предполагают следующий файл спецификации ресурсов:
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"gpus": [
{
"id": "0",
"slots": 2
},
{
"id": "1",
"slots": 4
},
{
"id": "2",
"slots": 2
},
{
"id": "3"
}
],
"crypto_chips": [
{
"id": "card0",
"slots": 4
}
]
}
]
}
Его члены:
-
version -
Объект, содержащий поле
majorцелого числа и полеminorцелого числа. В настоящее время поддерживается только версия major1, minor0. Любое другое значение является ошибкой. -
local -
Массив JSON наборов ресурсов, доступных на системе. В настоящее время этот массив ограничен размером 1.
Каждый элемент массива — объект JSON с именами членов, равными желаемым типам ресурсов, например,
gpus. Эти имена должны начинаться с маленькой буквы или символа подчеркивания, а последующие символы могут быть маленькой буквой, цифрой или символом подчеркивания. Прописные буквы не допускаются, так как на некоторых платформах переменные среды нечувствительны к регистру. См. раздел "Переменные среды" ниже для получения дополнительной информации. Рекомендуется, чтобы имя типа ресурса было множественным числом от существительного, например,gpusилиcrypto_chips(а неgpuилиcrypto_chip).Обратите внимание, что имена
gpusиcrypto_chips— это всего лишь примеры, и CTest их не интерпретирует. Вы можете придумать любые типы ресурсов, которые вам нужны.Значение для каждого типа ресурса — массив JSON, каждый элемент которого описывает конкретный экземпляр указанного ресурса. Эти объекты имеют следующие члены:
-
id -
Строка, содержащая идентификатор ресурса. Каждый символ в идентификаторе может быть маленькой буквой, цифрой или символом подчеркивания. Прописные буквы не допускаются.
Идентификаторы должны быть уникальными в рамках типа ресурса. Однако они не должны быть уникальными для всех типов ресурсов. Например, допустимо наличие ресурса
gpusс именем0и ресурсаcrypto_chipsс именем0, но не два ресурсаgpusс одинаковым именем0.Обратите внимание, что идентификаторы
0,1,2,3, иcard0— это всего лишь примеры, и CTest их не интерпретирует. Вы можете придумать любые идентификаторы, которые вам нужны. -
slots -
Необязательное целое положительное число, определяющее количество доступных слотов на ресурсе. Например, это может быть количество мегабайт оперативной памяти на GPU или количество криптографических единиц, доступных на криптографическом чипе. Если
slotsне указано, используется значение по умолчанию1.
-
В примере файла выше четыре GPU с ID от 0 до 3. У GPU 0 2 слота, у GPU 1 4, у GPU 2 2, а у GPU 3 по умолчанию 1 слот. Также есть один криптографический чип с 4 слотами.
RESOURCE_GROUPS Свойство
См. RESOURCE_GROUPS для описания этого свойства.
Переменные окружения
После того, как CTest определил, какие ресурсы нужно выделить для теста, он передает эту информацию исполняемому файлу теста в виде набора переменных окружения. В каждом примере ниже мы будем предполагать, что у рассматриваемого теста есть свойство RESOURCE_GROUPS со значением 2,gpus:2;gpus:4,gpus:1,crypto_chips:2.
Тестовому процессу передаются следующие переменные:
-
CTEST_RESOURCE_GROUP_COUNT -
Общее количество групп, указанных в свойстве
RESOURCE_GROUPS. Например:CTEST_RESOURCE_GROUP_COUNT=3
Эта переменная будет определена только в том случае, если
ctest(1)был задан--resource-spec-file, или еслиctest_test()был заданRESOURCE_SPEC_FILE. Если файл задания ресурсов не указан, эта переменная не будет определена.
-
CTEST_RESOURCE_GROUP_<num> -
Список типов ресурсов, выделенных для каждой группы, при этом каждый элемент разделяется запятой.
<num>— число от нуля доCTEST_RESOURCE_GROUP_COUNTминус один.CTEST_RESOURCE_GROUP_<num>определено для каждого<num>в этом диапазоне. Например:CTEST_RESOURCE_GROUP_0=gpusCTEST_RESOURCE_GROUP_1=gpusCTEST_RESOURCE_GROUP_2=crypto_chips,gpus
-
CTEST_RESOURCE_GROUP_<num>_<resource-type> -
Список идентификаторов ресурсов и количества слотов от каждого ID, выделенных для каждой группы для данного типа ресурса. Эта переменная состоит из ряда пар, каждая пара разделена точкой с запятой, а два элемента в паре разделены запятой. Первый элемент каждой пары —
id:с последующим ID ресурса типа<resource-type>, а второй элемент —slots:с последующим количеством слотов от этого ресурса, выделенных для данной группы. Например:CTEST_RESOURCE_GROUP_0_GPUS=id:0,slots:2CTEST_RESOURCE_GROUP_1_GPUS=id:2,slots:2CTEST_RESOURCE_GROUP_2_GPUS=id:1,slots:4;id:3,slots:1CTEST_RESOURCE_GROUP_2_CRYPTO_CHIPS=id:card0,slots:2
В этом примере группа 0 получает 2 слота от GPU
0, группа 1 получает 2 слота от GPU2, а группа 2 получает 4 слота от GPU1, 1 слот от GPU3, и 2 слота от криптографического чипаcard0.<num>— число от нуля доCTEST_RESOURCE_GROUP_COUNTминус один.<resource-type>— имя типа ресурса, преобразованное в верхний регистр.CTEST_RESOURCE_GROUP_<num>_<resource-type>определено для произведения каждого<num>в указанном диапазоне и каждого типа ресурса, перечисленного вCTEST_RESOURCE_GROUP_<num>.Поскольку на некоторых платформах имена переменных окружения нечувствительны к регистру, имена типов ресурсов могут не конфликтовать в среде с регистронезависимым режимом. По этой причине, для простоты, все типы ресурсов должны быть перечислены строчными буквами в файле задания ресурсов файл задания ресурсов и в свойстве
RESOURCE_GROUPS, и они преобразуются в верхний регистр в переменной средыCTEST_RESOURCE_GROUP_<num>_<resource-type>.
См. также
Следующие ресурсы доступны для получения помощи по CMake:
- Главная страница
-
Основная стартовая точка для изучения CMake.
- Онлайн-документация и ресурсы сообщества
-
https://cmake.org/documentation
Ссылки на доступную документацию и ресурсы сообщества можно найти на этой веб-странице.
- Форум Discourse
-
Форум Discourse предоставляет площадку для обсуждений и вопросов по CMake.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.27/manual/ctest.1.html