Непрерывная интеграция

Студенты должны пройти все проверки в конвейере CI, прежде чем начнется проверка работы студентами и преподавателями. Это включает в себя успешную проверку кода, а также стадии построения и тестирования. Каждая интеграция проверяется автоматизированной сборкой и автоматизированными тестами.

CI конвейер

CI конвейер для данного проекта выражается с помощью наглядной схемы:

Схема CI конвейера

Running scripts/run_tests.py

Automated tests are executed through the scripts/run_tests.py helper. The script requires several environment variables to be defined:

PPC_NUM_THREADS

Number of threads to use. The value is also exported as OMP_NUM_THREADS.

PPC_NUM_PROC

Number of MPI processes to launch.

PPC_ASAN_RUN

Set to 1 when sanitizers are enabled to skip valgrind runs (optional, default 0).

PPC_IGNORE_TEST_TIME_LIMIT

Set to 1 to disable test time limits (optional, default 0).

The execution mode is selected with --running-type. The most common modes are threads for shared-memory backends and processes for MPI based tests. performance mode runs performance benchmarks.

Example usage:

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"

Additional MPI arguments can be supplied with --additional-mpi-args when running in processes mode.