Remove prepare_env 67/47267/11
authorJose Lausuch <jalausuch@suse.com>
Wed, 15 Nov 2017 16:11:41 +0000 (17:11 +0100)
committerJose Lausuch <jalausuch@suse.com>
Wed, 22 Nov 2017 18:48:38 +0000 (19:48 +0100)
After moving the rally installation out of prepare_env
It doesn't much sense to keep this script as it doesn't
do useful things any more.

Change-Id: I9ab3b2dd30c8ec0fbb825ee4302a83cce80f1cbe
Signed-off-by: Jose Lausuch <jalausuch@suse.com>
27 files changed:
docker/components/Dockerfile
docker/features/Dockerfile
docker/healthcheck/Dockerfile
docker/parser/Dockerfile
docker/smoke/Dockerfile
docker/vnf/Dockerfile
docs/testing/user/configguide/configguide.rst
docs/testing/user/userguide/runfunctest.rst
docs/testing/user/userguide/troubleshooting.rst
functest/api/resources/v1/envs.py
functest/api/resources/v1/testcases.py
functest/api/swagger/envs_action.yaml
functest/api/urls.py
functest/ci/check_deployment.py
functest/ci/prepare_env.py [deleted file]
functest/ci/run_tests.py
functest/cli/cli_base.py
functest/cli/commands/cli_env.py
functest/cli/commands/cli_testcase.py
functest/cli/commands/cli_tier.py
functest/tests/unit/ci/test_run_tests.py
functest/tests/unit/cli/commands/test_cli_env.py
functest/tests/unit/cli/commands/test_cli_testcase.py
functest/tests/unit/cli/commands/test_cli_tier.py
functest/tests/unit/cli/test_cli_base.py
functest/utils/config.py
setup.cfg

index a0f7a48..ce0d0c5 100644 (file)
@@ -30,4 +30,4 @@ RUN apk --no-cache add --virtual .build-deps --update \
     mkdir -p /var/lib/rally/database && rally db create && \
     apk del .build-deps
 COPY testcases.yaml /usr/lib/python2.7/site-packages/functest/ci/testcases.yaml
-CMD ["bash","-c","prepare_env start && run_tests -t all"]
+CMD ["run_tests", "-t", "all"]
index 1fb4882..eaf88f8 100644 (file)
@@ -22,4 +22,4 @@ RUN apk --no-cache add --update python3 sshpass && \
     rm -r upper-constraints.txt thirdparty-requirements.txt /src/fds/.git && \
     apk del .build-deps
 COPY testcases.yaml /usr/lib/python2.7/site-packages/functest/ci/testcases.yaml
-CMD ["bash","-c","prepare_env start && run_tests -t all"]
+CMD ["run_tests", "-t", "all"]
index 8923e4c..21b46ef 100644 (file)
@@ -1,4 +1,4 @@
 FROM opnfv/functest-core
 
 COPY testcases.yaml /usr/lib/python2.7/site-packages/functest/ci/testcases.yaml
-CMD ["bash","-c","prepare_env start && run_tests -t all"]
+CMD ["run_tests", "-t", "all"]
index 043f214..bf43ac0 100644 (file)
@@ -18,4 +18,4 @@ RUN apk --no-cache add --virtual .build-deps --update \
     rm upper-constraints.txt thirdparty-requirements.txt && \
     apk del .build-deps
 COPY testcases.yaml /usr/lib/python2.7/site-packages/functest/ci/testcases.yaml
-CMD ["bash","-c","prepare_env start && run_tests -t all"]
+CMD ["run_tests", "-t", "all"]
index 4485699..f8a42c4 100644 (file)
@@ -39,4 +39,4 @@ RUN apk --no-cache add --virtual .build-deps --update \
     mkdir -p /var/lib/rally/database && rally db create && \
     apk del .build-deps
 COPY testcases.yaml /usr/lib/python2.7/site-packages/functest/ci/testcases.yaml
-CMD ["bash","-c","prepare_env start && run_tests -t all"]
+CMD ["run_tests", "-t", "all"]
index 36e80d7..ac3b8da 100644 (file)
@@ -12,4 +12,4 @@ RUN apk --no-cache add --update \
     cd /src/vims-test && bundle config build.nokogiri --use-system-libraries && bundle install --system && \
     apk del .build-deps
 COPY testcases.yaml /usr/lib/python2.7/site-packages/functest/ci/testcases.yaml
-CMD ["bash","-c","prepare_env start && run_tests -t all"]
+CMD ["run_tests", "-t", "all"]
index 7da7285..f455d18 100644 (file)
@@ -408,7 +408,6 @@ The structure of functest repo can be described as follows::
     │   |-- config_patch.yaml
     │   |-- download_images.sh
     │   |-- logging.ini
-    │   |-- prepare_env.py
     │   |-- rally_aarch64_patch.conf
     │   |-- run_tests.py
     │   |-- testcases.yaml
index db85c18..89580e5 100644 (file)
@@ -53,40 +53,6 @@ commands::
 
   $ source /home/opnfv/functest/conf/openstack.creds
 
