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