ガイドラインへの貢献

おしゃべり

If you have a question, looking for an interactive troubleshooting help or want to chat with other Patroni users, join us on channel #patroni in the PostgreSQL Slack.

バグの報告

バグを報告する前に、必ず reproduce it with the latest Patroni version を確認してください。また、問題が reproduce it with the latest Patroni version _にすでに存在するかどうかを再確認してください。

テストの実行

動作テストを実行するための要件:

  1. contrib _モジュールを含むPostgreSQLパッケージをインストールする必要があります。

  2. PostgreSQLバイナリは「PATH」で使用できる必要があります。`PATH=/usr/lib/postgresql/11/bin:$PATHpython-mbehave`のようなパスにそれらを追加する必要がある場合があります。

  3. 外部DCS(Etcd、Consul、Zookeeperなど)でテストしたい場合は、パッケージをインストールし、それぞれのサービスを実行し、ローカルホストとデフォルトポートで暗号化されていない/保護されていない接続を受け入れる必要があります。EtcdまたはConsulの場合、「PATH」でバイナリが利用可能な場合、動作テストスイートはそれらを起動できます。

依存関係をインストールします。

# You may want to use Virtualenv or specify pip3.
pip install -r requirements.txt
pip install -r requirements.dev.txt

すべての依存関係をインストールしたら、さまざまなテストスイートを実行できます。

# You may want to use Virtualenv or specify python3.

# Run flake8 to check syntax and formatting:
python setup.py flake8

# Run the pytest suite in tests/:
python setup.py test

# Moreover, you may want to run tests in different scopes for debugging purposes,
# the -s option include print output during test execution.
# Tests in pytest typically follow the pattern: FILEPATH::CLASSNAME::TESTNAME.
pytest -s tests/test_api.py
pytest -s tests/test_api.py::TestRestApiHandler
pytest -s tests/test_api.py::TestRestApiHandler::test_do_GET

# Run the behave (https://behave.readthedocs.io/en/latest/) test suite in features/;
# modify DCS as desired (raft has no dependencies so is the easiest to start with):
DCS=raft python -m behave

Toxを使った検査

toxテストを実行するには、依存関係(Python以外)を1つインストールするだけで済みます。

pip install tox>=4

「behave」テストを実行したい場合は、dockerもインストールする必要があります。

`tox.ini`のTox設定には、次のタスクを実行するための「環境」が含まれています。

  • lint:`flake8`を使用したPythonコードlint

  • test:`pytest`を使用して利用可能なすべてのPythonインタープリターの単体テストを行い、TTYが検出された場合はXMLレポートまたはHTMLレポートを生成します。

  • dep:`pipdeptree`を使用してパッケージの依存関係の競合を検出します

  • type:`pyright`による静的型チェック

  • black:`black`を使用したコードの書式設定

  • docker-build:「behave」環境に使用されるdockerイメージをビルドします。

  • docker-cmd:上記のイメージで任意のコマンドを実行します

  • docker-behave-etcd:上記の画像を使用して動作テスト用のtoxを実行します

  • py*behave:利用可能なPythonインタープリターを使用してbehaveを実行します(dockerは使用しませんが、これはdockerコンテナー内で呼ばれるものです)。

  • docs:`sphinx`を使用してドキュメントをビルドします

ランニングトックス

デフォルトの環境リストを実行するには;dep、lint、test、docsの場合は、次を実行するだけです。

tox

「test」環境は、「test」というラベルを付けて実行できます。

tox -m test

「behave」のDockerテストは、「behave」というラベルを使用して実行できます。

tox -m behave

同様に、docsには「docs」というラベルが付いています。

他のすべての環境は、それぞれの環境名を使用して実行できます。

tox -e lint
tox -e py39-test-lin

「factors」を使用して部分的な環境リストを選択することもできます。たとえば、Python3.10のすべての環境を実行したい場合:

tox -f py310

これは、以下にリストされているすべての環境を実行することと同等です。

$ tox -l -f py310
py310-test-lin
py310-test-mac
py310-test-win
py310-type-lin
py310-type-mac
py310-type-win
py310-behave-etcd-lin
py310-behave-etcd-win
py310-behave-etcd-mac

次のように、tox(>=v4)を使用して環境の構成済みの組み合わせをすべてリストできます。

tox l

toxがアクティブな端末で実行されている場合、環境`test`と`docs`はジョブの完了時にHTML出力ファイルを開こうとします。これは、この環境をローカルで実行する開発者の利益を目的としています。Macでは「open」を実行し、Linuxでは「xdg-open」を実行しようとします。別のコマンドを使用するには、環境変数`OPEN_CMD`をコマンドの名前またはパスに設定します。このステップが失敗しても、実行全体は失敗しません。この機能を無効にしたい場合は、環境変数`OPEN_CMD`をno-opコマンド`:`に設定します。

OPEN_CMD=: tox -m docs

動作テスト

「-mbehave」を指定した動作テストは、PG_MAJORバージョン11~16に基づいてDockerイメージを構築し、すべての動作テストを実行します。これは実行に非常に長い時間がかかる可能性があるため、範囲をPostgresの選択したバージョン、または特定の機能セットまたはステップに制限することをお勧めします。

postgresのバージョンを指定するには、必要な依存イメージビルド環境の完全名と動作環境名を含めます。たとえば、Postgres14が必要な場合は、次を使用します。

tox -e pg14-docker-build,pg14-docker-behave-etcd-lin

一方、特定の機能をテストしたい場合は、位置引数を渡して動作させることができます。これにより、PostgresのすべてのバージョンでWatchdog動作機能のテストシナリオが実行されます。

tox -m behave -- features/watchdog.feature

もちろん、この2つを組み合わせることもできます。

プルリクエストの提供

  1. リポジトリをフォークし、コードの変更を開発してテストします。

  2. ユーザードキュメントの変更を反映します。

  3. 変更の目的を明確に説明したプルリクエストを送信します。必要に応じて、既存の問題をリンクします。

プルリクエストに関するフィードバックはできるだけ早く受け取れます。

パトローニのハッキングを楽しんでください;-)