aboutsummaryrefslogtreecommitdiffstats
path: root/yardstick
diff options
context:
space:
mode:
authorHans Feldt <hans.feldt@ericsson.com>2015-06-16 09:27:31 +0200
committerHans Feldt <hans.feldt@ericsson.com>2015-06-16 13:56:12 +0000
commitfa7bf41e69214d73b756b68fb58ec57dc6e208be (patch)
tree75d16a5164319ea2fce0e0fdd014e4dc60e6d826 /yardstick
parentdd5c9319cfc3f4dd7bfce2073d29d03d646ac65c (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.py15
-rwxr-xr-xyardstick/main.py37
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)