1f08c3bdfSopenharmony_ci#!/bin/sh 2f08c3bdfSopenharmony_ci# Copyright (c) 2015-2017 Oracle and/or its affiliates. All Rights Reserved. 3f08c3bdfSopenharmony_ci# Copyright (c) International Business Machines Corp., 2005 4f08c3bdfSopenharmony_ci# 5f08c3bdfSopenharmony_ci# This program is free software; you can redistribute it and/or 6f08c3bdfSopenharmony_ci# modify it under the terms of the GNU General Public License as 7f08c3bdfSopenharmony_ci# published by the Free Software Foundation; either version 2 of 8f08c3bdfSopenharmony_ci# the License, or (at your option) any later version. 9f08c3bdfSopenharmony_ci# 10f08c3bdfSopenharmony_ci# This program is distributed in the hope that it would be useful, 11f08c3bdfSopenharmony_ci# but WITHOUT ANY WARRANTY; without even the implied warranty of 12f08c3bdfSopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13f08c3bdfSopenharmony_ci# GNU General Public License for more details. 14f08c3bdfSopenharmony_ci# 15f08c3bdfSopenharmony_ci# You should have received a copy of the GNU General Public License 16f08c3bdfSopenharmony_ci# along with this program; if not, write the Free Software Foundation, 17f08c3bdfSopenharmony_ci# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18f08c3bdfSopenharmony_ci# 19f08c3bdfSopenharmony_ci# Author: Mitsuru Chinen <mitch@jp.ibm.com> 20f08c3bdfSopenharmony_ci 21f08c3bdfSopenharmony_ciTCID=dns-stress 22f08c3bdfSopenharmony_ciTST_TOTAL=2 23f08c3bdfSopenharmony_ciTST_CLEANUP="cleanup" 24f08c3bdfSopenharmony_ci 25f08c3bdfSopenharmony_ciTST_USE_LEGACY_API=1 26f08c3bdfSopenharmony_ci 27f08c3bdfSopenharmony_ci# Minimum host ID in the zone file. 28f08c3bdfSopenharmony_ci# The ID is used as the host portion of the address 29f08c3bdfSopenharmony_ciMIN_ID=2 30f08c3bdfSopenharmony_ci# Maximum host ID in the zone file. 31f08c3bdfSopenharmony_ciMAX_ID=254 32f08c3bdfSopenharmony_ci# Domain name for testing 33f08c3bdfSopenharmony_ciDOMAIN="ltp-ns.org" 34f08c3bdfSopenharmony_ci 35f08c3bdfSopenharmony_cicleanup() 36f08c3bdfSopenharmony_ci{ 37f08c3bdfSopenharmony_ci # Stop the dns daemon 38f08c3bdfSopenharmony_ci test -s named.pid && kill -9 $(cat named.pid) > /dev/null 39f08c3bdfSopenharmony_ci tst_rmdir 40f08c3bdfSopenharmony_ci} 41f08c3bdfSopenharmony_ci 42f08c3bdfSopenharmony_cicommon_setup() 43f08c3bdfSopenharmony_ci{ 44f08c3bdfSopenharmony_ci tst_require_root 45f08c3bdfSopenharmony_ci tst_require_cmds named dig 46f08c3bdfSopenharmony_ci 47f08c3bdfSopenharmony_ci if [ "$TST_IPV6" ]; then 48f08c3bdfSopenharmony_ci record="AAAA" 49f08c3bdfSopenharmony_ci net="fd00:cafe" 50f08c3bdfSopenharmony_ci net_rev="0.0.0.0.0.0.0.0.e.f.a.c.0.0.d.f" 51f08c3bdfSopenharmony_ci else 52f08c3bdfSopenharmony_ci record="A" 53f08c3bdfSopenharmony_ci net="10.23.0" 54f08c3bdfSopenharmony_ci net_rev="0.23.10" 55f08c3bdfSopenharmony_ci fi 56f08c3bdfSopenharmony_ci 57f08c3bdfSopenharmony_ci trap "tst_brkm TBROK 'test interrupted'" INT 58f08c3bdfSopenharmony_ci 59f08c3bdfSopenharmony_ci tst_tmpdir 60f08c3bdfSopenharmony_ci 61f08c3bdfSopenharmony_ci ip6_opt= 62f08c3bdfSopenharmony_ci [ "$TST_IPV6" ] && ip6_opt="listen-on-v6 { any; };" 63f08c3bdfSopenharmony_ci 64f08c3bdfSopenharmony_ci ip_zone_opt="in-addr" 65f08c3bdfSopenharmony_ci [ "$TST_IPV6" ] && ip_zone_opt="ip6" 66f08c3bdfSopenharmony_ci 67f08c3bdfSopenharmony_ci cat << EOD > named.conf 68f08c3bdfSopenharmony_ci options { 69f08c3bdfSopenharmony_ci directory "$(pwd)"; 70f08c3bdfSopenharmony_ci pid-file "named.pid"; 71f08c3bdfSopenharmony_ci recursion no; 72f08c3bdfSopenharmony_ci $ip6_opt 73f08c3bdfSopenharmony_ci }; 74f08c3bdfSopenharmony_ci 75f08c3bdfSopenharmony_ci zone "$DOMAIN" { 76f08c3bdfSopenharmony_ci type master; 77f08c3bdfSopenharmony_ci file "ltp-ns.zone"; 78f08c3bdfSopenharmony_ci }; 79f08c3bdfSopenharmony_ci 80f08c3bdfSopenharmony_ci zone "$net_rev.$ip_zone_opt.arpa" { 81f08c3bdfSopenharmony_ci type master; 82f08c3bdfSopenharmony_ci file "ltp-ns.rev"; 83f08c3bdfSopenharmony_ci }; 84f08c3bdfSopenharmony_ciEOD 85f08c3bdfSopenharmony_ci 86f08c3bdfSopenharmony_ci # zone file 87f08c3bdfSopenharmony_ci cat << EOD > ltp-ns.zone 88f08c3bdfSopenharmony_ci\$TTL 10 89f08c3bdfSopenharmony_ci@ IN SOA dns.$DOMAIN. root.$DOMAIN. ( 90f08c3bdfSopenharmony_ci 2005092701 ; serial 91f08c3bdfSopenharmony_ci 3600 ; dummy value 92f08c3bdfSopenharmony_ci 900 ; dummy value 93f08c3bdfSopenharmony_ci 604800 ; dummy value 94f08c3bdfSopenharmony_ci 86400 ; dummy value 95f08c3bdfSopenharmony_ci) 96f08c3bdfSopenharmony_ci IN NS dns.$DOMAIN. 97f08c3bdfSopenharmony_ciEOD 98f08c3bdfSopenharmony_ci} 99f08c3bdfSopenharmony_ci 100f08c3bdfSopenharmony_cisetup_4() 101f08c3bdfSopenharmony_ci{ 102f08c3bdfSopenharmony_ci printf "dns\tIN\tA\t$net.1\n" >> ltp-ns.zone 103f08c3bdfSopenharmony_ci local id=$MIN_ID 104f08c3bdfSopenharmony_ci while [ $id -le $MAX_ID ]; do 105f08c3bdfSopenharmony_ci printf "node$id\tIN\tA\t$net.$id\n" >> ltp-ns.zone 106f08c3bdfSopenharmony_ci id=$(($id + 1)) 107f08c3bdfSopenharmony_ci done 108f08c3bdfSopenharmony_ci 109f08c3bdfSopenharmony_ci # reverse zone file 110f08c3bdfSopenharmony_ci cat << EOD > ltp-ns.rev 111f08c3bdfSopenharmony_ci\$TTL 10 112f08c3bdfSopenharmony_ci@ IN SOA $DOMAIN. root.$DOMAIN. ( 113f08c3bdfSopenharmony_ci 2005092701 ; serial 114f08c3bdfSopenharmony_ci 3600 ; dummy value 115f08c3bdfSopenharmony_ci 900 ; dummy value 116f08c3bdfSopenharmony_ci 604800 ; dummy value 117f08c3bdfSopenharmony_ci 86400 ; dummy value 118f08c3bdfSopenharmony_ci) 119f08c3bdfSopenharmony_ci IN NS dns.$DOMAIN. 120f08c3bdfSopenharmony_ciEOD 121f08c3bdfSopenharmony_ci 122f08c3bdfSopenharmony_ci id=$MIN_ID 123f08c3bdfSopenharmony_ci while [ $id -le $MAX_ID ]; do 124f08c3bdfSopenharmony_ci printf "$id\tIN\tPTR\tnode$id.$DOMAIN.\n" >> ltp-ns.rev 125f08c3bdfSopenharmony_ci id=$(($id + 1)) 126f08c3bdfSopenharmony_ci done 127f08c3bdfSopenharmony_ci} 128f08c3bdfSopenharmony_ci 129f08c3bdfSopenharmony_cisetup_6() 130f08c3bdfSopenharmony_ci{ 131f08c3bdfSopenharmony_ci printf "dns\tIN\tAAAA\t$net::1\n" >> ltp-ns.zone 132f08c3bdfSopenharmony_ci local id=$MIN_ID 133f08c3bdfSopenharmony_ci while [ $id -le $MAX_ID ]; do 134f08c3bdfSopenharmony_ci printf "node$id\tIN\tAAAA\t$net::%x\n" $id >> ltp-ns.zone 135f08c3bdfSopenharmony_ci id=$(($id + 1)) 136f08c3bdfSopenharmony_ci done 137f08c3bdfSopenharmony_ci 138f08c3bdfSopenharmony_ci # reverse zone file 139f08c3bdfSopenharmony_ci cat << EOD > ltp-ns.rev 140f08c3bdfSopenharmony_ci\$TTL 10 141f08c3bdfSopenharmony_ci@ IN SOA $DOMAIN. root.$DOMAIN. ( 142f08c3bdfSopenharmony_ci 2005092701 ; serial 143f08c3bdfSopenharmony_ci 3600 ; dummy value 144f08c3bdfSopenharmony_ci 900 ; dummy value 145f08c3bdfSopenharmony_ci 604800 ; dummy value 146f08c3bdfSopenharmony_ci 86400 ; dummy value 147f08c3bdfSopenharmony_ci) 148f08c3bdfSopenharmony_ci IN NS dns.$DOMAIN. 149f08c3bdfSopenharmony_ciEOD 150f08c3bdfSopenharmony_ci 151f08c3bdfSopenharmony_ci id=$MIN_ID 152f08c3bdfSopenharmony_ci local rev_ip="0.0.0.0.0.0.0.0.0.0.0.0.0.0" 153f08c3bdfSopenharmony_ci while [ $id -le $MAX_ID ]; do 154f08c3bdfSopenharmony_ci printf "%x.%x.$rev_ip\tIN\tPTR\tnode$id.$DOMAIN.\n" \ 155f08c3bdfSopenharmony_ci $(($id % 16)) $(($id / 16)) >> ltp-ns.rev 156f08c3bdfSopenharmony_ci id=$(($id + 1)) 157f08c3bdfSopenharmony_ci done 158f08c3bdfSopenharmony_ci} 159f08c3bdfSopenharmony_ci 160f08c3bdfSopenharmony_cistart_named() 161f08c3bdfSopenharmony_ci{ 162f08c3bdfSopenharmony_ci chmod 770 . 163f08c3bdfSopenharmony_ci chmod 660 ./* 164f08c3bdfSopenharmony_ci 165f08c3bdfSopenharmony_ci port=$(tst_get_unused_port ipv${TST_IPVER} dgram) 166f08c3bdfSopenharmony_ci 167f08c3bdfSopenharmony_ci tst_resm TINFO "Start named daemon, port $port" 168f08c3bdfSopenharmony_ci named -$TST_IPVER -c named.conf -p $port || \ 169f08c3bdfSopenharmony_ci tst_brkm TBROK "Failed to run named daemon" 170f08c3bdfSopenharmony_ci 171f08c3bdfSopenharmony_ci # Make sure named.pid is created. 172f08c3bdfSopenharmony_ci while true ; do 173f08c3bdfSopenharmony_ci test -s named.pid && break 174f08c3bdfSopenharmony_ci tst_sleep 100ms 175f08c3bdfSopenharmony_ci done 176f08c3bdfSopenharmony_ci} 177f08c3bdfSopenharmony_ci 178f08c3bdfSopenharmony_citest01() 179f08c3bdfSopenharmony_ci{ 180f08c3bdfSopenharmony_ci tst_resm TINFO "Handling name lookup queries '$NS_TIMES' times" 181f08c3bdfSopenharmony_ci 182f08c3bdfSopenharmony_ci tst_rhost_run -s -c "dns-stress01-rmt.sh $TST_IPVER $(tst_ipaddr) $port \ 183f08c3bdfSopenharmony_ci $DOMAIN $MIN_ID $MAX_ID $NS_TIMES" 184f08c3bdfSopenharmony_ci 185f08c3bdfSopenharmony_ci tst_resm TPASS "Test is finished successfully" 186f08c3bdfSopenharmony_ci} 187f08c3bdfSopenharmony_ci 188f08c3bdfSopenharmony_citest02() 189f08c3bdfSopenharmony_ci{ 190f08c3bdfSopenharmony_ci tst_resm TINFO "Handling reverse lookup queries '$NS_TIMES' times" 191f08c3bdfSopenharmony_ci 192f08c3bdfSopenharmony_ci tst_rhost_run -s -c "dns-stress02-rmt.sh $TST_IPVER $(tst_ipaddr) $port $net \ 193f08c3bdfSopenharmony_ci $MIN_ID $MAX_ID $NS_TIMES" 194f08c3bdfSopenharmony_ci 195f08c3bdfSopenharmony_ci tst_resm TPASS "Test is finished successfully" 196f08c3bdfSopenharmony_ci} 197f08c3bdfSopenharmony_ci 198f08c3bdfSopenharmony_ci. tst_net.sh 199f08c3bdfSopenharmony_cicommon_setup 200f08c3bdfSopenharmony_cisetup_$TST_IPVER 201f08c3bdfSopenharmony_cistart_named 202f08c3bdfSopenharmony_citest01 203f08c3bdfSopenharmony_citest02 204f08c3bdfSopenharmony_citst_exit 205