blob: 6e90c625ae83e4bdf0de28bbcd319ad25bc595d8 [file] [log] [blame]
Amaury Denoyelle79c52ec2021-07-15 11:23:17 +02001varnishtest "Add/Delete server via cli with track support"
2
3feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev0)'"
4feature cmd "$HAPROXY_PROGRAM -cc 'feature(OPENSSL)'"
5feature ignore_unknown_macro
6
7
8# just use to provide s1_{addr,port} macros
9server s1 {
10}
11
12
13# scenario 1
14# -> 3 dynamic servers, delete the first one
15syslog S1 {
16 recv notice
17 expect ~ "Server be1/s1 is UP/READY"
18 recv notice
19 expect ~ "Server be1/s2 is UP/READY"
20 recv notice
21 expect ~ "Server be1/s3 is UP/READY"
22
23 recv alert
24 expect ~ "Server be1/srv is going DOWN for maintenance."
25 recv alert
26 expect ~ "Server be1/s3 is going DOWN for maintenance."
27 recv alert
28 expect ~ "Server be1/s2 is going DOWN for maintenance."
29 recv alert
30 expect ~ "Server be1/s1 is going DOWN for maintenance."
31
32 recv notice
33 expect ~ "Server be1/srv is UP/READY"
34 recv notice
35 expect ~ "Server be1/s3 is UP/READY"
36 recv notice
37 expect ~ "Server be1/s2 is UP/READY"
38} -start
39
40# scenario 2
41# -> 3 dynamic servers, delete the middle one
42syslog S2 {
43 recv notice
44 expect ~ "Server be2/s1 is UP/READY"
45 recv notice
46 expect ~ "Server be2/s2 is UP/READY"
47 recv notice
48 expect ~ "Server be2/s3 is UP/READY"
49
50 recv alert
51 expect ~ "Server be2/srv is going DOWN for maintenance."
52 recv alert
53 expect ~ "Server be2/s3 is going DOWN for maintenance."
54 recv alert
55 expect ~ "Server be2/s2 is going DOWN for maintenance."
56 recv alert
57 expect ~ "Server be2/s1 is going DOWN for maintenance."
58
59 recv notice
60 expect ~ "Server be2/srv is UP/READY"
61 recv notice
62 expect ~ "Server be2/s3 is UP/READY"
63 recv notice
64 expect ~ "Server be2/s1 is UP/READY"
65} -start
66
67# scenario 3
68# -> 3 dynamic servers, delete all of them
69syslog S3 {
70 recv notice
71 expect ~ "Server be3/s1 is UP/READY"
72 recv notice
73 expect ~ "Server be3/s2 is UP/READY"
74 recv notice
75 expect ~ "Server be3/s3 is UP/READY"
76
77 recv alert
78 expect ~ "Server be3/s1 is going DOWN for maintenance."
79 recv alert
80 expect ~ "Server be3/s3 is going DOWN for maintenance."
81 recv alert
82 expect ~ "Server be3/s2 is going DOWN for maintenance."
83
84 recv alert
85 expect ~ "Server be3/srv is going DOWN for maintenance."
86
87 recv notice
88 expect ~ "Server be3/srv is UP/READY"
89} -start
90
91
92haproxy h1 -conf {
93 global
94 stats socket "${tmpdir}/h1/stats" level admin
95
96 backend be_check
97 server srv_check ${s1_addr}:${s1_port} check
98 server srv_no_check ${s1_addr}:${s1_port}
99
100 backend be1
101 log ${S1_addr}:${S1_port} daemon
102 server srv ${s1_addr}:${s1_port} check
103
104 backend be2
105 log ${S2_addr}:${S2_port} daemon
106 server srv ${s1_addr}:${s1_port} check
107
108 backend be3
109 log ${S3_addr}:${S3_port} daemon
110 server srv ${s1_addr}:${s1_port} check
111} -start
112
113
114###
115# check the support of the 'track' keyword on 'add server' CLI command.
116# rejection must happen if track on a non-checked or a dynamic server
117###
118haproxy h1 -cli {
119 # invalid command: track on a non-checked server
120 send "experimental-mode on; add server be_check/s1 ${s1_addr}:${s1_port} track be_check/srv_no_check"
121 expect ~ "unable to use be_check/srv_no_check for tracking as it does not have any check nor agent enabled."
122
123 # valid track usage
124 send "experimental-mode on; add server be_check/s1 ${s1_addr}:${s1_port} track be_check/srv_check"
125 expect ~ "New server registered."
126
127 # invalid command: track on a dynamic server
128 send "experimental-mode on; add server be_check/s3 ${s1_addr}:${s1_port} track be_check/s1"
129 expect ~ "unable to use be_check/s1 for tracking as it is a dynamic server."
130}
131
132###
133# scenario 1
134#
135# Add 3 dynamic servers with tracking on be1/srv
136# Disable be1/srv, S1 should report all servers DOWN
137# Delete the first dynamic server, enable be1/srv, S1 should report s1 and s3 UP
138####
139haproxy h1 -cli {
140 send "experimental-mode on; add server be1/s1 ${s1_addr}:${s1_port} track be1/srv"
141 expect ~ "New server registered."
142 send "enable server be1/s1"
143 expect ~ ".*"
144
145 send "experimental-mode on; add server be1/s2 ${s1_addr}:${s1_port} track be1/srv"
146 expect ~ "New server registered."
147 send "enable server be1/s2"
148 expect ~ ".*"
149
150 send "experimental-mode on; add server be1/s3 ${s1_addr}:${s1_port} track be1/srv"
151 expect ~ "New server registered."
152 send "enable server be1/s3"
153 expect ~ ".*"
154
155 send "disable server be1/srv"
156 expect ~ ".*"
157
158 send "experimental-mode on; del server be1/s1"
159 expect ~ "Server deleted."
160
161 send "enable server be1/srv"
162 expect ~ ".*"
163}
164
165###
166# scenario 2
167#
168# Add 3 dynamic servers with tracking on be2/srv
169# Disable be2/srv, S3 should report all servers DOWN
170# Delete the second dynamic server, enable be2/srv, S2 should report s2 and s3 UP
171####
172haproxy h1 -cli {
173 send "experimental-mode on; add server be2/s1 ${s1_addr}:${s1_port} track be2/srv"
174 expect ~ "New server registered."
175 send "enable server be2/s1"
176 expect ~ ".*"
177
178 send "experimental-mode on; add server be2/s2 ${s1_addr}:${s1_port} track be2/srv"
179 expect ~ "New server registered."
180 send "enable server be2/s2"
181 expect ~ ".*"
182
183 send "experimental-mode on; add server be2/s3 ${s1_addr}:${s1_port} track be2/srv"
184 expect ~ "New server registered."
185 send "enable server be2/s3"
186 expect ~ ".*"
187
188 send "disable server be2/srv"
189 expect ~ ".*"
190
191 send "experimental-mode on; del server be2/s2"
192 expect ~ "Server deleted."
193
194 send "enable server be2/srv"
195 expect ~ ".*"
196}
197
198###
199# scenario 3
200#
201# Add 3 dynamic servers with tracking on be3/srv
202# Delete all of them, disable/enable be3/srv, only be3/srv should be reported
203# as DOWN/UP.
204####
205haproxy h1 -cli {
206 # create server 1, track on be3/srv
207 send "experimental-mode on; add server be3/s1 ${s1_addr}:${s1_port} track be3/srv"
208 expect ~ "New server registered."
209 send "enable server be3/s1"
210 expect ~ ".*"
211
212 # create server 2, track on be3/srv
213 send "experimental-mode on; add server be3/s2 ${s1_addr}:${s1_port} track be3/srv"
214 expect ~ "New server registered."
215 send "enable server be3/s2"
216 expect ~ ".*"
217
218 # create server 3, track on be3/srv
219 send "experimental-mode on; add server be3/s3 ${s1_addr}:${s1_port} track be3/srv"
220 expect ~ "New server registered."
221 send "enable server be3/s3"
222 expect ~ ".*"
223
224 # delete all dynamic servers
225 send "experimental-mode on; disable server be3/s1; del server be3/s1"
226 expect ~ "Server deleted."
227 send "experimental-mode on; disable server be3/s3; del server be3/s3"
228 expect ~ "Server deleted."
229 send "experimental-mode on; disable server be3/s2; del server be3/s2"
230 expect ~ "Server deleted."
231
232 # disable / enable the static server
233 send "disable server be3/srv"
234 expect ~ ".*"
235 send "enable server be3/srv"
236 expect ~ ".*"
237}
238
239
240syslog S1 -wait
241syslog S2 -wait
242syslog S3 -wait