blob: 0dc1148f9cfefeda0cbb952505377f3a4faa4688 [file] [log] [blame]
Thayne McCombs23cc52d2020-12-19 00:59:35 -07001vtest "A reg test for stickiness with srvkey addr"
2feature ignore_unknown_macro
Christopher Fauletfcc0a052023-06-05 08:09:40 +02003#REGTEST_TYPE=slow
Thayne McCombs23cc52d2020-12-19 00:59:35 -07004
5# The aim of this test is to check that "stick on" rules
6# do the job they are supposed to do.
7# If we remove one of the "stick on" rule, this script fails.
8
9#REQUIRE_VERSION=2.4
10
11server s_not_used_1 {}
12server s_not_used_2 {}
13server s_not_used_3 {}
14server s_not_used_4 {}
15server s_not_used_5 {}
16server s_not_used_6 {}
17server s_not_used_7 {}
18server s_not_used_8 {}
19server s_not_used_9 {}
20server s_not_used_10 {}
21server s_not_used_11 {}
22server s_not_used_12 {}
23
24# h1/be1 servers
25server s1 {
26 rxreq
27 txresp -hdr "Server: s1"
28} -repeat 8 -start
29
30server s2 {
31 rxreq
32 txresp -hdr "Server: s2"
33} -repeat 8 -start
34
35haproxy h1 -arg "-L A" -conf {
36 defaults
37 mode http
Willy Tarreauf6739232021-11-18 17:46:22 +010038 timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
39 timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
40 timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
Thayne McCombs23cc52d2020-12-19 00:59:35 -070041 log stdout format raw local0 debug
42
43 peers mypeers
44 bind "fd@${A}"
45 server A
46 server B ${h2_B_addr}:${h2_B_port}
47 table mytable type string size 10m srvkey addr
48
49 backend be1
50 balance roundrobin
51 stick on urlp(client) table mypeers/mytable
52 server srv1 ${s1_addr}:${s1_port}
53 server srv2 ${s2_addr}:${s2_port}
54
55 backend be2
56 balance roundrobin
57 stick on urlp(client) table mypeers/mytable
58 server s_not_used_1 ${s_not_used_1_addr}:${s_not_used_1_port}
59 server s_not_used_2 ${s_not_used_2_addr}:${s_not_used_2_port}
60 server s_not_used_3 ${s_not_used_3_addr}:${s_not_used_3_port}
61 server srv2_2 ${s2_addr}:${s2_port}
62 server s_not_used_4 ${s_not_used_4_addr}:${s_not_used_4_port}
63 server s_not_used_5 ${s_not_used_5_addr}:${s_not_used_5_port}
64 server s_not_used_6 ${s_not_used_6_addr}:${s_not_used_6_port}
65 server srv1_2 ${s1_addr}:${s1_port}
Willy Tarreaufae9a4c2021-01-06 09:20:22 +010066 server s_no_addr_1 unresolvable1.addr.local init-addr none
Thayne McCombs23cc52d2020-12-19 00:59:35 -070067
68 frontend fe
69 acl acl_be1 path_beg /be1
70 acl acl_be2 path_beg /be2
71 use_backend be1 if acl_be1
72 use_backend be2 if acl_be2
73 bind "fd@${fe}"
Christopher Fauletfcc0a052023-06-05 08:09:40 +020074}
Thayne McCombs23cc52d2020-12-19 00:59:35 -070075
76haproxy h2 -arg "-L B" -conf {
77 defaults
78 mode http
Willy Tarreauf6739232021-11-18 17:46:22 +010079 timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
80 timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
81 timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
Thayne McCombs23cc52d2020-12-19 00:59:35 -070082
83 peers mypeers
84 bind "fd@${B}"
85 server A ${h1_A_addr}:${h1_A_port}
86 server B
87 table mytable type string size 10m srvkey addr
88
89 backend be1
90 balance roundrobin
91 stick on urlp(client) table mypeers/mytable
92 server s_not_used_7 ${s_not_used_7_addr}:${s_not_used_7_port}
93 server s_not_used_8 ${s_not_used_8_addr}:${s_not_used_8_port}
94 server s_not_used_9 ${s_not_used_9_addr}:${s_not_used_9_port}
95 server srv1_h2_1 ${s1_addr}:${s1_port}
96 server s_not_used_10 ${s_not_used_10_addr}:${s_not_used_10_port}
97 server s_not_used_11 ${s_not_used_11_addr}:${s_not_used_11_port}
98 server s_not_used_12 ${s_not_used_12_addr}:${s_not_used_12_port}
99 server srv2_h2_1 ${s2_addr}:${s2_port}
Willy Tarreaufae9a4c2021-01-06 09:20:22 +0100100 server s_no_addr_1 unresolvable1.addr.local init-addr none
Thayne McCombs23cc52d2020-12-19 00:59:35 -0700101
102 backend be2
103 balance roundrobin
104 stick on urlp(client) table mypeers/mytable
105 server s_not_used_1 ${s_not_used_1_addr}:${s_not_used_1_port}
106 server s_not_used_2 ${s_not_used_2_addr}:${s_not_used_2_port}
107 server s_not_used_3 ${s_not_used_3_addr}:${s_not_used_3_port}
108 server s_not_used_4 ${s_not_used_4_addr}:${s_not_used_4_port}
109 server s_not_used_5 ${s_not_used_5_addr}:${s_not_used_5_port}
110 server s_not_used_6 ${s_not_used_6_addr}:${s_not_used_6_port}
111 server srv1_h2_2 ${s1_addr}:${s1_port}
112 server srv2_h2_2 ${s2_addr}:${s2_port}
Willy Tarreaufae9a4c2021-01-06 09:20:22 +0100113 server s_no_addr_2 unresolvable2.addr.local init-addr none
Thayne McCombs23cc52d2020-12-19 00:59:35 -0700114
115 frontend fe
116 acl acl_be1 path_beg /be1
117 acl acl_be2 path_beg /be2
118 use_backend be1 if acl_be1
119 use_backend be2 if acl_be2
120 bind "fd@${fe}"
Christopher Fauletfcc0a052023-06-05 08:09:40 +0200121}
Thayne McCombs23cc52d2020-12-19 00:59:35 -0700122
Christopher Fauletfcc0a052023-06-05 08:09:40 +0200123haproxy h1 -start
Thayne McCombs23cc52d2020-12-19 00:59:35 -0700124delay 0.2
Christopher Fauletfcc0a052023-06-05 08:09:40 +0200125haproxy h2 -start
126delay 2
Thayne McCombs23cc52d2020-12-19 00:59:35 -0700127
128client cx -connect ${h1_fe_sock} {
129 txreq -url "/be1?client=c1"
130 rxresp
131 expect resp.status == 200
132 expect resp.http.Server ~ s1
133} -repeat 2 -run
134
135haproxy h1 -cli {
136 send "show table mypeers/mytable"
137 expect ~ .*
138}
139
140haproxy h2 -cli {
141 send "show table mypeers/mytable"
142 expect ~ .*
143}
144
145client cy -connect ${h1_fe_sock} {
146 txreq -url "/be2?client=c1"
147 rxresp
148 expect resp.status == 200
149 expect resp.http.Server ~ s1
150} -repeat 2 -run
151
152haproxy h1 -cli {
153 send "show table mypeers/mytable"
154 expect ~ .*
155}
156
157haproxy h2 -cli {
158 send "show table mypeers/mytable"
159 expect ~ .*
160}
161
162client cx -connect ${h2_fe_sock} {
163 txreq -url "/be1?client=c1"
164 rxresp
165 expect resp.status == 200
166 expect resp.http.Server ~ s1
167} -repeat 2 -run
168
169haproxy h1 -cli {
170 send "show table mypeers/mytable"
171 expect ~ .*
172}
173
174haproxy h2 -cli {
175 send "show table mypeers/mytable"
176 expect ~ .*
177}
178
179client cy -connect ${h2_fe_sock} {
180 txreq -url "/be2?client=c1"
181 rxresp
182 expect resp.status == 200
183 expect resp.http.Server ~ s1
184} -repeat 2 -run
185
186haproxy h1 -cli {
187 send "show table mypeers/mytable"
188 expect ~ .*
189}
190
191haproxy h2 -cli {
192 send "show table mypeers/mytable"
193 expect ~ .*
194}
195
196client cX -connect ${h1_fe_sock} {
197 txreq -url "/be1?client=c2"
198 rxresp
199 expect resp.status == 200
200 expect resp.http.Server ~ s2
201} -repeat 2 -run
202
203haproxy h1 -cli {
204 send "show table mypeers/mytable"
205 expect ~ .*
206}
207
208haproxy h2 -cli {
209 send "show table mypeers/mytable"
210 expect ~ .*
211}
212
213client cY -connect ${h1_fe_sock} {
214 txreq -url "/be2?client=c2"
215 rxresp
216 expect resp.status == 200
217 expect resp.http.Server ~ s2
218} -repeat 2 -run
219
220haproxy h1 -cli {
221 send "show table mypeers/mytable"
222 expect ~ .*
223}
224
225haproxy h2 -cli {
226 send "show table mypeers/mytable"
227 expect ~ .*
228}
229
230client cX -connect ${h2_fe_sock} {
231 txreq -url "/be1?client=c2"
232 rxresp
233 expect resp.status == 200
234 expect resp.http.Server ~ s2
235} -repeat 2 -run
236
237haproxy h1 -cli {
238 send "show table mypeers/mytable"
239 expect ~ .*
240}
241
242haproxy h2 -cli {
243 send "show table mypeers/mytable"
244 expect ~ .*
245}
246
247client cY -connect ${h2_fe_sock} {
248 txreq -url "/be2?client=c2"
249 rxresp
250 expect resp.status == 200
251 expect resp.http.Server ~ s2
252} -repeat 2 -run
253
254haproxy h1 -cli {
255 send "show table mypeers/mytable"
256 expect ~ .*
257}
258
259haproxy h2 -cli {
260 send "show table mypeers/mytable"
261 expect ~ .*
262}
263