mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-11-08 12:18:42 +00:00
Distro: Add apkg packaging test
The test was written by Maria Matejka, thanks! Run this using apkg test
This commit is contained in:
parent
b7f2d604c7
commit
8c8847def7
3
distro/tests/control
Normal file
3
distro/tests/control
Normal file
@ -0,0 +1,3 @@
|
||||
Tests: test-bird.sh
|
||||
Restrictions: needs-root
|
||||
Depends: bird2
|
105
distro/tests/test-bird.sh
Executable file
105
distro/tests/test-bird.sh
Executable file
@ -0,0 +1,105 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
LOCAL=2001:db8:dead::
|
||||
|
||||
EXTERNAL=2001:db8:beef::
|
||||
EXTERNAL_NET=${EXTERNAL}/48
|
||||
EXTERNAL_NH=${LOCAL}beef
|
||||
|
||||
LEARN=2001:db8:feed::
|
||||
LEARN_NET=${LEARN}/48
|
||||
LEARN_NH=${LOCAL}feed
|
||||
|
||||
IFACE=bird-test-dummy
|
||||
IFACE_EXISTS=false
|
||||
|
||||
BIRD_RUNNING=false
|
||||
|
||||
D=$(mktemp -d)
|
||||
pushd ${D} >/dev/null
|
||||
|
||||
stop_bird() {
|
||||
birdc -l down >/dev/null
|
||||
sleep 1
|
||||
grep -q "<FATAL> Shutdown completed" bird.log
|
||||
[ ! -e bird.pid ]
|
||||
[ ! -e bird.ctl ]
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
if ${BIRD_RUNNING}; then
|
||||
stop_bird
|
||||
if [ -e bird.pid ]; then
|
||||
kill -9 $(<bird.pid)
|
||||
fi
|
||||
fi
|
||||
|
||||
if ${IFACE_EXISTS}; then
|
||||
ip link del ${IFACE}
|
||||
fi
|
||||
|
||||
|
||||
popd > /dev/null
|
||||
rm -rf ${D}
|
||||
}
|
||||
|
||||
failed() {
|
||||
cleanup
|
||||
exit 1
|
||||
}
|
||||
|
||||
trap failed ERR
|
||||
trap failed INT
|
||||
trap failed HUP
|
||||
|
||||
ip link add ${IFACE} type dummy
|
||||
IFACE_EXISTS=true
|
||||
|
||||
ip link set ${IFACE} up
|
||||
ip -6 addr add ${LOCAL}/64 dev bird-test-dummy
|
||||
|
||||
ip -6 route add ${LEARN_NET} via ${LEARN_NH}
|
||||
|
||||
cat >bird.conf <<EOF
|
||||
log "bird.log" all;
|
||||
|
||||
protocol device {}
|
||||
|
||||
protocol kernel {
|
||||
ipv6 { import all; export all; };
|
||||
learn;
|
||||
}
|
||||
|
||||
protocol static {
|
||||
ipv6;
|
||||
route ${EXTERNAL_NET} via ${EXTERNAL_NH};
|
||||
}
|
||||
EOF
|
||||
|
||||
bird -l -P bird.pid
|
||||
|
||||
if [ ! -S bird.ctl ] || [ ! -f bird.pid ] || [ ! -f bird.log ]; then
|
||||
failed
|
||||
fi
|
||||
|
||||
BIRD_RUNNING=true
|
||||
|
||||
ROUTE_INSERTED=false
|
||||
for _ in $(seq 10); do
|
||||
if ip -6 route show ${EXTERNAL_NET} | egrep -q "${EXTERNAL_NET} via ${EXTERNAL_NH} dev ${IFACE} proto bird metric [0-9]+ pref medium"; then
|
||||
ROUTE_INSERTED=true
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
$ROUTE_INSERTED || failed
|
||||
|
||||
if birdc -l show route "${LEARN_NET}" | egrep -q "Network not found"; then
|
||||
failed
|
||||
fi
|
||||
|
||||
cleanup
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user