summaryrefslogtreecommitdiffstats
path: root/ci/envs/host-run-livemigration.sh
diff options
context:
space:
mode:
authorRajithaY <rajithax.yerrumsetty@intel.com>2017-07-26 03:39:35 -0700
committerRajitha Yerrumchetty <rajithax.yerrumsetty@intel.com>2017-08-08 18:43:28 +0000
commit868367c47df84a70a49f7be6b5e6c3150906aa8f (patch)
treea35fe7fa52bb409fde5cfc5fc67c686338253852 /ci/envs/host-run-livemigration.sh
parent4525b15e86b4c7e2d426988c4ec1a11132a9f51b (diff)
Add Livemigration testcase for KVMFORNFV
This patch includes the scripts which will create OVS dpdkvhost user ports and test live migration using qemu with ovs dpdk and provide the information of VM downtime,setuptime and totaltime once migration is completed. Signed-off-by:RajithaY<rajithax.yerrumsetty@intel.com> Change-Id: I17abf627102d88dffdb99972e5616a0ea5cb62b7
Diffstat (limited to 'ci/envs/host-run-livemigration.sh')
-rwxr-xr-xci/envs/host-run-livemigration.sh108
1 files changed, 108 insertions, 0 deletions
diff --git a/ci/envs/host-run-livemigration.sh b/ci/envs/host-run-livemigration.sh
new file mode 100755
index 000000000..a089ad482
--- /dev/null
+++ b/ci/envs/host-run-livemigration.sh
@@ -0,0 +1,108 @@
+#!/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
+###############################################################################
+
+source utils.sh
+source host-config
+
+HOST_IP=$( getHostIP )
+#source qmp-sock for conmunication with qemu
+qmp_sock_src="/tmp/qmp-sock-src"
+#destination qmp-sock for conmunication with qemu, only for local live migration
+qmp_sock_dst="/tmp/qmp-sock-dst"
+
+VHOSTPATH1='/usr/local/var/run/openvswitch/vhost-user1'
+VHOSTPATH2='/usr/local/var/run/openvswitch/vhost-user2'
+
+VHOSTPATH3='/usr/local/var/run/openvswitch/vhost-user3'
+VHOSTPATH4='/usr/local/var/run/openvswitch/vhost-user4'
+
+MACADDRESS1='52:54:00:12:34:56'
+MACADDRESS2='54:54:00:12:34:56'
+
+#destination host ip address
+incoming_ip=0
+migrate_port=4444
+max_down_time=10
+
+
+OVSLOGFILE='/var/log/openvswitch/ovs-vswitchd.log'
+
+function run_qemusrc() {
+ $qemu -enable-kvm -cpu host -smp ${guest_cpus} -chardev socket,id=char1,path=$VHOSTPATH1 \
+ -netdev type=vhost-user,id=net1,chardev=char1,vhostforce \
+ -device virtio-net-pci,netdev=net1,mac=$MACADDRESS1 \
+ -chardev socket,id=char2,path=$VHOSTPATH2 \
+ -netdev type=vhost-user,id=net2,chardev=char2,vhostforce \
+ -device virtio-net-pci,netdev=net2,mac=$MACADDRESS2 -m 1024 -mem-path /dev/hugepages \
+ -mem-prealloc -realtime mlock=on -monitor unix:${qmp_sock_src},server,nowait \
+ -balloon virtio -drive file=/root/guest1.qcow2 -vnc :1 &
+ if [ ${?} -ne 0 ] ; then
+ echo "Qemu Source not started"
+ exit 1
+ fi
+}
+
+function run_qemulisten() {
+ $qemu -enable-kvm -cpu host -smp ${guest_cpus} -chardev socket,id=char1,path=$VHOSTPATH3 \
+ -netdev type=vhost-user,id=net1,chardev=char1,vhostforce \
+ -device virtio-net-pci,netdev=net1,mac=$MACADDRESS1 \
+ -chardev socket,id=char2,path=$VHOSTPATH4 \
+ -netdev type=vhost-user,id=net2,chardev=char2,vhostforce \
+ -device virtio-net-pci,netdev=net2,mac=$MACADDRESS2 -m 1024 -mem-path /dev/hugepages \
+ -mem-prealloc -realtime mlock=on -monitor unix:${qmp_sock_dst},server,nowait \
+ -balloon virtio -drive file=/root/guest1.qcow2 -incoming tcp:${incoming_ip}:${migrate_port} -vnc :3 &
+ if [ ${?} -ne 0 ] ; then
+ echo "Qemu Standby not started"
+ exit 1
+ fi
+}
+
+function do_migration() {
+
+ local src=$1
+ local dst=$2
+#with no speed limit
+ echo "migrate_set_speed 0" |nc -U $src
+#set the expected max downtime
+ echo "migrate_set_downtime ${max_down_time}" |nc -U $src
+#start live migration
+ echo "migrate -d tcp:${incoming_ip}:${migrate_port}" |nc -U $src
+#wait until live migration completed
+ status=""
+ while [ "${status}" == "" ]
+ do
+ status=`echo "info migrate" | nc -U $src |grep completed | cut -d: -f2`
+ echo ${status}
+ sleep 1;
+ done
+#get the related data
+ status=`echo "info migrate" | nc -U $src |grep completed | cut -d: -f2`
+ total_time=`echo "info migrate" | nc -U $src |grep "total time" | cut -d: -f2`
+ down_time=`echo "info migrate" | nc -U $src |grep "downtime" | cut -d: -f2`
+
+#print detail information
+ echo "info migrate" | nc -U $src
+ echo "quit" | nc -U $src
+ echo "quit" | nc -U $dst
+ sleep 5
+ echo "Migration executed successfully"
+}
+echo "Running Qemu Source"
+run_qemusrc
+sleep 60
+echo "Running Qemu listen"
+run_qemulisten
+sleep 60
+do_migration $qmp_sock_src $qmp_sock_dst
+if [ ${?} -ne 0 ] ; then
+ echo "Migration Failed"
+ exit 1
+fi