Refactor test run related modules using new constants provider
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Wed, 21 Dec 2016 07:42:54 +0000 (15:42 +0800)
committerjose.lausuch <jose.lausuch@ericsson.com>
Wed, 21 Dec 2016 11:55:44 +0000 (12:55 +0100)
JIRA: FUNCTEST-673

Change-Id: Ia37fb5a08c8fbc4a8acb666565ea887f9ae48b83
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
functest/ci/config_functest.yaml
functest/ci/generate_report.py
functest/ci/prepare_env.py
functest/ci/run_tests.py
functest/core/feature_base.py
functest/opnfv_tests/features/odl_sfc.py
functest/utils/config.py
functest/utils/env.py
functest/utils/functest_constants.py
functest/utils/openstack_clean.py
functest/utils/openstack_snapshot.py

index b6dde11..a819a57 100755 (executable)
@@ -14,17 +14,17 @@ general:
         dir_repos:          /home/opnfv/repos
         repo_functest:  /home/opnfv/repos/functest
         dir_repo_rally:     /home/opnfv/repos/rally
-        dir_repo_tempest:   /home/opnfv/repos/tempest
+        repo_tempest:   /home/opnfv/repos/tempest
         dir_repo_releng:    /home/opnfv/repos/releng
         dir_repo_vims_test: /home/opnfv/repos/vims-test
         dir_repo_sdnvpn:    /home/opnfv/repos/sdnvpn
-        dir_repo_sfc:       /home/opnfv/repos/sfc
+        repo_sfc:       /home/opnfv/repos/sfc
         dir_repo_onos:      /home/opnfv/repos/onos
         dir_repo_promise:   /home/opnfv/repos/promise
         dir_repo_doctor:    /home/opnfv/repos/doctor
-        dir_repo_copper:    /home/opnfv/repos/copper
+        repo_copper:    /home/opnfv/repos/copper
         dir_repo_ovno:      /home/opnfv/repos/ovno
-        dir_repo_parser:    /home/opnfv/repos/parser
+        repo_parser:    /home/opnfv/repos/parser
         dir_repo_domino:    /home/opnfv/repos/domino
         dir_repo_snaps:     /home/opnfv/repos/snaps
         functest:       /home/opnfv/functest
index a90bc55..89d8fc6 100755 (executable)
@@ -1,11 +1,17 @@
+#!/usr/bin/env python
+#
+# 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 json
 import re
 import urllib2
 
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
-import functest.utils.functest_constants as ft_constants
-
+from functest.utils.constants import CONST
 
 COL_1_LEN = 25
 COL_2_LEN = 15
@@ -17,14 +23,6 @@ COL_5_LEN = 75
 # and then we can print the url to the specific test result
 
 
-class GlobalVariables:
-    IS_CI_RUN = ft_constants.IS_CI_RUN
-    BUILD_TAG = ft_constants.CI_BUILD_TAG
-    INSTALLER = ft_constants.CI_INSTALLER_TYPE
-    CI_LOOP = ft_constants.CI_LOOP
-    SCENARIO = ft_constants.CI_SCENARIO
-
-
 logger = ft_logger.Logger("generate_report").getLogger()
 
 
@@ -42,7 +40,7 @@ def init(tiers_to_run):
 
 def get_results_from_db():
     url = "%s/results?build_tag=%s" % (ft_utils.get_db_url(),
-                                       GlobalVariables.BUILD_TAG)
+                                       CONST.BUILD_TAG)
     logger.debug("Query to rest api: %s" % url)
     try:
         data = json.load(urllib2.urlopen(url))
@@ -69,7 +67,7 @@ def print_line(w1, w2='', w3='', w4='', w5=''):
            '| ' + w2.ljust(COL_2_LEN - 1) +
            '| ' + w3.ljust(COL_3_LEN - 1) +
            '| ' + w4.ljust(COL_4_LEN - 1))
-    if GlobalVariables.IS_CI_RUN:
+    if CONST.IS_CI_RUN:
         str += ('| ' + w5.ljust(COL_5_LEN - 1))
     str += '|\n'
     return str
