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 записать результаты тестов в файл JUnit XML
<file>. Если файл<file>уже существует, он будет перезаписан. -
-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> -
Ограничить вывод для пройденных тестов до
<size>байтов. -
--test-output-size-failed <size> -
Ограничить вывод для тестов, завершившихся неудачей, до
<size>байтов. -
--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>] -
Вывести справку по одной команде и выйти.
Запись справки по
<cmd>в руководствеcmake-commands(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-command-list [<f>] -
Вывести список команд со справочной информацией и выйти.
Список содержит все команды, по которым можно получить справку, используя опцию
--help-commandв сочетании с именем команды. Справка выводится в указанный файл <f>айл, если он задан. -
--help-commands [<f>] -
Вывести руководство cmake-commands и выйти.
Руководство
cmake-commands(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-module <mod> [<f>] -
Вывести справку по одному модулю и выйти.
Запись справки по
<mod>в руководствеcmake-modules(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-module-list [<f>] -
Вывести список модулей со справочной информацией и выйти.
Список содержит все модули, по которым можно получить справку, используя опцию
--help-moduleв сочетании с именем модуля. Справка выводится в указанный файл <f>айл, если он задан. -
--help-modules [<f>] -
Вывести руководство cmake-modules и выйти.
Руководство
cmake-modules(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-policy <cmp> [<f>] -
Вывести справку по одному правилу и выйти.
Запись справки по
<cmp>в руководствеcmake-policies(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-policy-list [<f>] -
Вывести список правил со справочной информацией и выйти.
Список содержит все правила, по которым можно получить справку, используя опцию
--help-policyв сочетании с именем правила. Справка выводится в указанный файл <f>айл, если он задан. -
--help-policies [<f>] -
Вывести руководство cmake-policies и выйти.
Руководство
cmake-policies(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-property <prop> [<f>] -
Вывести справку по одному свойству и выйти.
Записи справки по
<prop>в руководствеcmake-properties(7)выводятся в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-property-list [<f>] -
Вывести список свойств со справочной информацией и выйти.
Список содержит все свойства, по которым можно получить справку, используя опцию
--help-propertyв сочетании с именем свойства. Справка выводится в указанный файл <f>айл, если он задан. -
--help-properties [<f>] -
Вывести руководство cmake-properties и выйти.
Руководство
cmake-properties(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>айл, если он задан. -
--help-variable <var> [<f>] -
Вывести справку по одной переменной и выйти.
Запись справки по
<var>в руководствеcmake-variables(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <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 и подпроекта, связанного с выполняемыми тестами. Сводка времени по меткам не будет включать метки, сопоставленные с подпроектами.
Когда свойство теста 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> -
Укажите группу, в которую вы хотите отправить результаты.
Отправить панель мониторинга в указанную группу вместо стандартной. По умолчанию панель мониторинга отправляется в группы «Ежедневные», «Экспериментальные» или «Непрерывные», но с помощью этого параметра группа может быть произвольной.
Заменяет устаревший параметр
--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 Start ниже.
-
Update -
Обновить дерево исходного кода из хранилища управления версиями. Записать старые и новые версии, а также список обновленных файлов исходного кода. См. раздел Шаг CTest Update ниже.
-
Configure -
Настроить программное обеспечение, выполнив команду в дереве сборки. Записать журнал вывода конфигурации. См. раздел Шаг CTest Configure ниже.
-
Build -
Собрать программное обеспечение, выполнив команду в дереве сборки. Записать журнал вывода сборки и обнаружить предупреждения и ошибки. См. раздел Шаг CTest Build ниже.
-
Test -
Протестировать программное обеспечение, загрузив
CTestTestfile.cmakeиз дерева сборки и выполнив определенные тесты. Записать вывод и результат каждого теста. См. раздел Шаг CTest Test ниже. -
Coverage -
Рассчитать покрытие исходного кода, выполнив инструмент анализа покрытия и записав его вывод. См. раздел Шаг CTest Coverage ниже.
-
MemCheck -
Выполнить набор тестов программного обеспечения через инструмент проверки памяти. Записать вывод тестов, результаты и проблемы, сообщенные инструментом. См. раздел Шаг CTest MemCheck ниже.
-
Submit -
Отправить результаты, записанные из других шагов тестирования, на сервер панели мониторинга качества программного обеспечения. См. раздел Шаг CTest Submit ниже.
Режимы работы клиента панели мониторинга
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 Start
Начать новую отправку на панель мониторинга, которая будет состоять из результатов, записанных последующими шагами.
В скрипте 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), это задаёт конфигурацию по умолчанию, которая будет построена, если опция-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.-
Сценарий 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
В Сценарии 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 переменная:
-
TriggerSite -
Запись опции. Не используется.
-
Скрипт CTest переменная:
CTEST_TRIGGER_SITE -
CTestмодульная переменная:TRIGGER_SITEпри установке, иначеCTEST_TRIGGER_SITE
-
Скрипт CTest переменная:
Отобразить как модель объекта JSON
При использовании командной строки --show-only=json-v1, информация о тесте выводится в формате JSON. Модель объекта JSON версии 1.0 определяется следующим образом:
-
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(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целого типа и полеminorцелого типа. В настоящее время поддерживается только версия с номером1, мажором0. Любое другое значение является ошибкой. -
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:с последующим идентификатором ресурса типа<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–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.21/manual/ctest.1.html