Skip to content

Commit

Permalink
Test metrics port config
Browse files Browse the repository at this point in the history
  • Loading branch information
addyess authored and HomayoonAlimohammadi committed Dec 9, 2024
1 parent 55c6ac2 commit 7e8477f
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/manifests_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ def _validate_metrics_port(metrics_ports: Dict[str, int]) -> None:
range_max = 65535
unique_ports = {}

for conf, value in metrics_ports.items():
for conf, value in sorted(metrics_ports.items()):
# -1 is default value hence skipped
if value == -1:
continue

if range_min <= value <= range_max:
if not (range_min <= value <= range_max):
raise InvalidMetricsPortError(
f"Invalid value for {conf}: {value}. Must be between {range_min} and {range_max}"
)
Expand Down
43 changes: 43 additions & 0 deletions tests/unit/test_manifests_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import unittest.mock as mock
from textwrap import dedent

import pytest
from lightkube.models.meta_v1 import ObjectMeta
from lightkube.resources.core_v1 import ConfigMap

Expand Down Expand Up @@ -70,3 +71,45 @@ def test_manifest_evaluation(caplog):

charm.config = {"auth": "1234", "mon_hosts": ["10.10.10.1", "10.10.10.2"], "fsid": "cluster"}
assert manifests.evaluate() is None


@pytest.mark.parametrize(
"config",
[
"metrics-port-cephfsplugin",
"metrics-port-cephfsplugin-provisioner",
"metrics-port-rbdplugin",
"metrics-port-rbdplugin-provisioner",
],
)
def test_metrics_ports_config(caplog, config):
caplog.set_level(logging.INFO)
charm = mock.MagicMock()
manifests = ConfigManifests(charm)
charm.config = {"auth": "1234", "mon_hosts": ["10.10.10.1", "10.10.10.2"], "fsid": "cluster"}

charm.config[config] = -1
assert manifests.evaluate() is None

charm.config[config] = 5000
assert manifests.evaluate() is None

charm.config[config] = 100
assert (
manifests.evaluate()
== f"Invalid metrics port: Invalid value for {config}: 100. Must be between 1024 and 65535"
)


def test_metrics_ports_config_duplicates(caplog):
caplog.set_level(logging.INFO)
charm = mock.MagicMock()
manifests = ConfigManifests(charm)
charm.config = {"auth": "1234", "mon_hosts": ["10.10.10.1", "10.10.10.2"], "fsid": "cluster"}

charm.config["metrics-port-cephfsplugin"] = 5000
charm.config["metrics-port-cephfsplugin-provisioner"] = 5000
assert (
manifests.evaluate()
== "Invalid metrics port: Value for metrics-port-cephfsplugin-provisioner: 5000 conflicts with metrics-port-cephfsplugin"
)

0 comments on commit 7e8477f

Please sign in to comment.