xref: /openbmc/openbmc-build-scripts/scripts/test-qemu (revision 5814cc9048942fc79c23da8b9df35997731e78e3)
1#!/bin/bash
2
3set -eu
4set -x
5
6ARTIFACT_DIR=$(mktemp -d)
7
8trap 'rm -rf ${ARTIFACT_DIR}' EXIT
9
10function acquire() {
11    local target="$1"
12    wget --quiet --show-progress --directory-prefix="${ARTIFACT_DIR}" https://jenkins.openbmc.org/view/latest/job/latest-master/lastSuccessfulBuild/label=docker-builder,target="${target}"/artifact/openbmc/build/tmp/deploy/images/"${target}"/'*zip*'/"${target}".zip
13    unzip -qq -d "${ARTIFACT_DIR}" "${ARTIFACT_DIR}"/"${target}".zip
14    echo "${ARTIFACT_DIR}"/"${target}"
15}
16
17# AST2400
18PALMETTO_ARTIFACTS="$(acquire palmetto)"
19PALMETTO_MTD="$(echo "${PALMETTO_ARTIFACTS}"/obmc-phosphor-image-palmetto-*.static.mtd)"
20# shellcheck disable=SC2016 # 'expect' strings
21expect -c "spawn qemu-system-arm \
22            -M palmetto-bmc \
23            -drive file=${PALMETTO_MTD},if=mtd,format=raw \
24            -nographic \
25            -net nic \
26    -net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443,hostname=qemu" \
27    -c 'set timeout 300' \
28    -c 'expect timeout { exit 1 } "login:"' \
29    -c 'spawn sshpass -p 0penBmc ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p2222 root@localhost journalctl -b' \
30    -c 'expect -i $spawn_id eof'
31
32# AST2500
33ROMULUS_ARTIFACTS="$(acquire romulus)"
34ROMULUS_MTD="$(echo "${ROMULUS_ARTIFACTS}"/obmc-phosphor-image-romulus*.mtd)"
35# shellcheck disable=SC2016 # 'expect' strings
36expect -c "spawn qemu-system-arm \
37            -M romulus-bmc \
38            -drive file=${ROMULUS_MTD},if=mtd,format=raw \
39            -nographic \
40            -net nic \
41    -net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443,hostname=qemu" \
42    -c 'set timeout 300' \
43    -c 'expect timeout { exit 1 } "login:"' \
44    -c 'spawn sshpass -p 0penBmc ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p2222 root@localhost journalctl -b' \
45    -c 'expect -i $spawn_id eof'
46
47# AST2600
48P10BMC_ARTIFACTS="$(acquire p10bmc)"
49
50P10BMC_WIC_XZ="$(echo "${P10BMC_ARTIFACTS}"/obmc-phosphor-image-p10bmc-*.wic.xz)"
51P10BMC_MMC="${P10BMC_WIC_XZ%.xz}"
52P10BMC_UBOOT_SPL="$(echo "${P10BMC_ARTIFACTS}"/u-boot-spl.bin-*)"
53P10BMC_UBOOT="$(echo "${P10BMC_ARTIFACTS}"/u-boot-p10bmc-*.bin)"
54
55dd of="$P10BMC_MMC" if=/dev/zero bs=1M count=2
56dd of="$P10BMC_MMC" if="$P10BMC_UBOOT_SPL" conv=notrunc
57dd of="$P10BMC_MMC" if="$P10BMC_UBOOT" conv=notrunc bs=1K seek=64
58
59xz --decompress --stdout --keep "$P10BMC_WIC_XZ" | dd of="$P10BMC_MMC" conv=notrunc bs=1M seek=2
60
61truncate -s 16G "$P10BMC_MMC"
62
63# shellcheck disable=SC2016 # 'expect' strings
64expect -c "spawn qemu-system-arm -M rainier-bmc \
65            -drive file=${P10BMC_MMC},if=sd,format=raw,index=2 \
66            -net nic \
67            -net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443,hostname=qemu \
68    -nographic" \
69    -c 'set timeout 300' \
70    -c 'expect timeout { exit 1 } "login:"' \
71    -c 'spawn sshpass -p 0penBmc ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p2222 root@localhost journalctl -b' \
72    -c 'expect -i $spawn_id eof'
73