Beispiel #1
0
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()
Beispiel #2
0
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()
Beispiel #3
0
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:
Beispiel #4
0
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()
Beispiel #5
0
 def setup(self):
     self.director = Director(self.scenario_cfg, self.context_cfg)
Beispiel #6
0
    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()
Beispiel #7
0
 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")
 def setup(self):
     self.director = Director(self.scenario_cfg, self.context_cfg)
Beispiel #9
0
 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")
Beispiel #10
0
    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()