ctest(1)
- Краткое описание
- Описание
- Параметры
- Сводка меток и подпроектов
- Режим сборки и тестирования
- Показать в формате JSON Object Model
- См. также
Краткое описание
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(), имеют поддержку тестирования. Эта программа выполнит тесты и сообщит результаты.
Параметры
-
-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>. -
-N,--show-only[=<format>] -
Отключить фактическое выполнение тестов.
Этот параметр сообщает CTest перечислить тесты, которые будут выполнены, но не выполнять их фактически. Полезно в сочетании с параметрами
-Rи-E.<format>может иметь одно из следующих значений.-
human -
Вывод в удобочитаемой форме. Не гарантируется стабильность. Это значение по умолчанию.
-
json-v1 -
Вывести информацию о тестах в формате JSON. См. Модель объекта в формате JSON.
-
-
-L <regex>, --label-regex <regex> -
Выполнять тесты с метками, соответствующими регулярному выражению.
Этот параметр сообщает CTest выполнять только тесты, чьи метки соответствуют заданному регулярному выражению.
-
-R <regex>, --tests-regex <regex> -
Выполнять тесты, соответствующие регулярному выражению.
Этот параметр сообщает CTest выполнять только тесты, чьи имена соответствуют заданному регулярному выражению.
-
-E <regex>, --exclude-regex <regex> -
Исключить тесты, соответствующие регулярному выражению.
Этот параметр сообщает CTest НЕ выполнять тесты, чьи имена соответствуют заданному регулярному выражению.
-
-LE <regex>, --label-exclude <regex> -
Исключить тесты с метками, соответствующими регулярному выражению.
Этот параметр сообщает CTest НЕ выполнять тесты, чьи метки соответствуют заданному регулярному выражению.
-
-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 запускать тесты в интерактивном или неинтерактивном режиме. В Windows это означает, что в неинтерактивном режиме все всплывающие окна отладки системы блокируются. В режиме панели мониторинга (
Experimental,Nightly,Continuous) по умолчанию используется неинтерактивный режим. При простом запуске тестов, не предназначенных для панели мониторинга, по умолчанию разрешаются всплывающие окна и интерактивная отладка. -
--no-label-summary -
Отключить сводку времени для меток.
Этот параметр сообщает CTest не печатать сводку информации для каждой метки, связанной с запущенными тестами. Если на тестах нет меток, ничего лишнего не печатается.
-
--no-subproject-summary -
Отключить сводку времени для подпроектов.
Этот параметр сообщает CTest не печатать сводку информации для каждого подпроекта, связанного с запущенными тестами. Если на тестах нет подпроектов, ничего лишнего не печатается.
--build-and-test См. Режим сборки и тестирования.
-
--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>ile, если задан.
-
--help-full [<f>] -
Вывести все справочные руководства и выйти.
Все руководства выводятся в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если задан.
-
--help-manual <man> [<f>] -
Вывести одно справочное руководство и выйти.
Указанное руководство выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если задан.
-
--help-manual-list [<f>] -
Вывести список доступных руководств справки и выйти.
Список содержит все руководства, помощь по которым можно получить, используя параметр
--help-manualи за которым следует имя руководства. Справка выводится в указанный файл <f>ile, если задан. -
--help-command <cmd> [<f>] -
Вывести справку по одной команде и выйти.
Запись справки в руководстве
cmake-commands(7)для<cmd>выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если задан. -
--help-command-list [<f>] -
Вывести список команд со справочной информацией и выйти.
Список содержит все команды, по которым можно получить помощь, используя параметр
--help-commandза которым следует имя команды. Справка выводится в указанный файл <f>ile, если задан. -
--help-commands [<f>] -
Вывести руководство cmake-commands и выйти.
Руководство
cmake-commands(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если задан. -
--help-module <mod> [<f>] -
Вывести справку по одному модулю и выйти.
Запись справки в руководстве
cmake-modules(7)для<mod>выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если задан. -
--help-module-list [<f>] -
Вывести список модулей со справочной информацией и выйти.
Список содержит все модули, помощь по которым можно получить, используя параметр
--help-moduleи за которым следует имя модуля. Справка выводится в указанный файл <f>ile, если задан. -
--help-modules [<f>] -
Вывести руководство cmake-modules и выйти.
Руководство
cmake-modules(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если задан. -
--help-policy <cmp> [<f>] -
Вывести справку по одной политике и выйти.
Запись справки в руководстве
cmake-policies(7)для<cmp>выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если задан. -
--help-policy-list [<f>] -
Вывести список политик со справочной информацией и выйти.
Список содержит все политики, помощь по которым можно получить, используя параметр
--help-policyи за которым следует имя политики. Справка выводится в указанный файл <f>ile, если задан. -
--help-policies [<f>] -
Вывести руководство cmake-policies и выйти.
Руководство
cmake-policies(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если задан. -
--help-property <prop> [<f>] -
Вывести справку по одному свойству и выйти.
Записи справки в руководстве
cmake-properties(7)для<prop>выводятся в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если задан. -
--help-property-list [<f>] -
Вывести список свойств со справочной информацией и выйти.
Список содержит все свойства, помощь по которым можно получить, используя параметр
--help-propertyи за которым следует имя свойства. Справка выводится в указанный файл <f>ile, если задан. -
--help-properties [<f>] -
Вывести руководство cmake-properties и выйти.
Руководство
cmake-properties(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если задан. -
--help-variable <var> [<f>] -
Вывести справку по одной переменной и выйти.
Запись справки в руководстве
cmake-variables(7)для<var>выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если задан. -
--help-variable-list [<f>] -
Вывести список переменных со справочной информацией и выйти.
Список содержит все переменные, помощь по которым можно получить, используя параметр
--help-variableи за которым следует имя переменной. Справка выводится в указанный файл <f>ile, если задан. -
--help-variables [<f>] -
Вывести руководство cmake-variables и выйти.
Руководство
cmake-variables(7)выводится в удобочитаемом текстовом формате. Справка выводится в указанный файл <f>ile, если задан.
Сводка по меткам и подпроектам
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" ниже.
-
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>END_OF_DOCUMENT_MARKER
Файл <script> должен вызывать команды Команды CTest, чтобы явно выполнить шаги тестирования, как описано ниже. Эти команды получают настройки конфигурации клиента панели мониторинга из своих аргументов или из переменных, установленных в скрипте.
Конфигурация клиента панели мониторинга
Шаги клиента панели мониторинга Шаги клиента панели мониторинга могут быть сконфигурированы с помощью именованных настроек, как описано в следующих разделах.
Шаг CTest Start
Начинает новую отправку на панель мониторинга, которая будет состоять из результатов, записанных следующими шагами.
В Скрипте CTest, команда ctest_start() выполняет этот шаг. Аргументы команды могут указать некоторые настройки шага. Команда сначала выполняет команду, указанную в командной строке, переменной CTEST_CHECKOUT_COMMAND, если она установлена, чтобы инициализировать исходный каталог.
Настройки конфигурации включают:
-
BuildDirectory -
Полный путь к дереву сборки проекта.
-
Переменная скрипта CTest Script:
CTEST_BINARY_DIRECTORY -
Переменная модуля
CTest:PROJECT_BINARY_DIR
-
Переменная скрипта CTest Script:
-
SourceDirectory -
Полный путь к дереву исходных кодов проекта.
-
Переменная скрипта CTest Script:
CTEST_SOURCE_DIRECTORY -
Переменная модуля
CTest:PROJECT_SOURCE_DIR
-
Переменная скрипта CTest Script:
Шаг CTest Update
В Скрипте 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 Configure
В Сценарии 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 Build
В Сценарии 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 Test
В скрипте 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:
Шаг CTest Coverage
В скрипте CTest, команда ctest_coverage() выполняет этот шаг. Аргументы команды могут задавать некоторые параметры шага.
Параметры конфигурации включают:
-
CoverageCommand -
Утилита командной строки для анализа покрытия программного обеспечения. Она будет выполнена в расположении, указанном параметром
BuildDirectory.-
Переменная скрипта CTest:
CTEST_COVERAGE_COMMAND -
Переменная модуля
CTest:COVERAGE_COMMAND
-
Переменная скрипта CTest:
-
CoverageExtraFlags -
Укажите параметры командной строки для инструмента
CoverageCommand.-
Переменная скрипта CTest:
CTEST_COVERAGE_EXTRA_FLAGS -
Переменная модуля
CTest:COVERAGE_EXTRA_FLAGS
Эти параметры являются первыми аргументами, передаваемыми инструменту
CoverageCommand. -
Переменная скрипта CTest:
Шаг CTest MemCheck
В скрипте CTest, команда ctest_memcheck() выполняет этот шаг. Аргументы команды могут задавать некоторые параметры шага.
Параметры конфигурации включают:
-
MemoryCheckCommand -
Инструмент командной строки для выполнения динамического анализа. Команды тестов будут запускаться через этот инструмент.
-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_COMMAND -
Переменная модуля
CTest:MEMORYCHECK_COMMAND
-
Переменная скрипта CTest:
-
MemoryCheckCommandOptions -
Укажите параметры командной строки для инструмента
MemoryCheckCommand. Они будут помещены перед командой запуска теста.-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_COMMAND_OPTIONS -
Переменная модуля
CTest:MEMORYCHECK_COMMAND_OPTIONS
-
Переменная скрипта CTest:
-
MemoryCheckType -
Укажите тип проверки памяти для выполнения.
-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_TYPE -
Переменная модуля
CTest:MEMORYCHECK_TYPE
-
Переменная скрипта CTest:
-
MemoryCheckSanitizerOptions -
Укажите параметры анализаторов при запуске с поддержкой анализаторов.
-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_SANITIZER_OPTIONS -
Переменная модуля
CTest:MEMORYCHECK_SANITIZER_OPTIONS
-
Переменная скрипта CTest:
-
MemoryCheckSuppressionFile -
Укажите файл, содержащий правила подавления для инструмента
MemoryCheckCommand. Он будет передан с параметрами, соответствующими инструменту.-
Переменная скрипта CTest:
CTEST_MEMORYCHECK_SUPPRESSIONS_FILE -
Переменная модуля
CTest:MEMORYCHECK_SUPPRESSIONS_FILE
-
Переменная скрипта CTest:
Дополнительные параметры конфигурации включают:
-
BoundsCheckerCommand -
Укажите
MemoryCheckCommand, который известен как совместимый с командной строкой Bounds Checker.- Сценарий CTest переменная: 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
Шаг 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. Версия 1.0 модели JSON объекта определена следующим образом:
-
kind -
Строка “ctestInfo”.
-
version -
Объект JSON, определяющий компоненты версии. Его члены:
-
major -
Целое неотрицательное число, определяющее основной компонент версии.
-
minor -
Целое неотрицательное число, определяющее второстепенный компонент версии.
-
-
backtraceGraph -
Объект JSON, представляющий информацию о стеке вызовов с такими членами:
-
commands -
Список имён команд.
-
files -
Список имён файлов.
-
nodes -
Список узлов в виде объектов JSON с такими членами:
-
command -
Индекс в члене
commandsобъектаbacktraceGraph. -
file -
Индекс в члене
filesобъектаbacktraceGraph. -
line -
Номер строки в файле, где был добавлен элемент стека вызовов.
-
parent -
Индекс в члене
nodesобъектаbacktraceGraph, представляющий родительский элемент в графе.
-
-
-
tests -
Массив JSON, перечисляющий информацию о каждом тесте. Каждый элемент — это объект JSON с такими членами:
-
name -
Имя теста.
-
config -
Конфигурация, на которой может выполняться тест. Пустая строка означает любую конфигурацию.
-
command -
Список, где первый элемент — команда теста, а последующие — аргументы команды.
-
backtrace -
Индекс в члене
nodesобъектаbacktraceGraph. -
properties -
Свойства теста. Может содержать ключи для каждого поддерживаемого свойства теста.
-
Распределение ресурсов
CTest предоставляет механизм, позволяющий тестам точно указывать необходимые ресурсы и пользователям указывать доступные ресурсы на выполняемой машине. Это позволяет CTest отслеживать, какие ресурсы используются, а какие свободны, и планировать тесты таким образом, чтобы они не пытались занять недоступные ресурсы.
Когда используется функция распределения ресурсов, CTest не будет перераспределять ресурсы. Например, если ресурс имеет 8 слотов, CTest не запустит тесты, которые в совокупности используют более 8 слотов одновременно. Это ограничивает количество одновременно выполняемых тестов, даже если используется большое значение аргумента -j, если эти тесты все используют некоторые слоты одного и того же ресурса. Кроме того, это означает, что отдельный тест, который использует больше ресурсов, чем доступно на машине, вообще не будет запущен (и будет отмечен как Not Run).
Типичный пример использования этой функции — тесты, требующие использования графического процессора (GPU). Несколько тестов могут одновременно выделять память из GPU, но если слишком много тестов пытаются сделать это одновременно, некоторые из них не смогут выделить память, что приведёт к неудачному тесту, даже если тест был бы успешным, имея необходимую память. С помощью функции распределения ресурсов каждый тест может указать, сколько памяти он требует из GPU, что позволяет CTest планировать тесты таким образом, чтобы одновременный запуск нескольких тестов не исчерпал пул памяти GPU.
Обратите внимание, что CTest не знает, что такое GPU или сколько у него памяти, и у него нет способов общаться с GPU, чтобы получить эту информацию или выполнить какие-либо операции управления памятью. CTest просто отслеживает список абстрактных типов ресурсов, каждый из которых имеет определённое количество слотов, доступных для использования тестами. Каждый тест указывает количество слотов, которые он требует от определённого ресурса, и CTest планирует их таким образом, чтобы общее количество используемых слотов не превышало указанной ёмкости. При выполнении теста и выделении слотов ресурса этому тесту, тесты могут предполагать, что они имеют исключительное использование этих слотов на протяжении всего процесса теста.
Функция распределения ресурсов CTest состоит из двух входов:
- Файл спецификации ресурсов, описанный ниже, который описывает доступные ресурсы в системе.
- Свойство
RESOURCE_GROUPSтестов, описывающее требуемые ресурсы тестом.
Когда CTest запускает тест, выделенные ресурсы передаются в виде набора переменных окружения, как описано ниже. Как использовать эту информацию для определения, к какому ресурсу подключиться, решает автор теста.
Свойство RESOURCE_GROUPS сообщает CTest, какие ресурсы тест ожидает использовать, сгруппированные так, как это имеет смысл для теста. Сам тест должен прочитать переменные окружения, чтобы определить, какие ресурсы выделены для каждой группы. Например, каждая группа может соответствовать процессу, который запустит тест при выполнении.
Обратите внимание, что даже если тест указывает свойство RESOURCE_GROUPS, он всё равно может быть запущен без распределения ресурсов (и без соответствующих переменных окружения) если пользователь не передал файл спецификации ресурсов. Передача этого файла, либо через аргумент командной строки --resource-spec-file, или аргумент RESOURCE_SPEC_FILE команды ctest_test(), активирует функцию распределения ресурсов. Тесты должны проверить переменную среды CTEST_RESOURCE_GROUP_COUNT, чтобы определить, активировано ли распределение ресурсов. Эта переменная всегда (и только) определена, если активация распределения ресурсов выполнена. Если распределение ресурсов не активировано, то переменная CTEST_RESOURCE_GROUP_COUNT не будет существовать, даже если она существует для родительского ctest процесса. Если тесту обязательно требуется распределение ресурсов, он может вернуть код ошибки или использовать свойства SKIP_RETURN_CODE или SKIP_REGULAR_EXPRESSION, чтобы указать пропуск теста.
Файл спецификации ресурсов
Файл спецификации ресурсов — это файл JSON, который передаётся CTest либо в командной строке ctest(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 с ID от 0 до 3. У GPU 0 две слота, у GPU 1 — четыре, у GPU 2 — две, а у GPU 3 — по умолчанию одна слот. Также есть один криптографический чип с 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.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.18/manual/ctest.1.html