summaryrefslogtreecommitdiffstats
path: root/jjb/functest
diff options
context:
space:
mode:
Diffstat (limited to 'jjb/functest')
-rwxr-xr-xjjb/functest/functest-cleanup.sh12
-rw-r--r--jjb/functest/functest-daily-jobs.yml (renamed from jjb/functest/functest-ci-jobs.yml)47
-rw-r--r--jjb/functest/functest-exit.sh5
-rwxr-xr-xjjb/functest/functest-loop.sh6
-rw-r--r--jjb/functest/functest-project-jobs.yml1
-rwxr-xr-xjjb/functest/functest-suite.sh26
-rw-r--r--jjb/functest/functest-weekly-jobs.yml124
-rwxr-xr-xjjb/functest/set-functest-env.sh61
8 files changed, 203 insertions, 79 deletions
diff --git a/jjb/functest/functest-cleanup.sh b/jjb/functest/functest-cleanup.sh
index b03d4778d..fc277b9ed 100755
--- a/jjb/functest/functest-cleanup.sh
+++ b/jjb/functest/functest-cleanup.sh
@@ -3,14 +3,22 @@
[[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
echo "Cleaning up docker containers/images..."
+HOST_ARCH=$(uname -m)
FUNCTEST_IMAGE=opnfv/functest
-# Remove containers along with image opnfv/functest:<none>
+if [ "$HOST_ARCH" = "aarch64" ]; then
+ FUNCTEST_IMAGE="${FUNCTEST_IMAGE}_${HOST_ARCH}"
+fi
+
+# Remove containers along with image opnfv/functest*:<none>
dangling_images=($(docker images -f "dangling=true" | grep $FUNCTEST_IMAGE | awk '{print $3}'))
if [[ -n ${dangling_images} ]]; then
echo " Removing $FUNCTEST_IMAGE:<none> images and their containers..."
for image_id in "${dangling_images[@]}"; do
echo " Removing image_id: $image_id and its containers"
- docker ps -a | grep $image_id | awk '{print $1}'| xargs docker rm -f >${redirect}
+ containers=$(docker ps -a | grep $image_id | awk '{print $1}')
+ if [[ -n "$containers" ]];then
+ docker rm -f $containers >${redirect}
+ fi
docker rmi $image_id >${redirect}
done
fi
diff --git a/jjb/functest/functest-ci-jobs.yml b/jjb/functest/functest-daily-jobs.yml
index 4920bffea..5984b3674 100644
--- a/jjb/functest/functest-ci-jobs.yml
+++ b/jjb/functest/functest-daily-jobs.yml
@@ -2,9 +2,9 @@
# job configuration for functest
###################################
- project:
- name: functest
+ name: functest-daily
- project: '{name}'
+ project: functest
#--------------------------------
# BRANCH ANCHORS
@@ -113,6 +113,15 @@
slave-label: armband-virtual
installer: fuel
<<: *danube
+# daisy CI PODs
+ - baremetal:
+ slave-label: daisy-baremetal
+ installer: daisy
+ <<: *master
+ - virtual:
+ slave-label: daisy-virtual
+ installer: daisy
+ <<: *master
# netvirt 3rd party ci
- virtual:
slave-label: odl-netvirt-virtual
@@ -133,8 +142,8 @@
slave-label: '{pod}'
installer: joid
<<: *master
- - huawei-pod5:
- slave-label: '{pod}'
+ - baremetal-centos:
+ slave-label: 'intel-pod8'
installer: compass
<<: *master
- nokia-pod1:
@@ -189,8 +198,6 @@
job-timeout: 60
- 'daily':
job-timeout: 180
- - 'weekly':
- job-timeout: 400
jobs:
- 'functest-{installer}-{pod}-{testsuite}-{stream}'
@@ -204,6 +211,7 @@
concurrent: true
properties:
+ - logrotate-default
- throttle:
enabled: true
max-per-node: 1
@@ -219,7 +227,6 @@
parameters:
- project-parameter:
project: '{project}'
- - gerrit-parameter:
branch: '{branch}'
- '{installer}-defaults'
- '{slave-label}-defaults'
@@ -234,7 +241,7 @@
- string:
name: CLEAN_DOCKER_IMAGES
default: 'false'
- description: 'Remove downloaded docker images (opnfv/functest:*)'
+ description: 'Remove downloaded docker images (opnfv/functest*:*)'
- functest-parameter:
gs-pathname: '{gs-pathname}'
@@ -243,7 +250,7 @@
builders:
- description-setter:
- description: "POD: $NODE_NAME"
+ description: "Built on $NODE_NAME"
- 'functest-{testsuite}-builder'
########################
@@ -257,13 +264,6 @@
default: 'daily'
description: "Daily suite name to run"
- parameter:
- name: functest-weekly-parameter
- parameters:
- - string:
- name: FUNCTEST_SUITE_NAME
- default: 'weekly'
- description: "Weekly suite name to run"
-- parameter:
name: functest-suite-parameter
parameters:
- choice:
@@ -275,6 +275,7 @@
- 'tempest_smoke_serial'
- 'rally_sanity'
- 'odl'
+ - 'odl_netvirt'
- 'onos'
- 'promise'
- 'doctor'
@@ -333,15 +334,6 @@
- 'functest-exit'
- builder:
- name: functest-weekly-builder
- builders:
- - 'functest-cleanup'
- - 'set-functest-env'
- - 'functest-weekly'
- - 'functest-store-results'
- - 'functest-exit'
-
-- builder:
name: functest-suite-builder
builders:
- 'functest-cleanup'
@@ -354,11 +346,6 @@
- shell:
!include-raw: ./functest-loop.sh
-- builder:
- name: functest-weekly
- builders:
- - shell:
- !include-raw: ./functest-loop.sh
- builder:
name: functest-suite
diff --git a/jjb/functest/functest-exit.sh b/jjb/functest/functest-exit.sh
index 10edab005..925a3cfbb 100644
--- a/jjb/functest/functest-exit.sh
+++ b/jjb/functest/functest-exit.sh
@@ -1,7 +1,6 @@
#!/bin/bash
-branch=${GIT_BRANCH##*/}
-ret_val_file="${HOME}/opnfv/functest/results/${branch}/return_value"
+ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
if [ ! -f ${ret_val_file} ]; then
echo "Return value not found!"
exit -1
@@ -9,4 +8,4 @@ fi
ret_val=`cat ${ret_val_file}`
-exit ${ret_val} \ No newline at end of file
+exit ${ret_val}
diff --git a/jjb/functest/functest-loop.sh b/jjb/functest/functest-loop.sh
index 4528c00d1..893c428a2 100755
--- a/jjb/functest/functest-loop.sh
+++ b/jjb/functest/functest-loop.sh
@@ -3,9 +3,9 @@ set +e
branch=${GIT_BRANCH##*/}
[[ "$PUSH_RESULTS_TO_DB" == "true" ]] && flags+="-r"
-if [[ ${branch} == *"brahmaputra"* ]]; then
+if [[ "$BRANCH" =~ 'brahmaputra' ]]; then
cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh -s ${flags}"
-elif [[ ${branch} == *"colorado"* ]]; then
+elif [[ "$BRANCH" =~ 'colorado' ]]; then
cmd="python ${FUNCTEST_REPO_DIR}/ci/run_tests.py -t all ${flags}"
else
cmd="python ${FUNCTEST_REPO_DIR}/functest/ci/run_tests.py -t all ${flags}"
@@ -14,7 +14,7 @@ container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
docker exec $container_id $cmd
ret_value=$?
-ret_val_file="${HOME}/opnfv/functest/results/${branch}/return_value"
+ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
echo ${ret_value}>${ret_val_file}
exit 0
diff --git a/jjb/functest/functest-project-jobs.yml b/jjb/functest/functest-project-jobs.yml
index 6a0768c9c..42c19a777 100644
--- a/jjb/functest/functest-project-jobs.yml
+++ b/jjb/functest/functest-project-jobs.yml
@@ -28,7 +28,6 @@
parameters:
- project-parameter:
project: '{project}'
- - gerrit-parameter:
branch: '{branch}'
- 'opnfv-build-ubuntu-defaults'
diff --git a/jjb/functest/functest-suite.sh b/jjb/functest/functest-suite.sh
index 9dc8deca0..228cc3da4 100755
--- a/jjb/functest/functest-suite.sh
+++ b/jjb/functest/functest-suite.sh
@@ -1,18 +1,18 @@
#!/bin/bash
-set -e
-branch=${GIT_BRANCH##*/}
-echo "Functest: run $FUNCTEST_SUITE_NAME on branch ${branch}"
-if [[ ${branch} == *"brahmaputra"* ]]; then
- cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test $FUNCTEST_SUITE_NAME"
-elif [[ ${branch} == *"colorado"* ]]; then
- cmd="python ${FUNCTEST_REPO_DIR}/ci/run_tests.py -t $FUNCTEST_SUITE_NAME"
-else
- cmd="functest testcase run $FUNCTEST_SUITE_NAME"
-fi
container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
-docker exec $container_id $cmd
+if [ -z $container_id ]; then
+ echo "Functest container not found"
+ exit 1
+fi
+
+global_ret_val=0
-ret_value=$?
+tests=($(echo $FUNCTEST_SUITE_NAME | tr "," "\n"))
+for test in ${tests[@]}; do
+ cmd="python /home/opnfv/repos/functest/functest/ci/run_tests.py -t $test"
+ docker exec $container_id $cmd
+ let global_ret_val+=$?
+done
-exit $ret_value
+exit $global_ret_val
diff --git a/jjb/functest/functest-weekly-jobs.yml b/jjb/functest/functest-weekly-jobs.yml
new file mode 100644
index 000000000..f44f7b8aa
--- /dev/null
+++ b/jjb/functest/functest-weekly-jobs.yml
@@ -0,0 +1,124 @@
+###################################
+# job configuration for functest
+###################################
+- project:
+ name: functest-weekly
+
+ project: functest
+
+#--------------------------------
+# BRANCH ANCHORS
+#--------------------------------
+ master: &master
+ stream: master
+ branch: '{stream}'
+ gs-pathname: ''
+ docker-tag: 'latest'
+ disabled: false
+ danube: &danube
+ stream: danube
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ docker-tag: 'stable'
+ disabled: true
+#--------------------------------
+# POD, INSTALLER, AND BRANCH MAPPING
+#--------------------------------
+# Installers using labels
+# CI PODs
+# This section should only contain the installers
+# that have been switched using labels for slaves
+#--------------------------------
+ pod:
+# fuel CI PODs
+ - baremetal:
+ slave-label: fuel-baremetal
+ installer: fuel
+ <<: *master
+ - virtual:
+ slave-label: fuel-virtual
+ installer: fuel
+ <<: *master
+ - baremetal:
+ slave-label: fuel-baremetal
+ installer: fuel
+ <<: *danube
+ - virtual:
+ slave-label: fuel-virtual
+ installer: fuel
+ <<: *danube
+#--------------------------------
+ jobs:
+ - 'functest-{installer}-{pod}-weekly-{stream}'
+
+################################
+# job template
+################################
+- job-template:
+ name: 'functest-{installer}-{pod}-weekly-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ concurrent: true
+
+ properties:
+ - logrotate-default
+ - throttle:
+ enabled: true
+ max-per-node: 1
+ option: 'project'
+
+ wrappers:
+ - build-name:
+ name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME Scenario: $DEPLOY_SCENARIO'
+ - timeout:
+ timeout: '400'
+ abort: true
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - '{installer}-defaults'
+ - '{slave-label}-defaults'
+ - string:
+ name: FUNCTEST_SUITE_NAME
+ default: 'weekly'
+ description: "Weekly suite name to run"
+ - string:
+ name: DEPLOY_SCENARIO
+ default: 'os-odl_l2-nofeature-ha'
+ - string:
+ name: DOCKER_TAG
+ default: '{docker-tag}'
+ description: 'Tag to pull docker image'
+ - string:
+ name: CLEAN_DOCKER_IMAGES
+ default: 'false'
+ description: 'Remove downloaded docker images (opnfv/functest*:*)'
+ - functest-parameter:
+ gs-pathname: '{gs-pathname}'
+
+ scm:
+ - git-scm
+
+ builders:
+ - description-setter:
+ description: "Built on $NODE_NAME"
+ - 'functest-weekly-builder'
+########################
+# builder macros
+########################
+- builder:
+ name: functest-weekly-builder
+ builders:
+ - shell:
+ !include-raw: ./functest-cleanup.sh
+ - shell:
+ !include-raw: ./set-functest-env.sh
+ - shell:
+ !include-raw: ./functest-loop.sh
+ - shell:
+ !include-raw: ../../utils/push-test-logs.sh
+ - shell:
+ !include-raw: ./functest-exit.sh
diff --git a/jjb/functest/set-functest-env.sh b/jjb/functest/set-functest-env.sh
index 583ce8041..05e3d5792 100755
--- a/jjb/functest/set-functest-env.sh
+++ b/jjb/functest/set-functest-env.sh
@@ -14,34 +14,37 @@ if [[ ${INSTALLER_TYPE} == 'joid' ]]; then
fi
if [[ ${RC_FILE_PATH} != '' ]] && [[ -f ${RC_FILE_PATH} ]] ; then
+ echo "Credentials file detected: ${RC_FILE_PATH}"
# volume if credentials file path is given to Functest
- rc_file_vol="-v $RC_FILE_PATH:/home/opnfv/functest/conf/openstack.creds"
+ rc_file_vol="-v ${RC_FILE_PATH}:/home/opnfv/functest/conf/openstack.creds"
+ RC_FLAG=1
fi
if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
- if sudo virsh list | grep instack; then
- instack_mac=$(sudo virsh domiflist instack | grep default | \
- grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
- elif sudo virsh list | grep undercloud; then
- instack_mac=$(sudo virsh domiflist undercloud | grep default | \
+ if sudo virsh list | grep undercloud; then
+ echo "Installer VM detected"
+ undercloud_mac=$(sudo virsh domiflist undercloud | grep default | \
grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
+ INSTALLER_IP=$(/usr/sbin/arp -e | grep ${undercloud_mac} | awk {'print $1'})
+ sshkey_vol="-v /root/.ssh/id_rsa:/root/.ssh/id_rsa"
+ sudo scp $ssh_options root@${INSTALLER_IP}:/home/stack/stackrc ${HOME}/stackrc
+ stackrc_vol="-v ${HOME}/stackrc:/home/opnfv/functest/conf/stackrc"
+
+ if sudo iptables -C FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable 2> ${redirect}; then
+ sudo iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
+ fi
+ if sudo iptables -C FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable 2> ${redirect}; then
+ sudo iptables -D FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
+ fi
+ elif [[ "$RC_FLAG" == 1 ]]; then
+ echo "No available installer VM, but credentials provided...continuing"
else
- echo "No available installer VM exists...exiting"
+ echo "No available installer VM exists and no credentials provided...exiting"
exit 1
fi
- INSTALLER_IP=$(/usr/sbin/arp -e | grep ${instack_mac} | awk {'print $1'})
- sshkey_vol="-v /root/.ssh/id_rsa:/root/.ssh/id_rsa"
- sudo scp $ssh_options root@${INSTALLER_IP}:/home/stack/stackrc ${HOME}/stackrc
- stackrc_vol="-v ${HOME}/stackrc:/home/opnfv/functest/conf/stackrc"
- if sudo iptables -C FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable 2> ${redirect}; then
- sudo iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
- fi
- if sudo iptables -C FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable 2> ${redirect}; then
- sudo iptables -D FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
- fi
fi
@@ -56,8 +59,7 @@ DEPLOY_TYPE=baremetal
echo "Functest: Start Docker and prepare environment"
-branch=${GIT_BRANCH##*/}
-dir_result="${HOME}/opnfv/functest/results/${branch}"
+dir_result="${HOME}/opnfv/functest/results/${BRANCH##*/}"
mkdir -p ${dir_result}
sudo rm -rf ${dir_result}/*
results_vol="-v ${dir_result}:/home/opnfv/functest/results"
@@ -71,17 +73,22 @@ envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
volumes="${results_vol} ${sshkey_vol} ${stackrc_vol} ${rc_file_vol}"
+HOST_ARCH=$(uname -m)
+FUNCTEST_IMAGE="opnfv/functest"
+if [ "$HOST_ARCH" = "aarch64" ]; then
+ FUNCTEST_IMAGE="${FUNCTEST_IMAGE}_${HOST_ARCH}"
+fi
-echo "Functest: Pulling image opnfv/functest:${DOCKER_TAG}"
-docker pull opnfv/functest:$DOCKER_TAG >/dev/null
+echo "Functest: Pulling image ${FUNCTEST_IMAGE}:${DOCKER_TAG}"
+docker pull ${FUNCTEST_IMAGE}:$DOCKER_TAG >/dev/null
cmd="sudo docker run --privileged=true -id ${envs} ${volumes} \
${custom_params} ${TESTCASE_OPTIONS} \
- opnfv/functest:${DOCKER_TAG} /bin/bash"
+ ${FUNCTEST_IMAGE}:${DOCKER_TAG} /bin/bash"
echo "Functest: Running docker run command: ${cmd}"
${cmd} >${redirect}
sleep 5
-container_id=$(docker ps | grep "opnfv/functest:${DOCKER_TAG}" | awk '{print $1}' | head -1)
+container_id=$(docker ps | grep "${FUNCTEST_IMAGE}:${DOCKER_TAG}" | awk '{print $1}' | head -1)
echo "Container ID=${container_id}"
if [ -z ${container_id} ]; then
echo "Cannot find opnfv/functest container ID ${container_id}. Please check if it is existing."
@@ -92,13 +99,13 @@ echo "Starting the container: docker start ${container_id}"
docker start ${container_id}
sleep 5
docker ps >${redirect}
-if [ $(docker ps | grep "opnfv/functest:${DOCKER_TAG}" | wc -l) == 0 ]; then
- echo "The container opnfv/functest with ID=${container_id} has not been properly started. Exiting..."
+if [ $(docker ps | grep "${FUNCTEST_IMAGE}:${DOCKER_TAG}" | wc -l) == 0 ]; then
+ echo "The container ${FUNCTEST_IMAGE} with ID=${container_id} has not been properly started. Exiting..."
exit 1
fi
-if [[ ${branch} == *"brahmaputra"* ]]; then
+if [[ "$BRANCH" =~ 'brahmaputra' ]]; then
cmd="${FUNCTEST_REPO_DIR}/docker/prepare_env.sh"
-elif [[ ${branch} == *"colorado"* ]]; then
+elif [[ "$BRANCH" =~ 'colorado' ]]; then
cmd="python ${FUNCTEST_REPO_DIR}/ci/prepare_env.py start"
else
cmd="python ${FUNCTEST_REPO_DIR}/functest/ci/prepare_env.py start"