投稿ガイドライン

Patroniに貢献したいですか?イェーイ-これがその方法です!

おしゃべり

Just want to chat with other Patroni users? Looking for interactive troubleshooting help? Join us on channel #patroni in the PostgreSQL Slack.

テストの実行

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

  1. PostgreSQLパッケージをインストールする必要があります。

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

  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

# 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`でドキュメントをビルドする

ランニングトックス

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

tox

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

tox -m test

`behave`ドッカーテストは、ラベル`behave`で実行できます。

tox -m behave

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

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

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

`factors`を使用して、部分的なenvリストを選択することもできます。たとえば、python3.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

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

OPEN_CMD=: tox -m docs

動作テスト

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

postgresのバージョンを指定するには、必要な依存イメージビルド環境のフルネームと動作環境名を含めます。たとえば、Postgres15が必要な場合:

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

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

tox -m behave -- features/watchdog.feature

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

問題の報告

パトニについて質問がある場合、または使用中に問題がある場合は、問題を提出する前に README をお読みください。また、 README _の現在の問題を再確認してください。

プルリクエストを貢献する

  1. 関連する問題にコメントを送信するか、提案された変更を説明する新しい問題を作成します。

  2. フォークを行い、コード変更を開発およびテストします。

  3. ドキュメントを含める

  4. プルリクエストを送信します。

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

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