xref: /freebsd/contrib/unbound/testdata/cachedb_expired_reply_ttl.crpl (revision ee3960cba1068e12fb032a68c46d74841d9edab3)
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