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 serve-expired-reply-ttl: 30 9 module-config: "cachedb iterator" 10 11cachedb: 12 backend: "testframe" 13 secret-seed: "testvalue" 14 cachedb-check-when-serve-expired: yes 15 16stub-zone: 17 name: "." 18 stub-addr: 193.0.14.129 19CONFIG_END 20 21SCENARIO_BEGIN Test cachedb and serve-expired-reply-ttl. 22 23; K.ROOT-SERVERS.NET. 24RANGE_BEGIN 0 400 25 ADDRESS 193.0.14.129 26ENTRY_BEGIN 27MATCH opcode qtype qname 28ADJUST copy_id 29REPLY QR NOERROR 30SECTION QUESTION 31. IN NS 32SECTION ANSWER 33. IN NS K.ROOT-SERVERS.NET. 34SECTION ADDITIONAL 35K.ROOT-SERVERS.NET. IN A 193.0.14.129 36ENTRY_END 37 38ENTRY_BEGIN 39MATCH opcode subdomain 40ADJUST copy_id copy_query 41REPLY QR NOERROR 42SECTION QUESTION 43com. IN NS 44SECTION AUTHORITY 45com. IN NS a.gtld-servers.net. 46SECTION ADDITIONAL 47a.gtld-servers.net. IN A 192.5.6.30 48ENTRY_END 49RANGE_END 50 51; a.gtld-servers.net. 52RANGE_BEGIN 0 400 53 ADDRESS 192.5.6.30 54ENTRY_BEGIN 55MATCH opcode subdomain 56ADJUST copy_id copy_query 57REPLY QR NOERROR 58SECTION QUESTION 59example.com. IN NS 60SECTION AUTHORITY 61example.com. IN NS ns2.example.com. 62SECTION ADDITIONAL 63ns2.example.com. IN A 1.2.3.5 64ENTRY_END 65 66ENTRY_BEGIN 67MATCH opcode subdomain 68ADJUST copy_id copy_query 69REPLY QR NOERROR 70SECTION QUESTION 71foo.com. IN NS 72SECTION AUTHORITY 73foo.com. IN NS ns.example.com. 74ENTRY_END 75RANGE_END 76 77; ns2.example.com. 78RANGE_BEGIN 0 400 79 ADDRESS 1.2.3.5 80ENTRY_BEGIN 81MATCH opcode qname qtype 82REPLY QR AA NOERROR 83SECTION QUESTION 84www.example.com. IN A 85SECTION ANSWER 86www.example.com. 10 IN A 1.2.3.4 87ENTRY_END 88 89ENTRY_BEGIN 90MATCH opcode qname qtype 91REPLY QR AA NOERROR 92SECTION QUESTION 93www2.example.com. IN A 94SECTION ANSWER 95www2.example.com. 10 IN A 1.2.3.5 96ENTRY_END 97RANGE_END 98 99; make time not 0 100STEP 2 TIME_PASSES ELAPSE 212 101 102; Get an entry in cache, to make it expired. 103STEP 4 QUERY 104ENTRY_BEGIN 105REPLY RD 106SECTION QUESTION 107www.example.com. IN A 108ENTRY_END 109 110; get the answer for it 111STEP 10 CHECK_ANSWER 112ENTRY_BEGIN 113MATCH all 114REPLY QR RD RA NOERROR 115SECTION QUESTION 116www.example.com. IN A 117SECTION ANSWER 118www.example.com. 10 IN A 1.2.3.4 119ENTRY_END 120 121; Get another query in cache to make it expired. 122STEP 20 QUERY 123ENTRY_BEGIN 124REPLY RD 125SECTION QUESTION 126www2.example.com. IN A 127ENTRY_END 128 129; get the answer for it 130STEP 30 CHECK_ANSWER 131ENTRY_BEGIN 132MATCH all 133REPLY QR RD RA NOERROR 134SECTION QUESTION 135www2.example.com. IN A 136SECTION ANSWER 137www2.example.com. 10 IN A 1.2.3.5 138ENTRY_END 139 140; it is now expired 141STEP 40 TIME_PASSES ELAPSE 20 142 143; cache is expired, and cachedb is expired. 144STEP 50 QUERY 145ENTRY_BEGIN 146REPLY RD 147SECTION QUESTION 148www2.example.com. IN A 149ENTRY_END 150 151STEP 60 CHECK_ANSWER 152ENTRY_BEGIN 153MATCH all ttl 154REPLY QR RD RA NOERROR 155SECTION QUESTION 156www2.example.com. IN A 157SECTION ANSWER 158www2.example.com. 30 IN A 1.2.3.5 159ENTRY_END 160 161; got an answer from upstream 162STEP 61 QUERY 163ENTRY_BEGIN 164REPLY RD 165SECTION QUESTION 166www2.example.com. IN A 167ENTRY_END 168 169STEP 62 CHECK_ANSWER 170ENTRY_BEGIN 171MATCH all ttl 172REPLY QR RD RA NOERROR 173SECTION QUESTION 174www2.example.com. IN A 175SECTION ANSWER 176www2.example.com. 10 IN A 1.2.3.5 177ENTRY_END 178 179; cache is expired, cachedb has no answer 180STEP 70 QUERY 181ENTRY_BEGIN 182REPLY RD 183SECTION QUESTION 184www.example.com. IN A 185ENTRY_END 186 187STEP 80 CHECK_ANSWER 188ENTRY_BEGIN 189MATCH all ttl 190REPLY QR RD RA NOERROR 191SECTION QUESTION 192www.example.com. IN A 193SECTION ANSWER 194www.example.com. 30 IN A 1.2.3.4 195ENTRY_END 196 197STEP 90 TRAFFIC 198; the entry should be refreshed in cache now. 199; cache is valid and cachedb is valid. 200STEP 100 QUERY 201ENTRY_BEGIN 202REPLY RD 203SECTION QUESTION 204www.example.com. IN A 205ENTRY_END 206 207STEP 110 CHECK_ANSWER 208ENTRY_BEGIN 209MATCH all ttl 210REPLY QR RD RA NOERROR 211SECTION QUESTION 212www.example.com. IN A 213SECTION ANSWER 214www.example.com. 10 IN A 1.2.3.4 215ENTRY_END 216 217; make both cache and cachedb expired. 218STEP 120 TIME_PASSES ELAPSE 20 219STEP 130 FLUSH_MESSAGE www.example.com. IN A 220 221; cache has no entry and cachedb is expired. 222STEP 140 QUERY 223ENTRY_BEGIN 224REPLY RD 225SECTION QUESTION 226www.example.com. IN A 227ENTRY_END 228 229STEP 150 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 239; the name is resolved 240STEP 160 TRAFFIC 241 242; the resolve name has been updated. 243STEP 170 QUERY 244ENTRY_BEGIN 245REPLY RD 246SECTION QUESTION 247www.example.com. IN A 248ENTRY_END 249 250STEP 180 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 260SCENARIO_END 261