X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=installers%2Fcharm%2Fosm-mon%2Ftests%2Fintegration%2Ftest_charm.py;h=e14e191e7331fadce57e633f51d146d7c87570e3;hb=refs%2Fchanges%2F56%2F13556%2F27;hp=caf8deda518877bfd55784864d89c5ae3294acb1;hpb=38f5d5834d610e011b3608fe8cc34b927775204a;p=osm%2Fdevops.git diff --git a/installers/charm/osm-mon/tests/integration/test_charm.py b/installers/charm/osm-mon/tests/integration/test_charm.py index caf8deda..e14e191e 100644 --- a/installers/charm/osm-mon/tests/integration/test_charm.py +++ b/installers/charm/osm-mon/tests/integration/test_charm.py @@ -52,7 +52,7 @@ APPS = [KAFKA_APP, ZOOKEEPER_APP, KEYSTONE_APP, MONGO_DB_APP, MARIADB_APP, PROME @pytest.mark.abort_on_fail -async def test_mon_is_deployed(ops_test: OpsTest): +async def test_mon_and_other_charms_are_idle(ops_test: OpsTest): charm = await ops_test.build_charm(".") resources = {"mon-image": METADATA["resources"]["mon-image"]["upstream-source"]} @@ -71,11 +71,40 @@ async def test_mon_is_deployed(ops_test: OpsTest): await ops_test.run(*shlex.split(cmd), check=True) async with ops_test.fast_forward(): - await ops_test.model.wait_for_idle( - apps=APPS, - ) + await ops_test.model.wait_for_idle(apps=APPS) + + +@pytest.mark.abort_on_fail +async def test_mon_is_blocked_due_to_missing_grafana_config(ops_test: OpsTest): assert ops_test.model.applications[MON_APP].status == "blocked" unit = ops_test.model.applications[MON_APP].units[0] + assert ( + unit.workload_status_message == "need grafana-url, grafana-user, grafana-password config" + ) + + await ops_test.model.applications[MON_APP].set_config({"grafana-url": "new_value"}) + async with ops_test.fast_forward(): + await ops_test.model.wait_for_idle(apps=[MON_APP], status="blocked") + assert unit.workload_status_message == "need grafana-user, grafana-password config" + + await ops_test.model.applications[MON_APP].set_config({"grafana-password": "new_value"}) + async with ops_test.fast_forward(): + await ops_test.model.wait_for_idle(apps=[MON_APP], status="blocked") + assert unit.workload_status_message == "need grafana-user config" + + await ops_test.model.applications[MON_APP].set_config({"grafana-user": "new_value"}) + async with ops_test.fast_forward(): + await ops_test.model.wait_for_idle(apps=[MON_APP], status="blocked") + + assert unit.workload_status_message == "Invalid value for grafana-url config: 'new_value'" + await ops_test.model.applications[MON_APP].set_config({"grafana-url": "http://valid:92"}) + + +@pytest.mark.abort_on_fail +async def test_mon_is_blocked_due_to_missing_relations(ops_test: OpsTest): + async with ops_test.fast_forward(): + await ops_test.model.wait_for_idle(apps=[MON_APP], status="blocked") + unit = ops_test.model.applications[MON_APP].units[0] assert unit.workload_status_message == "need kafka, mongodb, prometheus, keystone relations" logger.info("Adding relations for other components") @@ -91,10 +120,7 @@ async def test_mon_is_deployed(ops_test: OpsTest): await ops_test.model.add_relation(MON_APP, PROMETHEUS_APP) async with ops_test.fast_forward(): - await ops_test.model.wait_for_idle( - apps=APPS, - status="active", - ) + await ops_test.model.wait_for_idle(apps=APPS, status="active") @pytest.mark.abort_on_fail @@ -129,19 +155,13 @@ async def test_mon_blocks_without_relation(ops_test: OpsTest, relation_to_remove assert unit.workload_status_message == f"need {relation_to_remove} relation" await ops_test.model.add_relation(MON_APP, relation_to_remove) async with ops_test.fast_forward(): - await ops_test.model.wait_for_idle( - apps=APPS, - status="active", - ) + await ops_test.model.wait_for_idle(apps=APPS, status="active") @pytest.mark.abort_on_fail async def test_mon_action_debug_mode_disabled(ops_test: OpsTest): async with ops_test.fast_forward(): - await ops_test.model.wait_for_idle( - apps=APPS, - status="active", - ) + await ops_test.model.wait_for_idle(apps=APPS, status="active") logger.info("Running action 'get-debug-mode-information'") action = ( await ops_test.model.applications[MON_APP] @@ -187,9 +207,7 @@ async def test_mon_integration_vca(ops_test: OpsTest): ), ) async with ops_test.fast_forward(): - await ops_test.model.wait_for_idle( - apps=[VCA_APP], - ) + await ops_test.model.wait_for_idle(apps=[VCA_APP]) controllers = (Path.home() / ".local/share/juju/controllers.yaml").read_text() accounts = (Path.home() / ".local/share/juju/accounts.yaml").read_text() public_key = (Path.home() / ".local/share/juju/ssh/juju_id_rsa.pub").read_text() @@ -202,13 +220,7 @@ async def test_mon_integration_vca(ops_test: OpsTest): } ) async with ops_test.fast_forward(): - await ops_test.model.wait_for_idle( - apps=APPS + [VCA_APP], - status="active", - ) + await ops_test.model.wait_for_idle(apps=APPS + [VCA_APP], status="active") await ops_test.model.add_relation(MON_APP, VCA_APP) async with ops_test.fast_forward(): - await ops_test.model.wait_for_idle( - apps=APPS + [VCA_APP], - status="active", - ) + await ops_test.model.wait_for_idle(apps=APPS + [VCA_APP], status="active")