Skip to content

Commit 377bcea

Browse files
committed
Improve test script and workflow
1 parent 08b0b1f commit 377bcea

3 files changed

Lines changed: 94 additions & 64 deletions

File tree

.github/workflows/rust.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
name: Rust
22

3-
on: [push, pull_request]
3+
on:
4+
pull_request:
5+
branches: [master]
6+
push:
7+
branches: [master]
48

59
jobs:
610
clippy:

run_test.sh

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

test.sh

Lines changed: 2 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -3,71 +3,10 @@ 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+
set -m
12+
exec sudo ./run_test.sh ${SELFDIR}/storage

0 commit comments

Comments
 (0)