summaryrefslogtreecommitdiffstats
path: root/tests
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 /tests
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>
Diffstat (limited to 'tests')
-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