summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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