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