Skip to content

Commit 18af522

Browse files
committed
Improve test script
1 parent 08b0b1f commit 18af522

2 files changed

Lines changed: 86 additions & 63 deletions

File tree

run_test.sh

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

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)