aboutsummaryrefslogtreecommitdiffstats
path: root/yardstick/benchmark/scenarios/compute
diff options
context:
space:
mode:
authorQiLiang <liangqi1@huawei.com>2015-10-21 12:29:53 +0000
committerQiLiang <liangqi1@huawei.com>2015-10-27 03:34:28 +0000
commit2e1094d4aee93180126d3ce86db3cc7df2e87bc5 (patch)
tree221e98fd325ff6fcb4fbbb3e656a3789f3a77342 /yardstick/benchmark/scenarios/compute
parent884926d05f435217c7dac038b3bfbd7e9d05826b (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/compute')
-rw-r--r--yardstick/benchmark/scenarios/compute/cyclictest.py41
-rw-r--r--yardstick/benchmark/scenarios/compute/lmbench.py46
-rw-r--r--yardstick/benchmark/scenarios/compute/perf.py49
3 files changed, 76 insertions, 60 deletions
diff --git a/yardstick/benchmark/scenarios/compute/cyclictest.py b/yardstick/benchmark/scenarios/compute/cyclictest.py
index 595986f8a..e8fc63cf7 100644
--- a/yardstick/benchmark/scenarios/compute/cyclictest.py
+++ b/yardstick/benchmark/scenarios/compute/cyclictest.py
@@ -54,8 +54,9 @@ class Cyclictest(base.Scenario):
TARGET_SCRIPT = "cyclictest_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):
@@ -63,13 +64,14 @@ class Cyclictest(base.Scenario):
self.target_script = pkg_resources.resource_filename(
"yardstick.benchmark.scenarios.compute",
Cyclictest.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.debug("user:%s, host:%s", user, host)
+ LOG.debug("user:%s, host:%s", user, ip)
print "key_filename:" + key_filename
- self.client = ssh.SSH(user, host, key_filename=key_filename)
+ self.client = ssh.SSH(user, ip, key_filename=key_filename)
self.client.wait(timeout=600)
# copy script to host
@@ -78,14 +80,14 @@ class Cyclictest(base.Scenario):
self.setup_done = True
- def run(self, args, result):
+ def run(self, result):
"""execute the benchmark"""
default_args = "-m -n -q"
if not self.setup_done:
self.setup()
- options = args["options"]
+ options = self.scenario_cfg["options"]
affinity = options.get("affinity", 1)
interval = options.get("interval", 1000)
priority = options.get("priority", 99)
@@ -104,13 +106,14 @@ class Cyclictest(base.Scenario):
result.update(json.loads(stdout))
- if "sla" in args:
+ if "sla" in self.scenario_cfg:
sla_error = ""
for t, latency in result.items():
- if 'max_%s_latency' % t not in args['sla']:
+ if 'max_%s_latency' % t not in self.scenario_cfg['sla']:
continue
- sla_latency = int(args['sla']['max_%s_latency' % t])
+ sla_latency = int(self.scenario_cfg['sla'][
+ 'max_%s_latency' % t])
latency = int(latency)
if latency > sla_latency:
sla_error += "%s latency %d > sla:max_%s_latency(%d); " % \
@@ -123,16 +126,16 @@ def _test():
key_filename = pkg_resources.resource_filename("yardstick.resources",
"files/yardstick_key")
ctx = {
- "host": "192.168.50.28",
- "user": "root",
- "key_filename": key_filename
+ "host": {
+ "ip": "10.229.47.137",
+ "user": "root",
+ "key_filename": key_filename
+ }
}
logger = logging.getLogger("yardstick")
logger.setLevel(logging.DEBUG)
- cyclictest = Cyclictest(ctx)
-
options = {
"affinity": 2,
"interval": 100,
@@ -150,8 +153,10 @@ def _test():
"options": options,
"sla": sla
}
+ result = {}
- result = cyclictest.run(args)
+ cyclictest = Cyclictest(args, ctx)
+ cyclictest.run(result)
print result
if __name__ == '__main__':
diff --git a/yardstick/benchmark/scenarios/compute/lmbench.py b/yardstick/benchmark/scenarios/compute/lmbench.py
index d2558c936..03caff525 100644
--- a/yardstick/benchmark/scenarios/compute/lmbench.py
+++ b/yardstick/benchmark/scenarios/compute/lmbench.py
@@ -35,8 +35,9 @@ class Lmbench(base.Scenario):
TARGET_SCRIPT = "lmbench_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):
@@ -44,12 +45,13 @@ class Lmbench(base.Scenario):
self.target_script = pkg_resources.resource_filename(
"yardstick.benchmark.scenarios.compute",
Lmbench.TARGET_SCRIPT)
- user = self.context.get("user", "ubuntu")
- 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", "ubuntu")
+ 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
@@ -58,13 +60,13 @@ class Lmbench(base.Scenario):
self.setup_done = True
- def run(self, args, result):
+ def run(self, result):
"""execute the benchmark"""
if not self.setup_done:
self.setup()
- options = args['options']
+ options = self.scenario_cfg['options']
stride = options.get('stride', 128)
stop_size = options.get('stop_size', 16)
@@ -75,11 +77,10 @@ class Lmbench(base.Scenario):
if status:
raise RuntimeError(stderr)
- result.update(json.loads(stdout))
-
- if "sla" in args:
+ result.update({"latencies": json.loads(stdout)})
+ if "sla" in self.scenario_cfg:
sla_error = ""
- sla_max_latency = int(args['sla']['max_latency'])
+ sla_max_latency = int(self.scenario_cfg['sla']['max_latency'])
for t_latency in result:
latency = t_latency['latency']
if latency > sla_max_latency:
@@ -92,20 +93,23 @@ def _test():
"""internal test function"""
key_filename = pkg_resources.resource_filename('yardstick.resources',
'files/yardstick_key')
- ctx = {'host': '172.16.0.137',
- 'user': 'ubuntu',
- 'key_filename': key_filename
- }
+ ctx = {
+ 'host': {
+ 'ip': '10.229.47.137',
+ 'user': 'root',
+ 'key_filename': key_filename
+ }
+ }
logger = logging.getLogger('yardstick')
logger.setLevel(logging.DEBUG)
- p = Lmbench(ctx)
-
options = {'stride': 128, 'stop_size': 16}
-
args = {'options': options}
- result = p.run(args)
+ result = {}
+
+ p = Lmbench(args, ctx)
+ p.run(result)
print result
if __name__ == '__main__':
diff --git a/yardstick/benchmark/scenarios/compute/perf.py b/yardstick/benchmark/scenarios/compute/perf.py
index 281bd8e0c..f408e9cb4 100644
--- a/yardstick/benchmark/scenarios/compute/perf.py
+++ b/yardstick/benchmark/scenarios/compute/perf.py
@@ -36,20 +36,22 @@ class Perf(base.Scenario):
TARGET_SCRIPT = 'perf_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):
"""scenario setup"""
self.target_script = pkg_resources.resource_filename(
'yardstick.benchmark.scenarios.compute', Perf.TARGET_SCRIPT)
- user = self.context.get('user', 'ubuntu')
- 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', 'ubuntu')
+ 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
@@ -58,13 +60,13 @@ class Perf(base.Scenario):
self.setup_done = True
- def run(self, args, result):
+ def run(self, result):
"""execute the benchmark"""
if not self.setup_done:
self.setup()
- options = args['options']
+ options = self.scenario_cfg['options']
events = options.get('events', ['task-clock'])
events_string = ""
@@ -72,7 +74,8 @@ class Perf(base.Scenario):
events_string += event + " "
# 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:
@@ -98,10 +101,11 @@ class Perf(base.Scenario):
result.update(json.loads(stdout))
- if "sla" in args:
- metric = args['sla']['metric']
- exp_val = args['sla']['expected_value']
- smaller_than_exp = 'smaller_than_expected' in args['sla']
+ if "sla" in self.scenario_cfg:
+ metric = self.scenario_cfg['sla']['metric']
+ exp_val = self.scenario_cfg['sla']['expected_value']
+ smaller_than_exp = 'smaller_than_expected' \
+ in self.scenario_cfg['sla']
if metric not in result:
assert False, "Metric (%s) not found." % metric
@@ -118,20 +122,23 @@ def _test():
"""internal test function"""
key_filename = pkg_resources.resource_filename('yardstick.resources',
'files/yardstick_key')
- ctx = {'host': '172.16.0.137',
- 'user': 'ubuntu',
- 'key_filename': key_filename
- }
+ ctx = {
+ 'host': {
+ 'ip': '10.229.47.137',
+ 'user': 'root',
+ 'key_filename': key_filename
+ }
+ }
logger = logging.getLogger('yardstick')
logger.setLevel(logging.DEBUG)
- p = Perf(ctx)
-
options = {'load': True}
args = {'options': options}
+ result = {}
- result = p.run(args)
+ p = Perf(args, ctx)
+ p.run(result)
print result
if __name__ == '__main__':