poky/scripts/qemuimage-tests/sanity/shutdown
Richard Purdie 6c9743d9b9 qemu-testlib: Add python helper and simplify shell
The current code has a race since it greps for *any* qemu process
running, even if it isn't the one we started. This leads to some sanity
tests potentially failing on machines where multiple sets of sanity tests
are running.

To resovle this and some other ugly code issues, add a python script
to accurately walk the process tree and find the qemu process. We can
then replace all the shell functions attempting this which happen to
work in many cases but not all.

Also clean up some of the error handling so its more legible.

(From OE-Core rev: b9e052ed6b604f0049bcfa968a57f15d6e3d6395)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-03-19 11:48:30 +00:00

1.6 KiB
Executable File

#!/bin/bash

Shutdown Test Case for Sanity Test

The case boot up the Qemu target with runqemu qemuxxx.

Then check if target can shutdown

For qemux86/x86-64, we use command "poweroff" for target shutdown

For non-x86 targets, we use command "reboot" for target shutdown

Author: Jiajun Xu jiajun.xu@intel.com

This file is licensed under the GNU General Public License,

Version 2.

. $COREBASE/scripts/qemuimage-testlib

TIMEOUT=400

RET=1 i=0

Start qemu and check its network

Test_Create_Qemu ${TIMEOUT}

If qemu network is up, check ssh service in qemu

if [ $? -eq 0 ]; then Test_Info "Begin to Test SSH Service in Qemu" Test_SSH_UP ${TARGET_IPADDR} ${TIMEOUT} RET=$? else RET=1 fi

Check if target can shutdown

if [ $RET -eq 0 ]; then echo $QEMUARCH | grep -q "qemux86"

# For qemux86/x86-64, command "poweroff" is used
# For non x86 qemu targets, command "reboot" is used because of BUG #100
if [ $? -eq 0 ]; then
	Test_SSH ${TARGET_IPADDR} "/sbin/poweroff"
else
	Test_SSH ${TARGET_IPADDR} "/sbin/reboot"
fi

# If qemu start up process ends up, it means shutdown completes
while [ $i -lt $TIMEOUT ]
do
	ps -fp $QEMUPID > /dev/null 2> /dev/null
	if [ $? -ne 0 ]; then
		RET=0
		break
	fi
	i=$((i+5))
	sleep 5
done

if [ $i -ge $TIMEOUT ]; then
	RET=1
fi

fi

if [ ${RET} -eq 0 ]; then Test_Info "Shutdown Test PASS" Test_Print_Result "shutdown" 0

# Remove TARGET_IPSAVE since no existing qemu running now
if [ -e ${TARGET_IPSAVE} ]; then
	rm -rf ${TARGET_IPSAVE}
fi
exit 0

else Test_Info "Shutdown Test FAIL" Test_Kill_Qemu Test_Print_Result "shutdown" 1 exit 1 fi