-Prepare environment
--------------------
-Prior to commencing the Functest environment preparation, we can check
-the initial status of the environment. Issue the **functest env status**
-command at the prompt::
-
-  # functest env status
-  # Functest environment is not installed.
-
-To prepare the Functest docker container for test case execution, type::
-
-  # functest env prepare
-  # ...
-  # Functest environment ready to run tests.
-
-you may also type prepare_env instead of functest env prepare.
-
-To list some basic information about an already prepared Functest
-docker container environment, issue the **functest env show** at the
-prompt::
-  bash-4.3# functest env show
-  +------------------------------+---------------------------------+
-  |     FUNCTEST ENVIRONMENT     |              VALUE              |
-  +------------------------------+---------------------------------+
-  |            STATUS            |              ready              |
-  |           SCENARIO           |     os-nosdn-nofeature-noha     |
-  |          DEBUG FLAG          |              false              |
-  |          BUILD_TAG           |               None              |
-  |          INSTALLER           |              compass            |
-  |             POD              |           huawei-pod1           |
-  +------------------------------+---------------------------------+
-
-See configuration guide for details on Functest environnement variables.
-
 Tier
 ----
 Each Alpine container provided on the docker hub matches with a tier.
index 20879bf..62587de 100644 (file)
@@ -284,7 +284,7 @@ This is an example of running a customized list of Tempest tests in Functest::
       -v $(pwd)/images:/home/opnfv/functest/images \
       -v $(pwd)/my-custom-testcases.yaml:/usr/lib/python2.7/site-packages/functest/ci/testcases.yaml \
       -v $(pwd)/my-custom-tempest-tests.txt:/usr/lib/python2.7/site-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt \
-      opnfv/functest-components /bin/bash -c "prepare_env start && run_tests -t tempest_custom"
+      opnfv/functest-components run_tests -t tempest_custom
 
 
 Rally
index 65e61c4..3e6f05a 100644 (file)
@@ -20,7 +20,6 @@ from flasgger.utils import swag_from
 from functest.api.base import ApiResource
 from functest.api.common import api_utils
 from functest.cli.commands.cli_env import Env
-import functest.utils.functest_utils as ft_utils
 
 ADDRESS = socket.gethostbyname(socket.gethostname())
 ENDPOINT_ENVS = ('http://{}:5000/api/v1/functest/envs'.format(ADDRESS))
@@ -45,16 +44,6 @@ class V1Envs(ApiResource):
         """ Used to handle post request """
         return self._dispatch_post()
 
-    def prepare(self, args):  # pylint: disable=no-self-use, unused-argument
-        """ Prepare environment """
-
-        result_env = ft_utils.execute_command("prepare_env start")
-        if not result_env == 0:
-            return api_utils.result_handler(
-                status=1, data="Failed to prepare env")
-        return api_utils.result_handler(
-            status=0, data="Prepare env successfully")
-
     def update_hosts(self, hosts_info):  # pylint: disable=no-self-use
         """ Update hosts info """
 
index 7cc70bb..0157154 100644 (file)
@@ -115,34 +115,31 @@ class V1Testcase(ApiResource):
         case_name = args.get('testcase')
         self._update_logging_ini(args.get('task_id'))
 
-        if not os.path.isfile(CONST.__getattribute__('env_active')):
-            raise Exception("Functest environment is not ready.")
+        try:
+            cmd = "run_tests -t {}".format(case_name)
+            runner = ft_utils.execute_command(cmd)
+        except Exception:  # pylint: disable=broad-except
+            result = 'FAIL'
+            LOGGER.exception("Running test case %s failed!", case_name)
+        if runner == os.EX_OK:
+            result = 'PASS'
         else:
-            try:
-                cmd = "run_tests -t {}".format(case_name)
-                runner = ft_utils.execute_command(cmd)
-            except Exception:  # pylint: disable=broad-except
-                result = 'FAIL'
-                LOGGER.exception("Running test case %s failed!", case_name)
-            if runner == os.EX_OK:
-                result = 'PASS'
-            else:
-                result = 'FAIL'
-
-            env_info = {
-                'installer': CONST.__getattribute__('INSTALLER_TYPE'),
-                'scenario': CONST.__getattribute__('DEPLOY_SCENARIO'),
-                'build_tag': CONST.__getattribute__('BUILD_TAG'),
-                'ci_loop': CONST.__getattribute__('CI_LOOP')
-            }
-            result = {
-                'task_id': args.get('task_id'),
-                'testcase': case_name,
-                'env_info': env_info,
-                'result': result
-            }
-
-            return {'result': result}
+            result = 'FAIL'
+
+        env_info = {
+            'installer': CONST.__getattribute__('INSTALLER_TYPE'),
+            'scenario': CONST.__getattribute__('DEPLOY_SCENARIO'),
+            'build_tag': CONST.__getattribute__('BUILD_TAG'),
+            'ci_loop': CONST.__getattribute__('CI_LOOP')
+        }
+        result = {
+            'task_id': args.get('task_id'),
+            'testcase': case_name,
+            'env_info': env_info,
+            'result': result
+        }
+
+        return {'result': result}
 
     def _update_logging_ini(self, task_id):  # pylint: disable=no-self-use
         """ Update the log file for each task"""
