diff options
author | Hans Feldt <hans.feldt@ericsson.com> | 2015-05-26 11:56:24 +0200 |
---|---|---|
committer | Hans Feldt <hans.feldt@ericsson.com> | 2015-05-26 12:14:35 +0200 |
commit | d290591a6f53d74ed00fe49e93654be5c486e998 (patch) | |
tree | 7f183c9c33f89b2ffd413236293db8a865e47522 | |
parent | b2d8414cb1ba9700a88d629f6a3d1d88ca9dd92c (diff) |
add setup/teardown to scenario base class and runners
Prepare for "service type" of scenarios that e.g. needs to start
a service in setup and shut it down in teardown.
In the runners, instantiation of the scenario is moved after the
"worker START" log to get a more logical sequence logged.
Change-Id: Idfaf5bb396eab9261e820291885b5a1dbc32f71e
JIRA: -
Signed-off-by: Hans Feldt <hans.feldt@ericsson.com>
-rw-r--r-- | yardstick/benchmark/runners/arithmetic.py | 8 | ||||
-rw-r--r-- | yardstick/benchmark/runners/duration.py | 12 | ||||
-rw-r--r-- | yardstick/benchmark/scenarios/base.py | 9 |
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 |