arch="$(uname -m)"
canonical_arch="$(uname -m | sed 's/i[456]86/i386/')"
-#timeout=10m
+timeout=10m
# Handle command line parsing.
echo " -i|--initrd=initrd Set location of initramfs"
echo " -k|--kernel=vmlinuz Set location of kernel"
echo " -q|--qemu=qemu Set location of qemu/KVM binary"
-# echo " -t|--timeout=timeout Set the timeout"
+ echo " -t|--timeout=timeout Set the timeout"
echo " -V|--version Display version and exit"
exit 0
}
TEMP=$(getopt \
- -o i:k:q:V \
+ -o i:k:q:t:V \
--long help \
--long initrd: \
--long kernel: \
--long qemu: \
+ --long timeout: \
--long version \
-n 'qemu-sanity-check' -- "$@")
if [ $? != 0 ]; then exit 2; fi
qemu="$2"
shift 2
;;
-# -t|--timeout)
-# timeout="$2"
-# shift 2
-# ;;
+ -t|--timeout)
+ timeout="$2"
+ shift 2
+ ;;
-V|--version)
echo "@PACKAGE_NAME@ @PACKAGE_VERSION@"
exit 0
done
# Locate initrd.
-if [ ! -f "$initrd" ]; then
+if [ ! -r "$initrd" ]; then
echo "$0: cannot find 'initrd', try using --initrd=/path/to/initrd"
echo "If you are running qemu-sanity-check without installing, then do:"
echo " $0 --initrd=./initrd $@"
exit 2
fi
fi
+if [ ! -r "$kernel" ]; then
+ echo "$0: kernel $kernel is not readable"
+ exit 2
+fi
# Locate qemu if not specified.
if [ -z "$qemu" ]; then
# Choose a temporary file for the output.
test_output="$(mktemp --suff=.out)"
-# Run the command
-set -x
-#timeout "$timeout"
-"$qemu" \
- -nographic -nodefconfig -nodefaults \
- -no-reboot \
- -serial stdio \
- -kernel "$kernel" \
- -initrd "$initrd" \
- -append "console=ttyS0 panic=1" 2>&1 | tee "$test_output"
+# Generate the parameters for the qemu command.
+declare -a argv
+i=0
+argv[$((i++))]="$qemu"
+argv[$((i++))]="-nographic"
+argv[$((i++))]="-nodefconfig"
+argv[$((i++))]="-nodefaults"
+argv[$((i++))]="-no-reboot"
+argv[$((i++))]="-serial"
+argv[$((i++))]="file:$test_output"
+argv[$((i++))]="-kernel"
+argv[$((i++))]="$kernel"
+argv[$((i++))]="-initrd"
+argv[$((i++))]="$initrd"
+argv[$((i++))]="-append"
+argv[$((i++))]="console=ttyS0 panic=1"
+
+#echo "${argv[@]}"
+
+# Run the command.
+timeout "$timeout" "${argv[@]}"
r="${PIPESTATUS[0]}"
-set +x
-#if [ $r -eq 124 ]; then
-# cat "$test_output"
-# echo "$0: error: test $kernel on $qemu: timed out"
-# rm "$test_output"
-# exit 1
-if [ $r -ne 0 ]; then
+if [ $r -eq 124 ]; then
+ cat "$test_output"
+ echo "$0: error: test $kernel on $qemu: timed out"
+ rm "$test_output"
+ exit 1
+elif [ $r -ne 0 ]; then
cat "$test_output"
echo "$0: error: test $kernel on $qemu: failed"
rm "$test_output"