summaryrefslogtreecommitdiff
path: root/smoke-ppc64el.yarn
blob: 2b977963c61418360387b77399b47f0598787c54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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