xref: /minix3/external/bsd/bind/dist/bin/tests/virtual-time/run.sh (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek#!/bin/sh
2*00b67f09SDavid van Moolenbroek#
3*00b67f09SDavid van Moolenbroek# Copyright (C) 2010, 2012  Internet Systems Consortium, Inc. ("ISC")
4*00b67f09SDavid van Moolenbroek#
5*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any
6*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above
7*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies.
8*00b67f09SDavid van Moolenbroek#
9*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11*00b67f09SDavid van Moolenbroek# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE.
16*00b67f09SDavid van Moolenbroek
17*00b67f09SDavid van Moolenbroek# Id: run.sh,v 1.2 2010/06/17 05:38:05 marka Exp
18*00b67f09SDavid van Moolenbroek
19*00b67f09SDavid van MoolenbroekSYSTEMTESTTOP=.
20*00b67f09SDavid van Moolenbroek. $SYSTEMTESTTOP/conf.sh
21*00b67f09SDavid van Moolenbroek
22*00b67f09SDavid van Moolenbroekstopservers=true
23*00b67f09SDavid van Moolenbroek
24*00b67f09SDavid van Moolenbroekcase $1 in
25*00b67f09SDavid van Moolenbroek   --keep) stopservers=false; shift ;;
26*00b67f09SDavid van Moolenbroekesac
27*00b67f09SDavid van Moolenbroek
28*00b67f09SDavid van Moolenbroektest $# -gt 0 || { echo "usage: $0 [--keep] test-directory" >&2; exit 1; }
29*00b67f09SDavid van Moolenbroek
30*00b67f09SDavid van Moolenbroektest=$1
31*00b67f09SDavid van Moolenbroekshift
32*00b67f09SDavid van Moolenbroek
33*00b67f09SDavid van Moolenbroektest -d $test || { echo "$0: $test: no such test" >&2; exit 1; }
34*00b67f09SDavid van Moolenbroek
35*00b67f09SDavid van Moolenbroekecho "S:$test:`date`" >&2
36*00b67f09SDavid van Moolenbroekecho "T:$test:1:A" >&2
37*00b67f09SDavid van Moolenbroekecho "A:Virtual time test $test" >&2
38*00b67f09SDavid van Moolenbroek
39*00b67f09SDavid van Moolenbroekif [ x$PERL = x ]
40*00b67f09SDavid van Moolenbroekthen
41*00b67f09SDavid van Moolenbroek    echo "I:Perl not available.  Skipping test." >&2
42*00b67f09SDavid van Moolenbroek    echo "R:UNTESTED" >&2
43*00b67f09SDavid van Moolenbroek    echo "E:$test:`date`" >&2
44*00b67f09SDavid van Moolenbroek    exit 0;
45*00b67f09SDavid van Moolenbroekfi
46*00b67f09SDavid van Moolenbroek
47*00b67f09SDavid van Moolenbroek$PERL testsock.pl || {
48*00b67f09SDavid van Moolenbroek    echo "I:Network interface aliases not set up.  Skipping test." >&2
49*00b67f09SDavid van Moolenbroek    echo "R:UNTESTED" >&2
50*00b67f09SDavid van Moolenbroek    echo "E:$test:`date`" >&2
51*00b67f09SDavid van Moolenbroek    exit 0;
52*00b67f09SDavid van Moolenbroek}
53*00b67f09SDavid van Moolenbroek
54*00b67f09SDavid van Moolenbroek# Check for test-specific prerequisites.
55*00b67f09SDavid van Moolenbroekif
56*00b67f09SDavid van Moolenbroek    test ! -f $test/prereq.sh ||
57*00b67f09SDavid van Moolenbroek    ( cd $test && sh prereq.sh "$@" )
58*00b67f09SDavid van Moolenbroekthen
59*00b67f09SDavid van Moolenbroek    : prereqs ok
60*00b67f09SDavid van Moolenbroekelse
61*00b67f09SDavid van Moolenbroek    echo "I:Prerequisites for $test missing, skipping test." >&2
62*00b67f09SDavid van Moolenbroek    echo "R:UNTESTED" >&2
63*00b67f09SDavid van Moolenbroek    echo "E:$test:`date`" >&2
64*00b67f09SDavid van Moolenbroek    exit 0;
65*00b67f09SDavid van Moolenbroekfi
66*00b67f09SDavid van Moolenbroek
67*00b67f09SDavid van Moolenbroek# Set up any dynamically generated test data
68*00b67f09SDavid van Moolenbroekif test -f $test/setup.sh
69*00b67f09SDavid van Moolenbroekthen
70*00b67f09SDavid van Moolenbroek    ( cd $test && sh setup.sh "$@" )
71*00b67f09SDavid van Moolenbroekfi
72*00b67f09SDavid van Moolenbroek
73*00b67f09SDavid van Moolenbroek# Start name servers running
74*00b67f09SDavid van Moolenbroek$PERL start.pl $test || exit 1
75*00b67f09SDavid van Moolenbroek
76*00b67f09SDavid van Moolenbroek# Run the tests
77*00b67f09SDavid van Moolenbroek( cd $test ; sh tests.sh )
78*00b67f09SDavid van Moolenbroek
79*00b67f09SDavid van Moolenbroekstatus=$?
80*00b67f09SDavid van Moolenbroek
81*00b67f09SDavid van Moolenbroekif $stopservers
82*00b67f09SDavid van Moolenbroekthen
83*00b67f09SDavid van Moolenbroek    :
84*00b67f09SDavid van Moolenbroekelse
85*00b67f09SDavid van Moolenbroek    exit $status
86*00b67f09SDavid van Moolenbroekfi
87*00b67f09SDavid van Moolenbroek
88*00b67f09SDavid van Moolenbroek# Shutdown
89*00b67f09SDavid van Moolenbroek$PERL stop.pl $test
90*00b67f09SDavid van Moolenbroek
91*00b67f09SDavid van Moolenbroekstatus=`expr $status + $?`
92*00b67f09SDavid van Moolenbroek
93*00b67f09SDavid van Moolenbroekif [ $status != 0 ]; then
94*00b67f09SDavid van Moolenbroek    echo "R:FAIL"
95*00b67f09SDavid van Moolenbroek    # Don't clean up - we need the evidence.
96*00b67f09SDavid van Moolenbroek    find . -name core -exec chmod 0644 '{}' \;
97*00b67f09SDavid van Moolenbroekelse
98*00b67f09SDavid van Moolenbroek    echo "R:PASS"
99*00b67f09SDavid van Moolenbroek
100*00b67f09SDavid van Moolenbroek    # Clean up.
101*00b67f09SDavid van Moolenbroek    if test -f $test/clean.sh
102*00b67f09SDavid van Moolenbroek    then
103*00b67f09SDavid van Moolenbroek	( cd $test && sh clean.sh "$@" )
104*00b67f09SDavid van Moolenbroek    fi
105*00b67f09SDavid van Moolenbroekfi
106*00b67f09SDavid van Moolenbroek
107*00b67f09SDavid van Moolenbroekecho "E:$test:`date`"
108*00b67f09SDavid van Moolenbroek
109*00b67f09SDavid van Moolenbroekexit $status
110