check-patroni/CHANGELOG.md
Denis Laxalde 903b83e211 Use fake HTTP server for the Patroni API in tests
We introduce a patroni_api fixture, defined in tests/conftest.py, which
sets up an HTTP server serving files in a temporary directory. The
server is itself defined by the PatroniAPI class; it has a 'routes()'
context manager method to be used in actual tests to setup expected
responses based on specified JSON files.

We set up some logging in order to improve debugging.

The direct advantage of this is that PatroniResource.rest_api() method
is now covered by the test suite.

Coverage before this commit:

  Name                        Stmts   Miss  Cover
  -----------------------------------------------
  check_patroni/__init__.py       3      0   100%
  check_patroni/cli.py          193     18    91%
  check_patroni/cluster.py      113      0   100%
  check_patroni/convert.py       23      5    78%
  check_patroni/node.py         146      1    99%
  check_patroni/types.py         50     23    54%
  -----------------------------------------------
  TOTAL                         528     47    91%

and after this commit:

  Name                        Stmts   Miss  Cover
  -----------------------------------------------
  check_patroni/__init__.py       3      0   100%
  check_patroni/cli.py          193     18    91%
  check_patroni/cluster.py      113      0   100%
  check_patroni/convert.py       23      5    78%
  check_patroni/node.py         146      1    99%
  check_patroni/types.py         50      9    82%
  -----------------------------------------------
  TOTAL                         528     33    94%

In actual test functions, we either invoke patroni_api.routes() to
configure which JSON file(s) should be served for each endpoint, or we
define dedicated fixtures (e.g. cluster_config_has_changed()) to
configure this for several test functions or the whole module.

The 'old_replica_state' parametrized fixture is used when needed to
adjust such fixtures, e.g. in cluster_has_replica_ok(), to modify the
JSON content using cluster_api_set_replica_running() (previously in
tests/tools.py, now in tests/__init__.py).

The dependency on pytest-mock is no longer needed.
2023-10-06 10:40:29 +02:00

2 KiB

Change log

Unreleased

Added

Fixed

Misc

  • Improve test coverage by running an HTTP server to fake the Patroni API (#55 by @dlax).

check_patroni 1.0.0 - 2023-08-28

Check patroni is now tagged as Production/Stable.

Added

  • Add sync_standby as a valid replica type for cluster_has_replica. (contributed by @mattpoel)
  • Add info and options (--sync-warning and --sync-critical) about sync replica to cluster_has_replica.
  • Add a new service cluster_has_scheduled_action to warn of any scheduled switchover or restart.
  • Add options to node_is_replica to check specifically for a synchronous (--is-sync) or asynchronous node (--is-async).
  • Add standby-leader as a valid leader type for cluster_has_leader.
  • Add a new service node_is_leader to check if a node is a leader (which includes standby leader nodes)

Fixed

  • Fix the node_is_alive check. (#31)
  • Fix the cluster_has_replica and cluster_node_count checks to account for the new replica state streaming introduced in v3.0.4 (#28, reported by @log1-c)

Misc

  • Create CHANGELOG.md
  • Add tests for the output of the scripts in addition to the return code
  • Documentation in CONTRIBUTING.md

check_patroni 0.2.0 - 2023-03-20

Added

  • Add a --save option when state files are used
  • Modify -e/--endpoints to allow a comma separated list of endpoints (#21, reported by @lihnjo)
  • Use requests instead of urllib3 (with extensive help from @dlax)
  • Change the way logging is handled (with extensive help from @dlax)

Fix

  • Reverse the test for node_is_pending
  • SSL handling

Misc

  • Several doc Fix and Updates
  • Use spellcheck and isort
  • Remove tests for python 3.6
  • Add python tests for python 3.11

check_patroni 0.1.1 - 2022-07-15

The initial release covers the following checks :

  • check a cluster for
    • configuration change
    • presence of a leader
    • presence of a replica
    • maintenance status
  • check a node for
    • liveness
    • pending restart status
    • primary status
    • replica status
    • tl change
    • patroni version