X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2Fdevops.git;a=blobdiff_plain;f=installers%2Fcharm%2Fgrafana%2Ftests%2Ftest_charm.py;h=3bfd69c787028e323cef0ee4d45ea8b6a9ac09df;hp=5db3edab8ff695c1ac297bafbbb0dd0a5cfd5def;hb=28dfe7e17f5381a41b96d0608672e86f74005cdb;hpb=3cc0316794cc75ecffdf2b969b4ad98d0dd7e826 diff --git a/installers/charm/grafana/tests/test_charm.py b/installers/charm/grafana/tests/test_charm.py index 5db3edab..3bfd69c7 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 @@ -42,7 +43,7 @@ class TestCharm(unittest.TestCase): "max_file_size": 0, "ingress_whitelist_source_range": "", "tls_secret_name": "", - "site_url": "https://grafana.192.168.100.100.xip.io", + "site_url": "https://grafana.192.168.100.100.nip.io", "cluster_issuer": "vault-issuer", "osm_dashboards": True, } @@ -69,10 +70,49 @@ class TestCharm(unittest.TestCase): # 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 @@ class TestCharm(unittest.TestCase): {"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__":