diff options
author | Hans Feldt <hans.feldt@ericsson.com> | 2015-06-16 09:27:31 +0200 |
---|---|---|
committer | Hans Feldt <hans.feldt@ericsson.com> | 2015-06-16 13:56:12 +0000 |
commit | fa7bf41e69214d73b756b68fb58ec57dc6e208be (patch) | |
tree | 75d16a5164319ea2fce0e0fdd014e4dc60e6d826 /yardstick | |
parent | dd5c9319cfc3f4dd7bfce2073d29d03d646ac65c (diff) |
Add support for single server ping test
A simple test case is added that will ping an external server on
the internet. See samples/ping-ext-ip.yaml
Change-Id: I15eb3cb6ab9e5c1cf280f2aade2bf4c9646d6cd4
JIRA: -
Signed-off-by: Hans Feldt <hans.feldt@ericsson.com>
Diffstat (limited to 'yardstick')
-rw-r--r-- | yardstick/benchmark/scenarios/networking/ping.py | 15 | ||||
-rwxr-xr-x | yardstick/main.py | 37 |
2 files changed, 35 insertions, 17 deletions
diff --git a/yardstick/benchmark/scenarios/networking/ping.py b/yardstick/benchmark/scenarios/networking/ping.py index a027c817a..1b87c7460 100644 --- a/yardstick/benchmark/scenarios/networking/ping.py +++ b/yardstick/benchmark/scenarios/networking/ping.py @@ -40,13 +40,17 @@ class Ping(base.Scenario): def run(self, args): """execute the benchmark""" - self.options = "-s %s" % args['options'].get("packetsize", '56') - self.ipaddr = args.get("ipaddr", '127.0.0.1') + if "options" in args: + options = "-s %s" % args['options'].get("packetsize", '56') + else: + options = "" - LOG.debug("ping %s %s", self.options, self.ipaddr) + destination = args.get("ipaddr", '127.0.0.1') + + LOG.debug("ping '%s' '%s'", options, destination) exit_status, stdout, stderr = self.connection.execute( - "/bin/sh -s {0} {1}".format(self.ipaddr, self.options), + "/bin/sh -s {0} {1}".format(options, destination), stdin=open(self.target_script, "r")) if exit_status != 0: @@ -56,6 +60,7 @@ class Ping(base.Scenario): if "sla" in args: sla_max_rtt = int(args["sla"]["max_rtt"]) - assert rtt <= sla_max_rtt, "rtt %f > sla_max_rtt" % rtt + assert rtt <= sla_max_rtt, "rtt %f > sla:max_rtt(%f)" % \ + (rtt, sla_max_rtt) return rtt diff --git a/yardstick/main.py b/yardstick/main.py index 942b46be9..8f017431b 100755 --- a/yardstick/main.py +++ b/yardstick/main.py @@ -43,6 +43,7 @@ import sys import yaml import atexit import pkg_resources +import ipaddress from yardstick.benchmark.context.model import Context from yardstick.benchmark.runners import base as base_runner @@ -93,6 +94,15 @@ def atexit_handler(): context.undeploy() +def is_ip_addr(addr): + '''check if string addr is an IP address''' + try: + ipaddress.ip_address(addr) + return True + except ValueError: + return False + + def run_one_scenario(scenario_cfg, output_file): '''run one scenario using context''' key_filename = pkg_resources.resource_filename( @@ -107,19 +117,22 @@ def run_one_scenario(scenario_cfg, output_file): runner_cfg['output_filename'] = output_file if "target" in scenario_cfg: - target = Context.get_server(scenario_cfg["target"]) - - # get public IP for target server, some scenarios require it - if target.public_ip: - runner_cfg['target'] = target.public_ip - - # TODO scenario_cfg["ipaddr"] is bad naming - if host.context != target.context: - # target is in another context, get its public IP - scenario_cfg["ipaddr"] = target.public_ip + if is_ip_addr(scenario_cfg["target"]): + scenario_cfg["ipaddr"] = scenario_cfg["target"] else: - # target is in the same context, get its private IP - scenario_cfg["ipaddr"] = target.private_ip + target = Context.get_server(scenario_cfg["target"]) + + # get public IP for target server, some scenarios require it + if target.public_ip: + runner_cfg['target'] = target.public_ip + + # TODO scenario_cfg["ipaddr"] is bad naming + if host.context != target.context: + # target is in another context, get its public IP + scenario_cfg["ipaddr"] = target.public_ip + else: + # target is in the same context, get its private IP + scenario_cfg["ipaddr"] = target.private_ip runner = base_runner.Runner.get(runner_cfg) |