@@ -77,7 +75,7 @@ def print_line(w1, w2='', w3='', w4='', w5=''):
 
 def print_line_no_columns(str):
     TOTAL_LEN = COL_1_LEN + COL_2_LEN + COL_3_LEN + COL_4_LEN + 2
-    if GlobalVariables.IS_CI_RUN:
+    if CONST.IS_CI_RUN:
         TOTAL_LEN += COL_5_LEN + 1
     return ('| ' + str.ljust(TOTAL_LEN) + "|\n")
 
@@ -87,7 +85,7 @@ def print_separator(char="=", delimiter="+"):
            delimiter + char * COL_2_LEN +
            delimiter + char * COL_3_LEN +
            delimiter + char * COL_4_LEN)
-    if GlobalVariables.IS_CI_RUN:
+    if CONST.IS_CI_RUN:
         str += (delimiter + char * COL_5_LEN)
     str += '+\n'
     return str
@@ -96,7 +94,7 @@ def print_separator(char="=", delimiter="+"):
 def main(args):
     executed_test_cases = args
 
-    if GlobalVariables.IS_CI_RUN:
+    if CONST.IS_CI_RUN:
         results = get_results_from_db()
         if results is not None:
             for test in executed_test_cases:
@@ -105,15 +103,15 @@ def main(args):
                              "result": data['result']})
 
     TOTAL_LEN = COL_1_LEN + COL_2_LEN + COL_3_LEN + COL_4_LEN
-    if GlobalVariables.IS_CI_RUN:
+    if CONST.IS_CI_RUN:
         TOTAL_LEN += COL_5_LEN
     MID = TOTAL_LEN / 2
 
-    if GlobalVariables.BUILD_TAG is not None:
-        if re.search("daily", GlobalVariables.BUILD_TAG) is not None:
-            GlobalVariables.CI_LOOP = "daily"
+    if CONST.BUILD_TAG is not None:
+        if re.search("daily", CONST.BUILD_TAG) is not None:
+            CONST.CI_LOOP = "daily"
         else:
-            GlobalVariables.CI_LOOP = "weekly"
+            CONST.CI_LOOP = "weekly"
 
     str = ''
     str += print_separator('=', delimiter="=")
@@ -122,19 +120,19 @@ def main(args):
     str += print_line_no_columns(' ')
     str += print_line_no_columns(" Deployment description:")
     str += print_line_no_columns("   INSTALLER: %s"
-                                 % GlobalVariables.INSTALLER)
-    if GlobalVariables.SCENARIO is not None:
+                                 % CONST.INSTALLER_TYPE)
+    if CONST.DEPLOY_SCENARIO is not None:
         str += print_line_no_columns("   SCENARIO:  %s"
-                                     % GlobalVariables.SCENARIO)
-    if GlobalVariables.BUILD_TAG is not None:
+                                     % CONST.DEPLOY_SCENARIO)
+    if CONST.BUILD_TAG is not None:
         str += print_line_no_columns("   BUILD TAG: %s"
-                                     % GlobalVariables.BUILD_TAG)
-    if GlobalVariables.CI_LOOP is not None:
+                                     % CONST.BUILD_TAG)
+    if CONST.CI_LOOP is not None:
         str += print_line_no_columns("   CI LOOP:   %s"
-                                     % GlobalVariables.CI_LOOP)
+                                     % CONST.CI_LOOP)
     str += print_line_no_columns(' ')
     str += print_separator('=')
-    if GlobalVariables.IS_CI_RUN:
+    if CONST.IS_CI_RUN:
         str += print_line('TEST CASE', 'TIER', 'DURATION', 'RESULT', 'URL')
     else:
         str += print_line('TEST CASE', 'TIER', 'DURATION', 'RESULT')
index 41cbbe0..3df3a0e 100755 (executable)
 #
 
 
+import argparse
 import json
 import os
 import re
 import subprocess
 import sys
 
-import argparse
 import yaml
+from opnfv.utils import constants as opnfv_constants
 
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
-import functest.utils.functest_constants as ft_constants
-
-from opnfv.utils import constants as opnfv_constants
+from functest.utils.constants import CONST
 
 actions = ['start', 'check']
 parser = argparse.ArgumentParser()
@@ -41,7 +40,7 @@ args = parser.parse_args()
 logger = ft_logger.Logger("prepare_env").getLogger()
 
 