index 1add066..46faa6d 100644 (file)
@@ -1,8 +1,7 @@
-Prepare environment or Update hosts info
+Update hosts info
 
-This api offers the interface to prepare environment or update hosts info.
+This api offers the interface to update hosts info.
 
-action: prepare
 action: update_hosts
 ---
 tags:
@@ -14,11 +13,18 @@ parameters:
     schema:
       required:
         - action
+        - args
       properties:
         action:
           type: string
           description: this is action for envs
-          default: prepare
+          default: update_hosts
+        args:
+          type: string
+          description: Hosts info to be updated
+          default:
+            "identity.ac.dz.com": "8.20.11.22"
+            "image.ac.dz.com": "8.20.11.22"
 definitions:
   Environment:
     type: object
@@ -29,9 +35,9 @@ definitions:
     type: dict
 responses:
   200:
-    description: Prepare environment
+    description: Update hosts info
     schema:
       $ref: '#/definitions/Environment'
     examples:
       'status': 0
-      'result': 'Prapare env successfully'
+      'result': 'Update hosts info successfully'
\ No newline at end of file
index 0cc22f8..10b7b29 100644 (file)
@@ -26,7 +26,6 @@ URLPATTERNS = [
     Url('/api/v1/functest/envs', 'v1_envs'),
 
     # POST /api/v1/functest/envs/action
-    # {"action":"prepare"} => Prepare environment
     # {"action":"update_hosts", "args": {}} => Update hosts info
     Url('/api/v1/functest/envs/action', 'v1_envs'),
 
index db94fd7..ae016a8 100644 (file)
@@ -139,7 +139,7 @@ class CheckDeployment(object):
     def check_all(self):
         """
         Calls all the class functions and returns 0 if all of them succeed.
-        This is the method called by prepare_env or CLI
+        This is the method called by CLI
         """
         self.check_rc()
         try:
diff --git a/functest/ci/prepare_env.py b/functest/ci/prepare_env.py
deleted file mode 100644 (file)
index 2cb705c..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-#!/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 argparse
-import logging
-import logging.config
-import os
-import pkg_resources
-import re
-import sys
-
-import yaml
-
-from functest.ci import check_deployment
-import functest.utils.functest_utils as ft_utils
-import functest.utils.openstack_utils as os_utils
-from functest.utils.constants import CONST
-
-actions = ['start', 'check']
-
-""" logging configuration """
-logger = logging.getLogger('functest.ci.prepare_env')
-handler = None
-# set the architecture to default
-pod_arch = os.getenv("POD_ARCH", None)
-arch_filter = ['aarch64']
-
-CONFIG_FUNCTEST_PATH = pkg_resources.resource_filename(
-    'functest', 'ci/config_functest.yaml')
-CONFIG_PATCH_PATH = pkg_resources.resource_filename(
-    'functest', 'ci/config_patch.yaml')
-CONFIG_AARCH64_PATCH_PATH = pkg_resources.resource_filename(
-    'functest', 'ci/config_aarch64_patch.yaml')
-
-
-class PrepareEnvParser(object):
-
-    def __init__(self):
-        self.parser = argparse.ArgumentParser()
-        self.parser.add_argument("action", help="Possible actions are: "
-                                 "'{d[0]}|{d[1]}' ".format(d=actions),
-                                 choices=actions)
-        self.parser.add_argument("-d", "--debug", help="Debug mode",
-                                 action="store_true")
-
-    def parse_args(self, argv=[]):
-        return vars(self.parser.parse_args(argv))
-
-
-def print_separator():
-    logger.info("==============================================")
-
-
-def source_rc_file():
-    print_separator()
-
-    logger.info("Sourcing the OpenStack RC file...")
-    os_utils.source_credentials(CONST.__getattribute__('openstack_creds'))
-    for key, value in os.environ.iteritems():
-        if re.search("OS_", key):
-            if key == 'OS_AUTH_URL':
-                CONST.__setattr__('OS_AUTH_URL', value)
-            elif key == 'OS_USERNAME':
-                CONST.__setattr__('OS_USERNAME', value)
-            elif key == 'OS_TENANT_NAME':
-                CONST.__setattr__('OS_TENANT_NAME', value)
-            elif key == 'OS_PASSWORD':
-                CONST.__setattr__('OS_PASSWORD', value)
-
-
-def update_config_file():
-    patch_file(CONFIG_PATCH_PATH)
-
-    if pod_arch and pod_arch in arch_filter:
-        patch_file(CONFIG_AARCH64_PATCH_PATH)
-
-    if "TEST_DB_URL" in os.environ:
-        update_db_url()
-
-
-def patch_file(patch_file_path):
-    logger.debug('Updating file: %s', patch_file_path)
-    with open(patch_file_path) as f:
-        patch_file = yaml.safe_load(f)
-
-    updated = False
-    for key in patch_file:
-        if key in CONST.__getattribute__('DEPLOY_SCENARIO'):
-            new_functest_yaml = dict(ft_utils.merge_dicts(
-                ft_utils.get_functest_yaml(), patch_file[key]))
-            updated = True
-
-    if updated:
-        os.remove(CONFIG_FUNCTEST_PATH)
-        with open(CONFIG_FUNCTEST_PATH, "w") as f:
-            f.write(yaml.dump(new_functest_yaml, default_style='"'))
-
-
-def update_db_url():
-    with open(CONFIG_FUNCTEST_PATH) as f:
-        functest_yaml = yaml.safe_load(f)
-
-    with open(CONFIG_FUNCTEST_PATH, "w") as f:
-        functest_yaml["results"]["test_db_url"] = os.environ.get('TEST_DB_URL')
-        f.write(yaml.dump(functest_yaml, default_style='"'))
-
-
-def verify_deployment():
-    print_separator()
-    logger.info("Verifying OpenStack deployment...")
-    deployment = check_deployment.CheckDeployment()
-    deployment.check_all()
-
-
-def create_flavor():
-    _, flavor_id = os_utils.get_or_create_flavor('m1.tiny',
-                                                 '512',
-                                                 '1',
-                                                 '1',
-                                                 public=True)
-    if flavor_id is None:
-        raise Exception('Failed to create flavor')
-
-
-def check_environment():
-    msg_not_active = "The Functest environment is not installed."
-    if not os.path.isfile(CONST.__getattribute__('env_active')):
-        raise Exception(msg_not_active)
-
-    with open(CONST.__getattribute__('env_active'), "r") as env_file:
-        s = env_file.read()
-        if not re.search("1", s):
-            raise Exception(msg_not_active)
-
-    logger.info("Functest environment is installed.")
-
-
-def prepare_env(**kwargs):
-    try:
-        if not (kwargs['action'] in actions):
-            logger.error('Argument not valid.')
-            return -1
-        elif kwargs['action'] == "start":
-            logger.info("######### Preparing Functest environment #########\n")
-            verify_deployment()
-            source_rc_file()
-            update_config_file()
-            create_flavor()
-            with open(CONST.__getattribute__('env_active'), "w") as env_file:
-                env_file.write("1")
-            check_environment()
-        elif kwargs['action'] == "check":
-            check_environment()
-    except Exception as e:
-        logger.error(e)
-        return -1
-    return 0
-
-
-def main():
-    logging.config.fileConfig(pkg_resources.resource_filename(
-        'functest', 'ci/logging.ini'))
-    logging.captureWarnings(True)
-    parser = PrepareEnvParser()
-    args = parser.parse_args(sys.argv[1:])
-    return prepare_env(**args)
index d4acd9c..03d62d9 100644 (file)
@@ -19,6 +19,7 @@ import sys
 import textwrap
 
 import prettytable
+import yaml
 
 import functest.ci.tier_builder as tb
 import functest.core.testcase as testcase
@@ -29,6 +30,16 @@ from functest.utils.constants import CONST
 # __name__ cannot be used here
 logger = logging.getLogger('functest.ci.run_tests')
 
+CONFIG_FUNCTEST_PATH = pkg_resources.resource_filename(
+    'functest', 'ci/config_functest.yaml')
+CONFIG_PATCH_PATH = pkg_resources.resource_filename(
+    'functest', 'ci/config_patch.yaml')
+CONFIG_AARCH64_PATCH_PATH = pkg_resources.resource_filename(
+    'functest', 'ci/config_aarch64_patch.yaml')
+# set the architecture to default
+pod_arch = os.getenv("POD_ARCH", None)
+arch_filter = ['aarch64']
+
 
 class Result(enum.Enum):
     EX_OK = os.EX_OK
@@ -75,6 +86,44 @@ class Runner(object):
             CONST.__getattribute__('DEPLOY_SCENARIO'),
             pkg_resources.resource_filename('functest', 'ci/testcases.yaml'))
 
