diff options
Diffstat (limited to 'xci/playbooks/roles/prepare-tests/templates')
4 files changed, 152 insertions, 0 deletions
diff --git a/xci/playbooks/roles/prepare-tests/templates/env.j2 b/xci/playbooks/roles/prepare-tests/templates/env.j2 new file mode 100644 index 00000000..d9a3bf32 --- /dev/null +++ b/xci/playbooks/roles/prepare-tests/templates/env.j2 @@ -0,0 +1,7 @@ +INSTALLER_IP=192.168.122.2 +TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results +ENERGY_RECORDER_API_URL=http://energy.opnfv.fr/resources +{# external network is only valid for OpenStack based scenarios #} +{% if 'os-' in deploy_scenario %} +EXTERNAL_NETWORK={{ external_network }} +{% endif %} diff --git a/xci/playbooks/roles/prepare-tests/templates/prepare-tests.sh.j2 b/xci/playbooks/roles/prepare-tests/templates/prepare-tests.sh.j2 new file mode 100644 index 00000000..1b779cb9 --- /dev/null +++ b/xci/playbooks/roles/prepare-tests/templates/prepare-tests.sh.j2 @@ -0,0 +1,46 @@ +#!/bin/bash + +# Variables that we need to pass from XCI to testing +XCI_ENV=(INSTALLER_TYPE XCI_FLAVOR OPENSTACK_OSA_VERSION CI_LOOP BUILD_TAG NODE_NAME FUNCTEST_MODE FUNCTEST_SUITE_NAME FUNCTEST_VERSION) + +# Extract variables from xci.env file +if [[ -e /root/xci.env ]]; then + for x in ${XCI_ENV[@]}; do + grep "^${x}=" /root/xci.env >> /root/env + done + # Parse the XCI's DEPLOY_SCENARIO and XCI_FLAVOR variables and + # set the functest container's DEPLOY_SCENARIO variable in the + # following format <scenario>-<flavor>. But the XCI's mini flavor + # is converted into noha. + DEPLOY_SCENARIO=`grep -Po '(?<=DEPLOY_SCENARIO=).*' /root/xci.env` + XCI_FLAVOR=`grep -Po '(?<=XCI_FLAVOR=).*' /root/xci.env` + XCI_FLAVOR=${XCI_FLAVOR/mini/noha} + echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO-$XCI_FLAVOR" >> /root/env +fi + +# we need to ensure the necessary environment variables are sourced +source /root/env + +{% if 'os-' in deploy_scenario %} +{# stuff needed for OpenStack based scenarios #} +source /root/openrc + +openstack --insecure network create --external \ + --provider-physical-network flat \ + --provider-network-type flat {{ external_network }} + +openstack --insecure subnet create --network {{ external_network }} \ + --allocation-pool {{ allocation_pool }} \ + --subnet-range {{ subnet_cidr }} --gateway {{ gateway_ip }} \ + --no-dhcp {{ subnet_name }} +{% else %} +{# stuff needed for Kubernetes based scenarios #} +# Create k8s.creds file for testing +KUBE_MASTER_URL=$(grep -r server ~/.kube/config | awk '{print $2}') +KUBE_MASTER_IP=$(echo $KUBE_MASTER_URL | awk -F "[:/]" '{print $4}') +cat << EOF > ~/k8s.creds +KUBERNETES_PROVIDER=local +KUBE_MASTER_URL=$KUBE_MASTER_URL +KUBE_MASTER_IP=$KUBE_MASTER_IP +EOF +{% endif %} diff --git a/xci/playbooks/roles/prepare-tests/templates/run-functest.sh.j2 b/xci/playbooks/roles/prepare-tests/templates/run-functest.sh.j2 new file mode 100644 index 00000000..b4cf46d7 --- /dev/null +++ b/xci/playbooks/roles/prepare-tests/templates/run-functest.sh.j2 @@ -0,0 +1,52 @@ +#!/bin/bash + +# Create directory to store functest logs +mkdir -p /root/functest-results/ + +# Dump the env file +echo "------------------------------------------------------" +echo "------------- functest environment file --------------" +cat /root/env +echo "------------------------------------------------------" + +# we need to ensure the necessary environment variables are sourced +source /root/env + +{% if 'os-' in deploy_scenario %} +{# stuff needed for OpenStack based scenarios #} +# the needed images differ between the suites so avoid downloading unnecessary images +echo "Downloading the images needed for functest-$FUNCTEST_SUITE_NAME" +mkdir ~/images && cd ~/images +if [[ "$FUNCTEST_SUITE_NAME" =~ "healthcheck" ]]; then + wget -q http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img +elif [[ "$FUNCTEST_SUITE_NAME" =~ "smoke" ]]; then + wget -q http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img \ + http://testresults.opnfv.org/functest/shaker-image.qcow2 \ + https://cloud-images.ubuntu.com/releases/14.04/release/ubuntu-14.04-server-cloudimg-amd64-disk1.img +else + echo "Unsupported test suite for functest" + exit 1 +fi +echo "------------------------------------------------------" +ls -al . && cd ~ +echo "------------------------------------------------------" + +# docker image to use will be different for healthcheck and smoke test +DOCKER_IMAGE_NAME="opnfv/functest-${FUNCTEST_SUITE_NAME}:${FUNCTEST_VERSION}" + +sudo docker run --env-file env \ + -v $(pwd)/openrc:/home/opnfv/functest/conf/env_file \ + -v $(pwd)/images:/home/opnfv/functest/images \ + -v $(pwd)/functest-results:/home/opnfv/functest/results \ + ${DOCKER_IMAGE_NAME} +{% else %} +{# stuff needed for Kubernetes based scenarios #} +# docker image to use will be different for healthcheck and smoke test +DOCKER_IMAGE_NAME="opnfv/functest-kubernetes-${FUNCTEST_SUITE_NAME}" + +sudo docker run --env-file env \ + -v $(pwd)/k8s.creds:/home/opnfv/functest/conf/env_file \ + -v $(pwd)/.kube/config:/root/.kube/config \ + -v $(pwd)/functest-results:/home/opnfv/functest/results \ + $DOCKER_IMAGE_NAME +{% endif %} diff --git a/xci/playbooks/roles/prepare-tests/templates/run-yardstick.sh.j2 b/xci/playbooks/roles/prepare-tests/templates/run-yardstick.sh.j2 new file mode 100644 index 00000000..6a7fd8be --- /dev/null +++ b/xci/playbooks/roles/prepare-tests/templates/run-yardstick.sh.j2 @@ -0,0 +1,47 @@ +#!/bin/bash + +# Create directory to store yardstick logs +mkdir -p /root/yardstick-results/ + +# Dump the env file +echo "------------------------------------------------------" +echo "------------- yardstick environment file --------------" +cat /root/env +echo "------------------------------------------------------" + +# we need to ensure the necessary environment variables are sourced +source /root/env + +{% if 'os-' in deploy_scenario %} +{# stuff needed for OpenStack based scenarios #} +rc_file_vol="-v /root/openrc:/etc/yardstick/openstack.creds" +{% else %} +{# k8 scenario name is hardcoded for the timebeing until we clarify #} +{# which suite name we should use for the scenarios without yardstick suites #} +DEPLOY_SCENARIO="k8-nosdn-nofeature-noha" +rc_file_vol="-v /root/admin.conf:/etc/yardstick/admin.conf" +{% endif %} + +OS_CACERT="/etc/ssl/certs/haproxy.cert" +DOCKER_IMAGE_NAME="opnfv/yardstick" +YARDSTICK_SCENARIO_SUITE_NAME="opnfv_${DEPLOY_SCENARIO}_daily.yaml" + +# add OS_CACERT to openrc +echo "export OS_CACERT=/etc/yardstick/os_cacert" >> ~/openrc + +opts="--privileged=true --rm" +envs="-e INSTALLER_TYPE=$INSTALLER_TYPE -e INSTALLER_IP=$INSTALLER_IP \ + -e NODE_NAME=$NODE_NAME -e EXTERNAL_NETWORK=$EXTERNAL_NETWORK \ + -e YARDSTICK_BRANCH=master -e BRANCH=master \ + -e DEPLOY_SCENARIO=$DEPLOY_SCENARIO -e CI_DEBUG=true" +cacert_file_vol="-v $OS_CACERT:/etc/yardstick/os_cacert" +map_log_dir="-v /root/yardstick-results:/tmp/yardstick" +sshkey="-v /root/.ssh/id_rsa:/root/.ssh/id_rsa" +cmd="sudo docker run ${opts} ${envs} ${rc_file_vol} ${cacert_file_vol} \ + ${map_log_dir} ${sshkey} ${DOCKER_IMAGE_NAME} \ + exec_tests.sh ${YARDSTICK_SCENARIO_SUITE_NAME}" +echo "Running yardstick with the command" +echo "------------------------------------------------------" +echo $cmd +echo "------------------------------------------------------" +$cmd |