Непрерывная интеграция
Студенты должны пройти все проверки в конвейере CI, прежде чем начнется проверка работы студентами и преподавателями. Это включает в себя успешную проверку кода, а также стадии построения и тестирования. Каждая интеграция проверяется автоматизированной сборкой и автоматизированными тестами.
CI конвейер
CI конвейер для данного проекта выражается с помощью наглядной схемы:
Запуск scripts/run_tests.py
Автоматические тесты запускаются с помощью вспомогательного скрипта scripts/run_tests.py
. Для его работы следует задать несколько переменных окружения:
PPC_NUM_THREADS
Количество потоков для запуска. Это же значение экспортируется в
OMP_NUM_THREADS
.PPC_NUM_PROC
Количество процессов MPI, которые нужно запустить.
PPC_ASAN_RUN
Установите
1
, если включены санитайзеры, чтобы пропустить запускvalgrind
(необязательно, по умолчанию0
).PPC_IGNORE_TEST_TIME_LIMIT
Установите
1
, чтобы отключить ограничение времени тестов (необязательно, по умолчанию0
).
Режим выполнения выбирается параметром --running-type
. Чаще всего используются режимы threads
для бекендов с общей памятью и processes
для тестов на основе MPI. Режим performance
запускает бенчмарки производительности.
Пример использования:
export PPC_NUM_THREADS=4
export PPC_NUM_PROC=2
# Multithreaded functional tests
scripts/run_tests.py --running-type="threads"
# MPI functional tests
scripts/run_tests.py --running-type="processes"
# Performance benchmarks
scripts/run_tests.py --running-type="performance"
Дополнительные аргументы MPI можно передать через --additional-mpi-args
при запуске в режиме processes
.
Параметр --counts
позволяет последовательно запускать тесты с несколькими значениями числа потоков или процессов. При его указании скрипт перебирает переданные значения, перед каждым запуском обновляя PPC_NUM_THREADS
или PPC_NUM_PROC
.
Используйте --verbose
, чтобы вывести каждую команду, выполняемую run_tests.py
. Это помогает отлаживать сбои в CI или проверять точные аргументы, передаваемые тестовым бинарникам.