+    @staticmethod
+    def update_config_file():
+        Runner.patch_file(CONFIG_PATCH_PATH)
+
+        if pod_arch and pod_arch in arch_filter:
+            Runner.patch_file(CONFIG_AARCH64_PATCH_PATH)
+
+        if "TEST_DB_URL" in os.environ:
+            Runner.update_db_url()
+
+    @staticmethod
+    def patch_file(patch_file_path):
+        logger.debug('Updating file: %s', patch_file_path)
+        with open(patch_file_path) as f:
+            patch_file = yaml.safe_load(f)
+
+        updated = False
+        for key in patch_file:
+            if key in CONST.__getattribute__('DEPLOY_SCENARIO'):
+                new_functest_yaml = dict(ft_utils.merge_dicts(
+                    ft_utils.get_functest_yaml(), patch_file[key]))
+                updated = True
+
+        if updated:
+            os.remove(CONFIG_FUNCTEST_PATH)
+            with open(CONFIG_FUNCTEST_PATH, "w") as f:
+                f.write(yaml.dump(new_functest_yaml, default_style='"'))
+
+    @staticmethod
+    def update_db_url():
+        with open(CONFIG_FUNCTEST_PATH) as f:
+            functest_yaml = yaml.safe_load(f)
+
+        with open(CONFIG_FUNCTEST_PATH, "w") as f:
+            functest_yaml["results"]["test_db_url"] = os.environ.get(
+                'TEST_DB_URL')
+            f.write(yaml.dump(functest_yaml, default_style='"'))
+
     @staticmethod
     def source_rc_file():
         rc_file = CONST.__getattribute__('openstack_creds')
