blob: 21f1c3ab092caca451b48fde3ffbec506e4ca74f [file] [log] [blame]
Thayne McCombs23cc52d2020-12-19 00:59:35 -07001vtest "A reg test for stickiness with srvkey addr"
2feature ignore_unknown_macro
3
4
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
38 ${no-htx} option http-use-htx
39 timeout server 1s
40 timeout connect 1s
41 timeout client 1s
42 log stdout format raw local0 debug
43
44 peers mypeers
45 bind "fd@${A}"
46 server A
47 server B ${h2_B_addr}:${h2_B_port}
48 table mytable type string size 10m srvkey addr
49
50 backend be1
51 balance roundrobin
52 stick on urlp(client) table mypeers/mytable
53 server srv1 ${s1_addr}:${s1_port}
54 server srv2 ${s2_addr}:${s2_port}
55
56 backend be2
57 balance roundrobin
58 stick on urlp(client) table mypeers/mytable
59 server s_not_used_1 ${s_not_used_1_addr}:${s_not_used_1_port}
60 server s_not_used_2 ${s_not_used_2_addr}:${s_not_used_2_port}
61 server s_not_used_3 ${s_not_used_3_addr}:${s_not_used_3_port}
62 server srv2_2 ${s2_addr}:${s2_port}
63 server s_not_used_4 ${s_not_used_4_addr}:${s_not_used_4_port}
64 server s_not_used_5 ${s_not_used_5_addr}:${s_not_used_5_port}
65 server s_not_used_6 ${s_not_used_6_addr}:${s_not_used_6_port}
66 server srv1_2 ${s1_addr}:${s1_port}
67
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}"
74} -start
75
76haproxy h2 -arg "-L B" -conf {
77 defaults
78 mode http
79 ${no-htx} option http-use-htx
80 timeout server 1s
81 timeout connect 1s
82 timeout client 1s
83
84 peers mypeers
85 bind "fd@${B}"
86 server A ${h1_A_addr}:${h1_A_port}
87 server B
88 table mytable type string size 10m srvkey addr
89
90 backend be1
91 balance roundrobin
92 stick on urlp(client) table mypeers/mytable
93 server s_not_used_7 ${s_not_used_7_addr}:${s_not_used_7_port}
94 server s_not_used_8 ${s_not_used_8_addr}:${s_not_used_8_port}
95 server s_not_used_9 ${s_not_used_9_addr}:${s_not_used_9_port}
96 server srv1_h2_1 ${s1_addr}:${s1_port}
97 server s_not_used_10 ${s_not_used_10_addr}:${s_not_used_10_port}
98 server s_not_used_11 ${s_not_used_11_addr}:${s_not_used_11_port}
99 server s_not_used_12 ${s_not_used_12_addr}:${s_not_used_12_port}
100 server srv2_h2_1 ${s2_addr}:${s2_port}
101
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}
113
114 frontend fe
115 acl acl_be1 path_beg /be1
116 acl acl_be2 path_beg /be2
117 use_backend be1 if acl_be1
118 use_backend be2 if acl_be2
119 bind "fd@${fe}"
120} -start
121
122delay 0.2
123
124client cx -connect ${h1_fe_sock} {
125 txreq -url "/be1?client=c1"
126 rxresp
127 expect resp.status == 200
128 expect resp.http.Server ~ s1
129} -repeat 2 -run
130
131haproxy h1 -cli {
132 send "show table mypeers/mytable"
133 expect ~ .*
134}
135
136haproxy h2 -cli {
137 send "show table mypeers/mytable"
138 expect ~ .*
139}
140
141client cy -connect ${h1_fe_sock} {
142 txreq -url "/be2?client=c1"
143 rxresp
144 expect resp.status == 200
145 expect resp.http.Server ~ s1
146} -repeat 2 -run
147
148haproxy h1 -cli {
149 send "show table mypeers/mytable"
150 expect ~ .*
151}
152
153haproxy h2 -cli {
154 send "show table mypeers/mytable"
155 expect ~ .*
156}
157
158client cx -connect ${h2_fe_sock} {
159 txreq -url "/be1?client=c1"
160 rxresp
161 expect resp.status == 200
162 expect resp.http.Server ~ s1
163} -repeat 2 -run
164
165haproxy h1 -cli {
166 send "show table mypeers/mytable"
167 expect ~ .*
168}
169
170haproxy h2 -cli {
171 send "show table mypeers/mytable"
172 expect ~ .*
173}
174
175client cy -connect ${h2_fe_sock} {
176 txreq -url "/be2?client=c1"
177 rxresp
178 expect resp.status == 200
179 expect resp.http.Server ~ s1
180} -repeat 2 -run
181
182haproxy h1 -cli {
183 send "show table mypeers/mytable"
184 expect ~ .*
185}
186
187haproxy h2 -cli {
188 send "show table mypeers/mytable"
189 expect ~ .*
190}
191
192client cX -connect ${h1_fe_sock} {
193 txreq -url "/be1?client=c2"
194 rxresp
195 expect resp.status == 200
196 expect resp.http.Server ~ s2
197} -repeat 2 -run
198
199haproxy h1 -cli {
200 send "show table mypeers/mytable"
201 expect ~ .*
202}
203
204haproxy h2 -cli {
205 send "show table mypeers/mytable"
206 expect ~ .*
207}
208
209client cY -connect ${h1_fe_sock} {
210 txreq -url "/be2?client=c2"
211 rxresp
212 expect resp.status == 200
213 expect resp.http.Server ~ s2
214} -repeat 2 -run
215
216haproxy h1 -cli {
217 send "show table mypeers/mytable"
218 expect ~ .*
219}
220
221haproxy h2 -cli {
222 send "show table mypeers/mytable"
223 expect ~ .*
224}
225
226client cX -connect ${h2_fe_sock} {
227 txreq -url "/be1?client=c2"
228 rxresp
229 expect resp.status == 200
230 expect resp.http.Server ~ s2
231} -repeat 2 -run
232
233haproxy h1 -cli {
234 send "show table mypeers/mytable"
235 expect ~ .*
236}
237
238haproxy h2 -cli {
239 send "show table mypeers/mytable"
240 expect ~ .*
241}
242
243client cY -connect ${h2_fe_sock} {
244 txreq -url "/be2?client=c2"
245 rxresp
246 expect resp.status == 200
247 expect resp.http.Server ~ s2
248} -repeat 2 -run
249
250haproxy h1 -cli {
251 send "show table mypeers/mytable"
252 expect ~ .*
253}
254
255haproxy h2 -cli {
256 send "show table mypeers/mytable"
257 expect ~ .*
258}
259