-CONFIG_FUNCTEST_PATH = ft_constants.CONFIG_FUNCTEST_YAML
+CONFIG_FUNCTEST_PATH = CONST.CONFIG_FUNCTEST_YAML
 CONFIG_PATCH_PATH = os.path.join(os.path.dirname(
     CONFIG_FUNCTEST_PATH), "config_patch.yaml")
 
@@ -57,97 +56,97 @@ def check_env_variables():
     print_separator()
     logger.info("Checking environment variables...")
 
-    if ft_constants.CI_INSTALLER_TYPE is None:
+    if CONST.INSTALLER_TYPE is None:
         logger.warning("The env variable 'INSTALLER_TYPE' is not defined.")
-        ft_constants.CI_INSTALLER_TYPE = "undefined"
+        CONST.INSTALLER_TYPE = "undefined"
     else:
-        if ft_constants.CI_INSTALLER_TYPE not in ft_constants.INSTALLERS:
+        if CONST.INSTALLER_TYPE not in opnfv_constants.INSTALLERS:
             logger.warning("INSTALLER_TYPE=%s is not a valid OPNFV installer. "
                            "Available OPNFV Installers are : %s. "
                            "Setting INSTALLER_TYPE=undefined."
-                           % (ft_constants.CI_INSTALLER_TYPE,
-                              ft_constants.INSTALLERS))
-            ft_constants.CI_INSTALLER_TYPE = "undefined"
+                           % (CONST.INSTALLER_TYPE,
+                              opnfv_constants.INSTALLERS))
+            CONST.INSTALLER_TYPE = "undefined"
         else:
             logger.info("    INSTALLER_TYPE=%s"
-                        % ft_constants.CI_INSTALLER_TYPE)
+                        % CONST.INSTALLER_TYPE)
 
-    if ft_constants.CI_INSTALLER_IP is None:
+    if CONST.INSTALLER_IP is None:
         logger.warning("The env variable 'INSTALLER_IP' is not defined. "
                        "It is needed to fetch the OpenStack credentials. "
                        "If the credentials are not provided to the "
                        "container as a volume, please add this env variable "
                        "to the 'docker run' command.")
     else:
-        logger.info("    INSTALLER_IP=%s" % ft_constants.CI_INSTALLER_IP)
+        logger.info("    INSTALLER_IP=%s" % CONST.INSTALLER_IP)
 
-    if ft_constants.CI_SCENARIO is None:
+    if CONST.DEPLOY_SCENARIO is None:
         logger.warning("The env variable 'DEPLOY_SCENARIO' is not defined. "
                        "Setting CI_SCENARIO=undefined.")
-        ft_constants.CI_SCENARIO = "undefined"
+        CONST.DEPLOY_SCENARIO = "undefined"
     else:
-        logger.info("    DEPLOY_SCENARIO=%s" % ft_constants.CI_SCENARIO)
-    if ft_constants.CI_DEBUG:
-        logger.info("    CI_DEBUG=%s" % ft_constants.CI_DEBUG)
+        logger.info("    DEPLOY_SCENARIO=%s" % CONST.DEPLOY_SCENARIO)
+    if CONST.CI_DEBUG:
+        logger.info("    CI_DEBUG=%s" % CONST.CI_DEBUG)
 
-    if ft_constants.CI_NODE:
-        logger.info("    NODE_NAME=%s" % ft_constants.CI_NODE)
+    if CONST.NODE_NAME:
+        logger.info("    NODE_NAME=%s" % CONST.NODE_NAME)
 
-    if ft_constants.CI_BUILD_TAG:
-        logger.info("    BUILD_TAG=%s" % ft_constants.CI_BUILD_TAG)
+    if CONST.BUILD_TAG:
+        logger.info("    BUILD_TAG=%s" % CONST.BUILD_TAG)
 
-    if ft_constants.IS_CI_RUN:
-        logger.info("    IS_CI_RUN=%s" % ft_constants.IS_CI_RUN)
+    if CONST.IS_CI_RUN:
+        logger.info("    IS_CI_RUN=%s" % CONST.IS_CI_RUN)
 
 
 def create_directories():
     print_separator()
     logger.info("Creating needed directories...")
