貢献するガイドライン

チャット

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:$PATH python -m behave`のようなものを使用してパスに追加する必要がある場合があります。

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

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

# 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テストを実行するには、1つの依存関係Python以外をインストールするだけで済みます

pip install tox>=4

`behave`テストを実行する場合は、dockerのインストールも必要です。

`tox.ini`のTox構成には、次のタスクを実行するための/"environments/"があります。

  • 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インタープリターで動作を実行しますDockerなし、ただし、これはDockerコンテナ内で呼ばれるものです。

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

ランニングtox

デフォルトのenvリストを実行するにはdep、lint、test、およびdocs、実行するだけです。

tox

`test`環境は、ラベル`test`で実行できます。

tox -m test

`behave`のdockerテストは、ラベル`behave`を使用して実行できます。

tox -m behave

同様に、docsには`docs`ラベルがあります。

他のすべてのenvは、それぞれのenv名で実行できます。

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

`factors`を使用して部分的なenvリストを選択することもできます。たとえば、Python 3.10のすべてのenvを実行したい場合

tox -f py310

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

$ 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

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

OPEN_CMD=: tox -m docs

動作テスト

`-m behave`を使用した動作テストは、PG_MAJORバージョン11〜16に基づいてDockerイメージをビルドし、すべての動作テストを実行します。これは実行にかなりの時間がかかる場合があるため、Postgresの選択したバージョン、または特定の機能セットまたは手順にスコープを制限することができます。

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

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

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

tox -m behave -- features/watchdog.feature

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

プルリクエストの寄稿

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

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

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

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

ハッピーパトロニのハッキング ;-)