From: Hans Feldt Date: Tue, 26 May 2015 09:56:24 +0000 (+0200) Subject: add setup/teardown to scenario base class and runners X-Git-Tag: brahmaputra.1.0~240 X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F52%2F652%2F1;p=yardstick.git 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 --- 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