aboutsummaryrefslogtreecommitdiff
path: root/testdata/serve_expired_0ttl_nodata.rpl
blob: 45b51444bccd8df852690064380b1b7ad20ca15b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
; config options
server:
	module-config: "validator iterator"
	qname-minimisation: "no"
	minimal-responses: no
	serve-expired: yes
	log-servfail: yes
	ede: yes
	ede-serve-expired: yes


stub-zone:
	name: "example.com"
	stub-addr: 1.2.3.4
CONFIG_END

SCENARIO_BEGIN Test serve-expired with NXDOMAIN followed by 0 TTL
; Scenario overview:
; - query for 0ttl.example.com. IN A
; - answer from upstream is NODATA; will be cached for the SOA negative TTL.
; - check that the client gets the NODATA; also cached
; - query again right after the TTL expired
; - this time the server answers with a 0 TTL RRset
; - check that we get the correct answer

; ns.example.com.
RANGE_BEGIN 0 20
	ADDRESS 1.2.3.4
	; response to A query
	ENTRY_BEGIN
		MATCH opcode qtype qname
		ADJUST copy_id
		REPLY QR AA NOERROR
		SECTION QUESTION
			0ttl.example.com. IN A
		SECTION AUTHORITY
			example.com IN SOA ns.example.com dns.example.com 1 7200 3600 2419200 10
	ENTRY_END
RANGE_END

; ns.example.com.
RANGE_BEGIN 30 100
	ADDRESS 1.2.3.4
	ENTRY_BEGIN
		MATCH opcode qtype qname
		ADJUST copy_id
		REPLY QR NOERROR
		SECTION QUESTION
			example.com. 10 IN NS
		SECTION ANSWER
			example.com. 10 IN NS ns.example.com.
		SECTION ADDITIONAL
			ns.example.com. 10 IN A 1.2.3.4
	ENTRY_END

	ENTRY_BEGIN
		MATCH opcode qtype qname
		ADJUST copy_id
		REPLY QR NOERROR
		SECTION QUESTION
			0ttl.example.com. IN A
		SECTION ANSWER
			0ttl.example.com. 0 IN A 5.6.7.8
		SECTION AUTHORITY
			example.com. 10 IN NS ns.example.com.
		SECTION ADDITIONAL
			ns.example.com. 10 IN A 1.2.3.4
	ENTRY_END
RANGE_END

; Query with RD flag
STEP 0 QUERY
ENTRY_BEGIN
	REPLY RD
	SECTION QUESTION
		0ttl.example.com. IN A
ENTRY_END

; Check that we get the NODATA (will be cached)
STEP 10 CHECK_ANSWER
ENTRY_BEGIN
	MATCH all
	REPLY QR RD RA NOERROR
	SECTION QUESTION
		0ttl.example.com. IN A
	SECTION AUTHORITY
		example.com IN SOA ns.example.com dns.example.com 1 7200 3600 2419200 10
ENTRY_END

; Query again
STEP 20 QUERY
ENTRY_BEGIN
	REPLY RD
	SECTION QUESTION
		0ttl.example.com. IN A
ENTRY_END

; Check that we get the cached NODATA
STEP 30 CHECK_ANSWER
ENTRY_BEGIN
	MATCH all
	REPLY QR RD RA NOERROR
	SECTION QUESTION
		0ttl.example.com. IN A
	SECTION AUTHORITY
		example.com IN SOA ns.example.com dns.example.com 1 7200 3600 2419200 10
ENTRY_END

; Wait for the NXDOMAIN to expire
STEP 31 TIME_PASSES ELAPSE 32

; Query again
STEP 40 QUERY
ENTRY_BEGIN
	REPLY RD
	SECTION QUESTION
		0ttl.example.com. IN A
ENTRY_END

; Check that we get the cached NODATA
STEP 50 CHECK_ANSWER
ENTRY_BEGIN
	MATCH all
	REPLY QR RD RA NOERROR
	SECTION QUESTION
		0ttl.example.com. IN A
	SECTION AUTHORITY
		example.com IN SOA ns.example.com dns.example.com 1 7200 3600 2419200 10
ENTRY_END

; Query again
STEP 60 QUERY
ENTRY_BEGIN
	REPLY RD
	SECTION QUESTION
		0ttl.example.com. IN A
ENTRY_END

; Check that we got the correct answer
STEP 70 CHECK_ANSWER
ENTRY_BEGIN
	MATCH all ttl
	REPLY QR RD RA NOERROR
	SECTION QUESTION
		0ttl.example.com. IN A
	SECTION ANSWER
		0ttl.example.com. 0 IN A 5.6.7.8
	SECTION AUTHORITY
		example.com. 10 IN NS ns.example.com.
	SECTION ADDITIONAL
		ns.example.com. 10 IN A 1.2.3.4
ENTRY_END

SCENARIO_END