summaryrefslogtreecommitdiffstats
path: root/ci/cyclicTestTrigger.sh
diff options
context:
space:
mode:
authorshravani <shravani.p@tcs.com>2016-09-13 15:23:09 +0530
committershravani <shravani.p@tcs.com>2016-09-13 15:45:36 +0530
commitb8f6485d5a5c66f0fce566e59b8b5891c6a7f571 (patch)
treec656ae6a20273c6c6a9e080f894e89043ab2e44d /ci/cyclicTestTrigger.sh
parent7209c685c8bea4ed6cc2f388ef0a65f1fac5b3ed (diff)
Execution of kvm4nfv cyclictest based on job type.
This patch contains the updated test scripts which will select the node and test run time for performing cyclictest case based on the job type. Change-Id: Ia54e98faac2f5da956688f1ca57664cea1151d84 Signed-off-by: Shravani <shravani.p@tcs.com>
Diffstat (limited to 'ci/cyclicTestTrigger.sh')
-rwxr-xr-xci/cyclicTestTrigger.sh90
1 files changed, 90 insertions, 0 deletions
diff --git a/ci/cyclicTestTrigger.sh b/ci/cyclicTestTrigger.sh
new file mode 100755
index 000000000..bd6e29038
--- /dev/null
+++ b/ci/cyclicTestTrigger.sh
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+#############################################################
+## This script defines the functions present in
+## test_kvmfornfv.sh interface.These will launch ubuntu
+## docker container runs cyclictest through yardstick
+## and verifies the test results.
+############################################################
+
+HOST_IP=$1
+testTime=$2
+testType=$3
+
+source $WORKSPACE/ci/envs/utils.sh
+KERNELRPM_VERSION=$( getKernelVersion )
+
+if [ -z ${KERNELRPM_VERSION} ];then
+ echo "Kernel RPM not found in build_output Directory"
+ exit 1
+fi
+
+#Updating the pod.yaml file with HOST_IP,cyclictest-node-context.yaml with loops and interval
+function updateYaml {
+ cd $WORKSPACE/tests/
+ sed -ri "s/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/${HOST_IP}/" pod.yaml
+ sed -ri "s/loops: [0-9]*/loops: ${testTime}/" cyclictest-node-context.yaml
+ sed -ri "s/interval: [0-9]*/interval: 1000/" cyclictest-node-context.yaml
+}
+
+#cleaning the environment after executing the test through yardstick.
+function env_clean {
+ container_id=`sudo docker ps -a | grep kvmfornfv_${testType} |awk '{print \$1}'|sed -e 's/\r//g'`
+ sudo docker rm ${container_id}
+ sudo ssh root@${HOST_IP} "rm -rf /root/workspace/*"
+ sudo ssh root@${HOST_IP} "pid=\$(ps aux | grep 'qemu' | awk '{print \$2}' | head -1); echo \$pid |xargs kill"
+ sudo rm -rf /tmp/kvmtest-${testType}*
+}
+
+#Cleaning the latest kernel changes on host after executing the test.
+function host_clean {
+ sudo ssh root@${HOST_IP} "rpm=\$(rpm -qa | grep 'kernel-${KERNELRPM_VERSION}' | awk '{print \$1}'); rpm -ev \$rpm"
+ sudo ssh root@${HOST_IP} "rm -rf /boot/initramfs-${KERNELRPM_VERSION}*.img"
+ sudo ssh root@${HOST_IP} "grub2-mkconfig -o /boot/grub2/grub.cfg"
+ sudo ssh root@${HOST_IP} "reboot"
+}
+
+
+#Creating a docker image with yardstick installed and Verify the results of cyclictest
+function runCyclicTest {
+ docker_image_dir=$WORKSPACE/docker_image_build
+ ( cd ${docker_image_dir}; sudo docker build -t kvmfornfv:latest --no-cache=true . )
+ if [ ${?} -ne 0 ] ; then
+ echo "Docker image build failed"
+ id=$(sudo docker ps -a | head -2 | tail -1 | awk '{print $1}'); sudo docker rm -f $id
+ exit 1
+ fi
+ time_stamp=$(date +%Y%m%d%H%M%S)
+ volume=/tmp/kvmtest-${testType}-${time_stamp}
+ mkdir -p $volume/{image,rpm,scripts}
+
+ #copying required files to run yardstick cyclic testcase
+ mv $WORKSPACE/build_output/kernel-${KERNELRPM_VERSION}*.rpm ${volume}/rpm
+ cp -r $WORKSPACE/ci/envs/* ${volume}/scripts
+ cp -r $WORKSPACE/tests/cyclictest-node-context.yaml ${volume}
+ cp -r $WORKSPACE/tests/pod.yaml ${volume}
+
+ #Launching ubuntu docker container to run yardstick
+ sudo docker run -i -v ${volume}:/opt --net=host --name kvmfornfv_${testType} \
+ kvmfornfv:latest /bin/bash -c "cd /opt/scripts && ls; ./cyclictest.sh"
+
+ #Verifying the results of cyclictest
+ result=`grep -o '"errors":[^,]*' ${volume}/yardstick.out | awk -F '"' '{print $4}'`
+
+ if [ -z "${result}" ]; then
+ echo "####################################################"
+ echo ""
+ echo `grep -o '"data":[^}]*' ${volume}/yardstick.out | awk -F '{' '{print $2}'`
+ echo ""
+ echo "####################################################"
+ env_clean
+ host_clean
+ exit 0
+ else
+ echo "Testcase failed"
+ echo `grep -o '"errors":[^,]*' ${volume}/yardstick.out | awk -F '"' '{print $4}'`
+ env_clean
+ host_clean
+ exit 1
+ fi
+}