summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ubuntu/qemu-edk2-boot.yaml38
-rwxr-xr-xubuntu/scripts/qemu-edk2-boot.expect29
-rwxr-xr-xubuntu/scripts/qemu-edk2-boot.sh16
3 files changed, 83 insertions, 0 deletions
diff --git a/ubuntu/qemu-edk2-boot.yaml b/ubuntu/qemu-edk2-boot.yaml
new file mode 100644
index 0000000..80cc9ba
--- /dev/null
+++ b/ubuntu/qemu-edk2-boot.yaml
@@ -0,0 +1,38 @@
+metadata:
+ name: qemu-edk2-boot
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "Setup and run a test on Aarch64 QEMU System Image, with networking."
+ maintainer:
+ - roy.franz@linaro.org
+ os:
+ - debian
+ scope:
+ - functional
+ devices:
+ - kvm
+
+params:
+ # The QEMU executable
+ QEMU_BIN: /usr/local/bin/qemu-system-aarch64
+ # The QEMU machine definitions
+ QEMU_ARGS: -machine virt -cpu cortex-a57 -machine type=virt -pflash /home/flash0.img -pflash /home/flash1.img -device virtio-net-device,netdev=v0 -netdev tap,id=v0,ifname=tap0 -nographic -smp 1 -m 256
+ # Args for local disk: -machine virt -cpu cortex-a57 -machine type=virt -pflash /home/flash0.img -pflash /home/flash1.img -drive file=/root/iscsi-disk-image.bin,if=none,id=blk -device virtio-blk-device,drive=blk -nographic -smp 1 -m 256
+ # Test name to identify specific configuration
+ TEST_NAME: iscsi
+
+install:
+ deps:
+ - wget
+ - expect
+
+run:
+ steps:
+ # Put the flash image in /home with the disk image provided files
+ # for QEMU to keep them all together.
+ - pushd /home
+ - wget -O QEMU_EFI.fd ${EDK2_BIN}
+ # Pad to 64 MBytes as required for QEMU flash images
+ - dd if=QEMU_EFI.fd of=flash0.img ibs=64M conv=sync
+ - popd
+ - export QEMU_BIN QEMU_ARGS TEST_NAME
+ - ubuntu/scripts/qemu-edk2-boot.sh
diff --git a/ubuntu/scripts/qemu-edk2-boot.expect b/ubuntu/scripts/qemu-edk2-boot.expect
new file mode 100755
index 0000000..62300b0
--- /dev/null
+++ b/ubuntu/scripts/qemu-edk2-boot.expect
@@ -0,0 +1,29 @@
+#!/usr/bin/expect --
+#
+# Run qemu-system and check we can boot and shutdown
+#
+
+if {[llength $argv] == 0} {
+ send_user "Usage: boot.expect <qemu invocation>\n"
+ exit 1
+}
+
+set timeout 180
+spawn {*}$argv
+expect {
+ "buildroot login: " { send -- "root\r" }
+ timeout { send "# boot failed"; exit 1 }
+}
+
+
+expect "# "
+send -- "uname -a\r"
+expect "# "
+set timeout 10
+send -- "halt -d 5\r"
+expect {
+ "reboot: System halted" { send -- "c"; expect "(qemu) "; send -- "quit\r" }
+ timeout { send "# shutdown failed"; exit 2 }
+}
+expect eof
+exit 0
diff --git a/ubuntu/scripts/qemu-edk2-boot.sh b/ubuntu/scripts/qemu-edk2-boot.sh
new file mode 100755
index 0000000..5a226d0
--- /dev/null
+++ b/ubuntu/scripts/qemu-edk2-boot.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+#
+# A simple wrapper to run a expect based system test
+#
+# This expects the follow environment variables to be set:
+# QEMU_BIN - path to binary
+# QEMU_ARGS - arguments to run
+#
+
+
+pushd `dirname $0` > /dev/null
+BASE=`pwd -P`
+popd > /dev/null
+
+lava-test-case qemu-edk2-boot-${TEST_NAME} --shell ${BASE}/qemu-edk2-boot.expect ${QEMU_BIN} ${QEMU_ARGS}
+