From 5f84d63605d7dbcf23ef329680b6721953bd598b Mon Sep 17 00:00:00 2001 From: DanielMartinBuckley Date: Mon, 10 Sep 2018 19:02:10 +0100 Subject: NSB PROX NFVi Test does not stop after reaching expected precision JIRA: YARDSTICK-1419 When using prox_binsearch algorithm, a binary search is performed, increasing lower bound when step was successful and decreasing upper bound when the step was a failure. This runs until the test_precision (as specified in the traffic profile) is reached. When the test precision is reached, the test is not completed until the runner duration is reached. As runner duration is usually high (e.g. 1800sec), the tests take much too long to execute. This makes it difficult to create test suites. Change-Id: I6cc503a09fb534a556c61c805e6df4786bb8cc4b Signed-off-by: Daniel Martin Buckley (cherry picked from commit 7d5ff45a3b793f5e50b4a32b2438ab11fed6c899) --- yardstick/benchmark/runners/duration.py | 3 ++- yardstick/benchmark/runners/proxduration.py | 3 ++- yardstick/benchmark/scenarios/base.py | 3 +++ yardstick/benchmark/scenarios/networking/vnf_generic.py | 3 +++ 4 files changed, 10 insertions(+), 2 deletions(-) (limited to 'yardstick/benchmark') diff --git a/yardstick/benchmark/runners/duration.py b/yardstick/benchmark/runners/duration.py index 14fd8bb47..55c3690fd 100644 --- a/yardstick/benchmark/runners/duration.py +++ b/yardstick/benchmark/runners/duration.py @@ -106,7 +106,8 @@ def _worker_process(queue, cls, method_name, scenario_cfg, sequence += 1 - if (errors and sla_action is None) or time.time() > timeout or aborted.is_set(): + if ((errors and sla_action is None) or time.time() > timeout + or aborted.is_set() or benchmark.is_ended()): LOG.info("Worker END") break diff --git a/yardstick/benchmark/runners/proxduration.py b/yardstick/benchmark/runners/proxduration.py index 61a468fd3..e217904b9 100644 --- a/yardstick/benchmark/runners/proxduration.py +++ b/yardstick/benchmark/runners/proxduration.py @@ -112,7 +112,8 @@ def _worker_process(queue, cls, method_name, scenario_cfg, sequence += 1 - if (errors and sla_action is None) or time.time() > timeout or aborted.is_set(): + if ((errors and sla_action is None) or time.time() > timeout + or aborted.is_set() or benchmark.is_ended()): LOG.info("Worker END") break diff --git a/yardstick/benchmark/scenarios/base.py b/yardstick/benchmark/scenarios/base.py index 90a87ac29..1737bb942 100644 --- a/yardstick/benchmark/scenarios/base.py +++ b/yardstick/benchmark/scenarios/base.py @@ -50,6 +50,9 @@ class Scenario(object): def run(self, *args): """Entry point for scenario classes, called from runner worker""" + def is_ended(self): + return False + def teardown(self): """Default teardown implementation for Scenario classes""" pass diff --git a/yardstick/benchmark/scenarios/networking/vnf_generic.py b/yardstick/benchmark/scenarios/networking/vnf_generic.py index 6d68c5e64..20fff61ed 100644 --- a/yardstick/benchmark/scenarios/networking/vnf_generic.py +++ b/yardstick/benchmark/scenarios/networking/vnf_generic.py @@ -63,6 +63,9 @@ class NetworkServiceTestCase(scenario_base.Scenario): self.bin_path = get_nsb_option('bin_path', '') self._mq_ids = [] + def is_ended(self): + return self.traffic_profile is not None and self.traffic_profile.is_ended() + def _get_ip_flow_range(self, ip_start_range): """Retrieve a CIDR first and last viable IPs -- cgit 1.2.3-korg