From 98ac1e06204a5cb5f9ab1158173232e31772359f Mon Sep 17 00:00:00 2001 From: swatisharma Date: Thu, 18 Aug 2016 01:02:53 +0530 Subject: [PATCH] CI integration for KVMforNFV. This patch contains scripts for running cyclictest through yardstick as part of CI integration for KVMforNFV. The scripts will be triggered to create a docker ubuntu container for running yardstick, configuring the host, launching a guest VM and executing cyclictest through yardstick. The verification process gets completed after running the cyclictest. Co-Authored-By: Gundarapu Reddy Signed-off-by: Swati Sharma --- ci/envs/cyclictest.sh | 8 ++++++-- ci/envs/guest-setup0.sh | 19 +++++++++---------- ci/envs/host-run-qemu.sh | 22 ++++++++++++++-------- ci/envs/host-setup0.sh | 2 +- ci/test_kvmfornfv.sh | 44 +++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 73 insertions(+), 22 deletions(-) mode change 100644 => 100755 ci/envs/cyclictest.sh diff --git a/ci/envs/cyclictest.sh b/ci/envs/cyclictest.sh old mode 100644 new mode 100755 index e4dd9931f..c261fe05d --- a/ci/envs/cyclictest.sh +++ b/ci/envs/cyclictest.sh @@ -18,6 +18,10 @@ if [ ! -f ${cyclictest_context_file} ] ; then exit 1 fi +#setting up of image for launching guest vm. +sudo ssh root@10.2.117.23 "cp /root/images/guest1.qcow2 /root/" + #Running cyclictest through yardstick -yardstick task start ${cyclictest_context_file} -mv /tmp/yardstick.out /opt/ +yardstick -d task start ${cyclictest_context_file} +chmod 777 /tmp/yardstick.out +cat /tmp/yardstick.out > /opt/yardstick.out diff --git a/ci/envs/guest-setup0.sh b/ci/envs/guest-setup0.sh index 490bd570d..4f9eaa430 100755 --- a/ci/envs/guest-setup0.sh +++ b/ci/envs/guest-setup0.sh @@ -9,27 +9,26 @@ ############################################################################### -rpmdir=${1:-"/root/workspace/"} -rpmpat="kernel-4.1*.rpm" -rpm -ihv ${rpmdir}/rt-tests-0.96-1.el7.centos.x86_64.rpm +rpmdir=${1:-"/root/workspace/rpm"} +rpmpat="kernel-4.4*.rpm" guest_isolcpus=1 -# The script's caller should passing the rpm directory that is built out from +# The script's caller should passing the rpm directory that is built out from # build.sh. The default rpmdir is the one used by yardstick scripts. install_kernel () { # Install the kernel rpm filenum=`ls -l ${rpmdir}/${rpmpat} |wc -l` if [ $filenum -eq 0 ] then - echo "No kernel rpm found in workspace/rpm" - exit 1 + echo "No kernel rpm found in workspace/rpm" + exit 1 elif [ $filenum -gt 1 ] then - echo "Multiple kernel rpm found in workspace/rpm" - exit 1 + echo "Multiple kernel rpm found in workspace/rpm" + exit 1 else - krpm=`find "${rpmdir}" -name "${rpmpat}"` - rpm -ihv $krpm + krpm=`find "${rpmdir}" -name "${rpmpat}"` + rpm -ihv $krpm fi } diff --git a/ci/envs/host-run-qemu.sh b/ci/envs/host-run-qemu.sh index c7a2fecc6..487aebe66 100755 --- a/ci/envs/host-run-qemu.sh +++ b/ci/envs/host-run-qemu.sh @@ -18,14 +18,20 @@ cpumask () { qmp_sock="/tmp/qmp-sock-$$" -${qemu} -smp ${guest_cpus} -monitor unix:${qmp_sock},server,nowait -daemonize \ - -cpu host,migratable=off,+invtsc,+tsc-deadline,pmu=off \ - -realtime mlock=on -mem-prealloc -enable-kvm -m 1G \ - -mem-path /mnt/hugetlbfs-1g \ - -drive file=/root/workspace/image/guest.img,cache=none,aio=threads \ - -netdev user,id=guest0,hostfwd=tcp::5555-:22 \ - -device virtio-net-pci,netdev=guest0 \ - -nographic -serial /dev/null -parallel /dev/null +#${qemu} -smp ${guest_cpus} -monitor unix:${qmp_sock},server,nowait -daemonize \ +# -cpu host,migratable=off,+invtsc,+tsc-deadline,pmu=off \ +# -realtime mlock=on -mem-prealloc -enable-kvm -m 1G \ +# -mem-path /mnt/hugetlbfs-1g \ +# -drive file=/root/minimal-centos1.qcow2,cache=none,aio=threads \ +# -netdev user,id=guest0,hostfwd=tcp:10.2.117.23:5555-:22 \ +# -device virtio-net-pci,netdev=guest0 \ +# -nographic -serial /dev/null -parallel /dev/null + +${qemu} -smp ${guest_cpus} -drive file=/root/guest1.qcow2 -daemonize \ + -netdev user,id=net0,hostfwd=tcp:10.2.117.23:5555-:22 \ + -realtime mlock=on -mem-prealloc -enable-kvm -m 1G \ + -mem-path /mnt/hugetlbfs-1g \ + -device virtio-net-pci,netdev=net0 \ i=0 for c in `echo ${host_isolcpus} | sed 's/,/ /g'` ; do diff --git a/ci/envs/host-setup0.sh b/ci/envs/host-setup0.sh index 79d1f585a..28c49b8b8 100755 --- a/ci/envs/host-setup0.sh +++ b/ci/envs/host-setup0.sh @@ -12,7 +12,7 @@ source host-config rpmdir=${1:-"/root/workspace/rpm/"} -rpmpat="kernel-4.1*.rpm" +rpmpat="kernel-4.4*.rpm" config_grub () { key=$1 diff --git a/ci/test_kvmfornfv.sh b/ci/test_kvmfornfv.sh index 70961d748..45d1ea252 100755 --- a/ci/test_kvmfornfv.sh +++ b/ci/test_kvmfornfv.sh @@ -9,4 +9,46 @@ ## and verifies the test results. ############################################################ -echo "Hello world" + +function env_clean { + container_id=`sudo docker ps -a | grep kvmfornfv |awk '{print $1}'` + sudo docker rm $container_id + sudo ssh root@10.2.117.23 "rm -rf /root/workspace/*" + sudo ssh root@10.2.117.23 "pid=\$(ps aux | grep 'qemu' | awk '{print \$2}' | head -1); echo \$pid |xargs kill" + sudo rm -rf /tmp/kvmtest-* +} + +#Cleaning up the test environment before running cyclictest through yardstick. +env_clean + +time_stamp=$(date +%Y%m%d%H%M%S) +volume=/tmp/kvmtest-${time_stamp} +mkdir -p $volume/{image,rpm,scripts} + +#copying required files to run yardstick cyclic testcase +mv $WORKSPACE/build_output/kernel-4.4*.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 \ +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 + exit 0 +else + echo "Testcase failed" + echo `grep -o '"errors":[^,]*' ${volume}/yardstick.out | awk -F '"' '{print $4}'` + env_clean + exit 1 +fi -- 2.16.6