check-patroni/tests/test_cluster_node_count.py
benoit 021b572e53 Redefining cluster_node_count using Patroni 3.0.4's new status indicators
Previously, replica nodes were labeled with a `running` state. As a
result, our checks were based on nodes marked as `running` through
the `--running-[warning|critical]` options.

However, with the recent changes in Patroni 3.0.4, replica nodes now
carry a `streaming` state. This shift in terminology calls for an
adjustment in our approach. A new state, `healthy_member`, has been
introduced to encompass both `running` and `streaming` nodes.

Key Modifications:

* The existing `--running-[warning|critical]` option is now designated
  as `--healthy-[warning|critical]`.
* Introduction of the `healthy_member` perfdata, which serves as the
  reference point for the aforementioned options.
* Updates to documentation, help messages, and tests.
2023-08-21 11:59:55 +02:00

116 lines
2.7 KiB
Python

from click.testing import CliRunner
from pytest_mock import MockerFixture
from check_patroni.cli import main
from .tools import my_mock
def test_cluster_node_count_ok(mocker: MockerFixture) -> None:
runner = CliRunner()
my_mock(mocker, "cluster_node_count_ok", 200)
result = runner.invoke(
main, ["-e", "https://10.20.199.3:8008", "cluster_node_count"]
)
assert result.exit_code == 0
def test_cluster_node_count_ok_with_thresholds(mocker: MockerFixture) -> None:
runner = CliRunner()
my_mock(mocker, "cluster_node_count_ok", 200)
result = runner.invoke(
main,
[
"-e",
"https://10.20.199.3:8008",
"cluster_node_count",
"--warning",
"@0:1",
"--critical",
"@2",
"--healthy-warning",
"@2",
"--healthy-critical",
"@0:1",
],
)
assert result.exit_code == 0
def test_cluster_node_count_running_warning(mocker: MockerFixture) -> None:
runner = CliRunner()
my_mock(mocker, "cluster_node_count_running_warning", 200)
result = runner.invoke(
main,
[
"-e",
"https://10.20.199.3:8008",
"cluster_node_count",
"--healthy-warning",
"@2",
"--healthy-critical",
"@0:1",
],
)
assert result.exit_code == 1
def test_cluster_node_count_running_critical(mocker: MockerFixture) -> None:
runner = CliRunner()
my_mock(mocker, "cluster_node_count_running_critical", 200)
result = runner.invoke(
main,
[
"-e",
"https://10.20.199.3:8008",
"cluster_node_count",
"--healthy-warning",
"@2",
"--healthy-critical",
"@0:1",
],
)
assert result.exit_code == 2
def test_cluster_node_count_warning(mocker: MockerFixture) -> None:
runner = CliRunner()
my_mock(mocker, "cluster_node_count_warning", 200)
result = runner.invoke(
main,
[
"-e",
"https://10.20.199.3:8008",
"cluster_node_count",
"--warning",
"@2",
"--critical",
"@0:1",
],
)
assert result.exit_code == 1
def test_cluster_node_count_critical(mocker: MockerFixture) -> None:
runner = CliRunner()
my_mock(mocker, "cluster_node_count_critical", 200)
result = runner.invoke(
main,
[
"-e",
"https://10.20.199.3:8008",
"cluster_node_count",
"--warning",
"@2",
"--critical",
"@0:1",
],
)
assert result.exit_code == 2