aboutsummaryrefslogtreecommitdiffstats
path: root/yardstick/benchmark/scenarios/availability/scenario_general.py
diff options
context:
space:
mode:
authorlihuan <lihuansse@tongji.edu.cn>2016-07-06 17:29:00 +0800
committerlihuan <lihuansse@tongji.edu.cn>2016-07-08 15:01:02 +0800
commit1eb35349d2bedacc75aff28b0883995794682395 (patch)
treedd402671a0dc52d8cf7a28385159693037689ec0 /yardstick/benchmark/scenarios/availability/scenario_general.py
parent55af4f473d60838b57b14670423717b7f2e901ea (diff)
Creating Director and related codes.
Add a new scenario type 'ScenarioGeneral' that support orchestrating general HA test scenarios. Director, ActionPlayer and RollbackPlayer are uesed to execute the test scenario (or test flow). JIRA: YARDSTICK-288 Change-Id: Ied2ccd4712f3c3efde6771bfa4538c1e9e137c11 Signed-off-by: lihuan <lihuansse@tongji.edu.cn>
Diffstat (limited to 'yardstick/benchmark/scenarios/availability/scenario_general.py')
-rw-r--r--yardstick/benchmark/scenarios/availability/scenario_general.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/yardstick/benchmark/scenarios/availability/scenario_general.py b/yardstick/benchmark/scenarios/availability/scenario_general.py
new file mode 100644
index 000000000..0a128aa09
--- /dev/null
+++ b/yardstick/benchmark/scenarios/availability/scenario_general.py
@@ -0,0 +1,68 @@
+##############################################################################
+# Copyright (c) 2016 Juan Qiu and others
+# juan_ qiu@tongji.edu.cn
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+import logging
+import traceback
+
+from yardstick.benchmark.scenarios import base
+from yardstick.benchmark.scenarios.availability.director import Director
+
+LOG = logging.getLogger(__name__)
+
+
+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:
+ 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()