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