diff options
author | Moshe <moshehoa@amdocs.com> | 2018-03-14 14:22:13 +0200 |
---|---|---|
committer | Moshe <moshehoa@amdocs.com> | 2018-03-14 14:23:25 +0200 |
commit | 30497ac60f062adba7dae751110dd9fc87ef04db (patch) | |
tree | d9814a8e8ee12e57e241d07a2719c091c1b92a46 /vnftest/steps/base.py | |
parent | e01f70617a2f22b71cfce912b72a1dbb77f3f969 (diff) |
Onboard package test case
Issue-ID: VNFSDK-196
Change-Id: I7ba6de4fe6c55b370f9787c23ad16f1afc26f678
Signed-off-by: Moshe <moshehoa@amdocs.com>
Diffstat (limited to 'vnftest/steps/base.py')
-rw-r--r-- | vnftest/steps/base.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/vnftest/steps/base.py b/vnftest/steps/base.py new file mode 100644 index 0000000..d5c606a --- /dev/null +++ b/vnftest/steps/base.py @@ -0,0 +1,89 @@ +############################################################################## +# Copyright 2018 EuropeanSoftwareMarketingLtd. +# =================================================================== +# Licensed under the ApacheLicense, Version2.0 (the"License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# +# software distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and limitations under +# the License +############################################################################## +# vnftest comment: this is a modified copy of +# rally/rally/benchmark/steps/base.py + +""" Step base class +""" + +from __future__ import absolute_import +import vnftest.common.utils as utils + + +class Step(object): + + def setup(self): + """ default impl for step 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 step teardown """ + pass + + @staticmethod + def get_types(): + """return a list of known runner type (class) names""" + steps = [] + for step in utils.itersubclasses(Step): + steps.append(step) + return steps + + @staticmethod + def get_cls(step_type): + """return class of specified type""" + for step in utils.itersubclasses(Step): + if step_type == step.__step_type__: + return step + + raise RuntimeError("No such step type %s" % step_type) + + @staticmethod + def get(step_type): + """Returns instance of a step runner for execution type. + """ + for step in utils.itersubclasses(Step): + if step_type == step.__step_type__: + return step.__module__ + "." + step.__name__ + + raise RuntimeError("No such step type %s" % step_type) + + @classmethod + def get_step_type(cls): + """Return a string with the step type, if defined""" + return str(getattr(cls, '__step_type__', None)) + + @classmethod + def get_description(cls): + """Return a single line string with the class description + + This function will retrieve the class docstring and return the first + line, or 'None' if it's empty. + """ + return cls.__doc__.splitlines()[0] if cls.__doc__ else str(None) + + def _push_to_outputs(self, keys, values): + return dict(zip(keys, values)) + + def _change_obj_to_dict(self, obj): + dic = {} + for k, v in vars(obj).items(): + try: + vars(v) + except TypeError: + dic[k] = v + return dic |