Commit ea340dc4 authored by Michal Berger's avatar Michal Berger Committed by Tomasz Zawadzki
Browse files

test/vhost: Rewrite vm_shutdown_all() to include dumps from QEMU



This is done in order to debug issues like #3264. Enhance it a bit
to return explicitly rather than waiting until counter drops to 0
and trigger errexit. Also, allow to override default timeout and
dump logs from all lingering VMs.

Change-Id: I7cff94b6c9770f34a566dac91955addaffd6a384
Signed-off-by: default avatarMichal Berger <michal.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22993


Reviewed-by: default avatarKarol Latecki <karol.latecki@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
parent cc1a07f7
Loading
Loading
Loading
Loading
+18 −25
Original line number Diff line number Diff line
@@ -477,41 +477,34 @@ function vm_kill_all() {
# Shutdown all VM in $VM_DIR
#
function vm_shutdown_all() {
	# XXX: temporarily disable to debug shutdown issue
	# xtrace_disable
	local timeo=${1:-90} vms vm

	local vms
	vms=$(vm_list_all)
	local vm
	vms=($(vm_list_all))

	for vm in $vms; do
		vm_shutdown $vm
	for vm in "${vms[@]}"; do
		vm_shutdown "$vm"
	done

	notice "Waiting for VMs to shutdown..."
	local timeo=90
	while [[ $timeo -gt 0 ]]; do
		local all_vms_down=1
		for vm in $vms; do
			if vm_is_running $vm; then
				all_vms_down=0
				break
			fi
	while ((timeo-- > 0 && ${#vms[@]} > 0)); do
		for vm in "${!vms[@]}"; do
			vm_is_running "${vms[vm]}" || unset -v "vms[vm]"
		done
		sleep 1
	done

		if [[ $all_vms_down == 1 ]]; then
	if ((${#vms[@]} == 0)); then
		notice "All VMs successfully shut down"
			xtrace_restore
		return 0
	fi

		((timeo -= 1))
		sleep 1
	done
	warning "Not all VMs were shut down. Leftovers: ${vms[*]}"

	rm -rf $VM_DIR
	for vm in "${vms[@]}"; do
		vm_print_logs "$vm"
	done

	xtrace_restore
	return 1
}

function vm_setup() {