Integrate NBI and Prometheus
[osm/devops.git] / installers / charm / osm-nbi / tests / unit / test_charm.py
index b160419..af248bf 100644 (file)
@@ -42,21 +42,65 @@ def harness(mocker: MockerFixture):
     harness.cleanup()
 
 
+def _set_prometheus_config(harness: Harness):
+    harness.update_config({"prometheus-url": "http://prometheus:1234"})
+
+
+def test_default_config_prometheus_url_is_invalid_charm_is_blocked(harness: Harness):
+    harness.charm.on.config_changed.emit()
+    assert type(harness.charm.unit.status) == BlockedStatus
+    assert "need prometheus-url config" == harness.charm.unit.status.message
+
+
 def test_missing_relations(harness: Harness):
+    _set_prometheus_config(harness)
     harness.charm.on.config_changed.emit()
     assert type(harness.charm.unit.status) == BlockedStatus
     assert all(
         relation in harness.charm.unit.status.message
-        for relation in ["mongodb", "kafka", "prometheus", "keystone"]
+        for relation in ["mongodb", "kafka", "keystone"]
+    )
+
+
+def test_prometheus_url_without_schema_blocked_status(harness: Harness):
+    _add_relations(harness)
+    harness.update_config({"prometheus-url": "foo.com"})
+    assert type(harness.charm.unit.status) == BlockedStatus
+    assert (
+        "Invalid value for prometheus-url config: 'foo.com'" in harness.charm.unit.status.message
     )
 
 
+def test_prometheus_url_with_port_without_schema_blocked_status(harness: Harness):
+    _add_relations(harness)
+    harness.update_config({"prometheus-url": "foo.com:9090"})
+    assert type(harness.charm.unit.status) == BlockedStatus
+    assert (
+        "Invalid value for prometheus-url config: 'foo.com:9090'"
+        in harness.charm.unit.status.message
+    )
+
+
+def test_prometheus_url_without_port_is_valid(harness: Harness):
+    _add_relations(harness)
+    harness.update_config({"prometheus-url": "http://foo"})
+    assert harness.charm.unit.status == ActiveStatus()
+
+
+def test_prometheus_url_with_port_is_valid(harness: Harness):
+    _add_relations(harness)
+    harness.update_config({"prometheus-url": "http://foo:90"})
+    assert harness.charm.unit.status == ActiveStatus()
+
+
 def test_ready(harness: Harness):
+    _set_prometheus_config(harness)
     _add_relations(harness)
     assert harness.charm.unit.status == ActiveStatus()
 
 
 def test_container_stops_after_relation_broken(harness: Harness):
+    _set_prometheus_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)
@@ -67,6 +111,7 @@ def test_container_stops_after_relation_broken(harness: Harness):
 
 
 def test_nbi_relation_joined(harness: Harness):
+    _set_prometheus_config(harness)
     harness.set_leader(True)
     _add_relations(harness)
     relation_id = harness.add_relation("nbi", "ng-ui")
@@ -92,13 +137,6 @@ def _add_relations(harness: Harness):
     harness.add_relation_unit(relation_id, "kafka/0")
     harness.update_relation_data(relation_id, "kafka", {"host": "kafka", "port": "9092"})
     relation_ids.append(relation_id)
-    # Add prometheus relation
-    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")
     harness.add_relation_unit(relation_id, "keystone/0")