diff options
-rwxr-xr-x | ci/cyclicTestTrigger.sh | 75 | ||||
-rwxr-xr-x | ci/envs/host-config | 4 | ||||
-rwxr-xr-x | ci/test_kvmfornfv.sh | 33 |
3 files changed, 68 insertions, 44 deletions
diff --git a/ci/cyclicTestTrigger.sh b/ci/cyclicTestTrigger.sh index 43d2d6ac5..741a865d0 100755 --- a/ci/cyclicTestTrigger.sh +++ b/ci/cyclicTestTrigger.sh @@ -68,29 +68,35 @@ function updateYaml { 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}/" kvmfornfv_cyclictest_hostenv_guestenv.yaml sed -ri "0,/interval: [0-9]*/s//interval: 1000/" kvmfornfv_cyclictest_hostenv_guestenv.yaml - sed -ri "s/tc: \"kvmfornfv_cyclictest-node-context\"/tc: \"kvmfornfv_cyclictest_${testName}\"/" kvmfornfv_cyclictest_hostenv_guestenv.yaml cp kvmfornfv_cyclictest_hostenv_guestenv.yaml kvmfornfv_cyclictest_${testName}.yaml + sed -ri "s/tc: \"kvmfornfv_cyclictest-node-context\"/tc: \"kvmfornfv_cyclictest_${testName}\"/" kvmfornfv_cyclictest_${testName}.yaml case $testName in idle_idle) ;; cpustress_idle) sed -i '/host-run-qemu.sh/a\ \- \"stress_daily.sh cpu\"' kvmfornfv_cyclictest_${testName}.yaml + sed -i '/host-setup0.sh/,/host-setup1.sh/ d' kvmfornfv_cyclictest_${testName}.yaml ;; memorystress_idle) sed -i '/host-run-qemu.sh/a\ \- \"stress_daily.sh memory\"' kvmfornfv_cyclictest_${testName}.yaml + sed -i '/host-setup0.sh/,/host-setup1.sh/ d' kvmfornfv_cyclictest_${testName}.yaml ;; iostress_idle) sed -i '/host-run-qemu.sh/a\ \- \"stress_daily.sh io\"' kvmfornfv_cyclictest_${testName}.yaml + sed -i '/host-setup0.sh/,/host-setup1.sh/ d' kvmfornfv_cyclictest_${testName}.yaml ;; idle_cpustress) sed -i '/guest-setup1.sh/a\ \- \"stress_daily.sh cpu\"' kvmfornfv_cyclictest_${testName}.yaml + sed -i '/host-setup0.sh/,/host-setup1.sh/ d' kvmfornfv_cyclictest_${testName}.yaml ;; idle_memorystress) sed -i '/guest-setup1.sh/a\ \- \"stress_daily.sh memory\"' kvmfornfv_cyclictest_${testName}.yaml + sed -i '/host-setup0.sh/,/host-setup1.sh/ d' kvmfornfv_cyclictest_${testName}.yaml ;; idle_iostress) - sed -i '/guest-setup1.sh/a\ \- \"stress_daily.sh memory\"' kvmfornfv_cyclictest_${testName}.yaml + sed -i '/guest-setup1.sh/a\ \- \"stress_daily.sh io\"' kvmfornfv_cyclictest_${testName}.yaml + sed -i '/host-setup0.sh/,/host-setup1.sh/ d' kvmfornfv_cyclictest_${testName}.yaml ;; *) echo "Incorrect test environment: $testName" @@ -101,7 +107,7 @@ function updateYaml { #cleaning the environment after executing the test through yardstick. function env_clean { - container_id=`sudo docker ps -a | grep kvmfornfv_${testType}_${testName} |awk '{print \$1}'|sed -e 's/\r//g'` + container_id=`sudo docker ps -a | grep kvmfornfv_${testType} |awk '{print \$1}'|sed -e 's/\r//g'` sudo docker stop ${container_id} sudo docker rm ${container_id} sudo ssh root@${HOST_IP} "rm -rf /root/workspace/*" @@ -132,50 +138,55 @@ function cleanup { #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 - err_exit 1 + container_id=`sudo docker ps -a | grep kvmfornfv_${testType} |awk '{print \$1}'|sed -e 's/\r//g'` + echo "$container_id" + if [ -z "$container_id" ]; then + 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 + cp $WORKSPACE/build_output/kernel-${KERNELRPM_VERSION}*.rpm ${volume}/rpm + cp $WORKSPACE/build_output/qemu-${QEMURPM_VERSION}*.rpm ${volume}/rpm + cp -r $WORKSPACE/ci/envs/* ${volume}/scripts + cp -r $WORKSPACE/tests/kvmfornfv_cyclictest_${testName}.yaml ${volume} + cp -r $WORKSPACE/tests/pod.yaml ${volume}/scripts + #Launching ubuntu docker container to run yardstick + container_id=`sudo docker run -i -d -v ${volume}:/opt --net=host --name kvmfornfv_${testType} \ + kvmfornfv:latest` + sudo docker exec -i $container_id /bin/bash -c "cd /opt/scripts && ls; ./cyclictest.sh $testType $testName" + cyclictest_output=$? + else + cp -r $WORKSPACE/tests/kvmfornfv_cyclictest_${testName}.yaml ${volume} + sudo docker exec -i $container_id /bin/bash -c "cd /opt/scripts && ls; ./cyclictest.sh $testType $testName" + cyclictest_output=$? 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 - cp $WORKSPACE/build_output/kernel-${KERNELRPM_VERSION}*.rpm ${volume}/rpm - cp $WORKSPACE/build_output/qemu-${QEMURPM_VERSION}*.rpm ${volume}/rpm - cp -r $WORKSPACE/ci/envs/* ${volume}/scripts - cp -r $WORKSPACE/tests/kvmfornfv_cyclictest_${testName}.yaml ${volume} - cp -r $WORKSPACE/tests/pod.yaml ${volume}/scripts - - #Launching ubuntu docker container to run yardstick - sudo docker run -i -v ${volume}:/opt --net=host --name kvmfornfv_${testType}_${testName} \ - kvmfornfv:latest /bin/bash -c "cd /opt/scripts && ls; ./cyclictest.sh $testType $testName" - cyclictest_output=$? + if [ "$testName" == "iostress_idle" ];then copyLogs fi + #Verifying the results of cyclictest if [ "$testType" == "verify" ];then result=`grep -o '"errors":[^,]*' ${volume}/yardstick.out | awk -F '"' '{print $4}'` - if [ -z "${result}" ]; then + if [ -z "${result}" ] && [ "${cyclictest_output}" == 0 ]; then echo "####################################################" - echo "" + echo " " echo `grep -o '"data":[^}]*' ${volume}/yardstick.out | awk -F '{' '{print $2}'` echo "" echo "####################################################" - cleanup $cyclictest_output + return 0 else echo "Testcase failed" echo `grep -o '"errors":[^,]*' ${volume}/yardstick.out | awk -F '"' '{print $4}'` - env_clean - host_clean return 1 fi - else - cleanup $cyclictest_output fi -} +}
\ No newline at end of file diff --git a/ci/envs/host-config b/ci/envs/host-config index 99cbb3773..727ba1574 100755 --- a/ci/envs/host-config +++ b/ci/envs/host-config @@ -35,8 +35,8 @@ done stress_isolcpus=${first}-${last} echo "Stress tool runs on $stress_isolcpus" -#Tar the log files generated during testcase execution. -function err_exit { +#Tar the log files generated during testcase execution and exit. +function test_exit { exitCode=$1 cd $WORKSPACE/build_output/ if [ -d log ];then diff --git a/ci/test_kvmfornfv.sh b/ci/test_kvmfornfv.sh index 20bdaeefb..adf0aa3ce 100755 --- a/ci/test_kvmfornfv.sh +++ b/ci/test_kvmfornfv.sh @@ -29,7 +29,6 @@ function packetForward { else echo "Packet Forwarding test case executed SUCCESSFULLY" fi - host_clean } function cyclictest { @@ -38,17 +37,24 @@ function cyclictest { #Verifying whether the test node is up and running connect_host #Waiting for ssh to be available for the host machine. - sleep 10 + sleep 20 #calculating and verifying sha512sum of the guestimage. if ! verifyGuestImage;then exit 1 fi #Update kvmfornfv_cyclictest_${testName}.yaml with test_time and pod.yaml with IP updateYaml - #Cleaning up the test environment before running cyclictest through yardstick. - env_clean #Running PCM utility collect_MBWInfo $test_type + #Checking which test cases will be executed first and last from the list to perform cleaning operations. + first_test_case=cyclictest_env_$test_type[0] + last_test_case=cyclictest_env_$test_type[-1] + #Cleaning the environment before running cyclictest through yardstick + if [ ${test_case} == "${!first_test_case}" ];then + env_clean + else + sudo ssh root@${HOST_IP} "pid=\$(ps aux | grep 'qemu' | awk '{print \$2}' | head -1); echo \$pid |xargs kill" + fi #Creating a docker image with yardstick installed and launching ubuntu docker to run yardstick cyclic testcase if runCyclicTest;then cyclictest_result=`expr ${cyclictest_result} + 0` @@ -58,6 +64,9 @@ function cyclictest { fi echo "Terminating PCM Process" sudo ssh root@${HOST_IP} "pid=\$(ps aux | grep 'pcm' | awk '{print \$2}' | head -1); echo \$pid |xargs kill -SIGTERM" + if [ ${test_case} != "${!last_test_case}" ];then + sudo ssh root@${HOST_IP} "reboot" + fi } function collect_MBWInfo { #Collecting the Memory Bandwidth Information using pcm-memory utility @@ -124,14 +133,16 @@ if [ ${test_type} == "verify" ];then cyclictest ${env} sleep 10 done + env_clean + host_clean #Execution of packet forwarding test cases. packetForward fi if [ ${cyclictest_result} -ne 0 ] || [ ${packetforward_result} -ne 0 ];then echo "Test case FAILED" - err_exit 1 + test_exit 1 else - err_exit 0 + test_exit 0 fi elif [ ${test_type} == "daily" ];then HOST_IP="10.10.100.22" @@ -140,9 +151,9 @@ elif [ ${test_type} == "daily" ];then if [ ${test_name} == "packet_forward" ];then packetForward if [ ${packetforward_result} -ne 0 ] ; then - err_exit 1 + test_exit 1 else - err_exit 0 + test_exit 0 fi elif [ ${test_name} == "cyclictest" ];then if [ ${ftrace_enable} -eq '1' ]; then @@ -163,13 +174,15 @@ elif [ ${test_type} == "daily" ];then cyclictest ${env} sleep 5 done + env_clean + host_clean fi if [ ${cyclictest_result} -ne 0 ] ; then echo "Cyclictest case execution FAILED" - err_exit 1 + test_exit 1 else echo "Cyclictest case executed SUCCESSFULLY" - err_exit 0 + test_exit 0 fi fi elif [ ${test_type} == "merge" ];then |