class ScenarioGeneral(base.Scenario): """Support orchestrating general HA test scenarios.""" __scenario_type__ = "GeneralHA" def __init__(self, scenario_cfg, context_cfg): LOG.debug("scenario_cfg:%s context_cfg:%s", scenario_cfg, context_cfg) self.scenario_cfg = scenario_cfg self.context_cfg = context_cfg self.intermediate_variables = {} def setup(self): self.director = Director(self.scenario_cfg, self.context_cfg) def run(self, result): steps = self.scenario_cfg["options"]["steps"] orderedSteps = sorted(steps, key=lambda x: x['index']) for step in orderedSteps: LOG.debug("\033[94m running step: %s .... \033[0m", orderedSteps.index(step) + 1) try: actionPlayer = self.director.createActionPlayer( step['actionType'], step['actionKey'], self.intermediate_variables) actionPlayer.action() actionRollbacker = self.director.createActionRollbacker( step['actionType'], step['actionKey']) if actionRollbacker: self.director.executionSteps.append(actionRollbacker) except Exception: # pylint: disable=broad-except LOG.exception("Exception") LOG.debug( "\033[91m exception when running step: %s .... \033[0m", orderedSteps.index(step)) break finally: pass self.director.stopMonitors() verify_result = self.director.verify() service_not_found = False for k, v in self.director.data.items(): if v == 0: verify_result = False service_not_found = True LOG.info( "\033[92m The service process (%s) not found in the host environment", k) result['sla_pass'] = 1 if verify_result else 0 self.director.store_result(result) self.verify_SLA(verify_result, ("a service process was not found in the host " "environment" if service_not_found else "Director.verify() failed")) def teardown(self): self.director.knockoff()
class ScenarioGeneral(base.Scenario): """Support orchestrating general HA test scenarios.""" __scenario_type__ = "GeneralHA" def __init__(self, scenario_cfg, context_cfg): LOG.debug("scenario_cfg:%s context_cfg:%s", scenario_cfg, context_cfg) self.scenario_cfg = scenario_cfg self.context_cfg = context_cfg def setup(self): self.director = Director(self.scenario_cfg, self.context_cfg) def run(self, result): steps = self.scenario_cfg["options"]["steps"] orderedSteps = sorted(steps, key=lambda x: x['index']) for step in orderedSteps: LOG.debug("\033[94m running step: %s .... \033[0m", orderedSteps.index(step) + 1) try: actionPlayer = self.director.createActionPlayer( step['actionType'], step['actionKey']) actionPlayer.action() actionRollbacker = self.director.createActionRollbacker( step['actionType'], step['actionKey']) if actionRollbacker: self.director.executionSteps.append(actionRollbacker) except Exception: LOG.exception("Exception") LOG.debug( "\033[91m exception when running step: %s .... \033[0m", orderedSteps.index(step)) break finally: pass self.director.stopMonitors() verify_result = self.director.verify() for k, v in self.director.data.items(): if v == 0: result['sla_pass'] = 0 verify_result = False LOG.info("\033[92m The service process not found in the host \ envrioment, the HA test case NOT pass") if verify_result: result['sla_pass'] = 1 LOG.info("\033[92m Congratulations, " "the HA test case PASS! \033[0m") else: result['sla_pass'] = 0 LOG.info("\033[91m Aoh, the HA test case FAIL," "please check the detail debug information! \033[0m") def teardown(self): self.director.knockoff()
class ScenarioGeneral(base.Scenario): """Support orchestrating general HA test scenarios.""" __scenario_type__ = "GeneralHA" def __init__(self, scenario_cfg, context_cfg): LOG.debug( "scenario_cfg:%s context_cfg:%s" % (scenario_cfg, context_cfg)) self.scenario_cfg = scenario_cfg self.context_cfg = context_cfg def setup(self): self.director = Director(self.scenario_cfg, self.context_cfg) def run(self, args): steps = self.scenario_cfg["options"]["steps"] orderedSteps = sorted(steps, key=lambda x: x['index']) for step in orderedSteps: LOG.debug( "\033[94m running step: {0} .... \033[0m" .format(orderedSteps.index(step)+1)) try: actionPlayer = self.director.createActionPlayer( step['actionType'], step['actionKey']) actionPlayer.action() actionRollbacker = self.director.createActionRollbacker( step['actionType'], step['actionKey']) if actionRollbacker: self.director.executionSteps.append(actionRollbacker) except Exception, e: LOG.debug(e.message) traceback.print_exc() LOG.debug( "\033[91m exception when running step: {0} .... \033[0m" .format(orderedSteps.index(step))) break finally:
class ScenarioGeneral(base.Scenario): """Support orchestrating general HA test scenarios.""" __scenario_type__ = "GeneralHA" def __init__(self, scenario_cfg, context_cfg): LOG.debug("scenario_cfg:%s context_cfg:%s", scenario_cfg, context_cfg) self.scenario_cfg = scenario_cfg self.context_cfg = context_cfg def setup(self): self.director = Director(self.scenario_cfg, self.context_cfg) def run(self, args): steps = self.scenario_cfg["options"]["steps"] orderedSteps = sorted(steps, key=lambda x: x['index']) for step in orderedSteps: LOG.debug("\033[94m running step: %s .... \033[0m", orderedSteps.index(step) + 1) try: actionPlayer = self.director.createActionPlayer( step['actionType'], step['actionKey']) actionPlayer.action() actionRollbacker = self.director.createActionRollbacker( step['actionType'], step['actionKey']) if actionRollbacker: self.director.executionSteps.append(actionRollbacker) except Exception: LOG.exception("Exception") LOG.debug( "\033[91m exception when running step: {0} .... \033[0m". format(orderedSteps.index(step))) break finally: pass self.director.stopMonitors() if self.director.verify(): LOG.debug("\033[92m congratulations, " "the test cases scenario is pass! \033[0m") else: LOG.debug("\033[91m aoh,the test cases scenario failed," "please check the detail debug information! \033[0m") def teardown(self): self.director.knockoff()
def setup(self): self.director = Director(self.scenario_cfg, self.context_cfg)
def test_director_all_successful(self, mock_checer, mock_opertion, mock_attacker, mock_monitor): ins = Director(self.scenario_cfg, self.ctx) opertion_action = ins.createActionPlayer("operation", "service-status") attacker_action = ins.createActionPlayer("attacker", "kill-process") checker_action = ins.createActionPlayer("resultchecker", "process-checker") monitor_action = ins.createActionPlayer("monitor", "service-status") opertion_rollback = ins.createActionRollbacker("operation", "service-status") attacker_rollback = ins.createActionRollbacker("attacker", "kill-process") ins.executionSteps.append(opertion_rollback) ins.executionSteps.append(attacker_rollback) opertion_action.action() attacker_action.action() checker_action.action() monitor_action.action() attacker_rollback.rollback() opertion_rollback.rollback() ins.stopMonitors() ins.verify() ins.knockoff()
def test_director_get_wrong_item(self, mock_checer, mock_opertion, mock_attacker, mock_monitor): ins = Director(self.scenario_cfg, self.ctx) ins.createActionPlayer("wrong_type", "wrong_key") ins.createActionRollbacker("wrong_type", "wrong_key")