1; config options 2server: 3 target-fetch-policy: "0 0 0 0 0" 4 qname-minimisation: no 5 minimal-responses: no 6 serve-expired: yes 7 module-config: "cachedb iterator" 8 9cachedb: 10 backend: "testframe" 11 secret-seed: "testvalue" 12 cachedb-check-when-serve-expired: yes 13 14stub-zone: 15 name: "." 16 stub-addr: 193.0.14.129 17CONFIG_END 18 19SCENARIO_BEGIN Test cachedb and serve expired. 20 21; K.ROOT-SERVERS.NET. 22RANGE_BEGIN 0 400 23 ADDRESS 193.0.14.129 24ENTRY_BEGIN 25MATCH opcode qtype qname 26ADJUST copy_id 27REPLY QR NOERROR 28SECTION QUESTION 29. IN NS 30SECTION ANSWER 31. IN NS K.ROOT-SERVERS.NET. 32SECTION ADDITIONAL 33K.ROOT-SERVERS.NET. IN A 193.0.14.129 34ENTRY_END 35 36ENTRY_BEGIN 37MATCH opcode subdomain 38ADJUST copy_id copy_query 39REPLY QR NOERROR 40SECTION QUESTION 41com. IN NS 42SECTION AUTHORITY 43com. IN NS a.gtld-servers.net. 44SECTION ADDITIONAL 45a.gtld-servers.net. IN A 192.5.6.30 46ENTRY_END 47RANGE_END 48 49; a.gtld-servers.net. 50RANGE_BEGIN 0 400 51 ADDRESS 192.5.6.30 52ENTRY_BEGIN 53MATCH opcode subdomain 54ADJUST copy_id copy_query 55REPLY QR NOERROR 56SECTION QUESTION 57example.com. IN NS 58SECTION AUTHORITY 59example.com. IN NS ns2.example.com. 60SECTION ADDITIONAL 61ns2.example.com. IN A 1.2.3.5 62ENTRY_END 63 64ENTRY_BEGIN 65MATCH opcode subdomain 66ADJUST copy_id copy_query 67REPLY QR NOERROR 68SECTION QUESTION 69foo.com. IN NS 70SECTION AUTHORITY 71foo.com. IN NS ns.example.com. 72ENTRY_END 73RANGE_END 74 75; ns2.example.com. 76RANGE_BEGIN 0 400 77 ADDRESS 1.2.3.5 78ENTRY_BEGIN 79MATCH opcode qname qtype 80REPLY QR AA NOERROR 81SECTION QUESTION 82www.example.com. IN A 83SECTION ANSWER 84www.example.com. 10 IN A 1.2.3.4 85ENTRY_END 86 87ENTRY_BEGIN 88MATCH opcode qname qtype 89REPLY QR AA NOERROR 90SECTION QUESTION 91www2.example.com. IN A 92SECTION ANSWER 93www2.example.com. 10 IN A 1.2.3.5 94ENTRY_END 95RANGE_END 96 97; Get an entry in cache, to make it expired. 98STEP 1 QUERY 99ENTRY_BEGIN 100REPLY RD 101SECTION QUESTION 102www.example.com. IN A 103ENTRY_END 104 105; get the answer for it 106STEP 10 CHECK_ANSWER 107ENTRY_BEGIN 108MATCH all 109REPLY QR RD RA NOERROR 110SECTION QUESTION 111www.example.com. IN A 112SECTION ANSWER 113www.example.com. 10 IN A 1.2.3.4 114ENTRY_END 115 116; Get another query in cache to make it expired. 117STEP 20 QUERY 118ENTRY_BEGIN 119REPLY RD 120SECTION QUESTION 121www2.example.com. IN A 122ENTRY_END 123 124; get the answer for it 125STEP 30 CHECK_ANSWER 126ENTRY_BEGIN 127MATCH all 128REPLY QR RD RA NOERROR 129SECTION QUESTION 130www2.example.com. IN A 131SECTION ANSWER 132www2.example.com. 10 IN A 1.2.3.5 133ENTRY_END 134 135; it is now expired 136STEP 40 TIME_PASSES ELAPSE 20 137 138; cache is expired, and cachedb is expired. 139STEP 50 QUERY 140ENTRY_BEGIN 141REPLY RD 142SECTION QUESTION 143www2.example.com. IN A 144ENTRY_END 145 146STEP 60 CHECK_ANSWER 147ENTRY_BEGIN 148MATCH all ttl 149REPLY QR RD RA NOERROR 150SECTION QUESTION 151www2.example.com. IN A 152SECTION ANSWER 153www2.example.com. 30 IN A 1.2.3.5 154ENTRY_END 155 156; cache is expired, cachedb has no answer 157STEP 70 QUERY 158ENTRY_BEGIN 159REPLY RD 160SECTION QUESTION 161www.example.com. IN A 162ENTRY_END 163 164STEP 80 CHECK_ANSWER 165ENTRY_BEGIN 166MATCH all ttl 167REPLY QR RD RA NOERROR 168SECTION QUESTION 169www.example.com. IN A 170SECTION ANSWER 171www.example.com. 30 IN A 1.2.3.4 172ENTRY_END 173 174STEP 90 TRAFFIC 175; the entry should be refreshed in cache now. 176; cache is valid and cachedb is valid. 177STEP 100 QUERY 178ENTRY_BEGIN 179REPLY RD 180SECTION QUESTION 181www.example.com. IN A 182ENTRY_END 183 184STEP 110 CHECK_ANSWER 185ENTRY_BEGIN 186MATCH all ttl 187REPLY QR RD RA NOERROR 188SECTION QUESTION 189www.example.com. IN A 190SECTION ANSWER 191www.example.com. 10 IN A 1.2.3.4 192ENTRY_END 193 194; flush the entry from cache 195STEP 120 FLUSH_MESSAGE www.example.com. IN A 196 197; cache has no answer, cachedb valid 198STEP 130 QUERY 199ENTRY_BEGIN 200REPLY RD 201SECTION QUESTION 202www.example.com. IN A 203ENTRY_END 204 205STEP 140 CHECK_ANSWER 206ENTRY_BEGIN 207MATCH all ttl 208REPLY QR RD RA NOERROR 209SECTION QUESTION 210www.example.com. IN A 211SECTION ANSWER 212www.example.com. 10 IN A 1.2.3.4 213ENTRY_END 214 215; it is now expired 216STEP 150 TIME_PASSES ELAPSE 20 217; flush the entry from cache 218STEP 160 FLUSH_MESSAGE www.example.com. IN A 219 220; cache has no answer, cachedb is expired 221STEP 170 QUERY 222ENTRY_BEGIN 223REPLY RD 224SECTION QUESTION 225www.example.com. IN A 226ENTRY_END 227 228STEP 180 CHECK_ANSWER 229ENTRY_BEGIN 230MATCH all ttl 231REPLY QR RD RA NOERROR 232SECTION QUESTION 233www.example.com. IN A 234SECTION ANSWER 235www.example.com. 30 IN A 1.2.3.4 236ENTRY_END 237 238STEP 190 TRAFFIC 239; the expired message is updated. 240 241; cache is valid, cachedb is valid 242STEP 200 QUERY 243ENTRY_BEGIN 244REPLY RD 245SECTION QUESTION 246www.example.com. IN A 247ENTRY_END 248 249STEP 210 CHECK_ANSWER 250ENTRY_BEGIN 251MATCH all ttl 252REPLY QR RD RA NOERROR 253SECTION QUESTION 254www.example.com. IN A 255SECTION ANSWER 256www.example.com. 10 IN A 1.2.3.4 257ENTRY_END 258 259; expire the entry in cache 260STEP 220 EXPIRE_MESSAGE www.example.com. IN A 261 262; cache is expired, cachedb valid 263STEP 230 QUERY 264ENTRY_BEGIN 265REPLY RD 266SECTION QUESTION 267www.example.com. IN A 268ENTRY_END 269 270STEP 240 CHECK_ANSWER 271ENTRY_BEGIN 272MATCH all ttl 273REPLY QR RD RA NOERROR 274SECTION QUESTION 275www.example.com. IN A 276SECTION ANSWER 277www.example.com. 10 IN A 1.2.3.4 278ENTRY_END 279 280; it is now expired 281STEP 250 TIME_PASSES ELAPSE 20 282; expire the entry in cache 283STEP 260 EXPIRE_MESSAGE www.example.com. IN A 284 285; cache is expired, cachedb is expired 286STEP 270 QUERY 287ENTRY_BEGIN 288REPLY RD 289SECTION QUESTION 290www.example.com. IN A 291ENTRY_END 292 293STEP 280 CHECK_ANSWER 294ENTRY_BEGIN 295MATCH all ttl 296REPLY QR RD RA NOERROR 297SECTION QUESTION 298www.example.com. IN A 299SECTION ANSWER 300www.example.com. 30 IN A 1.2.3.4 301ENTRY_END 302 303STEP 290 TRAFFIC 304; the expired message is updated. 305 306; cache is valid, cachedb is valid 307STEP 300 QUERY 308ENTRY_BEGIN 309REPLY RD 310SECTION QUESTION 311www.example.com. IN A 312ENTRY_END 313 314STEP 310 CHECK_ANSWER 315ENTRY_BEGIN 316MATCH all ttl 317REPLY QR RD RA NOERROR 318SECTION QUESTION 319www.example.com. IN A 320SECTION ANSWER 321www.example.com. 10 IN A 1.2.3.4 322ENTRY_END 323 324SCENARIO_END 325