Skip to content

Commit d2d714c

Browse files
committed
Improve test script
1 parent 08b0b1f commit d2d714c

2 files changed

Lines changed: 96 additions & 63 deletions

File tree

run_test.sh

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
#!/bin/bash
2+
set -xe
3+
4+
TEMPDIR=$(mktemp -d)
5+
6+
mkdir $TEMPDIR/mnt
7+
8+
SUCCESS=no
9+
10+
cleanup() {
11+
# Ignore errors in cleanup.
12+
set +e
13+
umount -l -q $TEMPDIR/mnt
14+
rm -rf $TEMPDIR
15+
# Kill descendants, but not itself.
16+
trap '' SIGTERM
17+
kill -- -$(ps -o pgid= $$ | tr -d ' ')
18+
trap - SIGTERM
19+
if [ $SUCCESS = "yes" ]
20+
then
21+
exit 0
22+
fi
23+
}
24+
25+
trap cleanup EXIT
26+
27+
cp -rv $1 $TEMPDIR
28+
29+
cat > $TEMPDIR/storage/registered.json << EOF
30+
[
31+
{
32+
"mac": [82, 84, 0, 18, 52, 86],
33+
"group": 0,
34+
"row": 1,
35+
"col": 1,
36+
"curr_action": null,
37+
"curr_progress": null,
38+
"next_action": "shutdown",
39+
"image": "contestant"
40+
}
41+
]
42+
EOF
43+
44+
if ! ip link show br-pixie; then
45+
ip link add br-pixie type bridge
46+
ip link set dev br-pixie up
47+
ip addr add 10.0.0.1/8 brd 10.255.255.255 dev br-pixie
48+
fi
49+
50+
RUST_BACKTRACE=short RUST_LOG=debug ./pixie-server/target/debug/pixie-server -s $TEMPDIR/storage &
51+
52+
run_qemu() {
53+
OVMF=/usr/share/OVMF/OVMF_CODE_4M.fd
54+
if ! [ -e $OVMF ]
55+
then
56+
OVMF=/usr/share/edk2/x64/OVMF_CODE.4m.fd
57+
fi
58+
qemu-system-x86_64 \
59+
-nographic \
60+
-enable-kvm \
61+
-cpu host -smp cores=2 \
62+
-m 1G \
63+
-drive if=pflash,format=raw,file=$OVMF \
64+
-drive file=$TEMPDIR/disk.img,if=none,id=nvm,format=raw \
65+
-device nvme,serial=deadbeef,drive=nvm \
66+
-nic bridge,mac=52:54:00:12:34:56,br=br-pixie,model=virtio-net-pci
67+
}
68+
69+
truncate -s 8G $TEMPDIR/disk.img
70+
mkfs.ext4 $TEMPDIR/disk.img
71+
DEV=$(sudo losetup --show --find $TEMPDIR/disk.img)
72+
sudo mount $DEV $TEMPDIR/mnt
73+
cp ./pixie-server/target/debug/pixie-server $TEMPDIR/mnt
74+
sudo umount $TEMPDIR/mnt
75+
sudo losetup -d $DEV
76+
77+
curl 'http://localhost:8080/admin/curr_action/all/store'
78+
run_qemu
79+
80+
rm -f $TEMPDIR/disk.img
81+
truncate -s 8G $TEMPDIR/disk.img
82+
83+
curl 'http://localhost:8080/admin/curr_action/all/flash'
84+
run_qemu
85+
86+
DEV=$(sudo losetup --show --find $TEMPDIR/disk.img)
87+
sudo mount $DEV $TEMPDIR/mnt
88+
if [ "$(md5sum $TEMPDIR/mnt/pixie-server | cut -f 1 -d ' ')" != "$(md5sum ./pixie-server/target/debug/pixie-server | cut -f 1 -d ' ')" ]; then
89+
echo "pixie-server does not contain the expected content"
90+
exit 1
91+
fi
92+
sudo umount $TEMPDIR/mnt
93+
sudo losetup -d $DEV
94+
95+
SUCCESS=yes

test.sh

Lines changed: 1 addition & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -3,71 +3,9 @@ set -xe
33

44
# TODO: less invasive on host system
55

6-
# TODO: kill server on exit
7-
#trap "kill -- -$$" EXIT
8-
96
SELFDIR="$(realpath "$(dirname "$0")")"
107
cd "$SELFDIR"
118

129
./setup.sh
1310

14-
cat <<EOF >storage/registered.json
15-
[
16-
{
17-
"mac": [82, 84, 0, 18, 52, 86],
18-
"group": 0,
19-
"row": 1,
20-
"col": 1,
21-
"curr_action": null,
22-
"curr_progress": null,
23-
"next_action": "shutdown",
24-
"image": "contestant"
25-
}
26-
]
27-
EOF
28-
29-
if ! ip link show br-pixie; then
30-
sudo ip link add br-pixie type bridge
31-
sudo ip link set dev br-pixie up
32-
sudo ip addr add 10.0.0.1/8 brd 10.255.255.255 dev br-pixie
33-
fi
34-
35-
sudo RUST_BACKTRACE=short RUST_LOG=debug ./pixie-server/target/debug/pixie-server &
36-
37-
run_qemu() {
38-
sudo qemu-system-x86_64 \
39-
-nographic \
40-
-enable-kvm \
41-
-cpu host -smp cores=2 \
42-
-m 1G \
43-
-drive if=pflash,format=raw,file=/usr/share/OVMF/OVMF_CODE_4M.fd \
44-
-drive file=disk.img,if=none,id=nvm,format=raw \
45-
-device nvme,serial=deadbeef,drive=nvm \
46-
-nic bridge,mac=52:54:00:12:34:56,br=br-pixie,model=virtio-net-pci
47-
}
48-
49-
truncate -s 8G disk.img
50-
mkfs.ext4 -F disk.img
51-
DEV=$(sudo losetup --show --find disk.img)
52-
sudo mount $DEV /mnt
53-
echo "hello world" | sudo tee /mnt/hello.txt
54-
sudo umount /mnt
55-
sudo losetup -d $DEV
56-
57-
curl 'http://localhost:8080/admin/curr_action/all/store'
58-
run_qemu
59-
60-
rm -f disk.img
61-
truncate -s 8G disk.img
62-
63-
curl 'http://localhost:8080/admin/curr_action/all/flash'
64-
run_qemu
65-
66-
DEV=$(sudo losetup --show --find disk.img)
67-
sudo mount $DEV /mnt
68-
if [ "$(cat /mnt/hello.txt)" != "hello world" ]; then
69-
echo "hello.txt does not contain the expected content"
70-
exit 1
71-
fi
72-
sudo umount /mnt
73-
sudo losetup -d $DEV
11+
sudo ./run_test.sh ${SELFDIR}/storage

0 commit comments

Comments
 (0)