ctest(1)
- Синопсис
- Описание
- Опции
- Сопоставление меток
- Сводка меток и подпроектов
- Режим сборки и тестирования
- Показать в виде JSON модели объекта
- См. также
Синопсис
ctest [<options>]
ctest --build-and-test <path-to-source> <path-to-build>
--build-generator <generator> [<options>...]
[--build-options <opts>...] [--test-command <command> [<args>...]]
ctest {-D <dashboard> | -M <model> -T <action> | -S <script> | -SP <script>}
[-- <dashboard-options>...]
Описание
Исполняемый файл 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-load <level> -
Во время параллельного выполнения тестов (например, с
-j) избегать запуска тестов, которые могут привести к превышению заданного порога загрузки ЦП.При запуске
ctestкак клиента панели мониторинга это устанавливает параметрTestLoadшага тестирования CTest. -
-Q,--quiet -
Сделать CTest тихим.
Этот параметр подавит весь вывод. Файл журнала вывода по-прежнему будет сгенерирован, если указан
--output-log. Параметры, такие как--verbose,--extra-verbose, и--debug, игнорируются, если указан--quiet. -
-O <file>, --output-log <file> -
Вывод в файл журнала.
Этот параметр указывает CTest записать весь вывод в файл журнала
<file>. -
--output-junit <file> -
Запись результатов тестов в формате JUnit.
Этот параметр указывает CTest записать результаты тестов в
<file>в формате JUnit XML. Если<file>уже существует, он будет перезаписан. Если используется параметр-Sдля запуска скрипта панели мониторинга, используйте ключевое словоOUTPUT_JUNITс командойctest_test()вместо. -
-N,--show-only[=<format>] -
Отключить фактическое выполнение тестов.
Этот параметр указывает CTest на вывод списка тестов, которые будут запущены, но не запускать их фактически. Полезно в сочетании с параметрами
-Rи-E.<format>может принимать следующие значения.-
human -
Вывод, удобный для человека. Не гарантируется стабильность. Это значение по умолчанию.
-
json-v1 -
Вывести информацию о тесте в формате JSON. См. Отображение в виде JSON-объекта.
-
-
-L <regex>, --label-regex <regex> -
Запуск тестов с метками, соответствующими регулярному выражению, как описано в string(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, за исключением того, что исключаются только соответствующие тесты очистки. -
-D <dashboard>, --dashboard <dashboard> -
Выполнение тестового сценария панели мониторинга.
Этот параметр указывает CTest действовать как клиент CDash и выполнить тестовый сценарий панели мониторинга. Все тесты
<Mode><Test>, где<Mode>может бытьExperimental,Nightly, иContinuous, а<Test>может бытьStart,Update,Configure,Build,Test,Coverage, иSubmit. -
-D <var>:<type>=<value> -
Определение переменной для сценария скрипта.
Передача значений переменных в командной строке. Используется в сочетании с
-Sдля передачи значений переменных скрипту панели мониторинга. Парсинг аргументов-Dв качестве значений переменных выполняется только если значение, следующее за-D, не соответствует ни одному известному типу панели мониторинга. -
-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сценарии. -
-I [Start,End,Stride,test#,test#|Test file], --tests-information -
Запустить определённое количество тестов по номеру.
Этот параметр заставляет CTest запускать тесты, начиная с номера
Start, заканчивая номеромEnd, с приращениемStride. Любые дополнительные числа послеStrideрассматриваются как отдельные номера тестов.Start,End, илиStrideмогут быть пустыми. Допускается передача файла с синтаксисом, аналогичным командной строке. -
-U, --union -
Взять объединение
-Iи-R.Когда оба
-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 не отображать сводную информацию для каждого подпроекта, связанного с запущенными тестами. Если тесты не имеют подпроектов, дополнительная информация не выводится.
--build-and-test См. Режим сборки и тестирования.
--test-dir <dir> Указать директорию для поиска тестов.
-
--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=<[error|ignore]> -
Рассматривать отсутствие тестов как ошибку или игнорировать её.
Если тесты не найдены, по умолчанию CTest всегда выводит сообщение об ошибке, но возвращает код ошибки только в скриптовом режиме. Этот параметр унифицирует поведение CTest, возвращая код ошибки, если тесты не найдены, или игнорируя отсутствие тестов.
-
--help,-help,-usage,-h,-H,/? -
Вывести информацию об использовании и завершить работу.
Информация об использовании описывает базовый интерфейс командной строки и его параметры.
-
--version,-version,/V [<f>] -
Показать баннер с именем/версией программы и завершить работу.
Если указан файл, версия записывается в него. Справка выводится в указанный файл <f> если задан.
-
--help-full [<f>] -
Вывести все руководства справки и завершить работу.
Все руководства выводятся в удобочитаемом текстовом формате. Справка выводится в указанный файл <f> если задан.
-
--help-manual <man> [<f>] -
Вывести одно руководство справки и завершить работу.
Указанное руководство выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f> если задан.
-
--help-manual-list [<f>] -
Вывести список доступных руководств справки и завершить работу.
Список содержит все руководства, для которых справку можно получить, используя параметр
--help-manualза которым следует имя руководства. Справка выводится в указанный файл <f> если задан. -
--help-command <cmd> [<f>] -
Вывести справку по одной команде и завершить работу.
Запись справки
cmake-commands(7)для<cmd>выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f> если задан. -
--help-command-list [<f>] -
Вывести список команд со справкой и завершить работу.
Список содержит все команды, для которых справку можно получить, используя параметр
--help-commandза которым следует имя команды. Справка выводится в указанный файл <f> если задан. -
--help-commands [<f>] -
Вывести руководство cmake-commands и завершить работу.
Руководство
cmake-commands(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f> если задан. -
--help-module <mod> [<f>] -
Вывести справку по одному модулю и завершить работу.
Запись справки
cmake-modules(7)для<mod>выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f> если задан. -
--help-module-list [<f>] -
Вывести список модулей со справкой и завершить работу.
Список содержит все модули, для которых справку можно получить, используя параметр
--help-moduleза которым следует имя модуля. Справка выводится в указанный файл <f> если задан. -
--help-modules [<f>] -
Вывести руководство cmake-modules и завершить работу.
Руководство
cmake-modules(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f> если задан. -
--help-policy <cmp> [<f>] -
Вывести справку по одной политике и завершить работу.
Запись справки
cmake-policies(7)для<cmp>выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f> если задан. -
--help-policy-list [<f>] -
Вывести список политик со справкой и завершить работу.
Список содержит все политики, для которых справку можно получить, используя параметр
--help-policyза которым следует имя политики. Справка выводится в указанный файл <f> если задан. -
--help-policies [<f>] -
Вывести руководство cmake-policies и завершить работу.
Руководство
cmake-policies(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f> если задан. -
--help-property <prop> [<f>] -
Вывести справку по одному свойству и завершить работу.
Записи справки
cmake-properties(7)для<prop>выводятся в удобочитаемом текстовом формате. Справка выводится в указанный файл <f> если задан. -
--help-property-list [<f>] -
Вывести список свойств со справкой и завершить работу.
Список содержит все свойства, для которых справку можно получить, используя параметр
--help-propertyза которым следует имя свойства. Справка выводится в указанный файл <f> если задан. -
--help-properties [<f>] -
Вывести руководство cmake-properties и завершить работу.
Руководство
cmake-properties(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f> если задан. -
--help-variable <var> [<f>] -
Вывести справку по одной переменной и завершить работу.
Запись справки
cmake-variables(7)для<var>выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f> если задан. -
--help-variable-list [<f>] -
Вывести список переменных со справкой и завершить работу.
Список содержит все переменные, для которых справку можно получить, используя параметр
--help-variableза которым следует имя переменной. Справка выводится в указанный файл <f> если задан. -
--help-variables [<f>] -
Вывести руководство cmake-variables и завершить работу.
Руководство
cmake-variables(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f> если задан.
Сопоставление меток
Тесты могут иметь присвоенные метки. Тесты могут быть включены или исключены из выполнения теста путем фильтрации по меткам. Каждый отдельный фильтр представляет собой регулярное выражение, применяемое к меткам, присвоенным тесту.
Когда используется -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 раз больше времени ЦП/ядра на выполнение тестов для 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-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 clean.
-
--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> | -M <model> -T <action> | -S <script> | -SP <script>)
[-- <dashboard-options>...]
Параметры для клиента панели управления включают:
-
--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 команда ctest_start() выполняет этот шаг. Аргументы команды могут указать некоторые настройки шага. Команда сначала выполняет указанную в командной строке команду переменной CTEST_CHECKOUT_COMMAND, если она установлена, для инициализации директории исходных кодов.
Настройки конфигурации включают:
-
BuildDirectory -
Полный путь к дереву сборки проекта.
-
Сценарий CTest переменная:
CTEST_BINARY_DIRECTORY -
CTestмодульная переменная:PROJECT_BINARY_DIR
-
Сценарий CTest переменная:
-
SourceDirectory -
Полный путь к дереву исходных кодов проекта.
-
Сценарий CTest переменная:
CTEST_SOURCE_DIRECTORY -
CTestмодульная переменная:PROJECT_SOURCE_DIR
-
Сценарий CTest переменная:
Шаг обновления CTest
В Сценарии CTest команда ctest_update() выполняет этот шаг. Аргументы команды могут указать некоторые настройки шага.
Настройки конфигурации для указания инструмента управления версиями включают:
-
BZRCommand -
bzrкомандная утилита для использования, если дерево исходных файлов управляется Bazaar.-
Скрипт CTest переменная:
CTEST_BZR_COMMAND -
CTestпеременная модуля: none
-
Скрипт CTest переменная:
-
BZRUpdateOptions -
Командные параметры для
BZRCommandпри обновлении исходного кода.-
Скрипт CTest переменная:
CTEST_BZR_UPDATE_OPTIONS -
CTestпеременная модуля: none
-
Скрипт 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переменная модуля: none
-
Скрипт CTest переменная:
-
HGUpdateOptions -
Командные параметры для
HGCommandпри обновлении исходного кода.-
Скрипт CTest переменная:
CTEST_HG_UPDATE_OPTIONS -
CTestпеременная модуля: none
-
Скрипт 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 переменная: none
-
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), это указывает на конфигурацию по умолчанию, которая будет построена, если к командеctestне задан параметр-C. Значение будет подставлено в значение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.-
Сценарий CTest переменная:
CTEST_TEST_TIMEOUT -
CTestпеременная модуля:DART_TESTING_TIMEOUT
-
Сценарий CTest переменная:
Для отчётности о дополнительных значениях тестов в CDash, см. Дополнительные измерения тестов.
Шаг покрытия CTest
В сценарии 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 переменная: none
-
CTestмодульная переменная: none
-
PurifyCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой Purify.- Сценарий CTest переменная: none
-
CTestмодульная переменная:PURIFYCOMMAND
-
ValgrindCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой Valgrind.- Сценарий CTest переменная: none
-
CTestмодульная переменная:VALGRIND_COMMAND
-
ValgrindCommandOptions -
Укажите параметры командной строки для инструмента
ValgrindCommand. Они будут размещены перед командой запуска теста.- Сценарий CTest переменная: none
-
CTestмодульная переменная:VALGRIND_COMMAND_OPTIONS
-
DrMemoryCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой DrMemory.- Сценарий CTest переменная: none
-
CTestмодульная переменная:DRMEMORY_COMMAND
-
DrMemoryCommandOptions -
Укажите параметры командной строки для инструмента
DrMemoryCommand. Они будут размещены перед командой запуска теста.- Сценарий CTest переменная: none
-
CTestмодульная переменная:DRMEMORY_COMMAND_OPTIONS
-
CudaSanitizerCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой cuda-memcheck или compute-sanitizer.- Сценарий CTest переменная: none
-
CTestмодульная переменная:CUDA_SANITIZER_COMMAND
-
CudaSanitizerCommandOptions -
Укажите параметры командной строки для инструмента
CudaSanitizerCommand. Они будут размещены перед командой запуска теста.- Сценарий CTest переменная: none
-
CTestмодульная переменная:CUDA_SANITIZER_COMMAND_OPTIONS
Шаг CTest Submit
В Сценарии CTest, команда 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
При использовании опции командной строки --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).
Частный случай применения этой функции — тесты, требующие использования видеокарты. Несколько тестов могут одновременно выделять память из видеокарты, но если слишком много тестов попытаются сделать это одновременно, некоторые из них не смогут выделить память, что приведёт к сбоям тестов, даже если бы тест прошёл успешно, если бы у него была необходимая память. Используя функцию распределения ресурсов, каждый тест может указать, сколько памяти ему нужно из видеокарты, позволяя CTest планировать тесты таким образом, что одновременный запуск нескольких тестов не исчерпает пул памяти видеокарты.
Обратите внимание, что CTest не знает, что такое видеокарта или сколько памяти она имеет, и не может взаимодействовать с видеокартой для получения этой информации или выполнения каких-либо операций по управлению памятью. 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(1) как --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типа integer и полеminorтипа integer. В настоящее время поддерживается только версия major1, minor0. Любое другое значение является ошибкой. -
local -
Массив JSON наборов ресурсов, присутствующих в системе. В настоящее время этот массив ограничен размером 1.
Каждый элемент массива — это объект JSON с членами, имена которых соответствуют желаемым типам ресурсов, например,
gpus. Эти имена должны начинаться с маленькой буквы или символа нижнего подчеркивания, а последующие символы могут быть маленькой буквой, цифрой или символом нижнего подчеркивания. Заглавные буквы не допускаются, потому что некоторые платформы имеют регистронезависимые переменные окружения. Более подробную информацию см. в разделе «Переменные окружения» ниже. Рекомендуется, чтобы имя типа ресурса было множественным числом существительного, например,gpusилиcrypto_chips(а неgpuилиcrypto_chip.)Обратите внимание, что имена
gpusиcrypto_chipsявляются лишь примерами, и CTest их никоим образом не интерпретирует. Вы можете создавать любые типы ресурсов, которые вам необходимы.Значение для каждого типа ресурса — массив JSON, состоящий из объектов JSON, каждый из которых описывает конкретный экземпляр указанного ресурса. Эти объекты имеют следующие члены:
-
id -
Строка, содержащая идентификатор ресурса. Каждый символ в идентификаторе может быть маленькой буквой, цифрой или символом нижнего подчеркивания. Заглавные буквы не допускаются.
Идентификаторы должны быть уникальными внутри типа ресурса. Однако они не должны быть уникальными для всех типов ресурсов. Например, допустимо иметь ресурс
gpusс именем0и ресурсcrypto_chipsс именем0, но не два ресурсаgpusс одинаковым именем0.Обратите внимание, что идентификаторы
0,1,2,3, иcard0являются лишь примерами, и CTest их никоим образом не интерпретирует. Вы можете создавать любые идентификаторы, которые вам необходимы. -
slots -
Необязательное целое неотрицательное число, определяющее количество доступных слотов в ресурсе. Например, это может быть количество мегабайт оперативной памяти на GPU или количество криптографических блоков, доступных на криптографическом чипе. Если
slotsне указано, используется значение по умолчанию1.
-
В приведенном выше примере имеется четыре GPU с идентификаторами от 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 ресурса типа<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.
CDash: https://cdash.org
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.24/manual/ctest.1.html