1; config options 2server: 3 target-fetch-policy: "0 0 0 0 0" 4 qname-minimisation: no 5 minimal-responses: yes 6 serve-expired: yes 7 ;module-config: "subnetcache validator cachedb iterator" 8 module-config: "validator 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, validator 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. 140; The expired reply, from cachedb, needs a validation status, 141; because the validator module set that validation is needed. 142STEP 50 QUERY 143ENTRY_BEGIN 144REPLY RD 145SECTION QUESTION 146www2.example.com. IN A 147ENTRY_END 148 149STEP 60 CHECK_ANSWER 150ENTRY_BEGIN 151MATCH all ttl 152REPLY QR RD RA NOERROR 153SECTION QUESTION 154www2.example.com. IN A 155SECTION ANSWER 156www2.example.com. 30 IN A 1.2.3.5 157ENTRY_END 158 159; cache is expired, cachedb has no answer 160STEP 70 QUERY 161ENTRY_BEGIN 162REPLY RD 163SECTION QUESTION 164www.example.com. IN A 165ENTRY_END 166 167STEP 80 CHECK_ANSWER 168ENTRY_BEGIN 169MATCH all ttl 170REPLY QR RD RA NOERROR 171SECTION QUESTION 172www.example.com. IN A 173SECTION ANSWER 174www.example.com. 30 IN A 1.2.3.4 175ENTRY_END 176 177STEP 90 TRAFFIC 178; the entry should be refreshed in cache now. 179; cache is valid and cachedb is valid. 180STEP 100 QUERY 181ENTRY_BEGIN 182REPLY RD 183SECTION QUESTION 184www.example.com. IN A 185ENTRY_END 186 187STEP 110 CHECK_ANSWER 188ENTRY_BEGIN 189MATCH all ttl 190REPLY QR RD RA NOERROR 191SECTION QUESTION 192www.example.com. IN A 193SECTION ANSWER 194www.example.com. 10 IN A 1.2.3.4 195ENTRY_END 196 197; flush the entry from cache 198STEP 120 FLUSH_MESSAGE www.example.com. IN A 199 200; cache has no answer, cachedb valid 201STEP 130 QUERY 202ENTRY_BEGIN 203REPLY RD 204SECTION QUESTION 205www.example.com. IN A 206ENTRY_END 207 208STEP 140 CHECK_ANSWER 209ENTRY_BEGIN 210MATCH all ttl 211REPLY QR RD RA NOERROR 212SECTION QUESTION 213www.example.com. IN A 214SECTION ANSWER 215www.example.com. 10 IN A 1.2.3.4 216ENTRY_END 217 218; it is now expired 219STEP 150 TIME_PASSES ELAPSE 20 220; flush the entry from cache 221STEP 160 FLUSH_MESSAGE www.example.com. IN A 222 223; cache has no answer, cachedb is expired 224STEP 170 QUERY 225ENTRY_BEGIN 226REPLY RD 227SECTION QUESTION 228www.example.com. IN A 229ENTRY_END 230 231STEP 180 CHECK_ANSWER 232ENTRY_BEGIN 233MATCH all ttl 234REPLY QR RD RA NOERROR 235SECTION QUESTION 236www.example.com. IN A 237SECTION ANSWER 238www.example.com. 30 IN A 1.2.3.4 239ENTRY_END 240 241STEP 190 TRAFFIC 242; the expired message is updated. 243 244; cache is valid, cachedb is valid 245STEP 200 QUERY 246ENTRY_BEGIN 247REPLY RD 248SECTION QUESTION 249www.example.com. IN A 250ENTRY_END 251 252STEP 210 CHECK_ANSWER 253ENTRY_BEGIN 254MATCH all ttl 255REPLY QR RD RA NOERROR 256SECTION QUESTION 257www.example.com. IN A 258SECTION ANSWER 259www.example.com. 10 IN A 1.2.3.4 260ENTRY_END 261 262; expire the entry in cache 263STEP 220 EXPIRE_MESSAGE www.example.com. IN A 264 265; cache is expired, cachedb valid 266STEP 230 QUERY 267ENTRY_BEGIN 268REPLY RD 269SECTION QUESTION 270www.example.com. IN A 271ENTRY_END 272 273STEP 240 CHECK_ANSWER 274ENTRY_BEGIN 275MATCH all ttl 276REPLY QR RD RA NOERROR 277SECTION QUESTION 278www.example.com. IN A 279SECTION ANSWER 280www.example.com. 10 IN A 1.2.3.4 281ENTRY_END 282 283; it is now expired 284STEP 250 TIME_PASSES ELAPSE 20 285; expire the entry in cache 286STEP 260 EXPIRE_MESSAGE www.example.com. IN A 287 288; cache is expired, cachedb is expired 289STEP 270 QUERY 290ENTRY_BEGIN 291REPLY RD 292SECTION QUESTION 293www.example.com. IN A 294ENTRY_END 295 296STEP 280 CHECK_ANSWER 297ENTRY_BEGIN 298MATCH all ttl 299REPLY QR RD RA NOERROR 300SECTION QUESTION 301www.example.com. IN A 302SECTION ANSWER 303www.example.com. 30 IN A 1.2.3.4 304ENTRY_END 305 306STEP 290 TRAFFIC 307; the expired message is updated. 308 309; cache is valid, cachedb is valid 310STEP 300 QUERY 311ENTRY_BEGIN 312REPLY RD 313SECTION QUESTION 314www.example.com. IN A 315ENTRY_END 316 317STEP 310 CHECK_ANSWER 318ENTRY_BEGIN 319MATCH all ttl 320REPLY QR RD RA NOERROR 321SECTION QUESTION 322www.example.com. IN A 323SECTION ANSWER 324www.example.com. 10 IN A 1.2.3.4 325ENTRY_END 326 327SCENARIO_END 328