summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshravani <shravani.p@tcs.com>2016-12-09 17:57:27 +0530
committershravani <shravani.p@tcs.com>2016-12-13 15:45:58 +0530
commit75f93c362f8cde64b02e243d26bf9061f48adc34 (patch)
treed9911cda3662059b9cfff7be89eed1e7529fd73f
parent9bdeee16856c2d934ef331e8b1c118146e0ec714 (diff)
This patch includes scripts to create multiple yaml file for different
environments and run cyclictest. Also contains updated interface scripts to trigger packetforwarding and cyclictest stress scripts. Change-Id: Ibb8694746f8b19d605e50ea07c2be8b2bd141ec0 Co-Authored-By: Y Rajitha <y.rajitha@tcs.com> Co-Authored-By: Gundarapu Kalyan Reddy <reddyx.gundarapu@intel.com> Signed-off-by: Shravani <shravani.p@tcs.com>
-rwxr-xr-xci/cyclicTestTrigger.sh44
-rwxr-xr-xci/envs/cyclictest.sh3
-rwxr-xr-xci/envs/host-setup1.sh11
-rwxr-xr-xci/test_kvmfornfv.sh106
-rw-r--r--tests/kvmfornfv_cyclictest_hostenv_guestenv.yaml (renamed from tests/cyclictest-node-context.yaml)0
-rw-r--r--tests/kvmfornfv_cyclictest_idle_idle.yaml51
6 files changed, 127 insertions, 88 deletions
diff --git a/ci/cyclicTestTrigger.sh b/ci/cyclicTestTrigger.sh
index 6241452a2..ec0477fde 100755
--- a/ci/cyclicTestTrigger.sh
+++ b/ci/cyclicTestTrigger.sh
@@ -10,6 +10,7 @@
HOST_IP=$1
testTime=$2
testType=$3
+testName=$4
source $WORKSPACE/ci/envs/utils.sh
KERNELRPM_VERSION=$( getKernelVersion )
@@ -33,13 +34,42 @@ function verifyGuestImage {
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}/" kvmfornfv_cyclictest_idle_idle.yaml
- sed -ri "0,/interval: [0-9]*/s//interval: 1000/" kvmfornfv_cyclictest_idle_idle.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
+ case $testName in
+
+ idle_idle)
+ ;;
+ cpustress_idle)
+ sed -i '/host-run-qemu.sh/a\ \- \"stress_daily.sh cpu\"' kvmfornfv_cyclictest_${testName}.yaml
+ ;;
+ memorystress_idle)
+ sed -i '/host-run-qemu.sh/a\ \- \"stress_daily.sh memory\"' kvmfornfv_cyclictest_${testName}.yaml
+ ;;
+ iostress_idle)
+ sed -i '/host-run-qemu.sh/a\ \- \"stress_daily.sh io\"' kvmfornfv_cyclictest_${testName}.yaml
+ ;;
+ idle_cpustress)
+ sed -i '/guest-setup1.sh/a\ \- \"stress_daily.sh cpu\"' kvmfornfv_cyclictest_${testName}.yaml
+ ;;
+ idle_memorystress)
+ sed -i '/guest-setup1.sh/a\ \- \"stress_daily.sh memory\"' kvmfornfv_cyclictest_${testName}.yaml
+ ;;
+ idle_iostress)
+ sed -i '/guest-setup1.sh/a\ \- \"stress_daily.sh memory\"' kvmfornfv_cyclictest_${testName}.yaml
+ ;;
+ *)
+ echo "Incorrect test environment: $testName"
+ exit 1
+ ;;
+ esac
}
#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'`
+ container_id=`sudo docker ps -a | grep kvmfornfv_${testType}_${testName} |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/*"
@@ -81,14 +111,14 @@ function runCyclicTest {
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 $WORKSPACE/build_output/kernel-${KERNELRPM_VERSION}*.rpm ${volume}/rpm
cp -r $WORKSPACE/ci/envs/* ${volume}/scripts
- cp -r $WORKSPACE/tests/kvmfornfv_cyclictest_idle_idle.yaml ${volume}
+ 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} \
- kvmfornfv:latest /bin/bash -c "cd /opt/scripts && ls; ./cyclictest.sh $testType"
+ 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=$?
#Verifying the results of cyclictest
diff --git a/ci/envs/cyclictest.sh b/ci/envs/cyclictest.sh
index 805f9088f..920a46b93 100755
--- a/ci/envs/cyclictest.sh
+++ b/ci/envs/cyclictest.sh
@@ -7,9 +7,10 @@
source utils.sh
testType=$1 #daily/verify/merge
+testName=$2 #idle_idle/stress_idle
HOST_IP=$( getHostIP )
pod_config='/opt/scripts/pod.yaml'
-cyclictest_context_file='/opt/kvmfornfv_cyclictest_idle_idle.yaml'
+cyclictest_context_file='/opt/kvmfornfv_cyclictest_'${testName}'.yaml'
if [ ! -f ${pod_config} ] ; then
echo "file ${pod_config} not found"
diff --git a/ci/envs/host-setup1.sh b/ci/envs/host-setup1.sh
index 3d2de6ddf..e2c028a7a 100755
--- a/ci/envs/host-setup1.sh
+++ b/ci/envs/host-setup1.sh
@@ -39,16 +39,19 @@ echo 0 > /proc/sys/kernel/watchdog
echo 0 > /proc/sys/kernel/nmi_watchdog
# Change RT priority of ksoftirqd and rcuc kernel threads on isolated CPUs
+startVal=$(echo ${host_isolcpus} | cut -f1 -d-)
+endVal=$(echo ${host_isolcpus} | cut -f2 -d-)
i=0
-for c in `echo $host_isolcpus | sed 's/,/ /g'` ; do
- tid=`pgrep -a ksoftirq | grep "ksoftirqd/${c}$" | cut -d ' ' -f 1`
+while [ ${startVal} -lt ${endVal} ]; do
+ tid=`pgrep -a ksoftirq | grep "ksoftirqd/${startVal}$" | cut -d ' ' -f 1`
chrt -fp 2 ${tid}
- tid=`pgrep -a rcuc | grep "rcuc/${c}$" | cut -d ' ' -f 1`
+ tid=`pgrep -a rcuc | grep "rcuc/${startVal}$" | cut -d ' ' -f 1`
chrt -fp 3 ${tid}
- cpu[$i]=${c}
+ cpu[$i]=${startVal}
i=`expr $i + 1`
+ startVal=`expr $startVal + 1`
done
# Change RT priority of rcub kernel threads
diff --git a/ci/test_kvmfornfv.sh b/ci/test_kvmfornfv.sh
index e9f520059..f33cb9825 100755
--- a/ci/test_kvmfornfv.sh
+++ b/ci/test_kvmfornfv.sh
@@ -4,42 +4,98 @@
## This script is an interface to trigger the
## cyclicTestTrigger.sh for test type like patch verification,
## daily testing.
-## Releng will trigger this script by passing test type like
-## verify/daily as an argument
+## Releng will trigger this script by passing test type as
+## verify/daily and test name as idle_idle/stress_idle/
+## packet_forward as arguments.
+## Verify Job runs idle_idle,packet_forward test
+## daily job runs base on the test name parameter
############################################################
test_type=$1
+test_name=$2
+cyclictest_env_verify=("idle_idle" "cpustress_idle" "memorystress_idle" "iostress_idle") #cyclictest environment
+cyclictest_env_daily=("idle_idle" "cpustress_idle" "memorystress_idle" "iostress_idle")
+cyclictest_result=0 #exit code of cyclictest
+packetforward_result=0 #exit code of packet forward
+function packetForward {
+# source $WORKSPACE/ci/packet_forward_test.sh $HOST_IP
+ echo "Packetforwarding need to be implemented"
+ packetforward_result=$?
+ if [ ${packetforward_result} -ne 0 ];then
+ echo "Packet Forwarding test case execution FAILED"
+ else
+ echo "Packet Forwarding test case executed SUCCESSFULLY"
+ fi
+ host_clean
+}
+
+function cyclictest {
+ test_case=$1
+ source $WORKSPACE/ci/cyclicTestTrigger.sh $HOST_IP $test_time $test_type $test_case
+ #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
+ #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`
+ else
+ echo "Test case execution FAILED for ${test_case} environment"
+ cyclictest_result=`expr ${cyclictest_result} + 1`
+ fi
+}
+
+#Execution of testcases based on test type and test name from releng.
if [ ${test_type} == "verify" ];then
HOST_IP="10.2.117.23"
- test_time=600000 # 10m
+ test_time=120000 # 2m
+ for env in ${cyclictest_env_verify[@]}
+ do
+ #Executing cyclictest through yardstick.
+ cyclictest ${env}
+ sleep 10
+ done
+ #Execution of packet forwarding test cases.
+ packetForward
+ if [ ${cyclictest_result} -ne 0 ] || [ ${packetforward_result} -ne 0 ];then
+ echo "Test case FAILED"
+ exit 1
+ else
+ exit 0
+ fi
elif [ ${test_type} == "daily" ];then
HOST_IP="10.2.117.25"
- test_time=7200000 #2h
+ test_time=3600000 #1h
+ if [ ${test_name} == "packet_forward" ];then
+ packetForward
+ if [ ${packetforward_result} -ne 0 ] ; then
+ exit 1
+ else
+ exit 0
+ fi
+ elif [ ${test_name} == "cyclictest" ];then
+ for env in ${cyclictest_env_daily[@]}
+ do
+ #Executing cyclictest through yardstick.
+ cyclictest ${env}
+ sleep 5
+ done
+ if [ ${cyclictest_result} -ne 0 ] ; then
+ echo "Cyclictest case execution FAILED"
+ exit 1
+ else
+ echo "Cyclictest case executed SUCCESSFULLY"
+ exit 0
+ fi
+ fi
elif [ ${test_type} == "merge" ];then
echo "Test is not enabled for ${test_type}"
exit 0
else
echo "Incorrect test type ${test_type}"
- exit 1
-fi
-
-source $WORKSPACE/ci/cyclicTestTrigger.sh $HOST_IP $test_time $test_type
-
-#calculating and verifying sha512sum of the guestimage.
-if ! verifyGuestImage;then
- exit 1
-fi
-
-#Update kvmfornfv_cyclictest_idle_idle.yaml with test_time and pod.yaml with IP
-updateYaml
-
-#Cleaning up the test environment before running cyclictest through yardstick.
-env_clean
-
-#Creating a docker image with yardstick installed and launching ubuntu docker to run yardstick cyclic testcase
-if runCyclicTest;then
- exit 0
-else
- exit 1
fi
diff --git a/tests/cyclictest-node-context.yaml b/tests/kvmfornfv_cyclictest_hostenv_guestenv.yaml
index f3c84c856..f3c84c856 100644
--- a/tests/cyclictest-node-context.yaml
+++ b/tests/kvmfornfv_cyclictest_hostenv_guestenv.yaml
diff --git a/tests/kvmfornfv_cyclictest_idle_idle.yaml b/tests/kvmfornfv_cyclictest_idle_idle.yaml
deleted file mode 100644
index f3c84c856..000000000
--- a/tests/kvmfornfv_cyclictest_idle_idle.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
----
-# Sample benchmark task config file
-# Measure system high resolution by using Cyclictest
-#
-# For this sample just like running the command below on the test vm and
-# getting latencies info back to the yardstick.
-#
-# sudo bash cyclictest -a 1 -i 1000 -p 99 -l 1000 -t 1 -h 90 -m -n -q
-#
-
-schema: "yardstick:task:0.1"
-
-scenarios:
--
- type: Cyclictest
- options:
- affinity: 1
- interval: 1000
- priority: 99
- loops: 600000
- threads: 1
- histogram: 90
- host: kvm.LF
- runner:
- type: Duration
- duration: 1
- interval: 1
- tc: "kvmfornfv_cyclictest-node-context"
- sla:
- max_min_latency: 50
- max_avg_latency: 100
- max_max_latency: 1000
- action: monitor
- setup_options:
- rpm_dir: "/opt/rpm"
- script_dir: "/opt/scripts"
- image_dir: "/opt/image"
- host_setup_seqs:
- - "host-setup0.sh"
- - "reboot"
- - "host-setup1.sh"
- - "host-run-qemu.sh"
- guest_setup_seqs:
- - "guest-setup0.sh"
- - "reboot"
- - "guest-setup1.sh"
-
-context:
- type: Node
- name: LF
- file: /opt/scripts/pod.yaml