-    if not os.path.exists(ft_constants.FUNCTEST_CONF_DIR):
-        os.makedirs(ft_constants.FUNCTEST_CONF_DIR)
-        logger.info("    %s created." % ft_constants.FUNCTEST_CONF_DIR)
+    if not os.path.exists(CONST.dir_functest_conf):
+        os.makedirs(CONST.dir_functest_conf)
+        logger.info("    %s created." % CONST.dir_functest_conf)
     else:
         logger.debug("   %s already exists."
-                     % ft_constants.FUNCTEST_CONF_DIR)
+                     % CONST.dir_functest_conf)
 
-    if not os.path.exists(ft_constants.FUNCTEST_DATA_DIR):
-        os.makedirs(ft_constants.FUNCTEST_DATA_DIR)
-        logger.info("    %s created." % ft_constants.FUNCTEST_DATA_DIR)
+    if not os.path.exists(CONST.dir_functest_data):
+        os.makedirs(CONST.dir_functest_data)
+        logger.info("    %s created." % CONST.dir_functest_data)
     else:
         logger.debug("   %s already exists."
-                     % ft_constants.FUNCTEST_DATA_DIR)
+                     % CONST.dir_functest_data)
 
 
 def source_rc_file():
     print_separator()
     logger.info("Fetching RC file...")
 
-    if ft_constants.OPENSTACK_CREDS is None:
+    if CONST.openstack_creds is None:
         logger.warning("The environment variable 'creds' must be set and"
                        "pointing to the local RC file. Using default: "
                        "/home/opnfv/functest/conf/openstack.creds ...")
-        os.path.join(ft_constants.FUNCTEST_CONF_DIR, 'openstack.creds')
+        os.path.join(CONST.dir_functest_conf, 'openstack.creds')
 
-    if not os.path.isfile(ft_constants.OPENSTACK_CREDS):
+    if not os.path.isfile(CONST.openstack_creds):
         logger.info("RC file not provided. "
                     "Fetching it from the installer...")
-        if ft_constants.CI_INSTALLER_IP is None:
+        if CONST.INSTALLER_IP is None:
             logger.error("The env variable CI_INSTALLER_IP must be provided in"
                          " order to fetch the credentials from the installer.")
             sys.exit("Missing CI_INSTALLER_IP.")
-        if ft_constants.CI_INSTALLER_TYPE not in ft_constants.INSTALLERS:
+        if CONST.INSTALLER_TYPE not in opnfv_constants.INSTALLERS:
             logger.error("Cannot fetch credentials. INSTALLER_TYPE=%s is "
                          "not a valid OPNFV installer. Available "
                          "installers are : %s." %
-                         (ft_constants.CI_INSTALLER_TYPE,
+                         (CONST.INSTALLER_TYPE,
                           opnfv_constants.INSTALLERS))
             sys.exit("Wrong INSTALLER_TYPE.")
 
         cmd = ("/home/opnfv/repos/releng/utils/fetch_os_creds.sh "
                "-d %s -i %s -a %s"
-               % (ft_constants.OPENSTACK_CREDS,
-                  ft_constants.CI_INSTALLER_TYPE,
-                  ft_constants.CI_INSTALLER_IP))
+               % (CONST.openstack_creds,
+                  CONST.INSTALLER_TYPE,
+                  CONST.INSTALLER_IP))
         logger.debug("Executing command: %s" % cmd)
         p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
         output = p.communicate()[0]
@@ -157,38 +156,38 @@ def source_rc_file():
             sys.exit(1)
     else:
         logger.info("RC file provided in %s."
-                    % ft_constants.OPENSTACK_CREDS)
-        if os.path.getsize(ft_constants.OPENSTACK_CREDS) == 0:
+                    % CONST.openstack_creds)
+        if os.path.getsize(CONST.openstack_creds) == 0:
             logger.error("The file %s is empty."
-                         % ft_constants.OPENSTACK_CREDS)
+                         % CONST.openstack_creds)
             sys.exit(1)
 
     logger.info("Sourcing the OpenStack RC file...")
     creds = os_utils.source_credentials(
-        ft_constants.OPENSTACK_CREDS)
+        CONST.openstack_creds)
     str = ""
     for key, value in creds.iteritems():
         if re.search("OS_", key):
             str += "\n\t\t\t\t\t\t   " + key + "=" + value
             if key == 'OS_AUTH_URL':
