summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xtests/functest_run.sh161
1 files changed, 161 insertions, 0 deletions
diff --git a/tests/functest_run.sh b/tests/functest_run.sh
new file mode 100755
index 0000000..b3f0743
--- /dev/null
+++ b/tests/functest_run.sh
@@ -0,0 +1,161 @@
+#!/bin/bash -e
+##############################################################################
+# Copyright (c) 2016 ZTE Corporation.
+#
+# 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
+##############################################################################
+
+[[ "${CI_DEBUG:-true}" == "true" ]] && set -x
+
+PARSER_IMAGE_URL=https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img
+PARSER_IMAGE_NAME=cirros
+PARSER_IMAGE_FILE="${PARSER_IMAGE_NAME}.img"
+PARSER_IMAGE_FORMAT=qcow2
+
+PARSER_VM_FLAVOR=m1.tiny
+
+PARSER_USER=parser
+PARSER_PASSWORD=parser
+PARSER_PROJECT=parser
+PARSER_TENANT=${PARSER_PROJECT}
+
+PARSER_ROLE=admin
+
+PARSER_STACK_NAME=vRNC_Stack
+
+VRNC_INPUT_TEMPLATE_FILE=../tosca2heat/tosca-parser/toscaparser/extensions/nfv/tests/data/vRNC/Definitions/vRNC.yaml
+VRNC_OUTPUT_TEMPLATE_FILE=./vRNC_Hot_Template.yaml
+
+download_parser_image() {
+ [ -e "${PARSER_IMAGE_FILE}" ] && return 0
+ wget "${PARSER_IMAGE_URL}" -o "$IMAGE_FILE"
+}
+
+register_parser_image() {
+ openstack image list | grep -qwo "${PARSER_IMAGE_NAME}" && return 0
+ openstack image create "${PARSER_IMAGE_NAME}" \
+ --public \
+ --disk-format "$IMAGE_FORMAT" \
+ --container-format bare \
+ --file "${PARSER_IMAGE_FILE}"
+}
+
+create_parser_user_and_project() {
+
+ # 1. create parser user.
+ openstack user list | grep -qwo "${PARSER_USER}" && {
+ echo "User ${PARSER_USER} exist, doesn't crate."
+ } || {
+ openstack user create "${PARSER_USER}" --password "${PARSR_PASSWORD}"
+ echo "Create user ${PARSER_USER} successful."
+ }
+
+ # 2. create parser project
+ openstack project list | grep -qwo "${PARSER_PROJECT}" && {
+ echo "Project ${PARSER_PROJECT} exist, doesn't crate."
+ } || {
+ openstack project create "${PARSER_PROJECT}"
+ echo "Create project ${PARSER_PROJECT} successful."
+ }
+
+ # 3. grant role for parser user
+ openstack user role list "${PARSER_USER}" --project "${PARSER_PROJECT}" \
+ | grep -qow " ${PARSER_ROLE}" && {
+ echo "User ${PARSER_USER} has role ${PARSER_ROLE} in project ${PARSER_PROJECT}, doesn't crate."
+ } || {
+ openstack role add "${PARSER_ROLE}" --user "${PARSER_USER}" \
+ --project "${PARSER_PROJECT}"
+ echo "Grant user ${PARSER_USER} the role ${PARSER_ROLE} in project ${PARSER_PROJECT} successful."
+ }
+
+}
+
+change_env_to_parser_user_project() {
+
+ export OS_USERNAME="$PARSER_USER"
+ export OS_PASSWORD="$PARSER_PASSWORD"
+ export OS_PROJECT_NAME="$PARSER_PROJECT"
+ export OS_TENANT_NAME="$PARSER_TENANT"
+
+}
+
+translator_and_deploy_vRNC() {
+ (
+ # 1. Delete parser stack ${PARSER_STACK_NAME}, use admin user in admin project
+ heat stack-list | grep -qow ${PARSER_STACK_NAME} && {
+ echo "stack ${PARSER_STACK_NAME} exist, delete it first."
+ heat stack-delete ${PARSER_STACK_NAME}
+ }
+ # 2. Switch env to parser project temporally
+ change_env_to_parser_user_project
+
+ # 3. Translator and deploy vRNC
+ heat-translator -f ${VRNC_INPUT_TEMPLATE_FILE} -o ${VRNC_OUTPUT_TEMPLATE_FILE} --deploy True
+
+ # 4. Wait for create vRNC
+ sleep 60
+
+ # 5. Validate the deploy result.
+
+ )
+
+}
+
+reset_parser_test() {
+ set +e
+
+ ret=$1
+
+ echo "cleanup..."
+ (
+ # 1. Switch env to parser project temporally
+ change_env_to_parser_user_project
+
+ # 2. Delete the stack ${PARSER_STACK_NAME}
+ heat stack-list | grep -qow ${PARSER_STACK_NAME} && {
+ echo "stack ${PARSER_STACK_NAME} exist, delete it."
+ heat stack-delete ${PARSER_STACK_NAME}
+ }
+
+ sleep 3
+ )
+
+ # 3. Delete parser user and project
+ parser_image_id=$(openstack image list | grep -ow "${PARSER_IMAGE_NAME}" | awk '{print $2}')
+ sleep 1
+ [ -n "${parser_image_id}" ] && openstack image delete "${parser_image_id}"
+ openstack role remove "${PARSER_ROLE}" --user "${PARSER_USER}" \
+ --project "${PARSER_PROJECT}"
+ openstack project delete "${PARSER_PROJECT}"
+ openstack user delete "${PARSER_USER}"
+
+ if ret != "ok"
+ exit 1
+ fi
+}
+
+
+echo "======================= Parser functest begin =========================="
+
+trap reset_parser_test EXIT
+
+echo " 1. Preparing VM image for parser..."
+download_parser_image
+register_parser_image
+
+echo " 2. Creating test user for parser..."
+create_parser_user_and_project
+
+echo " 3. Parse -> translate -> deploy vRNC..."
+translator_and_deploy_vRNC
+
+echo " 4. clear the test evn..."
+reset_parser_test "ok"
+
+echo "======================= Parser functest end =========================="
+
+exit 0
+