summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dashboard/opnfv_yardstick_tc037.json2
-rw-r--r--dashboard/opnfv_yardstick_tc038.json2
-rw-r--r--dashboard/opnfv_yardstick_tc070.json2
-rw-r--r--dashboard/opnfv_yardstick_tc071.json2
-rw-r--r--dashboard/opnfv_yardstick_tc072.json2
-rw-r--r--yardstick/benchmark/scenarios/networking/ping.py35
-rw-r--r--yardstick/dispatcher/influxdb.py4
7 files changed, 35 insertions, 14 deletions
diff --git a/dashboard/opnfv_yardstick_tc037.json b/dashboard/opnfv_yardstick_tc037.json
index 366210503..85f7908b6 100644
--- a/dashboard/opnfv_yardstick_tc037.json
+++ b/dashboard/opnfv_yardstick_tc037.json
@@ -846,7 +846,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/dashboard/opnfv_yardstick_tc038.json b/dashboard/opnfv_yardstick_tc038.json
index bf068d5a9..65b97d626 100644
--- a/dashboard/opnfv_yardstick_tc038.json
+++ b/dashboard/opnfv_yardstick_tc038.json
@@ -566,7 +566,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/dashboard/opnfv_yardstick_tc070.json b/dashboard/opnfv_yardstick_tc070.json
index 152ecca24..c57d4194e 100644
--- a/dashboard/opnfv_yardstick_tc070.json
+++ b/dashboard/opnfv_yardstick_tc070.json
@@ -914,7 +914,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/dashboard/opnfv_yardstick_tc071.json b/dashboard/opnfv_yardstick_tc071.json
index defd6fada..009e0a173 100644
--- a/dashboard/opnfv_yardstick_tc071.json
+++ b/dashboard/opnfv_yardstick_tc071.json
@@ -994,7 +994,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/dashboard/opnfv_yardstick_tc072.json b/dashboard/opnfv_yardstick_tc072.json
index 2d330a05f..b8e9fa356 100644
--- a/dashboard/opnfv_yardstick_tc072.json
+++ b/dashboard/opnfv_yardstick_tc072.json
@@ -723,7 +723,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/yardstick/benchmark/scenarios/networking/ping.py b/yardstick/benchmark/scenarios/networking/ping.py
index 3bade73e2..e7d9beea8 100644
--- a/yardstick/benchmark/scenarios/networking/ping.py
+++ b/yardstick/benchmark/scenarios/networking/ping.py
@@ -24,6 +24,8 @@ LOG = logging.getLogger(__name__)
class Ping(base.Scenario):
"""Execute ping between two hosts
+ If ping error, RTT will be set to 999999
+
Parameters
packetsize - number of data bytes to send
type: int
@@ -33,6 +35,8 @@ class Ping(base.Scenario):
__scenario_type__ = "Ping"
+ PING_ERROR_RTT = 999999
+
TARGET_SCRIPT = 'ping_benchmark.bash'
def __init__(self, scenario_cfg, context_cfg):
@@ -60,6 +64,7 @@ class Ping(base.Scenario):
rtt_result = {}
ping_result = {"rtt": rtt_result}
+ sla_max_rtt = self.scenario_cfg.get("sla", {}).get("max_rtt")
for pos, dest in enumerate(dest_list):
if 'targets' in self.scenario_cfg:
@@ -76,20 +81,34 @@ class Ping(base.Scenario):
if exit_status != 0:
raise RuntimeError(stderr)
+ if isinstance(target_vm, dict):
+ target_vm_name = target_vm.get("name")
+ else:
+ target_vm_name = target_vm.split('.')[0]
if stdout:
- if isinstance(target_vm, dict):
- target_vm_name = target_vm.get("name")
- else:
- target_vm_name = target_vm.split('.')[0]
- rtt_result[target_vm_name] = float(stdout)
- if "sla" in self.scenario_cfg:
- sla_max_rtt = int(self.scenario_cfg["sla"]["max_rtt"])
+ rtt_result[target_vm_name] = float(stdout.strip())
+ # store result before potential AssertionError
+ result.update(utils.flatten_dict_key(ping_result))
+ if sla_max_rtt is not None:
+ sla_max_rtt = float(sla_max_rtt)
assert rtt_result[target_vm_name] <= sla_max_rtt,\
"rtt %f > sla: max_rtt(%f); " % \
(rtt_result[target_vm_name], sla_max_rtt)
else:
LOG.error("ping '%s' '%s' timeout", options, target_vm)
- result.update(utils.flatten_dict_key(ping_result))
+ # we need to specify a result to satisfy influxdb schema
+ # choose a very large number to inidcate timeout
+ # in this case choose an order of magnitude greater than the SLA
+ rtt_result[target_vm_name] = float(self.PING_ERROR_RTT)
+ # store result before potential AssertionError
+ result.update(utils.flatten_dict_key(ping_result))
+ if sla_max_rtt is not None:
+ raise AssertionError("packet dropped rtt {:f} > sla: max_rtt({:f})".format(
+ rtt_result[target_vm_name], sla_max_rtt))
+
+ else:
+ raise AssertionError(
+ "packet dropped rtt {:f}".format(rtt_result[target_vm_name]))
def _test(): # pragma: no cover
diff --git a/yardstick/dispatcher/influxdb.py b/yardstick/dispatcher/influxdb.py
index f157e91f9..632b433b5 100644
--- a/yardstick/dispatcher/influxdb.py
+++ b/yardstick/dispatcher/influxdb.py
@@ -55,7 +55,9 @@ class InfluxdbDispatcher(DispatchBase):
for case, data in testcases.items():
tc_criteria = data['criteria']
for record in data['tc_data']:
- self._upload_one_record(record, case, tc_criteria)
+ # skip results with no data because we influxdb encode empty dicts
+ if record.get("data"):
+ self._upload_one_record(record, case, tc_criteria)
return 0