Home | History | Annotate | Line # | Download | only in testdata
      1 ; config options
      2 server:
      3 	module-config: "validator iterator"
      4 	qname-minimisation: "no"
      5 	minimal-responses: no
      6 	serve-expired: yes
      7 	serve-expired-client-timeout: 0
      8 	serve-expired-reply-ttl: 123
      9 	ede: yes
     10 	ede-serve-expired: yes
     11 
     12 
     13 stub-zone:
     14 	name: "example.com"
     15 	stub-addr: 1.2.3.4
     16 CONFIG_END
     17 
     18 SCENARIO_BEGIN Test serve-expired without client-timeout and a SERVFAIL upstream reply
     19 ; Scenario overview:
     20 ; - query for example.com. IN A
     21 ; - answer from upstream is SERVFAIL; will be cached for NORR_TTL(5)
     22 ; - check that the client gets the SERVFAIL; also cached
     23 ; - query again right after the TTL expired
     24 ; - cached SERVFAIL should be ignored and upstream queried
     25 ; - answer from upstream is still SERVFAIL; the cached error response will be
     26 ;   refreshed for another NORR_TTL(5)
     27 ; - check that the client gets the SERVFAIL
     28 ; - query again; the upstream now has the answer available
     29 ; - check that we get the refreshed cached response instead
     30 
     31 ; ns.example.com.
     32 RANGE_BEGIN 0 50
     33 	ADDRESS 1.2.3.4
     34 	; response to A query
     35 	ENTRY_BEGIN
     36 		MATCH opcode qtype qname
     37 		ADJUST copy_id
     38 		REPLY QR AA SERVFAIL
     39 		SECTION QUESTION
     40 			example.com. IN A
     41 	ENTRY_END
     42 RANGE_END
     43 
     44 ; ns.example.com.
     45 RANGE_BEGIN 60 100
     46 	ADDRESS 1.2.3.4
     47 	ENTRY_BEGIN
     48 		MATCH opcode qtype qname
     49 		ADJUST copy_id
     50 		REPLY QR NOERROR
     51 		SECTION QUESTION
     52 			example.com. IN NS
     53 		SECTION ANSWER
     54 			example.com. 10 IN NS ns.example.com.
     55 		SECTION ADDITIONAL
     56 			ns.example.com. 10 IN A 1.2.3.4
     57 	ENTRY_END
     58 
     59 	ENTRY_BEGIN
     60 		MATCH opcode qtype qname
     61 		ADJUST copy_id
     62 		REPLY QR NOERROR
     63 		SECTION QUESTION
     64 			example.com. IN A
     65 		SECTION ANSWER
     66 			example.com. 10 IN A 5.6.7.8
     67 		SECTION AUTHORITY
     68 			example.com. 10 IN NS ns.example.com.
     69 		SECTION ADDITIONAL
     70 			ns.example.com. 10 IN A 1.2.3.4
     71 	ENTRY_END
     72 RANGE_END
     73 
     74 ; Query with RD flag
     75 STEP 0 QUERY
     76 ENTRY_BEGIN
     77 	REPLY RD
     78 	SECTION QUESTION
     79 		example.com. IN A
     80 ENTRY_END
     81 
     82 ; Check that we get the SERVFAIL (will be cached)
     83 STEP 10 CHECK_ANSWER
     84 ENTRY_BEGIN
     85 	MATCH all
     86 	REPLY QR RD RA SERVFAIL
     87 	SECTION QUESTION
     88 		example.com. IN A
     89 ENTRY_END
     90 
     91 ; Query again
     92 STEP 20 QUERY
     93 ENTRY_BEGIN
     94 	REPLY RD
     95 	SECTION QUESTION
     96 		example.com. IN A
     97 ENTRY_END
     98 
     99 ; Check that we get the cached SERVFAIL
    100 STEP 30 CHECK_ANSWER
    101 ENTRY_BEGIN
    102 	MATCH all
    103 	REPLY QR RD RA SERVFAIL
    104 	SECTION QUESTION
    105 		example.com. IN A
    106 ENTRY_END
    107 
    108 ; Wait for the SERVFAIL to expire
    109 STEP 31 TIME_PASSES ELAPSE 6
    110 
    111 ; Query again
    112 STEP 40 QUERY
    113 ENTRY_BEGIN
    114 	REPLY RD
    115 	SECTION QUESTION
    116 		example.com. IN A
    117 ENTRY_END
    118 
    119 ; Check that we get the SERVFAIL (will be refreshed)
    120 STEP 50 CHECK_ANSWER
    121 ENTRY_BEGIN
    122 	MATCH all
    123 	REPLY QR RD RA SERVFAIL
    124 	SECTION QUESTION
    125 		example.com. IN A
    126 ENTRY_END
    127 
    128 ; Query again, upstream has the real answer available
    129 STEP 60 QUERY
    130 ENTRY_BEGIN
    131 	REPLY RD
    132 	SECTION QUESTION
    133 		example.com. IN A
    134 ENTRY_END
    135 
    136 ; Check that we get the refreshed cached SERVFAIL
    137 STEP 70 CHECK_ANSWER
    138 ENTRY_BEGIN
    139 	MATCH all
    140 	REPLY QR RD RA SERVFAIL
    141 	SECTION QUESTION
    142 		example.com. IN A
    143 ENTRY_END
    144 
    145 SCENARIO_END
    146