-                ft_constants.OS_AUTH_URL = value
+                CONST.OS_AUTH_URL = value
             elif key == 'OS_USERNAME':
-                ft_constants.OS_USERNAME = value
+                CONST.OS_USERNAME = value
             elif key == 'OS_TENANT_NAME':
-                ft_constants.OS_TENANT_NAME = value
+                CONST.OS_TENANT_NAME = value
             elif key == 'OS_PASSWORD':
-                ft_constants.OS_PASSWORD = value
+                CONST.OS_PASSWORD = value
     logger.debug("Used credentials: %s" % str)
-    logger.debug("OS_AUTH_URL:%s" % ft_constants.OS_AUTH_URL)
-    logger.debug("OS_USERNAME:%s" % ft_constants.OS_USERNAME)
-    logger.debug("OS_TENANT_NAME:%s" % ft_constants.OS_TENANT_NAME)
-    logger.debug("OS_PASSWORD:%s" % ft_constants.OS_PASSWORD)
+    logger.debug("OS_AUTH_URL:%s" % CONST.OS_AUTH_URL)
+    logger.debug("OS_USERNAME:%s" % CONST.OS_USERNAME)
+    logger.debug("OS_TENANT_NAME:%s" % CONST.OS_TENANT_NAME)
+    logger.debug("OS_PASSWORD:%s" % CONST.OS_PASSWORD)
 
 
 def patch_config_file():
     updated = False
     for key in functest_patch_yaml:
-        if key in ft_constants.CI_SCENARIO:
+        if key in CONST.DEPLOY_SCENARIO:
             new_functest_yaml = dict(ft_utils.merge_dicts(
                 ft_utils.get_functest_yaml(), functest_patch_yaml[key]))
             updated = True
@@ -203,7 +202,7 @@ def patch_config_file():
 def verify_deployment():
     print_separator()
     logger.info("Verifying OpenStack services...")
-    cmd = ("%s/functest/ci/check_os.sh" % ft_constants.FUNCTEST_REPO_DIR)
+    cmd = ("%s/functest/ci/check_os.sh" % CONST.dir_repo_functest)
 
     logger.debug("Executing command: %s" % cmd)
     p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
@@ -223,19 +222,19 @@ def install_rally():
     cmd = "rally deployment destroy opnfv-rally"
     ft_utils.execute_command(cmd, error_msg=(
         "Deployment %s does not exist."
-        % ft_constants.RALLY_DEPLOYMENT_NAME),
+        % CONST.rally_deployment_name),
         verbose=False)
     rally_conf = os_utils.get_credentials_for_rally()
     with open('rally_conf.json', 'w') as fp:
         json.dump(rally_conf, fp)
     cmd = "rally deployment create --file=rally_conf.json --name="
-    cmd += ft_constants.RALLY_DEPLOYMENT_NAME
+    cmd += CONST.rally_deployment_name
     ft_utils.execute_command(cmd,
                              error_msg="Problem creating Rally deployment")
 
     logger.info("Installing tempest from existing repo...")
     cmd = ("rally verify install --source " +
-           ft_constants.TEMPEST_REPO_DIR +
+           CONST.dir_repo_tempest +
            " --system-wide")
     ft_utils.execute_command(cmd,
                              error_msg="Problem installing Tempest.")
@@ -258,11 +257,11 @@ def install_rally():
 
 def check_environment():
     msg_not_active = "The Functest environment is not installed."
-    if not os.path.isfile(ft_constants.ENV_FILE):
+    if not os.path.isfile(CONST.env_active):
         logger.error(msg_not_active)
         sys.exit(1)
 
-    with open(ft_constants.ENV_FILE, "r") as env_file:
+    with open(CONST.env_active, "r") as env_file:
         s = env_file.read()
         if not re.search("1", s):
             logger.error(msg_not_active)
@@ -285,7 +284,7 @@ def main():
         verify_deployment()
         install_rally()
 
