diff options
author | QiLiang <liangqi1@huawei.com> | 2015-10-21 12:29:53 +0000 |
---|---|---|
committer | QiLiang <liangqi1@huawei.com> | 2015-10-27 03:34:28 +0000 |
commit | 2e1094d4aee93180126d3ce86db3cc7df2e87bc5 (patch) | |
tree | 221e98fd325ff6fcb4fbbb3e656a3789f3a77342 /yardstick/benchmark/scenarios/storage | |
parent | 884926d05f435217c7dac038b3bfbd7e9d05826b (diff) |
Heat context code refactor part 2
Heat context code refactor to cater for the evolution of the
Yardstick framework.
Refactor runner_cfg host/target info handle, as specified at
https://etherpad.opnfv.org/p/yardstick_framework
step 4. Get general Context info (use Context.get).
Before this refactor host and target vm must have the same user name
and ssh key, that is not general enough for later extension.
test_case.yaml do NOT need to change.
JIRA: YARDSTICK-168
Change-Id: I5cfe868f3c6f633214ef550bc9676fe1de0709db
Signed-off-by: QiLiang <liangqi1@huawei.com>
Diffstat (limited to 'yardstick/benchmark/scenarios/storage')
-rw-r--r-- | yardstick/benchmark/scenarios/storage/fio.py | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/yardstick/benchmark/scenarios/storage/fio.py b/yardstick/benchmark/scenarios/storage/fio.py index af90b0703..8969472e9 100644 --- a/yardstick/benchmark/scenarios/storage/fio.py +++ b/yardstick/benchmark/scenarios/storage/fio.py @@ -48,8 +48,9 @@ class Fio(base.Scenario): TARGET_SCRIPT = "fio_benchmark.bash" - def __init__(self, context): - self.context = context + def __init__(self, scenario_cfg, context_cfg): + self.scenario_cfg = scenario_cfg + self.context_cfg = context_cfg self.setup_done = False def setup(self): @@ -57,12 +58,13 @@ class Fio(base.Scenario): self.target_script = pkg_resources.resource_filename( "yardstick.benchmark.scenarios.storage", Fio.TARGET_SCRIPT) - user = self.context.get("user", "root") - host = self.context.get("host", None) - key_filename = self.context.get("key_filename", "~/.ssh/id_rsa") + host = self.context_cfg["host"] + user = host.get("user", "root") + ip = host.get("ip", None) + key_filename = host.get("key_filename", "~/.ssh/id_rsa") - LOG.info("user:%s, host:%s", user, host) - self.client = ssh.SSH(user, host, key_filename=key_filename) + LOG.info("user:%s, host:%s", user, ip) + self.client = ssh.SSH(user, ip, key_filename=key_filename) self.client.wait(timeout=600) # copy script to host @@ -71,7 +73,7 @@ class Fio(base.Scenario): self.setup_done = True - def run(self, args, result): + def run(self, result): """execute the benchmark""" default_args = "-ioengine=libaio -direct=1 -group_reporting " \ "-numjobs=1 -time_based --output-format=json" @@ -79,7 +81,7 @@ class Fio(base.Scenario): if not self.setup_done: self.setup() - options = args["options"] + options = self.scenario_cfg["options"] filename = options.get("filename", "/home/ec2-user/data.raw") bs = options.get("bs", "4k") iodepth = options.get("iodepth", "1") @@ -87,7 +89,8 @@ class Fio(base.Scenario): ramp_time = options.get("ramp_time", 20) name = "yardstick-fio" # if run by a duration runner - duration_time = self.context.get("duration", None) + duration_time = self.scenario_cfg["runner"].get("duration", None) \ + if "runner" in self.scenario_cfg else None # if run by an arithmetic runner arithmetic_time = options.get("duration", None) if duration_time: @@ -122,20 +125,20 @@ class Fio(base.Scenario): result["write_iops"] = raw_data["jobs"][0]["write"]["iops"] result["write_lat"] = raw_data["jobs"][0]["write"]["lat"]["mean"] - if "sla" in args: + if "sla" in self.scenario_cfg: sla_error = "" for k, v in result.items(): - if k not in args['sla']: + if k not in self.scenario_cfg['sla']: continue if "lat" in k: # For lattency small value is better - max_v = float(args['sla'][k]) + max_v = float(self.scenario_cfg['sla'][k]) if v > max_v: sla_error += "%s %f > sla:%s(%f); " % (k, v, k, max_v) else: # For bandwidth and iops big value is better - min_v = int(args['sla'][k]) + min_v = int(self.scenario_cfg['sla'][k]) if v < min_v: sla_error += "%s %d < " \ "sla:%s(%d); " % (k, v, k, min_v) @@ -148,16 +151,16 @@ def _test(): key_filename = pkg_resources.resource_filename("yardstick.resources", "files/yardstick_key") ctx = { - "host": "10.0.0.101", - "user": "ec2-user", - "key_filename": key_filename + "host": { + "ip": "10.229.47.137", + "user": "root", + "key_filename": key_filename + } } logger = logging.getLogger("yardstick") logger.setLevel(logging.DEBUG) - fio = Fio(ctx) - options = { "filename": "/home/ec2-user/data.raw", "bs": "4k", @@ -166,9 +169,11 @@ def _test(): "ramp_time": 1, "duration": 10 } + result = {} args = {"options": options} - result = fio.run(args) + fio = Fio(args, ctx) + fio.run(result) print result if __name__ == '__main__': |