277938ec6c
Testing takes quite long. For now, use by default only normal variant. SDB variant is not much used and pkcs11 variant is failing now. Keep ability to enable variants by parameter: TEST_VARIANTS="normal sdb pkcs11"
186 lines
5.5 KiB
Bash
Executable File
186 lines
5.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
#
|
|
# runtest.sh of tests/Run-internal-BIND-test-suite
|
|
# Description: Run internal BIND test suite
|
|
# Author: Martin Cermak <mcermak@redhat.com>
|
|
#
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
#
|
|
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
|
|
#
|
|
# This copyrighted material is made available to anyone wishing
|
|
# to use, modify, copy, or redistribute it subject to the terms
|
|
# and conditions of the GNU General Public License version 2.
|
|
#
|
|
# This program is distributed in the hope that it will be
|
|
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
# PURPOSE. See the GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public
|
|
# License along with this program; if not, write to the Free
|
|
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
# Boston, MA 02110-1301, USA.
|
|
#
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
# Include rhts environment
|
|
. /usr/bin/rhts-environment.sh
|
|
. /usr/lib/beakerlib/beakerlib.sh
|
|
|
|
PACKAGE="bind"
|
|
|
|
# Set those variables to n to skip tests on variants
|
|
#DEFAULT_VARIANTS="normal pkcs11 sdb"
|
|
DEFAULT_VARIANTS="normal"
|
|
#TEST_VARIANTS="normal"
|
|
|
|
#
|
|
# Runs test suite and checks known errors
|
|
# Prepared to be repeated with another variants
|
|
run_testsuite()
|
|
{
|
|
local RESULT_TEXT="$TMPDIR/test${NAMED_VARIANT}.txt"
|
|
local FOUNDERROR=`mktemp found-XXXXXXXX.err`
|
|
local KNOWNERROR=/dev/null
|
|
|
|
if [ -f "$ORIG/knownerror${NAMED_VARIANT}.$TAG" ]; then
|
|
KNOWNERROR=`readlink -f $ORIG/knownerror.$TAG`
|
|
elif [ -f "$ORIG/knownerror${NAMED_VARIANT}" ]; then
|
|
KNOWNERROR=`readlink -f $ORIG/knownerror`
|
|
fi
|
|
|
|
# Sometime it can fail. Report just failures that are not known
|
|
rlRun "make test -j${CORES:-1} &> $RESULT_TEXT" 0-255 "Perform the test."
|
|
rlRun "grep -C 10 FAIL $RESULT_TEXT" 0-255 "Quickly show the test error (if any)."
|
|
|
|
rlRun "$FILTER $RESULT_TEXT" 0 "Showing unsuccessful tests"
|
|
rlRun "$FILTER -s $RESULT_TEXT > $FOUNDERROR" 0
|
|
rlRun "ls $KNOWNERROR $FOUNDERROR $RESULT_TEXT" 0 'check if there is needed files'
|
|
rlLog "`cat $FOUNDERROR`"
|
|
|
|
rlAssertLesserOrEqual "Checking number of found errors is in limits" "$(grep '^FAIL' $FOUNDERROR | wc -l)" "$(wc -l <$KNOWNERROR)"
|
|
cat $FOUNDERROR | while read STATUS TEST ; do
|
|
if [ "$STATUS" = FAIL ]; then
|
|
rlRun "grep '$TEST' $KNOWNERROR" 0 "Check $TEST failure is expected"
|
|
else
|
|
rlLog "$STATUS $TEST"
|
|
fi
|
|
done
|
|
}
|
|
|
|
rlJournalStart
|
|
rlPhaseStartSetup
|
|
# package assertions
|
|
rlAssertRpm $PACKAGE
|
|
rlAssertRpm rpm-build
|
|
rlAssertRpm perl-Net-DNS-Nameserver
|
|
|
|
#pwd
|
|
ORIG=`pwd`
|
|
SETUP_SOFTHSM=`readlink -f setup-named-softhsm.sh`
|
|
FILTER=`readlink -f bind-systest-filter.sh`
|
|
CORES=`grep 'processor\s*:' /proc/cpuinfo | wc -l`
|
|
|
|
TAG=generic
|
|
if [ -f /etc/os-release ]; then
|
|
# extract platform tag
|
|
TAG=`(source /etc/os-release && echo ${PLATFORM_ID#platform:})`
|
|
fi
|
|
|
|
#tempdir
|
|
rlRun "TMPDIR=\`mktemp -d\`" 0 "Creating tmp directory"
|
|
rlRun "pushd $TMPDIR"
|
|
|
|
# topdir
|
|
TOPDIR=`rpm -E '%{_topdir}'`
|
|
|
|
# cleanup in topdir
|
|
mkdir -p $TOPDIR/{BUILD,SOURCES,SPECS}
|
|
rm -rf $TOPDIR/{BUILD,SOURCES,SPECS}/*
|
|
|
|
# download src rpm
|
|
if ! ls bind*.src.rpm; then
|
|
rlRun "dnf --enablerepo='*-source' download --source bind" 0 "Fetch source from repository"
|
|
rlRun "rpm -i bind*.src.rpm"
|
|
fi
|
|
|
|
rlRun "rpm --define '_topdir $TOPDIR' -Uvh *rpm &> $TMPDIR/install.txt"
|
|
rlRun "cd $TOPDIR/SPECS"
|
|
|
|
rlRun "dnf -y builddep *.spec"
|
|
|
|
# stop bind if it is running
|
|
rlServiceStop named
|
|
rlPhaseEnd
|
|
|
|
rlPhaseStartTest
|
|
# rebuild from source
|
|
rlRun "rpmbuild -ba *.spec &> $TMPDIR/build.txt"
|
|
|
|
# the test
|
|
rlRun "cd $TOPDIR/BUILD/bind*"
|
|
|
|
rlLogInfo "Test takes place in `pwd`"
|
|
|
|
rlRun "chown -R root ."
|
|
|
|
if [ -x "$SETUP_SOFTHSM" ]; then
|
|
rlRun "eval \"$(bash $SETUP_SOFTHSM -A)\"" 0 "Preparing PKCS#11 token slot"
|
|
rlRun "pkcs11-tokens" 0 "Testing token slot availability"
|
|
else
|
|
rlLog "PKCS#11 not initialized"
|
|
fi
|
|
|
|
if [ -d build ]; then
|
|
BUILD=build
|
|
else
|
|
BUILD=.
|
|
fi
|
|
|
|
rlRun "./bin/tests/system/ifconfig.sh up" 0 "Setup fake network interfaces."
|
|
|
|
# required by idna test
|
|
export LC_ALL=en_US.UTF-8
|
|
|
|
rlRun "pushd $BUILD"
|
|
|
|
if echo "${TEST_VARIANTS:-$DEFAULT_VARIANTS}" | grep -q normal; then
|
|
rlLog "Running normal variant"
|
|
export NAMED_VARIANT= DNSSEC_VARIANT=
|
|
run_testsuite
|
|
rlLog "Finished normal variant"
|
|
fi
|
|
|
|
if echo "${TEST_VARIANTS:-$DEFAULT_VARIANTS}" | grep -q sdb; then
|
|
rlLog "Running sdb variant"
|
|
export NAMED_VARIANT=-sdb DNSSEC_VARIANT=
|
|
run_testsuite
|
|
rlLog "Finished sdb variant"
|
|
fi
|
|
|
|
if echo "${TEST_VARIANTS:-$DEFAULT_VARIANTS}" | grep -q pkcs11; then
|
|
rlLog "Running pkcs11 variant"
|
|
# Unfortunately, PKCS11 variant uses shared key storage
|
|
# It cannot use more threads for that reason
|
|
export NAMED_VARIANT=-pkcs11 DNSSEC_VARIANT=-pkcs11
|
|
CORES=1 run_testsuite
|
|
rlLog "Finished pkcs11 variant"
|
|
fi
|
|
|
|
rlRun "popd"
|
|
|
|
rlRun "./bin/tests/system/ifconfig.sh down" 0 "Remove fake network interfaces."
|
|
|
|
rlPhaseEnd
|
|
|
|
rlPhaseStartCleanup
|
|
rlBundleLogs "BUILD_LOGS" "$TMPDIR/install.txt" "$TMPDIR/builddeps.txt" "$TMPDIR/build.txt"
|
|
rlBundleLogs "TEST_LOGS" "$TMPDIR"/test*.txt
|
|
rlRun "popd"
|
|
rlRun "rm -r $TMPDIR" 0 "Removing tmp directory"
|
|
rlPhaseEnd
|
|
rlJournalEnd
|