# 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 an amd64 system (and thus build an amd64 image). Additionally, you need to add the folloing 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 image WHEN user runs vmdb smoke-pc.vmdb --output smoke-pc.img THEN user can boot smoke-pc.img and power it off from root shell IMPLEMENTS WHEN user runs vmdb (\S+) --output (\S+) "$SRCDIR/vmdb2" --no-default-config "$SRCDIR/$MATCH_1" \ --output "$DATADIR/$MATCH_2" \ --log "$DATADIR/vmdb.log" \ --verbose \ --rootfs-tarball "$ROOTFS_TARBALL" IMPLEMENTS THEN user can boot (\S+) and power it off from root shell cd "$DATADIR" img="$MATCH_1" cat << EOF > run.sh qemu-system-x86_64 -drive file="$img",format=raw -m 1024 -nographic EOF chmod a+rx run.sh cat << EOF > expect.txt set timeout 30 proc abort {} { puts "ERROR ERROR\n" exit 1 } spawn ./run.sh expect "login: " send "root\n" expect "# " send "poweroff\r" set timeout 5 expect { "reboot: Power down" {puts poweroffing\n} eof abort timeout abort } expect eof EOF expect -d expect.txt > expect.out