Home | History | Annotate | Line # | Download | only in testdata
      1 ; config options
      2 server:
      3 	target-fetch-policy: "0 0 0 0 0"
      4 	qname-minimisation: no
      5 	minimal-responses: no
      6 	serve-expired: yes
      7 	serve-expired-reply-ttl: 123
      8 	; at least one second, so we can time skip past the timer in the
      9 	; testbound script steps, but also reply within the time.
     10 	serve-expired-client-timeout: 1200
     11 	module-config: "cachedb iterator"
     12 	discard-timeout: 3000
     13 	ede: yes
     14 	ede-serve-expired: yes
     15 
     16 cachedb:
     17 	backend: "testframe"
     18 	secret-seed: "testvalue"
     19 	cachedb-check-when-serve-expired: yes
     20 
     21 stub-zone:
     22 	name: "."
     23 	stub-addr: 193.0.14.129
     24 CONFIG_END
     25 
     26 SCENARIO_BEGIN Test cachedb and serve-expired-client-timeout.
     27 
     28 ; K.ROOT-SERVERS.NET.
     29 RANGE_BEGIN 0 400
     30 	ADDRESS 193.0.14.129
     31 ENTRY_BEGIN
     32 MATCH opcode qtype qname
     33 ADJUST copy_id
     34 REPLY QR NOERROR
     35 SECTION QUESTION
     36 . IN NS
     37 SECTION ANSWER
     38 . IN NS K.ROOT-SERVERS.NET.
     39 SECTION ADDITIONAL
     40 K.ROOT-SERVERS.NET.     IN      A       193.0.14.129
     41 ENTRY_END
     42 
     43 ENTRY_BEGIN
     44 MATCH opcode subdomain
     45 ADJUST copy_id copy_query
     46 REPLY QR NOERROR
     47 SECTION QUESTION
     48 com. IN NS
     49 SECTION AUTHORITY
     50 com. IN NS a.gtld-servers.net.
     51 SECTION ADDITIONAL
     52 a.gtld-servers.net.	IN	A	192.5.6.30
     53 ENTRY_END
     54 RANGE_END
     55 
     56 ; a.gtld-servers.net.
     57 RANGE_BEGIN 0 400
     58 	ADDRESS 192.5.6.30
     59 ENTRY_BEGIN
     60 MATCH opcode subdomain
     61 ADJUST copy_id copy_query
     62 REPLY QR NOERROR
     63 SECTION QUESTION
     64 example.com. IN NS
     65 SECTION AUTHORITY
     66 example.com. IN NS ns2.example.com.
     67 SECTION ADDITIONAL
     68 ns2.example.com.	IN	A	1.2.3.5
     69 ENTRY_END
     70 
     71 ENTRY_BEGIN
     72 MATCH opcode subdomain
     73 ADJUST copy_id copy_query
     74 REPLY QR NOERROR
     75 SECTION QUESTION
     76 foo.com. IN NS
     77 SECTION AUTHORITY
     78 foo.com. IN NS ns.example.com.
     79 ENTRY_END
     80 RANGE_END
     81 
     82 ; ns2.example.com.
     83 RANGE_BEGIN 0 60
     84 	ADDRESS 1.2.3.5
     85 ENTRY_BEGIN
     86 MATCH opcode qname qtype
     87 REPLY QR AA NOERROR
     88 SECTION QUESTION
     89 www.example.com. IN A
     90 SECTION ANSWER
     91 www.example.com. 200 IN A 1.2.3.4
     92 ENTRY_END
     93 
     94 ENTRY_BEGIN
     95 MATCH opcode qname qtype
     96 REPLY QR AA NOERROR
     97 SECTION QUESTION
     98 www2.example.com. IN A
     99 SECTION ANSWER
    100 ; TTL lower than serve-expired-reply-ttl on purpose
    101 www2.example.com. 100 IN A 1.2.3.5
    102 ENTRY_END
    103 RANGE_END
    104 
    105 ; ns2.example.com. - after a change
    106 RANGE_BEGIN 80 90
    107 	ADDRESS 1.2.3.5
    108 ENTRY_BEGIN
    109 MATCH opcode qname qtype
    110 REPLY QR AA NOERROR
    111 SECTION QUESTION
    112 www.example.com. IN A
    113 SECTION ANSWER
    114 www.example.com. 200 IN A 1.2.3.6
    115 ENTRY_END
    116 
    117 ENTRY_BEGIN
    118 MATCH opcode qname qtype
    119 REPLY QR AA NOERROR
    120 SECTION QUESTION
    121 www2.example.com. IN A
    122 SECTION ANSWER
    123 ; TTL lower than serve-expired-reply-ttl on purpose
    124 www2.example.com. 100 IN A 1.2.3.7
    125 ENTRY_END
    126 RANGE_END
    127 
    128 ; ns2.example.com. - steps 90-120 not responding.
    129 
    130 ; ns2.example.com. - after a change
    131 RANGE_BEGIN 130 140
    132 	ADDRESS 1.2.3.5
    133 ENTRY_BEGIN
    134 MATCH opcode qname qtype
    135 REPLY QR AA NOERROR
    136 SECTION QUESTION
    137 www.example.com. IN A
    138 SECTION ANSWER
    139 www.example.com. 200 IN A 1.2.3.8
    140 ENTRY_END
    141 
    142 ENTRY_BEGIN
    143 MATCH opcode qname qtype
    144 REPLY QR AA NOERROR
    145 SECTION QUESTION
    146 www2.example.com. IN A
    147 SECTION ANSWER
    148 ; TTL lower than serve-expired-reply-ttl on purpose
    149 www2.example.com. 100 IN A 1.2.3.9
    150 ENTRY_END
    151 RANGE_END
    152 
    153 ; ns2.example.com. - steps 150-160 not responding.
    154 
    155 ; ns2.example.com. - after a change
    156 RANGE_BEGIN 170 200
    157 	ADDRESS 1.2.3.5
    158 ENTRY_BEGIN
    159 MATCH opcode qname qtype
    160 REPLY QR AA NOERROR
    161 SECTION QUESTION
    162 www.example.com. IN A
    163 SECTION ANSWER
    164 www.example.com. 200 IN A 1.2.3.10
    165 ENTRY_END
    166 
    167 ENTRY_BEGIN
    168 MATCH opcode qname qtype
    169 REPLY QR AA NOERROR
    170 SECTION QUESTION
    171 www2.example.com. IN A
    172 SECTION ANSWER
    173 www2.example.com. 100 IN A 1.2.3.11
    174 ENTRY_END
    175 RANGE_END
    176 
    177 ; make time not 0
    178 STEP 2 TIME_PASSES ELAPSE 212
    179 
    180 ; Get an entry in cache.
    181 STEP 4 QUERY
    182 ENTRY_BEGIN
    183 REPLY RD
    184 SECTION QUESTION
    185 www.example.com. IN A
    186 ENTRY_END
    187 
    188 ; get the answer for it
    189 STEP 10 CHECK_ANSWER
    190 ENTRY_BEGIN
    191 MATCH all
    192 REPLY QR RD RA NOERROR
    193 SECTION QUESTION
    194 www.example.com. IN A
    195 SECTION ANSWER
    196 www.example.com. 200 IN A 1.2.3.4
    197 ENTRY_END
    198 
    199 ; Get another query in cache.
    200 STEP 20 QUERY
    201 ENTRY_BEGIN
    202 REPLY RD
    203 SECTION QUESTION
    204 www2.example.com. IN A
    205 ENTRY_END
    206 
    207 ; get the answer for it
    208 STEP 30 CHECK_ANSWER
    209 ENTRY_BEGIN
    210 MATCH all
    211 REPLY QR RD RA NOERROR
    212 SECTION QUESTION
    213 www2.example.com. IN A
    214 SECTION ANSWER
    215 www2.example.com. 100 IN A 1.2.3.5
    216 ENTRY_END
    217 
    218 ; www.example.com and www2.example.com are in cache, www2 in cachedb.
    219 STEP 40 FLUSH_MESSAGE www2.example.com. IN A
    220 ; now www in cache, www2 not in cache, www2 in cachedb.
    221 ; because of the client timeout, it should be able to use the
    222 ; response from cachedb for www2.
    223 
    224 ; make 2 seconds pass to decrement the TTL on the response,
    225 ; the upstream TTL would be 200, cachedb 198.
    226 STEP 48 TIME_PASSES ELAPSE 2
    227 
    228 STEP 50 QUERY
    229 ENTRY_BEGIN
    230 REPLY RD
    231 SECTION QUESTION
    232 www2.example.com. IN A
    233 ENTRY_END
    234 
    235 STEP 60 CHECK_ANSWER
    236 ENTRY_BEGIN
    237 MATCH all ttl
    238 REPLY QR RD RA NOERROR
    239 SECTION QUESTION
    240 www2.example.com. IN A
    241 SECTION ANSWER
    242 www2.example.com. 98 IN A 1.2.3.5
    243 ENTRY_END
    244 
    245 ; make both cache and cachedb expired
    246 STEP 70 TIME_PASSES ELAPSE 200
    247 
    248 ; www and www2 expired in cache, www2 expired in cachedb.
    249 ; the query should now try to resolve and complete within the
    250 ; client timeout, and return the upstream version.
    251 ; the upstream is changed to give a different one now.
    252 STEP 80 QUERY
    253 ENTRY_BEGIN
    254 REPLY RD
    255 SECTION QUESTION
    256 www2.example.com. IN A
    257 ENTRY_END
    258 
    259 STEP 90 CHECK_ANSWER
    260 ENTRY_BEGIN
    261 MATCH all ttl
    262 REPLY QR RD RA NOERROR
    263 SECTION QUESTION
    264 www2.example.com. IN A
    265 SECTION ANSWER
    266 www2.example.com. 100 IN A 1.2.3.7
    267 ENTRY_END
    268 
    269 ; expire the data again
    270 STEP 100 TIME_PASSES ELAPSE 200
    271 
    272 ; the query should now try to resolve, but the upstream is not
    273 ; responsive for several testbound steps. When the timer expires,
    274 ; the expired answer should be returned.
    275 
    276 ; www2 expired in cache and www2 expired in cachedb.
    277 STEP 110 QUERY
    278 ENTRY_BEGIN
    279 REPLY RD DO
    280 SECTION QUESTION
    281 www2.example.com. IN A
    282 ENTRY_END
    283 
    284 ; make 2 seconds pass to go past the client timeout
    285 STEP 112 TIME_PASSES ELAPSE 2
    286 
    287 STEP 120 CHECK_ANSWER
    288 ENTRY_BEGIN
    289 MATCH all ttl ede=3
    290 REPLY QR RD RA DO NOERROR
    291 SECTION QUESTION
    292 www2.example.com. IN A
    293 SECTION ANSWER
    294 www2.example.com. 100 IN A 1.2.3.7
    295 ENTRY_END
    296 
    297 ; make traffic flow to resolve the query, server responds.
    298 STEP 130 TRAFFIC
    299 
    300 ; expire the data again
    301 STEP 140 TIME_PASSES ELAPSE 200
    302 
    303 ; The client query tries to resolve, but gets no immediate answer,
    304 ; so the expired data is used. But the expired data is in cache and
    305 ; the query is not in cachedb.
    306 STEP 150 QUERY
    307 ENTRY_BEGIN
    308 REPLY RD DO
    309 SECTION QUESTION
    310 www.example.com. IN A
    311 ENTRY_END
    312 
    313 ; make 2 seconds pass to go past the client timeout
    314 STEP 152 TIME_PASSES ELAPSE 2
    315 
    316 STEP 160 CHECK_ANSWER
    317 ENTRY_BEGIN
    318 MATCH all ttl ede=3
    319 REPLY QR RD RA DO NOERROR
    320 SECTION QUESTION
    321 www.example.com. IN A
    322 SECTION ANSWER
    323 www.example.com. 123 IN A 1.2.3.4
    324 ENTRY_END
    325 
    326 ; make traffic flow to resolve the query, server responds.
    327 STEP 170 TRAFFIC
    328 
    329 ; now the client query tries to resolve, and completes within the client
    330 ; timeout, but there is expired data in cache but not in cachedb.
    331 STEP 180 QUERY
    332 ENTRY_BEGIN
    333 REPLY RD
    334 SECTION QUESTION
    335 www2.example.com. IN A
    336 ENTRY_END
    337 
    338 STEP 190 CHECK_ANSWER
    339 ENTRY_BEGIN
    340 MATCH all ttl
    341 REPLY QR RD RA NOERROR
    342 SECTION QUESTION
    343 www2.example.com. IN A
    344 SECTION ANSWER
    345 www2.example.com. 100 IN A 1.2.3.11
    346 ENTRY_END
    347 
    348 SCENARIO_END
    349