BGPVPN test case refactored
authorvitikkan <viktor.tikkanen@nokia.com>
Mon, 16 May 2016 05:05:45 +0000 (08:05 +0300)
committervitikkan <viktor.tikkanen@nokia.com>
Mon, 16 May 2016 05:28:11 +0000 (08:28 +0300)
BGPVPN test case is refactored and moved into bgpvpn.py module.

JIRA: FUNCTEST-234

Change-Id: Ib0dd6e11f3c568470d9c3837ca192da767c64843
Signed-off-by: vitikkan <viktor.tikkanen@nokia.com>
ci/exec_test.sh
testcases/VIM/OpenStack/CI/libraries/run_tempest.py
testcases/features/bgpvpn.py [new file with mode: 0644]
utils/functest_utils.py

index ae92e7f..e5f093b 100755 (executable)
@@ -118,22 +118,7 @@ function run_test(){
                 $debug $clean_flag --sanity all $report
         ;;
         "bgpvpn")
-            pushd ${repos_dir}/bgpvpn/
-              pip install --no-deps -e .
-            popd
-            tempest_dir=$(ls -t /home/opnfv/.rally/tempest/ |grep for-deploy |tail -1)
-            if [[ $tempest_dir == "" ]]; then
-                echo "Make sure tempest was running before" >&2
-            fi
-            tempest_dir=/home/opnfv/.rally/tempest/$tempest_dir
-            pushd $tempest_dir
-              mkdir -p /etc/tempest/
-              cp tempest.conf /etc/tempest/
-              echo "[service_available]
-bgpvpn = True" >> /etc/tempest/tempest.conf
-              ./run_tempest.sh -t -N -- networking_bgpvpn_tempest
-              rm -rf /etc/tempest/tempest.conf
-            popd
+            python ${FUNCTEST_REPO_DIR}/testcases/features/bgpvpn.py
         ;;
         "onos")
             if [ "$INSTALLER_TYPE" == "joid" ]; then
index 9eca6cb..bf62ce3 100644 (file)
@@ -172,21 +172,6 @@ def create_tempest_resources():
         exit(-1)
 
 
-def get_deployment_dir():
-    logger.debug("Resolving deployment UUID and directory...")
-    cmd = "rally deployment list | awk '/" + DEPLOYMENT_MAME + "/ {print $2}'"
-    p = subprocess.Popen(cmd, shell=True,
-                         stdout=subprocess.PIPE,
-                         stderr=subprocess.STDOUT)
-    deployment_uuid = p.stdout.readline().rstrip()
-    if deployment_uuid == "":
-        logger.error("Rally deployment NOT found.")
-        exit(-1)
-    deployment_dir = (RALLY_INSTALLATION_DIR + "/tempest/for-deployment-" +
-                      deployment_uuid)
-    return deployment_dir
-
-
 def configure_tempest(deployment_dir):
     """
     Add/update needed parameters into tempest.conf file generated by Rally
@@ -345,7 +330,7 @@ def main():
     if not os.path.exists(TEMPEST_RESULTS_DIR):
         os.makedirs(TEMPEST_RESULTS_DIR)
 
-    deployment_dir = get_deployment_dir()
+    deployment_dir = ft_utils.get_deployment_dir(logger)
     configure_tempest(deployment_dir)
     create_tempest_resources()
     generate_test_list(deployment_dir, args.mode)
diff --git a/testcases/features/bgpvpn.py b/testcases/features/bgpvpn.py
new file mode 100644 (file)
index 0000000..a6e66b1
--- /dev/null
@@ -0,0 +1,58 @@
+#!/usr/bin/python
+#
+# Copyright (c) 2015 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
+#
+# Execute BGPVPN Tempest test cases
+#
+
+import os
+import yaml
+import ConfigParser
+
+import functest.utils.functest_logger as ft_logger
+import functest.utils.functest_utils as ft_utils
+
+with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f:
+    functest_yaml = yaml.safe_load(f)
+
+dirs = functest_yaml.get('general').get('directories')
+FUNCTEST_REPO = dirs.get('dir_repo_functest')
+BGPVPN_REPO = dirs.get('dir_repo_bgpvpn')
+TEST_DB_URL = functest_yaml.get('results').get('test_db_url')
+
+logger = ft_logger.Logger("bgpvpn").getLogger()
+
+
+def main():
+    logger.info("Running BGPVPN Tempest test case...")
+
+    cmd = 'cd ' + BGPVPN_REPO + ';pip install --no-deps -e .'
+    ft_utils.execute_command(cmd, logger, exit_on_error=False)
+
+    src_tempest_dir = ft_utils.get_deployment_dir(logger)
+    if not src_tempest_dir:
+        logger.error("Rally deployment not found.")
+        exit(-1)
+
+    src_tempest_conf = src_tempest_dir + '/tempest.conf'
+    dst_tempest_conf = src_tempest_dir + '/etc/tempest.conf'
+
+    config = ConfigParser.RawConfigParser()
+    config.read(src_tempest_conf)
+    config.set('service_available', 'bgpvpn', 'True')
+    with open(dst_tempest_conf, 'wb') as config_file:
+        config.write(config_file)
+
+    cmd = (src_tempest_dir +
+           '/run_tempest.sh -t -N -- networking_bgpvpn_tempest;'
+           'rm -rf ' + dst_tempest_conf)
+    ft_utils.execute_command(cmd, logger, exit_on_error=False)
+
+
+if __name__ == '__main__':
+    main()
index 2d87161..8ee5346 100644 (file)
@@ -18,6 +18,7 @@ import socket
 import subprocess
 import sys
 import urllib2
+import yaml
 from git import Repo
 
 
@@ -235,3 +236,28 @@ def execute_command(cmd, logger=None,
             sys.exit(1)
 
     return p.returncode
+
+
+def get_deployment_dir(logger=None):
+    """
+    Returns current Rally deployment directory
+    """
+    with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f:
+        functest_yaml = yaml.safe_load(f)
+    f.close()
+    deployment_name = functest_yaml.get("rally").get("deployment_name")
+    rally_dir = functest_yaml.get("general").get("directories").get(
+        "dir_rally_inst")
+    cmd = ("rally deployment list | awk '/" + deployment_name +
+           "/ {print $2}'")
+    p = subprocess.Popen(cmd, shell=True,
+                         stdout=subprocess.PIPE,
+                         stderr=subprocess.STDOUT)
+    deployment_uuid = p.stdout.readline().rstrip()
+    if deployment_uuid == "":
+        if logger:
+            logger.error("Rally deployment not found.")
+        exit(-1)
+    deployment_dir = (rally_dir + "/tempest/for-deployment-" +
+                      deployment_uuid)
+    return deployment_dir