@@ -192,6 +241,8 @@ class Runner(object):
             self.run_tier(tier)
 
     def main(self, **kwargs):
+        Runner.update_config_file()
+
         if 'noclean' in kwargs:
             self.clean_flag = not kwargs['noclean']
         if 'report' in kwargs:
index 507179b..aa8ab24 100644 (file)
@@ -87,23 +87,11 @@ def os_show_credentials():
     _openstack.show_credentials()
 
 
-@env.command('prepare', help="Prepares the Functest environment. This step is "
-             "needed run the tests.")
-def env_prepare():
-    _env.prepare()
-
-
 @env.command('show', help="Shows information about the current environment.")
 def env_show():
     _env.show()
 
 
-@env.command('status', help="Checks if the Functest environment is ready to "
-             "run the tests.")
-def env_status():
-    _env.status()
-
-
 @testcase.command('list', help="Lists the available testcases.")
 def testcase_list():
     _testcase.list()
index 72a870b..0e0afe5 100644 (file)
@@ -7,13 +7,10 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 #
 
-import os
-
 import click
 import prettytable
 
 from functest.utils.constants import CONST
-import functest.utils.functest_utils as ft_utils
 
 
 class Env(object):
@@ -21,22 +18,6 @@ class Env(object):
     def __init__(self):
         pass
 
-    def prepare(self):
-        if self.status(verbose=False) == 0:
-            answer = raw_input("It seems that the environment has been "
-                               "already prepared. Do you want to do "
-                               "it again? [y|n]\n")
-            while True:
-                if answer.lower() in ["y", "yes"]:
-                    os.remove(CONST.__getattribute__('env_active'))
-                    break
-                elif answer.lower() in ["n", "no"]:
-                    return
-                else:
-                    answer = raw_input("Invalid answer. Please type [y|n]\n")
-
-        ft_utils.execute_command("prepare_env start")
-
     def show(self):
         def _get_value(attr, default='Unknown'):
             return attr if attr else default
@@ -52,30 +33,14 @@ class Env(object):
             build_tag = build_tag.lstrip(
                 "jenkins-").lstrip("functest").lstrip("-")
 
-        STATUS = "not ready"
-        if self.status(verbose=False) == 0:
-            STATUS = "ready"
-
         env_info = {'INSTALLER': installer_info,
                     'SCENARIO': scenario,
                     'POD': node,
                     'DEBUG FLAG': is_debug,
-                    'BUILD_TAG': build_tag,
-                    'STATUS': STATUS}
+                    'BUILD_TAG': build_tag}
 
         return env_info
 
-    def status(self, verbose=True):
-        ret_val = 0
-        if not os.path.isfile(CONST.__getattribute__('env_active')):
-            if verbose:
-                click.echo("Functest environment is not installed.\n")
-            ret_val = 1
-        elif verbose:
-            click.echo("Functest environment ready to run tests.\n")
-
-        return ret_val
-
 
 class CliEnv(Env):
 
index 65dd9ab..ee7afa5 100644 (file)
@@ -9,7 +9,6 @@
 
 """ global variables """
 
-import os
 import pkg_resources
 
 import click
@@ -50,9 +49,6 @@ class Testcase(object):
 
         if testname == 'vacation':
             vacation.main()
-        elif not os.path.isfile(CONST.__getattribute__('env_active')):
-            click.echo("Functest environment is not ready. "
-                       "Run first 'functest env prepare'")
         else:
             tests = testname.split(",")
             for test in tests:
index 995354b..104cf10 100644 (file)
@@ -9,7 +9,6 @@
 
 """ global variables """
 
-import os
 import pkg_resources
 
 import click
@@ -54,19 +53,14 @@ class Tier(object):
 
     @staticmethod
     def run(tiername, noclean=False, report=False):
-
         flags = ""
         if noclean:
             flags += "-n "
         if report:
             flags += "-r "
 
-        if not os.path.isfile(CONST.__getattribute__('env_active')):
-            click.echo("Functest environment is not ready. "
-                       "Run first 'functest env prepare'")
-        else:
-            cmd = "run_tests {}-t {}".format(flags, tiername)
-            ft_utils.execute_command(cmd)
+        cmd = "run_tests {}-t {}".format(flags, tiername)
+        ft_utils.execute_command(cmd)
 
 
 class CliTier(Tier):
index bc95f8f..fc68945 100644 (file)
@@ -7,6 +7,7 @@
 
 import logging
 import unittest
+import os
 
 import mock
 
@@ -58,6 +59,85 @@ class RunTestsTesting(unittest.TestCase):
 
         self.run_tests_parser = run_tests.RunTestsParser()
 
