summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYunhong Jiang <yunhong.jiang@linux.intel.com>2015-12-04 18:09:37 -0500
committerYunhong Jiang <yunhong.jiang@linux.intel.com>2016-01-05 19:32:49 -0800
commita04839a2f102d65aff45f6c4dbce15a35354594c (patch)
tree61412e381a6d5ef42308c99611656e9f870a16e8
parenta78eb79f77d4abcf345803ed738f227bb5576ac8 (diff)
Cyclictest invokation script
We run the cyclictest through yardstick, which will help to setup the environment. Environment setup scripts are copied to the yardstick docker images. A yardstick cyclictest yaml file are also used. Change-Id: Iacf1299a38c3c81a08fd5fdbbf64c5a57f30c38b Signed-off-by: Yunhong Jiang <yunhong.jiang@linux.intel.com>
-rw-r--r--tests/cyclictest-node-context.yaml50
-rwxr-xr-xtests/cyclictest.sh60
-rwxr-xr-xtests/update_yardstick.sh70
3 files changed, 180 insertions, 0 deletions
diff --git a/tests/cyclictest-node-context.yaml b/tests/cyclictest-node-context.yaml
new file mode 100644
index 000000000..be1219c91
--- /dev/null
+++ b/tests/cyclictest-node-context.yaml
@@ -0,0 +1,50 @@
+---
+# 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: 1000
+ threads: 1
+ histogram: 90
+ host: kvm.LF
+ runner:
+ type: Duration
+ duration: 1
+ interval: 1
+ 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/pod.yaml
diff --git a/tests/cyclictest.sh b/tests/cyclictest.sh
new file mode 100755
index 000000000..840adc6fb
--- /dev/null
+++ b/tests/cyclictest.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+##############################################################################
+## Copyright (c) 2015 Intel Corp.
+##
+## All rights reserved. This program and the accompanying materials
+## are made available under the terms of the Apache License, Version 2.0
+## which accompanies this distribution, and is available at
+## http://www.apache.org/licenses/LICENSE-2.0
+###############################################################################
+
+usage () {
+ echo "Usage: ${0} rpmdir image_dir"
+ exit 1
+}
+
+if [[ $# -ne 2 ]]; then
+ usage
+fi
+
+rpmdir=$1
+imagedir=$2
+
+ROOT_DIR=$(cd $(dirname "$0")/.. && pwd)
+ENVDIR=${ROOT_DIR}/ci/envs/
+
+cleanup () {
+ docker stop $1
+ docker rm -v $1
+ # We should have already remove running containers when pull the image
+ docker rmi opnfv/yardstick
+}
+
+# Make sure we have latest image
+docker ps | grep opnfv/yardstick-ci |\
+ awk '{print $1}' | xargs -r docker stop &>/dev/null
+ docker ps -a | grep opnfv/yardstick |\
+ awk '{print $1}' | xargs -r docker rm &>/dev/null
+docker pull opnfv/yardstick
+
+id=$(docker run \
+--privileged=true \
+-d \
+-t \
+-e "INSTALLER_TYPE=${INSTALLER_TYPE}" \
+-e "INSTALLER_IP=${INSTALLER_IP}" \
+opnfv/yardstick )
+
+trap 'cleanup $id' SIGHUP SIGINT SIGTERM
+
+${ROOT_DIR}/tests/update_yardstick.sh $id ${rpmdir} ${imagedir}
+
+if [[ -z $? ]]
+then
+ echo "Failed to update the yardstick environment"
+ exit 1
+fi
+
+docker exec $id sh -c "/opt/testexec.sh"
+
+cleanup $id
diff --git a/tests/update_yardstick.sh b/tests/update_yardstick.sh
new file mode 100755
index 000000000..2e6fd3062
--- /dev/null
+++ b/tests/update_yardstick.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+##############################################################################
+## Copyright (c) 2015 Intel Corp.
+##
+## All rights reserved. This program and the accompanying materials
+## are made available under the terms of the Apache License, Version 2.0
+## which accompanies this distribution, and is available at
+## http://www.apache.org/licenses/LICENSE-2.0
+###############################################################################
+
+usage () {
+ echo "update_yardstick.sh container_id rpmdir imagedir"
+ exit 1
+}
+
+if [ $# -ne 3 ] || [ ! -d $2 ] || [ ! -d $3 ]
+then
+ usage
+fi
+
+DBASE_DIR=/opt
+
+ROOTDIR=$(cd $(dirname "$0")/.. && pwd)
+ENVDIR=${ROOTDIR}/ci/envs/
+
+CID=$1
+RPMDIR=$2
+IMGDIR=$3
+
+docker exec ${CID} sh -c "mkdir -p ${DBASE_DIR}/scripts/"
+docker exec ${CID} sh -c "mkdir -p ${DBASE_DIR}/rpm/"
+docker exec ${CID} sh -c "mkdir -p ${DBASE_DIR}/image/"
+
+copyfile () {
+ docker cp $1 "${CID}:${DBASE_DIR}/$2"
+ if [[ -z $? ]]
+ then
+ echo "Failed to copy $2"
+ exit 1
+ fi
+}
+
+# Copy the environment setup scripts to the docker image
+copyfile ${ENVDIR}/host-setup0.sh 'scripts/'
+copyfile ${ENVDIR}/host-setup1.sh 'scripts/'
+copyfile ${ENVDIR}/host-config 'scripts/'
+copyfile ${ENVDIR}/guest-setup0.sh 'scripts/'
+copyfile ${ENVDIR}/guest-setup1.sh 'scripts/'
+copyfile ${ENVDIR}/host-run-qemu.sh 'scripts/'
+copyfile ${ENVDIR}/kvm4nfv_key 'yardstick_key'
+
+copyfile "${ROOTDIR}/tests/testexec.sh" 'testexec.sh'
+
+# Copy the test yaml definition to the docker image
+copyfile "${ROOTDIR}/tests/pod.yaml" 'pod.yaml'
+copyfile "${IMGDIR}/guest.img" 'image/'
+
+docker cp "${ROOTDIR}/tests/cyclictest-node-context.yaml" ${CID}:${DBASE_DIR}
+
+# Copy the rpms
+for f in ${RPMDIR}/*.rpm
+do
+ docker cp $f ${CID}:${DBASE_DIR}/rpm/
+done
+
+# If we have any yardstick patch for workaround, copy it
+if [ -e "${ROOTDIR}/tests/yardstick.patch" ]
+then
+ docker cp ${ROOTDIR}/tests/yardstick.patch ${CID}:${DBASE_DIR}/
+fi