# #-- cachedb_no_store.test --# # source the master var file when it's there [ -f ../.tpkg.var.master ] && source ../.tpkg.var.master # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test PRE="../.." . ../common.sh # do the test get_ldns_testns # query for a text record that is stored by unbound's cache and cachedb # in the testframe cache. echo "> dig txt1.example.com." dig @localhost -p $UNBOUND_PORT txt1.example.com. TXT | tee outfile if grep "example text message" outfile; then echo "OK" else echo "Not OK" exit 1 fi # stop the forwarder with servfail, to check the answer came from the cache echo "> stop ldns-testns" kill_pid $FWD_PID echo "> start ldns-testns with servfails" $LDNS_TESTNS -p $FWD_PORT cachedb_no_store.servfail.testns >fwd2.log 2>&1 & FWD_PID=$! echo "FWD_PID=$FWD_PID" >> .tpkg.var.test wait_ldns_testns_up fwd2.log echo "> dig txt1.example.com. from unbound cache" dig @localhost -p $UNBOUND_PORT txt1.example.com. TXT | tee outfile if grep "example text message" outfile; then echo "OK" else echo "Not OK" exit 1 fi # clear the cache of unbound, but not cachedb testframe cache echo "> unbound-control flush" $PRE/unbound-control -c ub.conf flush_type txt1.example.com. TXT if test $? -ne 0; then echo "wrong exit value." exit 1 else echo "exit value: OK" fi echo "> dig txt1.example.com. from cachedb" dig @localhost -p $UNBOUND_PORT txt1.example.com. TXT | tee outfile if grep "example text message" outfile; then echo "OK" else echo "Not OK" exit 1 fi # start the forwarder again. echo "> stop ldns-testns" kill_pid $FWD_PID echo "> start ldns-testns" $LDNS_TESTNS -p $FWD_PORT cachedb_no_store.testns >fwd3.log 2>&1 & FWD_PID=$! echo "FWD_PID=$FWD_PID" >> .tpkg.var.test wait_ldns_testns_up fwd3.log # stop unbound to flush the cachedb cache echo "> stop unbound" kill_pid `cat unbound.pid` echo "" echo "> config unbound with cachedb-no-store: yes" echo "cachedb: cachedb-no-store: yes" >> ub.conf # start unbound again. echo "> start unbound" $PRE/unbound -d -c ub.conf >unbound2.log 2>&1 & UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test wait_unbound_up unbound2.log echo "" echo "> dig txt1.example.com." dig @localhost -p $UNBOUND_PORT txt1.example.com. TXT | tee outfile if grep "example text message" outfile; then echo "OK" else echo "Not OK" exit 1 fi # stop the forwarder with servfail, to check the answer came from the cache echo "> stop ldns-testns" kill_pid $FWD_PID echo "> start ldns-testns with servfails" $LDNS_TESTNS -p $FWD_PORT cachedb_no_store.servfail.testns >fwd4.log 2>&1 & FWD_PID=$! echo "FWD_PID=$FWD_PID" >> .tpkg.var.test wait_ldns_testns_up fwd4.log echo "> dig txt1.example.com. from unbound cache" dig @localhost -p $UNBOUND_PORT txt1.example.com. TXT | tee outfile if grep "example text message" outfile; then echo "OK" else echo "Not OK" exit 1 fi # clear the cache of unbound, but not cachedb testframe cache echo "> unbound-control flush" $PRE/unbound-control -c ub.conf flush_type txt1.example.com. TXT if test $? -ne 0; then echo "wrong exit value." exit 1 else echo "exit value: OK" fi echo "> dig txt1.example.com. from cachedb, but that has no message stored" dig @localhost -p $UNBOUND_PORT txt1.example.com. TXT | tee outfile if grep "SERVFAIL" outfile; then echo "OK" else echo "Not OK" exit 1 fi exit 0