+        self.config_file_yaml = {'general': {
+                                     'openstack': {
+                                         'image_name': 'test_image_name'}},
+                                 'results': {
+                                     'test_db_url': 'url1'}}
+        self.config_file_patch_yaml = {'fdio': {'general': {
+                                       'openstack': {
+                                           'image_name':
+                                           'test_image_name_2'}}}}
+        self.config_file_aarcg64_patch_yaml = {'os': {'general': {
+                    'openstack': {'image_name': 'test_image_name_3'}}}}
+
+    @mock.patch('functest.ci.run_tests.Runner.patch_file')
+    @mock.patch('functest.ci.run_tests.Runner.update_db_url')
+    def test_update_config_file_default(self, *mock_methods):
+        self.runner.update_config_file()
+        mock_methods[1].assert_called()
+        mock_methods[0].assert_not_called()
+
+    @mock.patch('functest.ci.run_tests.Runner.patch_file')
+    @mock.patch('functest.ci.run_tests.Runner.update_db_url')
+    @mock.patch.dict(os.environ, {'TEST_DB_URL': 'somevalue'})
+    def test_update_config_file_update_db(self, *mock_methods):
+        self.runner.update_config_file()
+        mock_methods[1].assert_called()
+        mock_methods[0].assert_called()
+
+    def test_patch_file_missing_file(self):
+        patch_file_path = "unexisting_file"
+        with self.assertRaises(IOError):
+            self.runner.patch_file(patch_file_path)
+
+    @mock.patch('functest.ci.run_tests.ft_utils.merge_dicts')
+    @mock.patch('functest.ci.run_tests.ft_utils.get_functest_yaml')
+    def test_patch_file_default(self, *mock_methods):
+        CONST.__setattr__('DEPLOY_SCENARIO', 'os-nosdn-nofeature-noha')
+        with mock.patch(
+               'six.moves.builtins.open', mock.mock_open()), mock.patch(
+               'functest.ci.run_tests.yaml.safe_load') as yaml1, mock.patch(
+               'functest.ci.run_tests.ft_utils.get_functest_yaml') as yaml2:
+            yaml1.return_value = self.config_file_patch_yaml
+            yaml2.return_value = self.config_file_yaml
+            self.runner.patch_file(yaml1)
+            mock_methods[1].assert_not_called()
+            mock_methods[0].assert_not_called()
+
+    @mock.patch('functest.ci.run_tests.ft_utils.merge_dicts')
+    @mock.patch('functest.ci.run_tests.os.remove')
+    def test_patch_file_match_scenario(self, *mock_methods):
+        CONST.__setattr__('DEPLOY_SCENARIO', 'os-nosdn-fdio-noha')
+        with mock.patch(
+               'six.moves.builtins.open', mock.mock_open()), mock.patch(
+               'functest.ci.run_tests.yaml.safe_load') as yaml1, mock.patch(
+               'functest.ci.run_tests.ft_utils.get_functest_yaml') as yaml2:
+            yaml1.return_value = self.config_file_patch_yaml
+            yaml2.return_value = self.config_file_yaml
+            self.runner.patch_file(yaml2)
+            mock_methods[1].assert_called()
+            mock_methods[0].assert_called()
+
+    def test_update_db_url_missing_file(self):
+        run_tests.CONFIG_FUNCTEST_PATH = "unexisting_file"
+        with self.assertRaises(IOError):
+            self.runner.update_db_url()
+
+    @mock.patch('functest.ci.run_tests.yaml.safe_load')
+    @mock.patch('functest.ci.run_tests.ft_utils.get_functest_yaml')
+    @mock.patch.dict(os.environ, {'TEST_DB_URL': 'url2'})
+    def test_update_db_url_default(self, *mock_methods):
+        with mock.patch(
+               'six.moves.builtins.open', mock.mock_open()), mock.patch(
+               'functest.ci.run_tests.yaml.safe_load') as yaml1:
+            yaml1.return_value = self.config_file_yaml
+            self.runner.update_db_url()
+            self.assertEqual(
+                yaml1.return_value['results']['test_db_url'], 'url2')
+            mock_methods[0].assert_not_called()
+            mock_methods[1].assert_not_called()
+
     @mock.patch('functest.ci.run_tests.logger.error')
     def test_source_rc_file_missing_file(self, mock_logger_error):
         with mock.patch('functest.ci.run_tests.os.path.isfile',
index ddd5d86..d865d38 100644 (file)
@@ -20,27 +20,6 @@ class CliEnvTesting(unittest.TestCase):
     def setUp(self):
         self.cli_environ = cli_env.CliEnv()
 
-    @mock.patch('functest.cli.commands.cli_testcase.os.path.isfile',
-                return_value=False)
-    @mock.patch('functest.cli.commands.cli_testcase.ft_utils.execute_command')
-    def test_prepare_default(self, mock_ft_utils, mock_os):
-        cmd = "prepare_env start"
-        self.cli_environ.prepare()
-        mock_ft_utils.assert_called_with(cmd)
-
-    @mock.patch('functest.cli.commands.cli_testcase.os.path.isfile',
-                return_value=True)
-    @mock.patch('functest.cli.commands.cli_testcase.ft_utils.execute_command')
-    def test_prepare_missing_status(self, mock_ft_utils, mock_os):
-        with mock.patch('__builtin__.raw_input', return_value="y"), \
-                mock.patch('functest.cli.commands.cli_testcase.os.remove') \
-                as mock_os_remove:
-            cmd = "prepare_env start"
-            self.cli_environ.prepare()
-            mock_os_remove.assert_called_once_with(
-                CONST.__getattribute__('env_active'))
-            mock_ft_utils.assert_called_with(cmd)
-
     def _test_show_missing_env_var(self, var, *args):
         if var == 'INSTALLER_TYPE':
             CONST.__setattr__('INSTALLER_TYPE', None)
@@ -60,8 +39,6 @@ class CliEnvTesting(unittest.TestCase):
         elif var == 'DEBUG':
             CONST.__setattr__('CI_DEBUG', None)
             reg_string = "| DEBUG FLAG: false\s*|"
-        elif var == 'STATUS':
-            reg_string = "|     STATUS: not ready\s*|"
 
         with mock.patch('functest.cli.commands.cli_env.click.echo') \
                 as mock_click_echo:
@@ -87,27 +64,6 @@ class CliEnvTesting(unittest.TestCase):
     def test_show_missing_ci_debug(self, *args):
         self._test_show_missing_env_var('DEBUG', *args)
 
-    @mock.patch('functest.cli.commands.cli_env.os.path.isfile',
-                return_value=False)
-    def test_show_missing_environment(self, *args):
-        self._test_show_missing_env_var('STATUS', *args)
-
-    @mock.patch('functest.cli.commands.cli_env.click.echo')
-    @mock.patch('functest.cli.commands.cli_env.os.path.isfile',
-                return_value=True)
-    def test_status_environment_present(self, mock_path, mock_click_echo):
-        self.assertEqual(self.cli_environ.status(), 0)
-        mock_click_echo.assert_called_with("Functest environment"
-                                           " ready to run tests.\n")
-
-    @mock.patch('functest.cli.commands.cli_env.click.echo')
-    @mock.patch('functest.cli.commands.cli_env.os.path.isfile',
-                return_value=False)
-    def test_status_environment_absent(self, mock_path, mock_click_echo):
-        self.assertEqual(self.cli_environ.status(), 1)
-        mock_click_echo.assert_called_with("Functest environment"
-                                           " is not installed.\n")
-
 
 if __name__ == "__main__":
     logging.disable(logging.CRITICAL)
index 9ccf4c4..f3648eb 100644 (file)
@@ -26,42 +26,26 @@ class CliTestCasesTesting(unittest.TestCase):
         self.cli_tests.run('vacation')
         self.assertTrue(mock_method.called)
 
-    @mock.patch('functest.cli.commands.cli_testcase.os.path.isfile',
-                return_value=False)
-    @mock.patch('functest.cli.commands.cli_testcase.click.echo')
-    def test_run_missing_env_file(self, mock_click_echo, mock_os):
-        self.cli_tests.run(self.testname)
-        mock_click_echo.assert_called_with("Functest environment is not ready."
-                                           " Run first 'functest env prepare'")
-
-    @mock.patch('functest.cli.commands.cli_testcase.os.path.isfile',
-                return_value=True)
     @mock.patch('functest.cli.commands.cli_testcase.ft_utils.execute_command')
-    def test_run_default(self, mock_ft_utils, mock_os):
+    def test_run_default(self, mock_ft_utils):
         cmd = "run_tests -n -r -t {}".format(self.testname)
         self.cli_tests.run(self.testname, noclean=True, report=True)
         mock_ft_utils.assert_called_with(cmd)
 
-    @mock.patch('functest.cli.commands.cli_testcase.os.path.isfile',
-                return_value=True)
     @mock.patch('functest.cli.commands.cli_testcase.ft_utils.execute_command')
-    def test_run_noclean_missing_report(self, mock_ft_utils, mock_os):
+    def test_run_noclean_missing_report(self, mock_ft_utils):
         cmd = "run_tests -n -t {}".format(self.testname)
         self.cli_tests.run(self.testname, noclean=True, report=False)
         mock_ft_utils.assert_called_with(cmd)
 
-    @mock.patch('functest.cli.commands.cli_testcase.os.path.isfile',
-                return_value=True)
     @mock.patch('functest.cli.commands.cli_testcase.ft_utils.execute_command')
-    def test_run_report_missing_noclean(self, mock_ft_utils, mock_os):
+    def test_run_report_missing_noclean(self, mock_ft_utils):
         cmd = "run_tests -r -t {}".format(self.testname)
         self.cli_tests.run(self.testname, noclean=False, report=True)
         mock_ft_utils.assert_called_with(cmd)
 
-    @mock.patch('functest.cli.commands.cli_testcase.os.path.isfile',
-                return_value=True)
     @mock.patch('functest.cli.commands.cli_testcase.ft_utils.execute_command')
-    def test_run_missing_noclean_report(self, mock_ft_utils, mock_os):
+    def test_run_missing_noclean_report(self, mock_ft_utils):
         cmd = "run_tests -t {}".format(self.testname)
         self.cli_tests.run(self.testname, noclean=False, report=False)
         mock_ft_utils.assert_called_with(cmd)
index 1bb630d..a76d120 100644 (file)
@@ -74,42 +74,26 @@ class CliTierTesting(unittest.TestCase):
                                                ":\n  %s\n" % (self.tiername,
                                                               'tiernames'))
 
