diff --git a/tests/basic_deployment.py b/tests/basic_deployment.py index 98b7dbf..7156129 100644 --- a/tests/basic_deployment.py +++ b/tests/basic_deployment.py @@ -353,6 +353,15 @@ class SwiftProxyBasicDeployment(OpenStackAmuletDeployment): assert u.wait_on_action(pause_action_id), "Pause action failed." self._assert_services(should_run=False) + status, message = u.status_get(self.swift_proxy_sentry) + if status != "maintenance": + msg = ("Pause action failed to move unit to maintenance " + "status (got {} instead)".format(status)) + amulet.raise_status(amulet.FAIL, msg=msg) + if message != "Paused. Use 'resume' action to resume normal service.": + msg = ("Pause action failed to set message" + " (got {} instead)".format(message)) + amulet.raise_status(amulet.FAIL, msg=msg) def _test_resume(self): u.log.info("Testing resume action") @@ -362,6 +371,15 @@ class SwiftProxyBasicDeployment(OpenStackAmuletDeployment): assert u.wait_on_action(resume_action_id), "Resume action failed." self._assert_services(should_run=True) + status, message = u.status_get(self.swift_proxy_sentry) + if status != "active": + msg = ("Resume action failed to move unit to active " + "status (got {} instead)".format(status)) + amulet.raise_status(amulet.FAIL, msg=msg) + if message != "": + msg = ("Resume action failed to clear message" + " (got {} instead)".format(message)) + amulet.raise_status(amulet.FAIL, msg=msg) def test_z_pause_resume_actions(self): """Pause and then resume swift-proxy.""" diff --git a/tests/charmhelpers/contrib/amulet/utils.py b/tests/charmhelpers/contrib/amulet/utils.py index 7816c93..1179997 100644 --- a/tests/charmhelpers/contrib/amulet/utils.py +++ b/tests/charmhelpers/contrib/amulet/utils.py @@ -594,3 +594,12 @@ class AmuletUtils(object): output = _check_output(command, universal_newlines=True) data = json.loads(output) return data.get(u"status") == "completed" + + def status_get(self, unit): + """Return the current service status of this unit.""" + raw_status, return_code = unit.run( + "status-get --format=json --include-data") + if return_code != 0: + return ("unknown", "") + status = json.loads(raw_status) + return (status["status"], status["message"])