aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docker/Dockerfile2
-rwxr-xr-xdocker/run_tests.sh84
-rwxr-xr-xtestcases/VIM/OpenStack/CI/libraries/run_rally-cert.py7
-rwxr-xr-xtestcases/VIM/OpenStack/CI/libraries/run_rally.py4
-rw-r--r--testcases/VIM/OpenStack/CI/libraries/run_tempest.py4
-rw-r--r--testcases/VIM/OpenStack/CI/rally_cert/scenario/opnfv-heat.yaml1
-rwxr-xr-xtestcases/config_functest.py36
-rw-r--r--testcases/config_functest.yaml33
-rw-r--r--testcases/features/promise.py212
-rw-r--r--testcases/functest_utils.py26
-rw-r--r--testcases/tests/TestFunctestUtils.py16
-rw-r--r--testcases/vIMS/CI/vIMS.py5
-rw-r--r--testcases/vPing/CI/libraries/vPing.py4
-rw-r--r--testcases/vPing/CI/libraries/vPing2.py4
14 files changed, 351 insertions, 87 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 3c5a2a657..45aa05c7b 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -54,6 +54,8 @@ libxml2-dev \
libffi-dev \
crudini \
ruby1.9.1-dev \
+npm \
+nodejs \
--no-install-recommends
diff --git a/docker/run_tests.sh b/docker/run_tests.sh
index c0bf06a2a..50a1296c1 100755
--- a/docker/run_tests.sh
+++ b/docker/run_tests.sh
@@ -50,6 +50,25 @@ function clean_openstack(){
fi
}
+function odl_tests(){
+ neutron_ip=$(keystone catalog --service identity | grep publicURL | cut -f3 -d"/" | cut -f1 -d":")
+ odl_ip=$(keystone catalog --service network | grep publicURL | cut -f3 -d"/" | cut -f1 -d":")
+ usr_name=$(env | grep OS | grep OS_USERNAME | cut -f2 -d'=')
+ password=$(env | grep OS | grep OS_PASSWORD | cut -f2 -d'=')
+ odl_port=8181
+ if [ $INSTALLER_TYPE == "fuel" ]; then
+ odl_port=8282
+ elif [ $INSTALLER_TYPE == "apex" ]; then
+ :
+ elif [ $INSTALLER_TYPE == "joid" ]; then
+ :
+ elif [ $INSTALLER_TYPE == "compass" ]; then
+ :
+ else
+ error "INSTALLER_TYPE not valid."
+ exit 1
+ fi
+}
function run_test(){
test_name=$1
echo ""
@@ -70,23 +89,7 @@ function run_test(){
;;
"odl")
info "Running ODL test..."
- neutron_ip=$(keystone catalog --service identity | grep publicURL | cut -f3 -d"/" | cut -f1 -d":")
- odl_ip=$(keystone catalog --service network | grep publicURL | cut -f3 -d"/" | cut -f1 -d":")
- usr_name=$(env | grep OS | grep OS_USERNAME | cut -f2 -d'=')
- password=$(env | grep OS | grep OS_PASSWORD | cut -f2 -d'=')
- odl_port=8181
- if [ $INSTALLER_TYPE == "fuel" ]; then
- odl_port=8282
- elif [ $INSTALLER_TYPE == "apex" ]; then
- :
- elif [ $INSTALLER_TYPE == "joid" ]; then
- :
- elif [ $INSTALLER_TYPE == "compass" ]; then
- :
- else
- error "INSTALLER_TYPE not valid."
- exit 1
- fi
+ odl_tests
ODL_PORT=$odl_port ODL_IP=$odl_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$password \
${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh
@@ -118,24 +121,43 @@ function run_test(){
"rally")
info "Running Rally benchmark suite..."
cinder type-create volume-test #provisional
- python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_rally.py \
+ python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py \
--debug all ${report}
cinder type-delete $(cinder type-list|grep test|awk '{print $2}')
clean_openstack
;;
- "bgpvpn_template")
+ "bgpvpn")
info "Running BGPVPN Tempest test case..."
- tempest_dir=$(find /root/.rally -type d -name for-deploy*)
- # TODO:
- # do the call of your test case here.
- # the bgpvpn repo is cloned in $BGPVPN_REPO_DIR
- # tempest is installed in $tempest_dir
- # Suggestion:
- # mkdir ${tempest_dir}/tempest/api/bgpvpn/
- # cp ${BGPVPN_REPO_DIR}/networking_bgpvpn_tempest/<whatever you need> \
- # ${tempest_dir}/tempest/api/bgpvpn/
- # ${tempest_dir}/run_tempest.sh tempest.api.bgpvpn.<test_case_name>
+ tempest_dir=$(ls -t /home/opnfv/.rally/tempest/ |grep for-deploy |tail -1)
+ if [[ $tempest_dir == "" ]]; then
+ echo "Make sure tempest was running before"
+ exit 1
+ fi
+ tempest_dir=/home/opnfv/.rally/tempest/$tempest_dir
+ pushd $tempest_dir
+ . .venv/bin/activate
+ pip install --no-deps -e ~/repos/bgpvpn/.
+ cp tempest.conf /etc/tempest/
+ echo "[service_available]
+bgpvpn = True" >> /etc/tempest/tempest.conf
+ ./run_tempest.sh -- networking_bgpvpn_tempest
+ rm -rf /etc/tempest/tempest.conf
+ popd
+ ;;
+ "odl-vpnservice")
+ info "Running VPNSERVICE Robot test case..."
+ odl_tests
+ cp ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/test_list.txt \
+ ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/test_list.txt.bak
+ echo "
+test/csit/suites/vpnservice
+" > ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/test_list.txt
+ ODL_PORT=$odl_port ODL_IP=$odl_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$password \
+ ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh
+ cp ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/test_list.txt.bak \
+ ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/test_list.txt
+ # TODO: copy logs
;;
"onos")
info "Running ONOS test case..."
@@ -143,7 +165,8 @@ function run_test(){
;;
"promise")
info "Running PROMISE test case..."
- # TODO
+ python ${FUNCTEST_REPO_DIR}/testcases/features/promise.py --debug all ${report}
+ clean_openstack
;;
"doctor")
info "Running Doctor test..."
@@ -192,7 +215,6 @@ done
tests_file="/home/opnfv/functest/conf/testcase-list.txt"
if [[ -n "$DEPLOY_SCENARIO" && "$DEPLOY_SCENARIO" != "none" ]] &&\
[[ -f $tests_file ]]; then
- echo "testcase-list.txt content:";cat $test_file; echo ""
arr_test=($(cat $tests_file))
else
arr_test=(vping tempest vims rally)
diff --git a/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py b/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py
index 1c27b0273..d2128d9ac 100755
--- a/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py
+++ b/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py
@@ -107,8 +107,6 @@ RESULTS_DIR = functest_yaml.get("general").get("directories"). \
TEST_DB = functest_yaml.get("results").get("test_db_url")
FLOATING_NETWORK = functest_yaml.get("general"). \
get("openstack").get("neutron_public_net_name")
-FLOATING_SUBNET_CIDR = functest_yaml.get("general"). \
- get("openstack").get("neutron_public_subnet_cidr")
PRIVATE_NETWORK = functest_yaml.get("general"). \
get("openstack").get("neutron_private_net_name")
@@ -126,12 +124,12 @@ def push_results_to_db(payload):
url = TEST_DB + "/results"
installer = functest_utils.get_installer_type(logger)
- git_version = functest_utils.get_git_branch(REPO_PATH)
+ scenario = functest_utils.get_scenario(logger)
pod_name = functest_utils.get_pod_name(logger)
# TODO pod_name hardcoded, info shall come from Jenkins
params = {"project_name": "functest", "case_name": "Rally",
"pod_name": pod_name, "installer": installer,
- "version": git_version, "details": payload}
+ "version": scenario, "details": payload}
headers = {'Content-Type': 'application/json'}
r = requests.post(url, data=json.dumps(params), headers=headers)
@@ -180,7 +178,6 @@ def build_task_args(test_file_name):
task_args['flavor_name'] = FLAVOR_NAME
task_args['glance_image_location'] = GLANCE_IMAGE_PATH
task_args['floating_network'] = FLOATING_NETWORK
- task_args['floating_subnet_cidr'] = FLOATING_SUBNET_CIDR
task_args['netid'] = functest_utils.get_network_id(client_dict['neutron'],
PRIVATE_NETWORK).encode('ascii', 'ignore')
task_args['tmpl_dir'] = TEMPLATE_DIR
diff --git a/testcases/VIM/OpenStack/CI/libraries/run_rally.py b/testcases/VIM/OpenStack/CI/libraries/run_rally.py
index d1088014c..3c70e3880 100755
--- a/testcases/VIM/OpenStack/CI/libraries/run_rally.py
+++ b/testcases/VIM/OpenStack/CI/libraries/run_rally.py
@@ -101,12 +101,12 @@ def push_results_to_db(payload):
url = TEST_DB + "/results"
installer = functest_utils.get_installer_type(logger)
- git_version = functest_utils.get_git_branch(REPO_PATH)
+ scenario = functest_utils.get_scenario(logger)
pod_name = functest_utils.get_pod_name(logger)
# TODO pod_name hardcoded, info shall come from Jenkins
params = {"project_name": "functest", "case_name": "Rally",
"pod_name": pod_name, "installer": installer,
- "version": git_version, "details": payload}
+ "version": scenario, "details": payload}
headers = {'Content-Type': 'application/json'}
r = requests.post(url, data=json.dumps(params), headers=headers)
diff --git a/testcases/VIM/OpenStack/CI/libraries/run_tempest.py b/testcases/VIM/OpenStack/CI/libraries/run_tempest.py
index 1f5d34cf7..ee0a4bea8 100644
--- a/testcases/VIM/OpenStack/CI/libraries/run_tempest.py
+++ b/testcases/VIM/OpenStack/CI/libraries/run_tempest.py
@@ -104,12 +104,12 @@ def push_results_to_db(payload, module, pod_name):
# TODO move DB creds into config file
url = TEST_DB + "/results"
installer = functest_utils.get_installer_type(logger)
- git_version = functest_utils.get_git_branch(REPO_PATH)
+ scenario = functest_utils.get_scenario(logger)
logger.info("Pushing results to DB: '%s'." % url)
params = {"project_name": "functest", "case_name": "Tempest",
"pod_name": str(pod_name), 'installer': installer,
- "version": git_version, 'details': payload}
+ "version": scenario, 'details': payload}
headers = {'Content-Type': 'application/json'}
r = requests.post(url, data=json.dumps(params), headers=headers)
diff --git a/testcases/VIM/OpenStack/CI/rally_cert/scenario/opnfv-heat.yaml b/testcases/VIM/OpenStack/CI/rally_cert/scenario/opnfv-heat.yaml
index 6debb415a..dd8b282a6 100644
--- a/testcases/VIM/OpenStack/CI/rally_cert/scenario/opnfv-heat.yaml
+++ b/testcases/VIM/OpenStack/CI/rally_cert/scenario/opnfv-heat.yaml
@@ -15,7 +15,6 @@
public_net: {{ floating_network }}
image: {{ image_name }}
flavor: {{ flavor_name }}
- cidr: {{ floating_subnet_cidr }}
context:
{{ user_context(tenants_amount, users_amount, use_existing_users) }}
runner:
diff --git a/testcases/config_functest.py b/testcases/config_functest.py
index 70a7d6cd6..973c8a385 100755
--- a/testcases/config_functest.py
+++ b/testcases/config_functest.py
@@ -37,11 +37,12 @@ formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(messag
ch.setFormatter(formatter)
logger.addHandler(ch)
-REPO_PATH=os.environ['repos_dir']+'/functest/'
-if not os.path.exists(REPO_PATH):
- logger.error("Functest repository directory not found '%s'" % REPO_PATH)
+REPOS_DIR=os.environ['repos_dir']
+FUNCTEST_REPO=REPOS_DIR+'/functest/'
+if not os.path.exists(FUNCTEST_REPO):
+ logger.error("Functest repository directory not found '%s'" % FUNCTEST_REPO)
exit(-1)
-sys.path.append(REPO_PATH + "testcases/")
+sys.path.append(FUNCTEST_REPO + "testcases/")
with open("/home/opnfv/functest/conf/config_functest.yaml") as f:
functest_yaml = yaml.safe_load(f)
@@ -50,13 +51,13 @@ f.close()
""" global variables """
# Directories
-RALLY_DIR = REPO_PATH + functest_yaml.get("general").get("directories").get("dir_rally")
+RALLY_DIR = FUNCTEST_REPO + functest_yaml.get("general").get("directories").get("dir_rally")
RALLY_REPO_DIR = functest_yaml.get("general").get("directories").get("dir_repo_rally")
RALLY_INSTALLATION_DIR = functest_yaml.get("general").get("directories").get("dir_rally_inst")
RALLY_RESULT_DIR = functest_yaml.get("general").get("directories").get("dir_rally_res")
-VPING_DIR = REPO_PATH + functest_yaml.get("general").get("directories").get("dir_vping")
+VPING_DIR = FUNCTEST_REPO + functest_yaml.get("general").get("directories").get("dir_vping")
VIMS_TEST_DIR = functest_yaml.get("general").get("directories").get("dir_repo_vims_test")
-ODL_DIR = REPO_PATH + functest_yaml.get("general").get("directories").get("dir_odl")
+ODL_DIR = FUNCTEST_REPO + functest_yaml.get("general").get("directories").get("dir_odl")
DATA_DIR = functest_yaml.get("general").get("directories").get("dir_functest_data")
# Tempest/Rally configuration details
@@ -124,11 +125,22 @@ def action_start():
script += 'rvm use 1.9.3;'
script += 'bundle install'
+ logger_debug = None
+ CI_DEBUG = os.environ.get("CI_DEBUG")
+ if CI_DEBUG == "true" or CI_DEBUG == "True":
+ logger_debug = logger
+
cmd = "/bin/bash -c '" + script + "'"
- if os.environ.get("CI_DEBUG") == "false":
- functest_utils.execute_command(cmd)
- else:
- functest_utils.execute_command(cmd,logger)
+ functest_utils.execute_command(cmd, logger = logger_debug, exit_on_error=False)
+
+
+ logger.info("Installing dependencies for Promise testcase...")
+ cmd = 'npm install -g yangforge'
+ functest_utils.execute_command(cmd,logger = logger_debug, exit_on_error=False)
+
+ shutil.copy2(REPOS_DIR+'/promise/package.json',FUNCTEST_REPO+'/testcases/features/package.json')
+ cmd = 'npm install'
+ functest_utils.execute_command(cmd,logger = logger_debug, exit_on_error=False)
# Create result folder under functest if necessary
if not os.path.exists(RALLY_RESULT_DIR):
@@ -210,7 +222,7 @@ def action_clean():
shutil.rmtree(RALLY_RESULT_DIR,ignore_errors=True)
logger.debug("Cleaning up the OpenStack deployment...")
- cmd='python ' + REPO_PATH + \
+ cmd='python ' + FUNCTEST_REPO + \
'/testcases/VIM/OpenStack/CI/libraries/clean_openstack.py --debug'
functest_utils.execute_command(cmd,logger)
logger.info("Functest environment clean!")
diff --git a/testcases/config_functest.yaml b/testcases/config_functest.yaml
index 21e99ba87..ab59de2ed 100644
--- a/testcases/config_functest.yaml
+++ b/testcases/config_functest.yaml
@@ -150,8 +150,21 @@ ONOS:
installer_master: '10.20.0.2'
installer_master_username: 'root'
installer_master_password: 'r00tme'
+
+promise:
+ general:
+ tenant_name: promise
+ tenant_description: promise Functionality Testing
+ user_name: promiser
+ user_pwd: test
+ image_name: promise-img
+ flavor_name: promise-flavor
+ flavor_vcpus: 1
+ flavor_ram: 512
+ flavor_disk: 0
+
results:
- test_db_url: http://213.77.62.197
+ test_db_url: http://testresults.opnfv.org/testapi
# to be maintained...
# the execution order is important as some tests may be more destructive than others
@@ -170,7 +183,7 @@ test_exec_priority:
#11: openstack-neutron-bgpvpn-api-extension-tests
12: vims
13: rally
-
+
########################################################################
# This part lists the dependencies of the tests
@@ -221,8 +234,10 @@ test-dependencies:
installer: '(apex)|(fuel)'
functest:
vims:
+ scenario: '(ocl)|(odl)|(nosdn)'
vping:
vping_userdata:
+ scenario: '(ocl)|(odl)|(nosdn)'
tempest:
rally:
odl:
@@ -236,12 +251,12 @@ test-dependencies:
policy-test:
scenario: 'odl'
sdnvpn:
- opnfv-yardstick-tc026-sdnvpn:
- installer: 'fuel'
- scenario: '(ovs)*(nosdn)'
- odl-vpn_service-tests:
+ odl-vpnservice:
installer: 'fuel'
- scenario: '(ovs)*(odl)'
- openstack-neutron-bgpvpn-api-extension-tests:
+ scenario: 'bgpvpn'
+ # this execute the tests:
+ # /home/opnfv/repos/odl_integration/test/csit/suites/vpnservice
+ bgpvpn:
installer: 'fuel'
- scenario: '(ovs)*(nosdn)'
+ scenario: 'bgpvpn'
+ # this execute the tempest tests of networking-bgpvpn
diff --git a/testcases/features/promise.py b/testcases/features/promise.py
new file mode 100644
index 000000000..cc7cf0ab8
--- /dev/null
+++ b/testcases/features/promise.py
@@ -0,0 +1,212 @@
+#!/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
+#
+# Maintainer : jose.lausuch@ericsson.com
+#
+import argparse
+import logging
+import os
+import time
+import sys
+import yaml
+import keystoneclient.v2_0.client as ksclient
+import glanceclient.client as glclient
+import novaclient.client as nvclient
+
+parser = argparse.ArgumentParser()
+
+parser.add_argument("-d", "--debug", help="Debug mode", action="store_true")
+parser.add_argument("-r", "--report",
+ help="Create json result file",
+ action="store_true")
+args = parser.parse_args()
+
+with open('/home/opnfv/functest/conf/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')
+PROMISE_REPO = dirs.get('dir_repo_promise')
+TEST_DB_URL = functest_yaml.get('results').get('test_db_url')
+
+TENANT_NAME = functest_yaml.get('promise').get('general').get('tenant_name')
+TENANT_DESCRIPTION = functest_yaml.get('promise').get(
+ 'general').get('tenant_description')
+USER_NAME = functest_yaml.get('promise').get('general').get('user_name')
+USER_PWD = functest_yaml.get('promise').get('general').get('user_pwd')
+IMAGE_NAME = functest_yaml.get('promise').get('general').get('image_name')
+FLAVOR_NAME = functest_yaml.get('promise').get('general').get('flavor_name')
+FLAVOR_VCPUS = functest_yaml.get('promise').get('general').get('flavor_vcpus')
+FLAVOR_RAM = functest_yaml.get('promise').get('general').get('flavor_ram')
+FLAVOR_DISK = functest_yaml.get('promise').get('general').get('flavor_disk')
+
+
+GLANCE_IMAGE_FILENAME = functest_yaml.get('general'). \
+ get('openstack').get('image_file_name')
+GLANCE_IMAGE_FORMAT = functest_yaml.get('general'). \
+ get('openstack').get('image_disk_format')
+GLANCE_IMAGE_PATH = functest_yaml.get('general'). \
+ get('directories').get('dir_functest_data') + "/" + GLANCE_IMAGE_FILENAME
+
+sys.path.append('%s/testcases' % FUNCTEST_REPO)
+import functest_utils
+
+""" logging configuration """
+logger = logging.getLogger('Promise')
+logger.setLevel(logging.DEBUG)
+
+ch = logging.StreamHandler()
+
+if args.debug:
+ ch.setLevel(logging.DEBUG)
+else:
+ ch.setLevel(logging.INFO)
+
+formatter = logging.Formatter('%(asctime)s - %(name)s'
+ '- %(levelname)s - %(message)s')
+
+ch.setFormatter(formatter)
+logger.addHandler(ch)
+
+
+
+def create_image(glance_client, name):
+
+ return image_id
+
+
+def main():
+ ks_creds = functest_utils.get_credentials("keystone")
+ nv_creds = functest_utils.get_credentials("nova")
+ nt_creds = functest_utils.get_credentials("neutron")
+
+ keystone = ksclient.Client(**ks_creds)
+
+ user_id = functest_utils.get_user_id(keystone, ks_creds['username'])
+ if user_id == '':
+ logger.error("Error : Failed to get id of %s user" %
+ ks_creds['username'])
+ exit(-1)
+
+ logger.info("Creating tenant '%s'..." % TENANT_NAME)
+ tenant_id = functest_utils.create_tenant(
+ keystone, TENANT_NAME, TENANT_DESCRIPTION)
+ if tenant_id == '':
+ logger.error("Error : Failed to create %s tenant" % TENANT_NAME)
+ exit(-1)
+ logger.debug("Tenant '%s' created successfully." % TENANT_NAME)
+
+ roles_name = ["admin", "Admin"]
+ role_id = ''
+ for role_name in roles_name:
+ if role_id == '':
+ role_id = functest_utils.get_role_id(keystone, role_name)
+
+ if role_id == '':
+ logger.error("Error : Failed to get id for %s role" % role_name)
+ exit(-1)
+
+ logger.info("Adding role '%s' to tenant '%s'..." % (role_id,TENANT_NAME))
+ if not functest_utils.add_role_user(keystone, user_id, role_id, tenant_id):
+ logger.error("Error : Failed to add %s on tenant %s" %
+ (ks_creds['username'],TENANT_NAME))
+ exit(-1)
+ logger.debug("Role added successfully.")
+
+ logger.info("Creating user '%s'..." % USER_NAME)
+ user_id = functest_utils.create_user(
+ keystone, USER_NAME, USER_PWD, None, tenant_id)
+
+ if user_id == '':
+ logger.error("Error : Failed to create %s user" % USER_NAME)
+ exit(-1)
+ logger.debug("User '%s' created successfully." % USER_NAME)
+
+ logger.info("Updating OpenStack credentials...")
+ ks_creds.update({
+ "username": TENANT_NAME,
+ "password": TENANT_NAME,
+ "tenant_name": TENANT_NAME,
+ })
+
+ nt_creds.update({
+ "tenant_name": TENANT_NAME,
+ })
+
+ nv_creds.update({
+ "project_id": TENANT_NAME,
+ })
+
+ glance_endpoint = keystone.service_catalog.url_for(service_type='image',
+ endpoint_type='publicURL')
+ glance = glclient.Client(1, glance_endpoint, token=keystone.auth_token)
+ nova = nvclient.Client("2", **nv_creds)
+
+
+ logger.info("Creating image '%s' from '%s'..." % (IMAGE_NAME,
+ GLANCE_IMAGE_PATH))
+ image_id = functest_utils.create_glance_image(glance,
+ IMAGE_NAME,
+ GLANCE_IMAGE_PATH)
+ if not image_id:
+ logger.error("Failed to create the Glance image...")
+ exit(-1)
+ logger.debug("Image '%s' with ID '%s' created successfully." % (IMAGE_NAME,
+ image_id))
+
+ flavor_id = functest_utils.create_flavor(nova,
+ FLAVOR_NAME,
+ FLAVOR_RAM,
+ FLAVOR_DISK,
+ FLAVOR_VCPUS)
+ if not flavor_id:
+ logger.error("Failed to create the Flavor...")
+ exit(-1)
+ logger.debug("Flavor '%s' with ID '%s' created successfully." % (FLAVOR_NAME,
+ flavor_id))
+
+ logger.info("Exporting environment variables...")
+ os.environ["NODE_ENV"] = "functest"
+ os.environ["OS_TENANT_NAME"] = TENANT_NAME
+ os.environ["OS_USERNAME"] = USER_NAME
+ os.environ["OS_PASSWORD"] = USER_PWD
+ os.environ["OS_TEST_IMAGE"] = image_id
+ os.environ["OS_TEST_FLAVOR"] = flavor_id
+
+ cmd = 'DEBUG=1 npm run -s test'
+ start_time_ts = time.time()
+
+ logger.info("Running command: %s" % cmd)
+ os.chdir(PROMISE_REPO)
+ ret = functest_utils.execute_command(cmd, exit_on_error=False)
+
+ end_time_ts = time.time()
+ duration = round(end_time_ts - start_time_ts, 1)
+ test_status = 'Failed'
+ if ret:
+ test_status = 'OK'
+
+ logger.info("Test status: %s" % test_status)
+ details = {
+ 'timestart': start_time_ts,
+ 'duration': duration,
+ 'status': test_status,
+ }
+ pod_name = functest_utils.get_pod_name()
+ git_version = functest_utils.get_git_branch(PROMISE_REPO)
+ #functest_utils.push_results_to_db(TEST_DB_URL,
+ # 'promise',
+ # None,
+ # pod_name,
+ # git_version,
+ # details)
+ #
+
+if __name__ == '__main__':
+ main()
diff --git a/testcases/functest_utils.py b/testcases/functest_utils.py
index e76ef991b..ed9e36c89 100644
--- a/testcases/functest_utils.py
+++ b/testcases/functest_utils.py
@@ -88,6 +88,12 @@ def get_instance_by_name(nova_client, instance_name):
except:
return None
+def create_flavor(nova_client, flavor_name, ram, disk, vcpus):
+ try:
+ flavor = nova_client.flavors.create(flavor_name,ram,vcpus,disk)
+ except:
+ return None
+ return flavor.id
def get_flavor_id(nova_client, flavor_name):
flavors = nova_client.flavors.list(detailed=True)
@@ -652,11 +658,25 @@ def get_installer_type(logger=None):
except KeyError:
if logger:
logger.error("Impossible to retrieve the installer type")
- installer = "Unkown"
+ installer = "Unknown_installer"
return installer
+def get_scenario(logger=None):
+ """
+ Get scenario
+ """
+ try:
+ scenario = os.environ['DEPLOY_SCENARIO']
+ except KeyError:
+ if logger:
+ logger.error("Impossible to retrieve the scenario")
+ scenario = "Unknown_scenario"
+
+ return scenario
+
+
def get_pod_name(logger=None):
"""
Get PoD Name from env variable NODE_NAME
@@ -671,12 +691,12 @@ def get_pod_name(logger=None):
def push_results_to_db(db_url, case_name, logger, pod_name,
- git_version, payload):
+ version, payload):
url = db_url + "/results"
installer = get_installer_type(logger)
params = {"project_name": "functest", "case_name": case_name,
"pod_name": pod_name, "installer": installer,
- "version": git_version, "details": payload}
+ "version": version, "details": payload}
headers = {'Content-Type': 'application/json'}
try:
diff --git a/testcases/tests/TestFunctestUtils.py b/testcases/tests/TestFunctestUtils.py
index 6f12e603d..17bc958e3 100644
--- a/testcases/tests/TestFunctestUtils.py
+++ b/testcases/tests/TestFunctestUtils.py
@@ -45,15 +45,6 @@ class TestFunctestUtils(unittest.TestCase):
env_test = getTestEnv('policy-test', functest_yaml)
self.assertEqual(env_test, {'scenario': 'odl'})
- env_test = getTestEnv('sdnvpn/odl-vpn_service-tests', functest_yaml)
- self.assertEqual(env_test,
- {'installer': 'fuel', 'scenario': '(ovs)*(odl)'})
-
- env_test = getTestEnv('sdnvpn/opnfv-yardstick-tc026-sdnvpn',
- functest_yaml)
- self.assertEqual(env_test,
- {'installer': 'fuel', 'scenario': '(ovs)*(nosdn)'})
-
env_test = getTestEnv('foo', functest_yaml)
self.assertEqual(env_test, '')
@@ -86,13 +77,6 @@ class TestFunctestUtils(unittest.TestCase):
test = isTestRunnable('functest/vims', functest_yaml)
self.assertTrue(test)
- test = isTestRunnable('sdnvpn/odl-vpn_service-tests',
- functest_yaml)
- self.assertTrue(test)
-
- test = isTestRunnable('sdnvpn/opnfv-yardstick-tc026-sdnvpn',
- functest_yaml)
- self.assertFalse(test)
def test_generateTestcaseList(self):
diff --git a/testcases/vIMS/CI/vIMS.py b/testcases/vIMS/CI/vIMS.py
index eae821ad4..bc15676e5 100644
--- a/testcases/vIMS/CI/vIMS.py
+++ b/testcases/vIMS/CI/vIMS.py
@@ -177,9 +177,10 @@ def test_clearwater():
if args.report:
logger.debug("Push result into DB")
logger.debug("Pushing results to DB....")
- git_version = functest_utils.get_git_branch(REPO_PATH)
+ scenario = functest_utils.get_scenario(logger)
functest_utils.push_results_to_db(db_url=TEST_DB, case_name="vIMS",
- logger=logger, pod_name=functest_utils.get_pod_name(logger), git_version=git_version,
+ logger=logger, pod_name=functest_utils.get_pod_name(logger),
+ version=scenario,
payload={'orchestrator': {'duration': CFY_DEPLOYMENT_DURATION,
'result': ""},
'vIMS': {'duration': CW_DEPLOYMENT_DURATION,
diff --git a/testcases/vPing/CI/libraries/vPing.py b/testcases/vPing/CI/libraries/vPing.py
index aa3e400ca..dc2d2abec 100644
--- a/testcases/vPing/CI/libraries/vPing.py
+++ b/testcases/vPing/CI/libraries/vPing.py
@@ -479,11 +479,11 @@ def main():
# Don't report if userdata is not supported
logger.debug("Push result into DB")
# TODO check path result for the file
- git_version = functest_utils.get_git_branch(REPO_PATH)
+ scenario = functest_utils.get_scenario(logger)
pod_name = functest_utils.get_pod_name(logger)
functest_utils.push_results_to_db(TEST_DB,
"vPing_userdata",
- logger, pod_name, git_version,
+ logger, pod_name, scenario,
payload={'timestart': start_time_ts,
'duration': duration,
'status': test_status})
diff --git a/testcases/vPing/CI/libraries/vPing2.py b/testcases/vPing/CI/libraries/vPing2.py
index 2d31917a0..b358cb716 100644
--- a/testcases/vPing/CI/libraries/vPing2.py
+++ b/testcases/vPing/CI/libraries/vPing2.py
@@ -539,11 +539,11 @@ def main():
if args.report:
logger.debug("Push result into DB")
# TODO check path result for the file
- git_version = functest_utils.get_git_branch(REPO_PATH)
+ scenario = functest_utils.get_scenario(logger)
pod_name = functest_utils.get_pod_name(logger)
functest_utils.push_results_to_db(TEST_DB,
"vPing",
- logger, pod_name, git_version,
+ logger, pod_name, scenario,
payload={'timestart': start_time_ts,
'duration': duration,
'status': test_status})