-    @mock.patch('functest.cli.commands.cli_tier.os.path.isfile',
-                return_value=False)
-    @mock.patch('functest.cli.commands.cli_tier.click.echo')
-    def test_run_missing_env_file(self, mock_click_echo, mock_os):
-        self.cli_tier.run(self.tiername)
-        mock_click_echo.assert_called_with("Functest environment is not ready."
-                                           " Run first 'functest env prepare'")
-
-    @mock.patch('functest.cli.commands.cli_tier.os.path.isfile',
-                return_value=True)
     @mock.patch('functest.cli.commands.cli_tier.ft_utils.execute_command')
-    def test_run_default(self, mock_ft_utils, mock_os):
+    def test_run_default(self, mock_ft_utils):
         cmd = "run_tests -n -r -t {}".format(self.tiername)
         self.cli_tier.run(self.tiername, noclean=True, report=True)
         mock_ft_utils.assert_called_with(cmd)
 
-    @mock.patch('functest.cli.commands.cli_tier.os.path.isfile',
-                return_value=True)
     @mock.patch('functest.cli.commands.cli_tier.ft_utils.execute_command')
-    def test_run_report_missing_noclean(self, mock_ft_utils, mock_os):
+    def test_run_report_missing_noclean(self, mock_ft_utils):
         cmd = "run_tests -r -t {}".format(self.tiername)
         self.cli_tier.run(self.tiername, noclean=False, report=True)
         mock_ft_utils.assert_called_with(cmd)
 
