Фреймворк для тестирования пайплайнов YTsaurus Flow

Страница описывает настройку рабочей машины и низкоуровневые параметры для контрибьюторов, дорабатывающих сам Flow и запускающих его интеграционный тестовый набор. Авторам пайплайнов, которые тестируют свой код, см. Тестирование (C++), Тестирование (Java), Тестирование (Go) и Тестирование (Python) — там собраны параметры запуска и приёмы, нужные для пайплайн-тестов.

Подготовка окружения

Тестовый набор Flow ловит падения процессов Flow и достаёт из coredump'ов бектрейсы. Чтобы это работало, на машине должен быть включён сбор coredump'ов:

# Временно (лучше прописать в ~/.bashrc).
ulimit -c unlimited

И добавление PID процесса в имя файла coredump:

# Временно — действует до перезагрузки:
sudo sysctl -w kernel.core_uses_pid=1

# Постоянно:
echo "kernel.core_uses_pid=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Без core_uses_pid=1 возможны странности вроде многократного извлечения бектрейсов из одного coredump.

Параметры тестов Flow

Помимо общих параметров (см. Тестирование (C++)), при работе над самим Flow полезны параметры, влияющие на внутреннее поведение фреймворка:

Параметр

По умолчанию

Значения

Действие

DUMP_BACKTRACES_IF_HANGS

0

0, 1

Записывать на диск бектрейсы потоков и файберов запущенных процессов Flow при непойманном WaitFailed во время остановки.

FLOW_BINARY_PATH

абсолютный путь

Использовать фиксированный бинарь пайплайна — например, собранный с thread-санитайзером.

ERROR_BACKTRACE_ENRICHER_LEVEL

enabled_for_not_native_errors

см. enum

Управляет добавлением бектрейсов к ошибкам в логах.

Примеры:

ya make -A --test-param ERROR_BACKTRACE_ENRICHER_LEVEL=enabled_for_all
ya make -A --test-param DUMP_BACKTRACES_IF_HANGS=1