1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#!/bin/sh
# 20221231
set -e
dir=`dirname "$0"`
# change directory to $AUTOPKGTEST_TMP
cd "${AUTOPKGTEST_TMP}"
# run fakedns
${dir}/fakedns.py 2>fakednslog &
fakednspid=$!
# wait when dqcache will be ready
dq a localhost 127.0.0.1 1>/dev/null 2>/dev/null
# reconfigure dqcache
echo '127.0.0.2' > '/var/lib/dqcache/root/servers/@'
killall -HUP dqcache
killall -INT dqcache
cleanup() {
ex=$?
# kill fakedns
kill -TERM "${fakednspid}" 1>/dev/null 2>/dev/null || :
kill -KILL "${fakednspid}" 1>/dev/null 2>/dev/null || :
cat /var/lib/dqcache/root/servers/.@ > /var/lib/dqcache/root/servers/@ || :
killall -HUP dqcache || :
killall -INT dqcache || :
if [ "${ex}" -ne 0 ]; then
(
exec >&2
echo "fakednslog:"
cat fakednslog || :
)
fi
rm -f *.log fakednslog
exit "${ex}"
}
trap "cleanup" EXIT TERM INT
domainnames="a b c d e f g h i j k l m n o p q r s t u v w x y z"
# send queries
for x in ${domainnames}; do
for y in ${domainnames}; do
name="$x.$y.$z"
dq a "${name}" 127.0.0.1 1>"${name}.log" 2>&1
if ! grep '^answer: ' "${name}.log"; then
exit 2
fi
done
done
# stop fakedns, dqcache should have all queries cached
kill -TERM "${fakednspid}" 1>/dev/null 2>/dev/null || :
kill -KILL "${fakednspid}" 1>/dev/null 2>/dev/null || :
# send queries again and parallel
for x in ${domainnames}; do
for y in ${domainnames}; do
(
name="$x.$y.$z"
dq a "${name}" 127.0.0.1 1>"${name}.log" 2>&1
if ! grep '^answer: ' "${name}.log"; then
exit 3
fi
) &
done
wait
done
exit 0
|