Рекомендации по участию в разработке
Общение
Если у вас есть вопрос, нужна интерактивная помощь в устранении неполадок или хочется пообщаться с другими пользователями Patroni, присоединяйтесь к каналу #patroni в PostgreSQL Slack .
Сообщение об ошибках
Перед сообщением об ошибке обязательно воспроизведите её в последней версии Patroni. Также проверьте, не зарегистрирована ли проблема в нашем трекере .
Запуск тестов
Требования для запуска тестов behave:
- Должны быть установлены пакеты PostgreSQL, включая модули contrib .
- Двоичные файлы PostgreSQL должны быть доступны в
PATH. Возможно, их потребуется добавить командой наподобиеPATH=/usr/lib/postgresql/11/bin:\$PATH python -m behave. - Для тестирования с внешними DCS, например Etcd, Consul и Zookeeper, необходимо установить пакеты и запустить соответствующие службы, принимающие незашифрованные и незащищённые соединения на localhost и порту по умолчанию. Для Etcd или Consul набор тестов behave может запустить службы самостоятельно, если двоичные файлы доступны в
PATH.
Установите зависимости:
После установки всех зависимостей можно запускать различные наборы тестов:
Тестирование с tox
Для запуска тестов tox нужно установить только одну зависимость помимо Python:
Для запуска тестов behave также необходим docker.
Конфигурация Tox в tox.ini содержит «окружения» для следующих задач:
- lint: проверка кода Python с помощью
flake8 - test: модульные тесты со всеми доступными интерпретаторами Python через
pytest; создаёт отчёты XML или HTML при обнаружении TTY - dep: обнаружение конфликтов зависимостей пакетов с помощью
pipdeptree - type: статическая проверка типов с помощью
pyright - black: форматирование кода с помощью
black - docker-build: сборка образа docker для окружения
behave - docker-cmd: выполнение произвольной команды с созданным образом
- docker-behave-etcd: запуск tox для тестов behave с созданным образом
- py*behave: запуск behave с доступными интерпретаторами Python без docker, хотя именно он вызывается внутри контейнеров docker
- docs: сборка документации с помощью
sphinx
Запуск tox
Чтобы запустить список окружений по умолчанию — dep, lint, test и docs, выполните:
Окружения test можно запустить с меткой `test`:
Тесты docker behave можно запустить с меткой `behave`:
Аналогично, документация имеет метку docs.
Остальные окружения запускаются по соответствующим именам:
Частичные списки окружений можно выбирать с помощью factors. Например, для запуска всех окружений Python 3.10:
Это эквивалентно запуску всех перечисленных ниже окружений:
Все настроенные сочетания окружений tox (>=v4) можно вывести так:
Окружения test и docs после завершения задания пытаются открыть выходные файлы HTML, если tox запущен в активном терминале. Это удобно разработчику при локальном запуске: на mac выполняется open, а в Linux — xdg-open. Чтобы использовать другую команду, задайте переменной окружения OPEN_CMD имя или путь команды. Неудача этого шага не приводит к неудаче всего запуска. Чтобы отключить возможность, задайте OPEN_CMD команду-пустышку :.
Тесты behave
Тесты behave с -m behave собирают образы docker на основе версий PG_MAJOR с 11 по 16, а затем запускают все тесты behave. Это может занять много времени, поэтому область проверки можно ограничить выбранной версией Postgres, определённым набором возможностей или шагами.
Чтобы указать версию postgres, включите полное имя нужного зависимого окружения сборки образа, а затем имя окружения behave. Например, для Postgres 14 используйте:
Чтобы протестировать определённую возможность, можно передать behave позиционные аргументы. Следующая команда запускает сценарий тестирования функции watchdog со всеми версиями Postgres.
Разумеется, оба подхода можно сочетать.
Отправка pull request
- Создайте ответвление репозитория, разработайте и протестируйте изменения кода.
- Отразите изменения в пользовательской документации.
- Отправьте pull request с ясным описанием цели изменений. При необходимости добавьте ссылку на существующую проблему.
Обратная связь по pull request будет предоставлена как можно скорее.
Успешной разработки Patroni ;-)