-        with open(ft_constants.ENV_FILE, "w") as env_file:
+        with open(CONST.env_active, "w") as env_file:
             env_file.write("1")
 
         check_environment()
index 557ba08..7aac9d2 100755 (executable)
@@ -8,24 +8,23 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 #
 
+import argparse
 import datetime
 import importlib
 import os
 import re
 import sys
 
-import argparse
-
 import functest.ci.generate_report as generate_report
 import functest.ci.tier_builder as tb
 import functest.core.testcase_base as testcase_base
+import functest.utils.functest_constants as ft_constants
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
-import functest.utils.functest_constants as ft_constants
 import functest.utils.openstack_clean as os_clean
 import functest.utils.openstack_snapshot as os_snapshot
 import functest.utils.openstack_utils as os_utils
-
+from functest.utils.constants import CONST
 
 parser = argparse.ArgumentParser()
 parser.add_argument("-t", "--test", dest="test", action='store',
@@ -44,7 +43,7 @@ logger = ft_logger.Logger("run_tests").getLogger()
 
 
 """ global variables """
-EXEC_SCRIPT = ("%s/functest/ci/exec_test.sh" % ft_constants.FUNCTEST_REPO_DIR)
+EXEC_SCRIPT = ("%s/functest/ci/exec_test.sh" % CONST.dir_repo_functest)
 
 # This will be the return code of this script. If any of the tests fails,
 # this variable will change to -1
@@ -65,7 +64,7 @@ def print_separator(str, count=45):
 
 
 def source_rc_file():
-    rc_file = ft_constants.OPENSTACK_CREDS
+    rc_file = CONST.openstack_creds
     if not os.path.isfile(rc_file):
         logger.error("RC file %s does not exist..." % rc_file)
         sys.exit(1)
@@ -75,16 +74,20 @@ def source_rc_file():
         if re.search("OS_", key):
             if key == 'OS_AUTH_URL':
                 ft_constants.OS_AUTH_URL = value
+                CONST.OS_AUTH_URL = value
             elif key == 'OS_USERNAME':
                 ft_constants.OS_USERNAME = value
+                CONST.OS_USERNAME = value
             elif key == 'OS_TENANT_NAME':
                 ft_constants.OS_TENANT_NAME = value
+                CONST.OS_TENANT_NAME = value
             elif key == 'OS_PASSWORD':
                 ft_constants.OS_PASSWORD = value
-    logger.debug("OS_AUTH_URL:%s" % ft_constants.OS_AUTH_URL)
-    logger.debug("OS_USERNAME:%s" % ft_constants.OS_USERNAME)
-    logger.debug("OS_TENANT_NAME:%s" % ft_constants.OS_TENANT_NAME)
-    logger.debug("OS_PASSWORD:%s" % ft_constants.OS_PASSWORD)
+                CONST.OS_PASSWORD = value
+    logger.debug("OS_AUTH_URL:%s" % CONST.OS_AUTH_URL)
+    logger.debug("OS_USERNAME:%s" % CONST.OS_USERNAME)
+    logger.debug("OS_TENANT_NAME:%s" % CONST.OS_TENANT_NAME)
+    logger.debug("OS_PASSWORD:%s" % CONST.OS_PASSWORD)
 
 
 def generate_os_snapshot():
@@ -201,17 +204,11 @@ def run_tier(tier):
 
 def run_all(tiers):
     summary = ""
-    BUILD_TAG = ft_constants.CI_BUILD_TAG
-    if BUILD_TAG is not None and re.search("daily", BUILD_TAG) is not None:
-        CI_LOOP = "daily"
-    else:
-        CI_LOOP = "weekly"
-
     tiers_to_run = []
 
     for tier in tiers.get_tiers():
         if (len(tier.get_tests()) != 0 and
-                re.search(CI_LOOP, tier.get_ci_loop()) is not None):
+                re.search(CONST.CI_LOOP, tier.get_ci_loop()) is not None):
             tiers_to_run.append(tier)
             summary += ("\n    - %s:\n\t   %s"
                         % (tier.get_name(),
@@ -227,10 +224,10 @@ def run_all(tiers):
 
 def main():
 
-    CI_INSTALLER_TYPE = ft_constants.CI_INSTALLER_TYPE
-    CI_SCENARIO = ft_constants.CI_SCENARIO
+    CI_INSTALLER_TYPE = CONST.INSTALLER_TYPE
+    CI_SCENARIO = CONST.DEPLOY_SCENARIO
 
-    file = ft_constants.FUNCTEST_TESTCASES_YAML
+    file = CONST.functest_testcases_yaml
     _tiers = tb.TierBuilder(CI_INSTALLER_TYPE, CI_SCENARIO, file)
 
     if args.noclean:
index 780170d..873e21d 100644 (file)
@@ -3,6 +3,7 @@ import time
 import testcase_base as base
 import functest.utils.functest_utils as ft_utils
 import functest.utils.functest_logger as ft_logger
+from functest.utils.constants import CONST
 
 
 class FeatureBase(base.TestcaseBase):
@@ -11,7 +12,7 @@ class FeatureBase(base.TestcaseBase):
         self.project_name = project
         self.case_name = case
         self.cmd = cmd
-        self.repo = self.get_conf('general.dir.{}'.format(repo))
+        self.repo = CONST.__getattribute__(repo)
         self.result_file = self.get_result_file()
         self.logger = ft_logger.Logger(project).getLogger()
 
@@ -44,15 +45,10 @@ class FeatureBase(base.TestcaseBase):
         return exit_code
 
     def get_result_file(self):
-        dir = self.get_conf('general.dir.results')
-        return "{}/{}.log".format(dir, self.project_name)
+        return "{}/{}.log".format(CONST.dir_results, self.project_name)
 
     def log_results(self):
         ft_utils.logger_test_results(self.project_name,
                                      self.case_name,
                                      self.criteria,
                                      self.details)
-
-    @staticmethod
-    def get_conf(parameter):
-        return ft_utils.get_functest_config(parameter)
index b194b28..3b68d42 100644 (file)
@@ -7,7 +7,6 @@
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 #
-
 import functest.core.feature_base as base
 
 
@@ -17,4 +16,5 @@ class OpenDaylightSFC(base.FeatureBase):
         super(OpenDaylightSFC, self).__init__(project='sfc',
                                               case='functest-odl-sfc"',
                                               repo='dir_repo_sfc')
-        self.cmd = 'cd %s/tests/functest && python ./run_tests.py' % self.repo
+        dir_sfc_functest = '{}/sfc/tests/functest'.format(self.repo)
+        self.cmd = 'cd %s && python ./run_tests.py' % dir_sfc_functest
index 4cee634..84166c1 100644 (file)
@@ -11,20 +11,25 @@ class Config(object):
         try:
             with open(self.config_functest) as f:
                 self.functest_yaml = yaml.safe_load(f)
-                self.parse(None, self.functest_yaml)
+                self._parse(None, self.functest_yaml)
         except:
             raise Exception('Parse {} failed'.format(self.config_functest))
+        self._set_others()
 
-    def parse(self, attr_now, left_parametes):
+    def _parse(self, attr_now, left_parametes):
         for param_n, param_v in left_parametes.iteritems():
-            attr_further = self.get_attr_further(attr_now, param_n)
+            attr_further = self._get_attr_further(attr_now, param_n)
             if not isinstance(param_v, dict):
                 self.__setattr__(attr_further, param_v)
             else:
-                self.parse(attr_further, param_v)
+                self._parse(attr_further, param_v)
 
-    def get_attr_further(self, attr_now, next):
+    def _get_attr_further(self, attr_now, next):
         return attr_now if next == 'general' else (
             '{}_{}'.format(attr_now, next) if attr_now else next)
 
+    def _set_others(self):
+        self.env_active = os.path.join(self.dir_functest_conf, "env_active")
+
+
 CONF = Config()
index 86b2be3..19c6099 100644 (file)
@@ -1,4 +1,5 @@
 import os
+import re
 
 default_envs = {
     'NODE_NAME': 'unknown_pod',
@@ -19,6 +20,20 @@ class Environment(object):
         for k, v in default_envs.iteritems():
             if k not in os.environ:
                 self.__setattr__(k, v)
+        self._set_ci_run()
+        self._set_ci_loop()
+
+    def _set_ci_run(self):
+        if self.BUILD_TAG:
+            self.IS_CI_RUN = True
+        else:
+            self.IS_CI_RUN = False
+
+    def _set_ci_loop(self):
+        if self.BUILD_TAG and re.search("daily", self.BUILD_TAG):
+            self.CI_LOOP = "daily"
+        else:
+            self.CI_LOOP = "weekly"
 
 
 ENV = Environment()
index a39d33a..dfa59eb 100644 (file)
@@ -78,7 +78,7 @@ FUNCTEST_TESTCASES_YAML = get_value('general.functest.testcases_yaml',
                                     'FUNCTEST_TESTCASES_YAML')
 RALLY_DEPLOYMENT_NAME = get_value('rally.deployment_name',
                                   'RALLY_DEPLOYMENT_NAME')
-TEMPEST_REPO_DIR = get_value('general.dir.dir_repo_tempest',
+TEMPEST_REPO_DIR = get_value('general.dir.repo_tempest',
                              'TEMPEST_REPO_DIR')
 
 ENV_FILE = os.path.join(FUNCTEST_CONF_DIR, "env_active")
@@ -91,7 +91,7 @@ DOMINO_REPO_DIR = get_value('general.dir.dir_repo_domino',
                             'DOMINO_REPO_DIR')
 SDNVPN_REPO_DIR = get_value('general.dir.dir_repo_sdnvpn',
                             'SDNVPN_REPO_DIR')
-SFC_REPO_DIR = get_value('general.dir.dir_repo_sfc',
+SFC_REPO_DIR = get_value('general.dir.repo_sfc',
                          'SFC_REPO_DIR')
 
 ONOS_SFC_IMAGE_NAME = get_value('onos_sfc.image_name',
@@ -219,7 +219,7 @@ PROMISE_ROUTER_NAME = get_value('promise.router_name',
                                 'PROMISE_ROUTER_NAME')
 DOCTOR_REPO_DIR = get_value('general.dir.dir_repo_doctor',
                             'DOCTOR_REPO_DIR')
-COPPER_REPO_DIR = get_value('general.dir.dir_repo_copper',
+COPPER_REPO_DIR = get_value('general.dir.repo_copper',
                             'COPPER_REPO_DIR')
 EXAMPLE_INSTANCE_NAME = get_value('example.example_vm_name',
                                   'EXAMPLE_INSTANCE_NAME')
@@ -260,5 +260,5 @@ CW_DEPLOYMENT_NAME = get_value('vIMS.clearwater.deployment-name',
 CW_INPUTS = get_value('vIMS.clearwater.inputs', 'CW_INPUTS')
 CW_REQUIERMENTS = get_value('vIMS.clearwater.requierments',
                             'CW_REQUIERMENTS')
-PARSER_REPO_DIR = get_value('general.dir.dir_repo_parser',
+PARSER_REPO_DIR = get_value('general.dir.repo_parser',
                             'PARSER_REPO_DIR')
index c08568b..b1ad966 100755 (executable)
 #
 
 import time
+
+import yaml
+
 import functest.utils.functest_logger as ft_logger
 import functest.utils.openstack_utils as os_utils
-import yaml
-import functest.utils.functest_constants as ft_constants
+from functest.utils.constants import CONST
 
 logger = ft_logger.Logger("openstack_clean").getLogger()
 
-OS_SNAPSHOT_FILE = ft_constants.OPENSTACK_SNAPSHOT_FILE
+OS_SNAPSHOT_FILE = CONST.openstack_snapshot_file
 
 
 def separator():
index 5b50ffa..c59492c 100755 (executable)
 # http://www.apache.org/licenses/LICENSE-2.0
 #
 
+import yaml
+
 import functest.utils.functest_logger as ft_logger
 import functest.utils.openstack_utils as os_utils
-import yaml
-import functest.utils.functest_constants as ft_constants
+from functest.utils.constants import CONST
 
 logger = ft_logger.Logger("openstack_snapshot").getLogger()
 
 
-OS_SNAPSHOT_FILE = ft_constants.OPENSTACK_SNAPSHOT_FILE
+OS_SNAPSHOT_FILE = CONST.openstack_snapshot_file
 
 
 def separator():