container_name = "mon"
service_name = "mon"
-url_configs = ["grafana-url", "prometheus-url"]
@pytest.fixture
harness.cleanup()
-def _set_mandatory_config(harness: Harness):
+def _set_grafana_config(harness: Harness):
harness.update_config(
{
- "grafana-url": "http://grafana:1234",
+ "grafana-url": "http://prometheus:1234",
"grafana-user": "user",
"grafana-password": "password",
- "prometheus-url": "http://someurl",
}
)
-def test_default_config_is_invalid_charm_is_blocked(harness: Harness):
+def test_default_grafana_config_is_invalid_charm_is_blocked(harness: Harness):
harness.charm.on.config_changed.emit()
- assert isinstance(harness.charm.unit.status, BlockedStatus)
+ assert type(harness.charm.unit.status) == BlockedStatus
assert (
- "need grafana-url, grafana-user, grafana-password, prometheus-url config"
+ "need grafana-url, grafana-user, grafana-password config"
== harness.charm.unit.status.message
)
def test_missing_relations(harness: Harness):
- _set_mandatory_config(harness)
+ _set_grafana_config(harness)
harness.charm.on.config_changed.emit()
- assert isinstance(harness.charm.unit.status, BlockedStatus)
+ assert type(harness.charm.unit.status) == BlockedStatus
assert all(
relation in harness.charm.unit.status.message
for relation in ["mongodb", "kafka", "prometheus", "keystone"]
)
-@pytest.mark.parametrize("config_param", url_configs)
-def test_url_config_without_schema_block_status(harness: Harness, config_param):
- _set_mandatory_config(harness)
- _add_relations(harness)
- harness.update_config({config_param: "foo.com"})
- assert isinstance(harness.charm.unit.status, BlockedStatus)
- assert (
- f"Invalid value for {config_param} config: 'foo.com'" in harness.charm.unit.status.message
+def test_grafana_url_without_schema_block_status(harness: Harness):
+ harness.update_config(
+ {"grafana-url": "foo.com", "grafana-user": "user", "grafana-password": "password"}
)
+ assert type(harness.charm.unit.status) == BlockedStatus
+ assert "Invalid value for grafana-url config: 'foo.com'" == harness.charm.unit.status.message
-@pytest.mark.parametrize("config_param", url_configs)
-def test_url_config_with_port_without_schema_block_status(harness: Harness, config_param):
- _set_mandatory_config(harness)
- _add_relations(harness)
- harness.update_config({config_param: "foo.com:9090"})
- assert isinstance(harness.charm.unit.status, BlockedStatus)
+def test_grafana_url_with_port_without_schema_block_status(harness: Harness):
+ harness.update_config(
+ {"grafana-url": "foo.com:9090", "grafana-user": "user", "grafana-password": "password"}
+ )
+ assert type(harness.charm.unit.status) == BlockedStatus
assert (
- f"Invalid value for {config_param} config: 'foo.com:9090'"
- in harness.charm.unit.status.message
+ "Invalid value for grafana-url config: 'foo.com:9090'" == harness.charm.unit.status.message
)
-@pytest.mark.parametrize("config_param", url_configs)
-def test_url_config_without_port_is_valid(harness: Harness, config_param):
- _set_mandatory_config(harness)
+def test_grafana_url_without_port_is_valid(harness: Harness):
_add_relations(harness)
- harness.update_config({config_param: "http://foo"})
+ harness.update_config(
+ {"grafana-url": "http://foo", "grafana-user": "user", "grafana-password": "password"}
+ )
assert harness.charm.unit.status == ActiveStatus()
-@pytest.mark.parametrize("config_param", url_configs)
-def test_url_config_with_port_is_valid(harness: Harness, config_param):
- _set_mandatory_config(harness)
+def test_grafana_url_with_port_is_valid(harness: Harness):
_add_relations(harness)
- harness.update_config({config_param: "http://foo:90"})
+ harness.update_config(
+ {"grafana-url": "http://foo:90", "grafana-user": "user", "grafana-password": "password"}
+ )
assert harness.charm.unit.status == ActiveStatus()
def test_ready(harness: Harness):
- _set_mandatory_config(harness)
+ _set_grafana_config(harness)
_add_relations(harness)
assert harness.charm.unit.status == ActiveStatus()
def test_container_stops_after_relation_broken(harness: Harness):
- _set_mandatory_config(harness)
+ _set_grafana_config(harness)
harness.charm.on[container_name].pebble_ready.emit(container_name)
container = harness.charm.unit.get_container(container_name)
relation_ids = _add_relations(harness)
harness.update_relation_data(relation_id, "kafka", {"host": "kafka", "port": "9092"})
relation_ids.append(relation_id)
# Add prometheus relation
- relation_id = harness.add_relation("metrics-endpoint", "prometheus")
+ relation_id = harness.add_relation("prometheus", "prometheus")
+ harness.add_relation_unit(relation_id, "prometheus/0")
+ harness.update_relation_data(
+ relation_id, "prometheus", {"hostname": "prometheus", "port": "9090"}
+ )
relation_ids.append(relation_id)
# Add keystone relation
relation_id = harness.add_relation("keystone", "keystone")