summaryrefslogtreecommitdiff
path: root/smoke-ppc64el.yarn
diff options
context:
space:
mode:
Diffstat (limited to 'smoke-ppc64el.yarn')
-rw-r--r--smoke-ppc64el.yarn65
1 files changed, 65 insertions, 0 deletions
diff --git a/smoke-ppc64el.yarn b/smoke-ppc64el.yarn
new file mode 100644
index 0000000..2b97796
--- /dev/null
+++ b/smoke-ppc64el.yarn
@@ -0,0 +1,65 @@
+# Smoke test vmdb2-built images
+
+This yarn file builds a basic image, and runs it under Qemu. The image
+is configured to have a serial console enabled, and the scenario below
+will log in as root (no password), and command the virtual machine to
+power off. If this works, the image is at least minimally functional,
+so the "smoke test" passes.
+
+More elaborate testing can be added, but smoke testing is enough for
+now.
+
+To run this yarn file, you need to run it as root (since it needs to
+build an image as root), and you need to run on a system where
+qemu-system-ppc64le is installed. Additionally, you need to add the
+following option to yarn:
+
+ EXAMPLE
+ --env ROOTFS_TARBALL=/path/to/rootfs/tarball
+
+This means vmdb2 will use the given tarball when creating an image,
+and if the tarball doesn't exist yet, it will create it. This makes
+testing multiple time much faster.
+
+ SCENARIO smoke test ppc64el IEEE1275 image
+ WHEN user runs vmdb smoke-ppc64el.vmdb --output smoke-ppc64el.img
+ THEN user can IEEE1275 boot smoke-ppc64el.img and power it off from root shell
+
+ IMPLEMENTS WHEN user runs vmdb (\S+) --output (\S+)
+ "$SRCDIR/vmdb2" "$SRCDIR/$MATCH_1" \
+ --output "$DATADIR/$MATCH_2" \
+ --log "$DATADIR/vmdb.log" \
+ --verbose \
+ --rootfs-tarball "$ROOTFS_TARBALL"
+
+ IMPLEMENTS THEN user can IEEE1275 boot (\S+) and power it off from root shell
+ cd "$DATADIR"
+ img="$MATCH_1"
+ cat << EOF > run.sh
+ qemu-system-ppc64le \
+ -m 1024 \
+ -nographic \
+ "$img"
+ EOF
+ chmod a+rx run.sh
+ cat << EOF > expect.txt
+ set timeout 600
+ proc abort {} {
+ puts "ERROR ERROR\n"
+ exit 1
+ }
+ spawn ./run.sh
+ expect "login: "
+ send "root\n"
+ expect "# "
+ send "poweroff\r"
+ set timeout 30
+ expect {
+ "reboot: Power down" {puts poweroffing\n}
+ eof abort
+ timeout abort
+ }
+ expect eof
+ wait
+ EOF
+ expect -d expect.txt > expect.out