-    @mock.patch('functest.cli.commands.cli_tier.os.path.isfile',
-                return_value=True)
     @mock.patch('functest.cli.commands.cli_tier.ft_utils.execute_command')
-    def test_run_noclean_missing_report(self, mock_ft_utils, mock_os):
+    def test_run_noclean_missing_report(self, mock_ft_utils):
         cmd = "run_tests -n -t {}".format(self.tiername)
         self.cli_tier.run(self.tiername, noclean=True, report=False)
         mock_ft_utils.assert_called_with(cmd)
 
-    @mock.patch('functest.cli.commands.cli_tier.os.path.isfile',
-                return_value=True)
     @mock.patch('functest.cli.commands.cli_tier.ft_utils.execute_command')
-    def test_run_missing_noclean_report(self, mock_ft_utils, mock_os):
+    def test_run_missing_noclean_report(self, mock_ft_utils):
         cmd = "run_tests -t {}".format(self.tiername)
         self.cli_tier.run(self.tiername, noclean=False, report=False)
         mock_ft_utils.assert_called_with(cmd)
index 61bd093..08c9b73 100644 (file)
@@ -62,24 +62,12 @@ class CliBaseTesting(unittest.TestCase):
             self.assertEqual(result.exit_code, 0)
             self.assertTrue(mock_method.called)
 
-    def test_env_prepare(self):
-        with mock.patch.object(self._env, 'prepare') as mock_method:
-            result = self.runner.invoke(cli_base.env_prepare)
-            self.assertEqual(result.exit_code, 0)
-            self.assertTrue(mock_method.called)
-
     def test_env_show(self):
         with mock.patch.object(self._env, 'show') as mock_method:
             result = self.runner.invoke(cli_base.env_show)
             self.assertEqual(result.exit_code, 0)
             self.assertTrue(mock_method.called)
 
-    def test_env_status(self):
-        with mock.patch.object(self._env, 'status') as mock_method:
-            result = self.runner.invoke(cli_base.env_status)
-            self.assertEqual(result.exit_code, 0)
-            self.assertTrue(mock_method.called)
-
     def test_testcase_list(self):
         with mock.patch.object(self._testcase, 'list') as mock_method:
             result = self.runner.invoke(cli_base.testcase_list)
index d91f63a..6b5021a 100644 (file)
@@ -1,6 +1,5 @@
 #!/usr/bin/env python
 
-import os
 import yaml
 
 import six
@@ -31,7 +30,6 @@ class Config(object):
             '{}_{}'.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")
-
+        pass
 
 CONF = Config()
index bf1a8bb..30901da 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -16,7 +16,6 @@ console_scripts =
     functest_tempest_conf = functest.opnfv_tests.openstack.refstack_client.tempest_conf:main
     openstack_snapshot = functest.utils.openstack_snapshot:main
     openstack_clean = functest.utils.openstack_clean:main
-    prepare_env = functest.ci.prepare_env:main
     run_tests = functest.ci.run_tests:main
     check_deployment = functest.ci.check_deployment:main
     functest_restapi = functest.api.server:main