#!/usr/bin/env bash testdir=$(readlink -f $(dirname $0)) rootdir=$testdir/../../.. source $rootdir/scripts/autotest_common.sh if [ -z "$VM_IMG" ]; then echo "VM_IMG: path to qcow2 image not provided - not running" exit 1 fi if [ -z "$VM_QEMU" ]; then echo "VM_QEMU: path to qemu binary not provided - not running" exit 1 fi HOST_IP=192.168.122.1 VM_IP=192.168.122.254 VM_UNAME="root" VM_PASS="root" VM_NAME="ext4test_vm" VM_NET_NAME="test_net" VM_MAC="02:de:ad:de:ad:01" VM_BAK_IMG="/tmp/ext4test_backing.img" TIMEO=60 SSHCMD="sshpass -p $VM_PASS ssh" SCPCMD="sshpass -p $VM_PASS scp" function cleanup_virsh() { virsh destroy $VM_NAME virsh net-destroy $VM_NET_NAME rm $VM_BAK_IMG } timing_enter ext4test qemu-img create -f qcow2 -o backing_file=$VM_IMG $VM_BAK_IMG cp $testdir/spdk_vm_base.xml $testdir/spdk_vm.xml cp $testdir/spdk_vnet_base.xml $testdir/spdk_vnet.xml sed -i "s@@$VM_NAME@g" $testdir/spdk_vm.xml sed -i "s@source file=''@source file='$VM_BAK_IMG'@g" $testdir/spdk_vm.xml sed -i "s@@$VM_QEMU@g" $testdir/spdk_vm.xml sed -i "s@@$VM_NET_NAME@g" $testdir/spdk_vnet.xml trap "cleanup_virsh; killprocess $pid; exit 1" SIGINT SIGTERM EXIT virsh net-create $testdir/spdk_vnet.xml # Change directory and ownership because virsh has issues with # paths that are in /root tree cd /tmp $rootdir/app/vhost/vhost -c $testdir/vhost.conf & pid=$! echo "Process pid: $pid" sleep 10 chmod 777 /tmp/naa.123 tar --exclude '.git' --exclude 'spdk.tgz' --exclude '*.d' --exclude '*.o' -zcf /tmp/spdk_host.tgz $rootdir virsh create $testdir/spdk_vm.xml virsh net-update $VM_NET_NAME add ip-dhcp-host "" # Wait for VM to boot, disable trap temporarily # so that we don't exit on first fail echo "Trying to connect to virtual machine..." trap - SIGINT SIGTERM EXIT set +xe rc=-1 while [[ $TIMEO -gt 0 && rc -ne 0 ]]; do $SSHCMD root@$VM_IP -q -oStrictHostKeyChecking=no 'echo Hello' rc=$? ((TIMEO-=1)) done set -xe trap "cleanup_virsh; killprocess $pid; exit 1" SIGINT SIGTERM EXIT if [[ $TIMEO -eq 0 || rc -ne 0 ]]; then echo "VM did not boot properly, exiting" exit 1 fi $SSHCMD root@$VM_IP 'mkdir -p /tmp/spdk' $SCPCMD -r /tmp/spdk_host.tgz root@$VM_IP:/tmp/spdk $SSHCMD root@$VM_IP 'cd /tmp/spdk; tar xf spdk_host.tgz' $SSHCMD root@$VM_IP '/tmp/spdk/test/vhost/ext4test/ext4connect.sh' #read -p "Hit enter to exit..." trap - SIGINT SIGTERM EXIT cleanup_virsh rm $testdir/spdk_vm.xml rm $testdir/spdk_vnet.xml killprocess $pid timing_exit ext4test