summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--yardstick/benchmark/runners/arithmetic.py8
-rw-r--r--yardstick/benchmark/runners/duration.py12
-rw-r--r--yardstick/benchmark/scenarios/base.py9
3 files changed, 22 insertions, 7 deletions
diff --git a/yardstick/benchmark/runners/arithmetic.py b/yardstick/benchmark/runners/arithmetic.py
index bac7efb49..a3aceb35d 100644
--- a/yardstick/benchmark/runners/arithmetic.py
+++ b/yardstick/benchmark/runners/arithmetic.py
@@ -26,9 +26,6 @@ def _worker_process(queue, cls, method_name, context, scenario_args):
sequence = 1
- benchmark = cls(context)
- method = getattr(benchmark, method_name)
-
interval = context.get("interval", 1)
arg_name = context.get('name')
stop = context.get('stop')
@@ -41,6 +38,10 @@ def _worker_process(queue, cls, method_name, context, scenario_args):
LOG.info("worker START, step(%s, %d, %d, %d), class %s",
arg_name, start, stop, step, cls)
+ benchmark = cls(context)
+ benchmark.setup()
+ method = getattr(benchmark, method_name)
+
record_context = {"runner": context["runner"],
"host": context["host"]}
@@ -91,6 +92,7 @@ def _worker_process(queue, cls, method_name, context, scenario_args):
if errors:
break
+ benchmark.teardown()
LOG.info("worker END")
diff --git a/yardstick/benchmark/runners/duration.py b/yardstick/benchmark/runners/duration.py
index 991724826..61d498f02 100644
--- a/yardstick/benchmark/runners/duration.py
+++ b/yardstick/benchmark/runners/duration.py
@@ -25,13 +25,15 @@ def _worker_process(queue, cls, method_name, context, scenario_args):
sequence = 1
- benchmark = cls(context)
- method = getattr(benchmark, method_name)
interval = context.get("interval", 1)
duration = context.get("duration", 60)
+ LOG.info("worker START, duration %d sec, class %s", duration, cls)
+
context['runner'] = os.getpid()
- LOG.info("worker START, duration %d sec, class %s", duration, cls)
+ benchmark = cls(context)
+ benchmark.setup()
+ method = getattr(benchmark, method_name)
record_context = {"runner": context["runner"],
"host": context["host"]}
@@ -81,7 +83,9 @@ def _worker_process(queue, cls, method_name, context, scenario_args):
if (errors and sla_action is None) or (time.time() - start > duration):
LOG.info("worker END")
- return
+ break
+
+ benchmark.teardown()
class DurationRunner(base.Runner):
diff --git a/yardstick/benchmark/scenarios/base.py b/yardstick/benchmark/scenarios/base.py
index 540acca47..e1e31fd2a 100644
--- a/yardstick/benchmark/scenarios/base.py
+++ b/yardstick/benchmark/scenarios/base.py
@@ -15,7 +15,16 @@ import yardstick.common.utils as utils
class Scenario(object):
+ def setup(self):
+ ''' default impl for scenario setup '''
+ pass
+
def run(self, args):
+ ''' catcher for not implemented run methods in subclasses '''
+ raise RuntimeError("run method not implemented")
+
+ def teardown(self):
+ ''' default impl for scenario teardown '''
pass
@staticmethod