summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--functest/ci/testcases.yaml3
-rw-r--r--functest/core/TestCasesBase.py6
-rw-r--r--functest/opnfv_tests/features/__init__.py0
-rwxr-xr-xfunctest/opnfv_tests/features/domino.py117
-rwxr-xr-xrun_unit_tests.sh2
5 files changed, 63 insertions, 65 deletions
diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml
index afd329868..fc835b938 100644
--- a/functest/ci/testcases.yaml
+++ b/functest/ci/testcases.yaml
@@ -192,6 +192,9 @@ tiers:
dependencies:
installer: 'joid'
scenario: ''
+ run:
+ module: 'functest.opnfv_tests.features.domino'
+ class: 'DominoCases'
-
name: odl-sfc
criteria: 'status == "PASS"'
diff --git a/functest/core/TestCasesBase.py b/functest/core/TestCasesBase.py
index 3d6b82d52..777b09f0b 100644
--- a/functest/core/TestCasesBase.py
+++ b/functest/core/TestCasesBase.py
@@ -21,10 +21,9 @@ class TestCasesBase(object):
logger = ft_logger.Logger(__name__).getLogger()
- project = "functest"
-
def __init__(self):
self.details = {}
+ self.project_name = "functest"
self.case_name = ""
self.criteria = ""
self.start_time = ""
@@ -36,12 +35,13 @@ class TestCasesBase(object):
def push_to_db(self):
try:
+ assert self.project_name
assert self.case_name
assert self.criteria
assert self.start_time
assert self.stop_time
if ft_utils.push_results_to_db(
- TestCasesBase.project, self.case_name, self.start_time,
+ self.project_name, self.case_name, self.start_time,
self.stop_time, self.criteria, self.details):
self.logger.info("The results were successfully pushed to DB")
return TestCasesBase.EX_OK
diff --git a/functest/opnfv_tests/features/__init__.py b/functest/opnfv_tests/features/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/functest/opnfv_tests/features/__init__.py
diff --git a/functest/opnfv_tests/features/domino.py b/functest/opnfv_tests/features/domino.py
index 7705c07bd..445a7a640 100755
--- a/functest/opnfv_tests/features/domino.py
+++ b/functest/opnfv_tests/features/domino.py
@@ -12,76 +12,71 @@
# After successful ping, both the VMs are deleted.
# 0.2: measure test duration and publish results under json format
# 0.3: add report flag to push results when needed
-#
+# 0.4: refactoring to match Test abstraction class
import argparse
+import sys
import time
+from functest.core import TestCasesBase
import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
-parser = argparse.ArgumentParser()
-
-parser.add_argument("-r", "--report",
- help="Create json result file",
- action="store_true")
-args = parser.parse_args()
-
-
-DOMINO_REPO = \
- ft_utils.get_functest_config('general.directories.dir_repo_domino')
-RESULTS_DIR = \
- ft_utils.get_functest_config('general.directories.dir_results')
-
-logger = ft_logger.Logger("domino").getLogger()
-
-
-def main():
- cmd = 'cd %s && ./tests/run_multinode.sh' % DOMINO_REPO
- log_file = RESULTS_DIR + "/domino.log"
- start_time = time.time()
-
- ret = ft_utils.execute_command(cmd,
- output_file=log_file)
-
- stop_time = time.time()
- duration = round(stop_time - start_time, 1)
- if ret == 0 and duration > 1:
- logger.info("domino OK")
- test_status = 'OK'
- elif ret == 0 and duration <= 1:
- logger.info("domino TEST SKIPPED")
- test_status = 'SKIPPED'
- else:
- logger.info("domino FAILED")
- test_status = 'NOK'
-
- details = {
- 'timestart': start_time,
- 'duration': duration,
- 'status': test_status,
- }
-
- status = "FAIL"
- if details['status'] == "OK":
- status = "PASS"
- elif details['status'] == "SKIPPED":
- status = "SKIP"
- ft_utils.logger_test_results("Domino",
- "domino-multinode",
- status,
- details)
- if args.report:
+class DominoCases(TestCasesBase.TestCasesBase):
+ DOMINO_REPO = \
+ ft_utils.get_functest_config('general.directories.dir_repo_domino')
+ RESULTS_DIR = \
+ ft_utils.get_functest_config('general.directories.dir_results')
+ logger = ft_logger.Logger("domino").getLogger()
+
+ def __init__(self):
+ self.project_name = "domino"
+ self.case_name = "domino-multinode"
+
+ def main(self, **kwargs):
+ cmd = 'cd %s && ./tests/run_multinode.sh' % self.DOMINO_REPO
+ log_file = self.RESULTS_DIR + "/domino.log"
+ start_time = time.time()
+
+ ret = ft_utils.execute_command(cmd,
+ output_file=log_file)
+
+ stop_time = time.time()
+ duration = round(stop_time - start_time, 1)
+ if ret == 0 and duration > 1:
+ self.logger.info("domino OK")
+ status = 'PASS'
+ elif ret == 0 and duration <= 1:
+ self.logger.info("domino TEST SKIPPED")
+ status = 'SKIP'
+ else:
+ self.logger.info("domino FAILED")
+ status = "FAIL"
+
+ # report status only if tests run (FAIL OR PASS)
if status is not "SKIP":
- ft_utils.push_results_to_db("domino",
- "domino-multinode",
- start_time,
- stop_time,
- status,
- details)
- logger.info("Domino results pushed to DB")
+ self.criteria = status
+ self.start_time = start_time
+ self.stop_time = stop_time
+ self.details = {}
+ def run(self):
+ kwargs = {}
+ return self.main(**kwargs)
if __name__ == '__main__':
- main()
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-r", "--report",
+ help="Create json result file",
+ action="store_true")
+ args = parser.parse_args()
+ domino = DominoCases()
+ try:
+ result = domino.main(**args)
+ if result != TestCasesBase.TestCasesBase.EX_OK:
+ sys.exit(result)
+ if args['report']:
+ sys.exit(domino.push_to_db())
+ except Exception:
+ sys.exit(TestCasesBase.TestCasesBase.EX_RUN_ERROR)
diff --git a/run_unit_tests.sh b/run_unit_tests.sh
index e050418c5..0abf3c279 100755
--- a/run_unit_tests.sh
+++ b/run_unit_tests.sh
@@ -55,7 +55,7 @@ nosetests --with-xunit \
--with-coverage \
--cover-erase \
--cover-package=functest.core.TestCasesBase \
- --cover-package=functest.testcases.Controllers.ODL.OpenDaylightTesting \
+ --cover-package=functest.opnfv_tests.Controllers.ODL.OpenDaylightTesting \
--cover-xml \
--cover-html \
functest/tests/unit