#!/bin/bash
set -ex

test_forward=www.mythic-beasts.com
test_reverse=master.debian.org

trap '
    : ----- failed status $?, running dig to check test env dns setup 
    set +e
    dig $test_forward.
    dig $test_reverse.
    test -z "$test_reverse_a" || dig -x "$test_reverse_a"
    : ----- exiting with failure
    exit 1
' 0

adnshost -t aaaa $test_forward
adnshost -t a $test_forward

test_reverse_a=$(adnshost +Dc +Do +Dt -t a $test_reverse)
adnshost -i "$test_reverse_a"

adnshost +Dc -t a $test_reverse			\
| adnsresfilter -t10000				\
| tee >(sed 's/^/| /' >&2)			\
| grep "$test_reverse A $test_reverse"

: 'check that getrandom() output is used for the query id'
strace -x -s1000 -e sendto,getrandom \
adnshost -t aaaa $test_forward 2>&1 | perl -ne '
    print "| $_";
    $rand = $1 if m/^getrandom\("[^"]+([^"]{8})",/;
    $send = $1 if m/^sendto\(\d+, "([^"]{8})/;
    END {
        print "rand=$rand send=$send.\n";
        $bre = qr{\\x[0-9a-f]{2}};
        $rand =~ m/^($bre)($bre)$/ or die;
        $send eq $rand or $send eq "$2$1" or die;
    }
'

trap '' 0
echo ok.
