]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - testcode/run_vm.sh
Vendor import of Unbound 1.13.0.
[FreeBSD/FreeBSD.git] / testcode / run_vm.sh
1 #!/usr/local/bin/bash
2 # run tdir tests from within a VM.  Looks for loopback addr.
3 # if run not from within a VM, runs the tests as usual.
4 # with one argument: run that tdir, otherwise, run all tdirs.
5
6 get_lo0_ip4() {
7         if test -x /sbin/ifconfig
8         then
9                 LO0_IP4=`/sbin/ifconfig lo0 | grep '[^0-9]127\.' | sed -e 's/^[^1]*\(127\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[^0-9]*.*$/\1/g'`
10                 if ( echo $LO0_IP4 | grep '^127\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' > /dev/null )
11                 then
12                         return
13                 fi
14         fi
15         LO0_IP4=127.0.0.1
16 }
17 get_lo0_ip4
18 export LO0_IP4
19 if test "x$LO0_IP4" = "x127.0.0.1"
20 then
21         ALT_LOOPBACK=false
22 else
23         ALT_LOOPBACK=true
24 fi
25 cd testdata
26 TPKG=../testcode/mini_tdir.sh
27 #RUNLIST=`(ls -1d *.tdir|grep -v '^0[016]')`
28 RUNLIST=`(ls -1d *.tdir)`
29 if test "$#" = "1"; then
30         RUNLIST="$1";
31         if echo "$RUNLIST" | grep '/$' >/dev/null; then
32                 RUNLIST=`echo "$RUNLIST" | sed -e 's?/$??'`
33         fi
34 fi
35
36 # fix up tdir that was edited on keyboard interrupt.
37 cleanup() {
38         echo cleanup
39         if test -f "$t.bak"; then rm -fr "${t}"; mv "$t.bak" "$t"; fi
40         exit 0
41 }
42 trap cleanup INT
43 # stop tests from notifying systemd, if that is compiled in.
44 export -n NOTIFY_SOCKET
45
46 for t in $RUNLIST
47 do
48         if ! $ALT_LOOPBACK
49         then
50                 $TPKG exe $t
51                 continue
52         fi
53         # We have alternative 127.0.0.1 number
54         if ( echo $t | grep '6\.tdir$' ) # skip IPv6 tests
55         then
56                 continue
57         elif test "$t" = "edns_cache.tdir" # This one is IPv6 too!
58         then
59                 continue
60         fi
61         cp -ap "$t" "$t.bak"
62         find "${t}" -type f \
63                 -exec grep -q -e '127\.0\.0\.1' -e '@localhost' {} \; -print | {
64                 while read f
65                 do
66                         sed "s/127\.0\.0\.1/${LO0_IP4}/g" "$f" > "$f._"
67                         mv "$f._" "$f"
68                         sed "s/@localhost/@${LO0_IP4}/g" "$f" > "$f._"
69                         mv "$f._" "$f"
70                 done
71         }
72         find "${t}" -type d -name "127.0.0.1" -print | {
73                 while read d
74                 do
75                         mv -v "$d" "${d%127.0.0.1}${LO0_IP4}"
76                 done
77         }
78         $TPKG exe $t
79         rm -fr "${t}"
80         mv "$t.bak" "$t"
81 done
82 # get out of testdata/
83 cd ..