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