summaryrefslogtreecommitdiffstats
path: root/ci
diff options
context:
space:
mode:
authorJiang, Yunhong <yunhong.jiang@intel.com>2017-03-13 19:22:04 +0000
committerGerrit Code Review <gerrit@opnfv.org>2017-03-13 19:22:04 +0000
commitaf712826966ee75ba5ac466a6c192580abdf0c29 (patch)
treec032c8979699d2b73865ca87f9e12d2a6d709525 /ci
parent0666e6b9c92cdba1d90c951423e5ef1fb2736c48 (diff)
parent53bf71ea043426dd23319bd3bd011fd9a8ce0446 (diff)
Merge "This patch includes updated scripts for modifying function names and to optimize the code for executing all the test cases and performing necessary host cleaning operations after executing all the test cases."
Diffstat (limited to 'ci')
-rwxr-xr-xci/cyclicTestTrigger.sh75
-rwxr-xr-xci/envs/host-config4
-rwxr-xr-xci/test_kvmfornfv.sh33
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