43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews#!/bin/sh
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews#
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# Copyright (C) 2010, 2012, 2016 Internet Systems Consortium, Inc. ("ISC")
bf8267aa453e5d2a735ed732a043b77a0b355b20Mark Andrews#
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# file, You can obtain one at http://mozilla.org/MPL/2.0/.
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews# $Id: run.sh,v 1.2 2010/06/17 05:38:05 marka Exp $
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark AndrewsSYSTEMTESTTOP=.
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews. $SYSTEMTESTTOP/conf.sh
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsstopservers=true
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewscase $1 in
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews --keep) stopservers=false; shift ;;
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsesac
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewstest $# -gt 0 || { echo "usage: $0 [--keep] test-directory" >&2; exit 1; }
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewstest=$1
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsshift
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewstest -d $test || { echo "$0: $test: no such test" >&2; exit 1; }
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsecho "S:$test:`date`" >&2
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsecho "T:$test:1:A" >&2
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsecho "A:Virtual time test $test" >&2
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsif [ x$PERL = x ]
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsthen
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews echo "I:Perl not available. Skipping test." >&2
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews echo "R:UNTESTED" >&2
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews echo "E:$test:`date`" >&2
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews exit 0;
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsfi
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews$PERL testsock.pl || {
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews echo "I:Network interface aliases not set up. Skipping test." >&2
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews echo "R:UNTESTED" >&2
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews echo "E:$test:`date`" >&2
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews exit 0;
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews}
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews# Check for test-specific prerequisites.
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsif
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews test ! -f $test/prereq.sh ||
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews ( cd $test && sh prereq.sh "$@" )
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsthen
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews : prereqs ok
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewselse
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews echo "I:Prerequisites for $test missing, skipping test." >&2
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews echo "R:UNTESTED" >&2
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews echo "E:$test:`date`" >&2
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews exit 0;
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsfi
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews# Set up any dynamically generated test data
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsif test -f $test/setup.sh
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsthen
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews ( cd $test && sh setup.sh "$@" )
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsfi
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews# Start name servers running
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews$PERL start.pl $test || exit 1
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews# Run the tests
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews( cd $test ; sh tests.sh )
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsstatus=$?
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsif $stopservers
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsthen
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews :
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewselse
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews exit $status
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsfi
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews# Shutdown
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews$PERL stop.pl $test
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsstatus=`expr $status + $?`
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsif [ $status != 0 ]; then
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews echo "R:FAIL"
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews # Don't clean up - we need the evidence.
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews find . -name core -exec chmod 0644 '{}' \;
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewselse
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews echo "R:PASS"
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews # Clean up.
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews if test -f $test/clean.sh
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews then
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews ( cd $test && sh clean.sh "$@" )
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews fi
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsfi
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsecho "E:$test:`date`"
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrews
43c770b9987375e9e0efa19617b22e8e6a748a63Mark Andrewsexit $status