+++ /dev/null
-#!/bin/sh
-
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# SPDX-License-Identifier: MPL-2.0
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, you can obtain one at https://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-for QDIR in $(echo "$PATH" | tr : ' ') ../../../../contrib/queryperf; do
- QPERF=$QDIR/queryperf
- if test -f "$QPERF" -a -x "$QPERF"; then
- echo $QPERF
- exit 0
- fi
-done
-
-exit 0
. ../conf.sh
-QPERF=$($SHELL qperf.sh)
-
$SHELL clean.sh
for dir in ns*; do
ns1.x.rpz-nsdname CNAME .
EOF
-if test -n "$QPERF"; then
- # Do not build the full zones if we will not use them.
- $PERL -e 'for ($val = 1; $val <= 65535; ++$val) {
- printf("host-%05d\tA 192.168.%d.%d\n", $val, $val/256, $val%256);
- }' >>ns5/example.db
-
- echo >>ns5/bl.db
- echo "; rewrite some names" >>ns5/bl.db
- $PERL -e 'for ($val = 2; $val <= 65535; $val += 69) {
- printf("host-%05d.example.tld5\tCNAME\t.\n", $val);
- }' >>ns5/bl.db
-
- echo >>ns5/bl.db
- echo "; rewrite with some not entirely trivial patricia trees" >>ns5/bl.db
- $PERL -e 'for ($val = 3; $val <= 65535; $val += 69) {
- printf("32.%d.%d.168.192.rpz-ip \tCNAME\t.\n",
- $val%256, $val/256);
- }' >>ns5/bl.db
-fi
-
-# some psuedo-random queryperf requests
-$PERL -e 'for ($cnt = $val = 1; $cnt <= 3000; ++$cnt) {
- printf("host-%05d.example.tld5 A\n", $val);
- $val = ($val * 9 + 32771) % 65536;
- }' >ns5/requests
-
cp ns2/bl.tld2.db.in ns2/bl.tld2.db
cp ns5/empty.db.in ns5/empty.db
cp ns5/empty.db.in ns5/policy2.db
end_group
ckstats $ns3 bugs ns3 8
-# superficial test for major performance bugs
-QPERF=$(sh qperf.sh)
-if test -n "$QPERF"; then
- perf() {
- date "+${TS}checking performance $1" | cat_i
- # Dry run to prime everything
- comment "before dry run $1"
- $RNDCCMD $ns5 notrace
- $QPERF -c -1 -l30 -d ns5/requests -s $ns5 -p ${PORT} >/dev/null
- comment "before real test $1"
- PFILE="ns5/$2.perf"
- $QPERF -c -1 -l30 -d ns5/requests -s $ns5 -p ${PORT} >$PFILE
- comment "after test $1"
- X=$(sed -n -e 's/.*Returned *\([^ ]*:\) *\([0-9]*\) .*/\1\2/p' $PFILE \
- | tr '\n' ' ')
- if test "$X" != "$3"; then
- setret "wrong results '$X' in $PFILE"
- fi
- ckalive $ns5 "failed; server #5 crashed"
- }
- trim() {
- sed -n -e 's/.*Queries per second: *\([0-9]*\).*/\1/p' ns5/$1.perf
- }
-
- # get qps with rpz
- perf 'with RPZ' rpz 'NOERROR:2900 NXDOMAIN:100 '
- RPZ=$(trim rpz)
- # turn off rpz and measure qps again
- echo "# RPZ off" >ns5/rpz-switch
- RNDCCMD_OUT=$($RNDCCMD $ns5 reload)
- perf 'without RPZ' norpz 'NOERROR:3000 '
- NORPZ=$(trim norpz)
-
- PERCENT=$(((RPZ * 100 + (NORPZ / 2)) / NORPZ))
- echo_i "$RPZ qps with RPZ is $PERCENT% of $NORPZ qps without RPZ"
-
- MIN_PERCENT=30
- if test "$PERCENT" -lt $MIN_PERCENT; then
- echo_i "$RPZ qps with rpz or $PERCENT% is below $MIN_PERCENT% of $NORPZ qps"
- fi
-
- if test "$PERCENT" -ge 100; then
- echo_i "$RPZ qps with RPZ or $PERCENT% of $NORPZ qps without RPZ is too high"
- fi
-
- ckstats $ns5 performance ns5 200
-
-else
- echo_i "performance not checked; queryperf not available"
-fi
-
# Ensure ns3 manages to transfer the fast-expire zone before shutdown.
nextpartreset ns3/named.run
wait_for_log 20 "zone fast-expire/IN: transferred serial 1" ns3/named.run