diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a67ad5e..28b9a33 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -40,29 +40,70 @@ install check_patroni. You can then add a server to the supervision and watch the graphs in grafana. It's in the `vagrant` directory. A vagrant file can be found in [this -repository](https://github.com/ioguix/vagrant-patroni to generate a patroni/etcd +repository](https://github.com/ioguix/vagrant-patroni) to generate a patroni/etcd setup. The `README.md` can be geneated with `./docs/make_readme.sh`. - ## Executing Tests -The pytests are in `./tests` and use a moker to provide a json response instead -of having to call the patroni API. To manually run the tests use one of these -commands : +Crafting repeatable tests using a live Patroni cluster can be intricate. To +simplify the development process, interactions with Patroni's API are +substituted with a mock function that yields an HTTP return code and a JSON +object outlining the cluster's status. The JSON files containing this +information are housed in the `./tests/json` directory. -``` -pytest ./tests # just the tests -tox # pytests for all supported version of python + mypy + flake8 -tox -e py # pytests + mypy + flake8 or the default version of python -``` +An important consideration is that there is a potential drawback: if the JSON +data is incorrect or if modifications have been made to Patroni without +corresponding updates to the tests documented here, the tests might still pass +erroneously. The tests are executed automatically for each PR using the ci (see `.github/workflow/lint.yml` and `.github/workflow/tests.yml`). +Running the tests manually: + +* Using patroni's nominal replica state of `streaming` (since v3.0.4): + + ```bash + pytest ./tests + ``` + +* Using patroni's nominal replica state of `running` (before v3.0.4): + + ```bash + pytest --use-old-replica-state ./tests + ``` + +* Using tox: + + ```bash + tox -e lint # mypy + flake8 + black + isort ° codespell + tox # pytests and "lint" tests for all supported version of python + tox -e py # pytests and "lint" tests for the default version of python + ``` + +Please note that when dealing with any service that checks the state of a node +in patroni's `cluster` endpoint, the corresponding JSON test file must be added +in `./tests/tools.py`. + +A bash script, `check_patroni.sh`, is provided to facilitate testing all +services on a Patroni endpoint (`./vagrant/check_patroni.sh`). It requires one +parameter: the endpoint URL that will be used as the argument for the +`-e/--endpoints` option of `check_patroni`. This script essentially compiles a +list of service calls and executes them sequentially in a bash script. It +creates a state file in the directory from which you run the script. + +Here's an example usage: + +```bash +./vagrant/check_patroni.sh http://10.20.30.51:8008 +``` + ## Release +Update the Changelog. + The package is generated and uploaded to pypi when a `v*` tag is created (see `.github/workflow/publish.yml`). diff --git a/README.md b/README.md index 2b42c31..af726eb 100644 --- a/README.md +++ b/README.md @@ -115,62 +115,6 @@ Several options are available: * `--cert_file`: your certificate or the concatenation of your certificate and private key * `--key_file`: your private key (optional) -## Tests - -Crafting repeatable tests using a live Patroni cluster can be intricate. To -simplify the development process, interactions with Patroni's API are -substituted with a mock function that yields an HTTP return code and a JSON -object outlining the cluster's status. The JSON files containing this -information are housed in the ./tests/json directory. - -An important consideration is that there is a potential drawback: if the JSON -data is incorrect or if modifications have been made to Patroni without -corresponding updates to the tests documented here, the tests might still pass -erroneously. - -To run the tests: - -1. Clone the `check_patroni` repository, create a virtual environment, and - install the script: - - ```bash - git clone https://github.com/dalibo/check_patroni.git - cd check_patroni - python -m venv .venv - . .venv/bin/activate - pip install -e check_patroni[test] - ``` - -2) Run the tests - - - Using patroni's nominal replica state of `streaming` (since v3.0.4): - - ```bash - pytest ./tests - ``` - - - Using patroni's nominal replica state of `running` (before v3.0.4): - - ```bash - pytest --use-old-replica-state ./tests - ``` - -Please note that when dealing with any service that checks the state of a node -in patroni's `cluster` endpoint, the corresponding JSON test file must be added -in `./test/tools.py`. - -A bash script, `check_patroni.sh`, is provided to facilitate testing all -services on a Patroni endpoint (`./vagrant/check_patroni.sh`). It requires one -parameter: the endpoint URL that will be used as the argument for the -`-e/--endpoints` option of `check_patroni`. This script essentially compiles a -list of service calls and executes them sequentially in a bash script. - -Here's an example usage: - -```bash -./vagrant/check_patroni.sh http://10.20.30.51:8008 -``` - ## Cluster services diff --git a/docs/make_readme.sh b/docs/make_readme.sh index 2df0c37..8c5dad9 100755 --- a/docs/make_readme.sh +++ b/docs/make_readme.sh @@ -40,9 +40,10 @@ check_patroni is licensed under PostgreSQL license. $ pip install git+https://github.com/dalibo/check_patroni.git ``` -Links: -* [pip & centos 7](https://linuxize.com/post/how-to-install-pip-on-centos-7/) -* [pip & debian10](https://linuxize.com/post/how-to-install-pip-on-debian-10/) +check_patroni works on python 3.6, we keep it that way because patroni also +supports it and there are still lots of RH 7 variants around. That being said +python 3.6 has been EOL for age and there is no support for it in the github +CI. ## Support @@ -96,62 +97,6 @@ Several options are available: * `--cert_file`: your certificate or the concatenation of your certificate and private key * `--key_file`: your private key (optional) -## Tests - -Crafting repeatable tests using a live Patroni cluster can be intricate. To -simplify the development process, interactions with Patroni's API are -substituted with a mock function that yields an HTTP return code and a JSON -object outlining the cluster's status. The JSON files containing this -information are housed in the ./tests/json directory. - -An important consideration is that there is a potential drawback: if the JSON -data is incorrect or if modifications have been made to Patroni without -corresponding updates to the tests documented here, the tests might still pass -erroneously. - -To run the tests: - -1. Clone the `check_patroni` repository, create a virtual environment, and - install the script: - - ```bash - git clone https://github.com/dalibo/check_patroni.git - cd check_patroni - python -m venv .venv - . .venv/bin/activate - pip install -e check_patroni[test] - ``` - -2) Run the tests - - - Using patroni's nominal replica state of `streaming` (since v3.0.4): - - ```bash - pytest ./tests - ``` - - - Using patroni's nominal replica state of `running` (before v3.0.4): - - ```bash - pytest --use-old-replica-state ./tests - ``` - -Please note that when dealing with any service that checks the state of a node -in patroni's `cluster` endpoint, the corresponding JSON test file must be added -in `./test/tools.py`. - -A bash script, `check_patroni.sh`, is provided to facilitate testing all -services on a Patroni endpoint (`./vagrant/check_patroni.sh`). It requires one -parameter: the endpoint URL that will be used as the argument for the -`-e/--endpoints` option of `check_patroni`. This script essentially compiles a -list of service calls and executes them sequentially in a bash script. - -Here's an example usage: - -```bash -./vagrant/check_patroni.sh http://10.20.30.51:8008 -``` - _EOF_ readme readme "## Cluster services"