diff options
-rw-r--r-- | dashboard/opnfv_yardstick_tc037.json | 2 | ||||
-rw-r--r-- | dashboard/opnfv_yardstick_tc038.json | 2 | ||||
-rw-r--r-- | dashboard/opnfv_yardstick_tc070.json | 2 | ||||
-rw-r--r-- | dashboard/opnfv_yardstick_tc071.json | 2 | ||||
-rw-r--r-- | dashboard/opnfv_yardstick_tc072.json | 2 | ||||
-rw-r--r-- | yardstick/benchmark/scenarios/networking/ping.py | 35 | ||||
-rw-r--r-- | yardstick/dispatcher/influxdb.py | 4 |
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 |