Adding HA support for Grafana charm
Change-Id: Icac0e15706e49cb387ac6686cb26337b98a5a319
Signed-off-by: David Garcia <david.garcia@canonical.com>
diff --git a/installers/charm/grafana/tests/test_charm.py b/installers/charm/grafana/tests/test_charm.py
index 714730d..3bfd69c 100644
--- a/installers/charm/grafana/tests/test_charm.py
+++ b/installers/charm/grafana/tests/test_charm.py
@@ -23,6 +23,7 @@
import sys
from typing import NoReturn
import unittest
+from unittest.mock import patch
from charm import GrafanaCharm
from ops.model import ActiveStatus, BlockedStatus
@@ -69,10 +70,49 @@
# Assertions
self.assertIsInstance(self.harness.charm.unit.status, ActiveStatus)
+ @patch("opslib.osm.interfaces.grafana.GrafanaCluster.set_initial_password")
+ def test_with_db_relation_and_prometheus(self, _) -> NoReturn:
+ self.initialize_prometheus_relation()
+ self.initialize_mysql_relation()
+ self.assertIsInstance(self.harness.charm.unit.status, ActiveStatus)
+
+ @patch("opslib.osm.interfaces.grafana.GrafanaCluster.set_initial_password")
+ def test_with_db_config_and_prometheus(self, _) -> NoReturn:
+ self.initialize_prometheus_relation()
+ self.initialize_mysql_config()
+ self.assertIsInstance(self.harness.charm.unit.status, ActiveStatus)
+
def test_with_prometheus(
self,
) -> NoReturn:
"""Test to see if prometheus relation is updated."""
+ self.initialize_prometheus_relation()
+ # Verifying status
+ self.assertIsInstance(self.harness.charm.unit.status, BlockedStatus)
+
+ def test_with_db_config(self) -> NoReturn:
+ "Test with mysql config"
+ self.initialize_mysql_config()
+ # Verifying status
+ self.assertIsInstance(self.harness.charm.unit.status, BlockedStatus)
+
+ @patch("opslib.osm.interfaces.grafana.GrafanaCluster.set_initial_password")
+ def test_with_db_relations(self, _) -> NoReturn:
+ "Test with relations"
+ self.initialize_mysql_relation()
+ # Verifying status
+ self.assertIsInstance(self.harness.charm.unit.status, BlockedStatus)
+
+ def test_exception_db_relation_and_config(
+ self,
+ ) -> NoReturn:
+ "Test with relations and config. Must throw exception"
+ self.initialize_mysql_config()
+ self.initialize_mysql_relation()
+ # Verifying status
+ self.assertIsInstance(self.harness.charm.unit.status, BlockedStatus)
+
+ def initialize_prometheus_relation(self):
relation_id = self.harness.add_relation("prometheus", "prometheus")
self.harness.add_relation_unit(relation_id, "prometheus/0")
self.harness.update_relation_data(
@@ -81,8 +121,25 @@
{"hostname": "prometheus", "port": 9090},
)
- # Verifying status
- self.assertNotIsInstance(self.harness.charm.unit.status, BlockedStatus)
+ def initialize_mysql_config(self):
+ self.harness.update_config(
+ {"mysql_uri": "mysql://grafana:$grafanapw$@host:3606/db"}
+ )
+
+ def initialize_mysql_relation(self):
+ relation_id = self.harness.add_relation("db", "mysql")
+ self.harness.add_relation_unit(relation_id, "mysql/0")
+ self.harness.update_relation_data(
+ relation_id,
+ "mysql/0",
+ {
+ "host": "mysql",
+ "port": 3306,
+ "user": "mano",
+ "password": "manopw",
+ "root_password": "rootmanopw",
+ },
+ )
if __name__ == "__main__":