Conform SDNVPN test case to TestCaseBase
authorjose.lausuch <jose.lausuch@ericsson.com>
Wed, 23 Nov 2016 13:36:24 +0000 (14:36 +0100)
committerJose Lausuch <jose.lausuch@ericsson.com>
Wed, 23 Nov 2016 13:52:47 +0000 (13:52 +0000)
JIRA: FUNCTEST-553

We need to remove the push_to_db of the overall result
in run_tests.py in sdnvpn repo.

Change-Id: I761d9b3ddd0972bfbf1155424615aeb1c9202ad9
Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
functest/ci/exec_test.sh
functest/ci/testcases.yaml
functest/opnfv_tests/features/sdnvpn.py [new file with mode: 0644]

index 4d913c5..f7b96af 100644 (file)
@@ -111,10 +111,6 @@ function run_test(){
             python ${FUNCTEST_TEST_DIR}/OpenStack/rally/run_rally-cert.py \
                 $clean_flag --sanity all $report
         ;;
-        "bgpvpn")
-            sdnvpn_repo_dir=${repos_dir}/sdnvpn/test/functest/
-            python ${sdnvpn_repo_dir}/run_tests.py $report
-        ;;
         "onos")
             python ${FUNCTEST_TEST_DIR}/Controllers/ONOS/Teston/onosfunctest.py
         ;;
index 1b7747c..195108b 100644 (file)
@@ -151,6 +151,9 @@ tiers:
                 dependencies:
                     installer: '(fuel)|(apex)'
                     scenario: 'bgpvpn'
+                 run:
+                    module: 'functest.opnfv_tests.features.sdnvpn'
+                    class: 'SDNVPN'
 
             -
                 name: security_scan
@@ -228,7 +231,7 @@ tiers:
                 dependencies:
                     installer: 'fuel'
                     scenario: '^((?!bgpvpn|noha).)*$'
-                    
+
     -
         name: openstack
         order: 4
diff --git a/functest/opnfv_tests/features/sdnvpn.py b/functest/opnfv_tests/features/sdnvpn.py
new file mode 100644 (file)
index 0000000..efc67b0
--- /dev/null
@@ -0,0 +1,80 @@
+#!/usr/bin/python
+#
+# Copyright (c) 2016 All rights reserved
+# This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+
+
+import argparse
+import os
+import sys
+import time
+
+from functest.core import TestCasesBase
+import functest.utils.functest_constants as ft_constants
+import functest.utils.functest_logger as ft_logger
+import functest.utils.functest_utils as ft_utils
+
+
+class SDNVPN(TestCasesBase.TestCasesBase):
+    SDNVPN_REPO = ft_constants.SDNVPN_REPO_DIR
+    SDNVPN_REPO_TESTS = os.path.join(SDNVPN_REPO, "tests/functest")
+    RESULTS_DIR = ft_constants.FUNCTEST_RESULTS_DIR
+    logger = ft_logger.Logger("sdnvpn").getLogger()
+
+    def __init__(self):
+        super(SDNVPN, self).__init__()
+        self.project_name = "sdnvpn"
+        self.case_name = "bgpvpn"
+
+    def main(self, **kwargs):
+        os.chdir(self.SDNVPN_REPO_TESTS)
+        cmd = 'run_tests.py'
+        log_file = os.path.join(self.RESULTS_DIR, "sdnvpn.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("%s OK" % self.case_name)
+            status = 'PASS'
+        elif ret == 0 and duration <= 1:
+            self.logger.info("%s TEST SKIPPED" % self.case_name)
+            status = 'SKIP'
+        else:
+            self.logger.info("%s FAILED" % self.case_name)
+            status = "FAIL"
+
+        # report status only if tests run (FAIL OR PASS)
+        if status is not "SKIP":
+            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__':
+    parser = argparse.ArgumentParser()
+    parser.add_argument("-r", "--report",
+                        help="Create json result file",
+                        action="store_true")
+    args = vars(parser.parse_args())
+    sdnvpn = SDNVPN()
+    try:
+        result = sdnvpn.main(**args)
+        if result != TestCasesBase.TestCasesBase.EX_OK:
+            sys.exit(result)
+        if args['report']:
+            sys.exit(sdnvpn.push_to_db())
+    except Exception:
+        sys.exit(TestCasesBase.TestCasesBase.EX_RUN_ERROR)