summaryrefslogtreecommitdiffstats
path: root/tools/teststepstools.py
diff options
context:
space:
mode:
authorMartin Klozik <martinx.klozik@intel.com>2017-05-18 10:18:38 +0100
committerMartin Klozik <martinx.klozik@intel.com>2017-06-02 13:39:21 +0100
commitde6fc4b670fc42fc96f27f375fbcf7a099629434 (patch)
tree4b2b87baef82fffee6645d428794ee83a09da893 /tools/teststepstools.py
parent862ef28b808aca4dd75cc44a83023362dcce1969 (diff)
tests: Improvement of step driven testcases
A set of improvements was introduced to enhance step driven testcases capabilities. Details: * delay among test steps is configurable by TEST_STEP_DELAY parameter * step driven tool function exec was renamed to exec_shell * new step driven tool function exec_python was introduced to execute a python code * new step driven object sleep was introduced to pause test execution for defined number of seconds. * fixed bug in settings.validate_getValue() to correctly validate access of parameters modified by TEST_PARAMS * new #PARAM() macro was introduced to allow references among configuration parameters * multistream support has been added into ixnetrfc2544v2.tcl, which is used for tunneling protocols test (op2p deployment) * fixed bug in op2p deployment to list interfaces and flows from both bridges involved in the test * test report updated to state exact rfcxxxx type of traffic type, e.g. rfc2544_continuous * test report of step driven testcases was updated to contain measured values from traffic generator in CSV report * method for ovs flow comparison was modified to normalize IPv4 CIDR network addr (e.g. 10.0.0.5/8 => 10.0.0.0/8) JIRA: VSPERF-512 Change-Id: Ib4f38dcdfbf3820dd766b25520da0ad0c81f3293 Signed-off-by: Martin Klozik <martinx.klozik@intel.com> Reviewed-by: Al Morton <acmorton@att.com> Reviewed-by: Christian Trautman <ctrautma@redhat.com> Reviewed-by: Sridhar Rao <sridhar.rao@spirent.com> Reviewed-by: Trevor Cooper <trevor.cooper@intel.com> Reviewed-by: Ciara Loftus <ciara.loftus@intel.com>
Diffstat (limited to 'tools/teststepstools.py')
-rw-r--r--tools/teststepstools.py40
1 files changed, 29 insertions, 11 deletions
diff --git a/tools/teststepstools.py b/tools/teststepstools.py
index d39f7f40..5d551c68 100644
--- a/tools/teststepstools.py
+++ b/tools/teststepstools.py
@@ -1,4 +1,4 @@
-# Copyright 2016 Intel Corporation.
+# Copyright 2016-2017 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -20,25 +20,23 @@ import logging
import subprocess
import locale
+_LOGGER = logging.getLogger(__name__)
+
class TestStepsTools(object):
""" Various tools and functions used by step driven testcases
"""
# Functions use nonstandard names to avoid conflicts with
# standard python keywords.
# pylint: disable=invalid-name
- def __init__(self):
- """ TestStepsTools initialization
- """
- self._logger = logging.getLogger(__name__)
-
- def Assert(self, condition):
+ @staticmethod
+ def Assert(condition):
""" Evaluate given `condition' and raise AssertionError
in case, that evaluation fails
"""
try:
- assert self.Eval(condition)
+ assert TestStepsTools.Eval(condition)
except AssertionError:
- self._logger.error('Condition %s is not True', condition)
+ _LOGGER.error('Condition %s is not True', condition)
raise
return True
@@ -63,7 +61,27 @@ class TestStepsTools(object):
return result is not None
@staticmethod
- def Exec(command, regex=None):
+ def Exec_Python(code):
+ """ Execute a python `code' and return True on success
+ """
+ # pylint: disable=exec-used
+ try:
+ exec(code, globals())
+ # pylint: disable=broad-except
+ # pylint: disable=bare-except
+ except:
+ _LOGGER.error('Execution of following code has failed %s', code)
+ return False
+ return True
+
+ @staticmethod
+ def validate_Exec_Python(result, dummy_code):
+ """ Validate result of python `code' execution
+ """
+ return result
+
+ @staticmethod
+ def Exec_Shell(command, regex=None):
""" Execute a shell `command' and return its output filtered
out by optional `regex' expression.
"""
@@ -84,7 +102,7 @@ class TestStepsTools(object):
return output
@staticmethod
- def validate_Exec(result, dummy_command, dummy_regex=None):
+ def validate_Exec_Shell(result, dummy_command, dummy_regex=None):
""" validate result of shell `command' execution
"""
return result is not None