diff options
Diffstat (limited to 'reg-tests/stickiness')
-rw-r--r-- | reg-tests/stickiness/lb-services.vtc | 292 | ||||
-rw-r--r-- | reg-tests/stickiness/srvkey-addr.vtc | 263 |
2 files changed, 555 insertions, 0 deletions
diff --git a/reg-tests/stickiness/lb-services.vtc b/reg-tests/stickiness/lb-services.vtc new file mode 100644 index 0000000..23c9a9a --- /dev/null +++ b/reg-tests/stickiness/lb-services.vtc @@ -0,0 +1,292 @@ +vtest "A reg test for stickiness" +feature ignore_unknown_macro +#REGTEST_TYPE=slow + +# The aim of this test is to check that "stick on" rules +# do the job they are supposed to do. +# If we remove one of the "stick on" rule, this script fails. + +server s_not_used_1 {} +server s_not_used_2 {} +server s_not_used_3 {} +server s_not_used_4 {} +server s_not_used_5 {} +server s_not_used_6 {} +server s_not_used_7 {} +server s_not_used_8 {} +server s_not_used_9 {} +server s_not_used_10 {} +server s_not_used_11 {} +server s_not_used_12 {} + +# h1/be1 servers +server s1 { + rxreq + txresp -hdr "Server: be1/s1" +} -repeat 2 -start + +server s2 { + rxreq + txresp -hdr "Server: be1/s2" +} -repeat 2 -start + +# h1/be2 servers +server s3 { + rxreq + txresp -hdr "Server: be2/s3" +} -repeat 2 -start + +server s4 { + rxreq + txresp -hdr "Server: be2/s4" +} -repeat 2 -start + +haproxy h1 -arg "-L A" -conf { + defaults + mode http + timeout server "${HAPROXY_TEST_TIMEOUT-5s}" + timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" + timeout client "${HAPROXY_TEST_TIMEOUT-5s}" + log stdout format raw local0 debug + + peers mypeers + bind "fd@${A}" + server A + server B ${h2_B_addr}:${h2_B_port} + table mytable type string size 10m + + backend be1 + balance roundrobin + stick on urlp(client) table mypeers/mytable + server srv1 ${s1_addr}:${s1_port} + server srv2 ${s2_addr}:${s2_port} + + backend be2 + balance roundrobin + stick on urlp(client) table mypeers/mytable + server s_not_used_1 ${s_not_used_1_addr}:${s_not_used_1_port} + server s_not_used_2 ${s_not_used_2_addr}:${s_not_used_2_port} + server s_not_used_3 ${s_not_used_3_addr}:${s_not_used_3_port} + server srv2 ${s4_addr}:${s4_port} + server s_not_used_4 ${s_not_used_4_addr}:${s_not_used_4_port} + server s_not_used_5 ${s_not_used_5_addr}:${s_not_used_5_port} + server s_not_used_6 ${s_not_used_6_addr}:${s_not_used_6_port} + server srv1 ${s3_addr}:${s3_port} + + frontend fe + acl acl_be1 path_beg /be1 + acl acl_be2 path_beg /be2 + use_backend be1 if acl_be1 + use_backend be2 if acl_be2 + bind "fd@${fe}" +} + +# h2/be1 servers +server s5 { + rxreq + txresp -hdr "Server: be1/s5" +} -repeat 2 -start + +server s6 { + rxreq + txresp -hdr "Server: be1/s6" +} -repeat 2 -start + +# h2/be2 servers +server s7 { + rxreq + txresp -hdr "Server: be2/s7" +} -repeat 2 -start + +server s8 { + rxreq + txresp -hdr "Server: be2/s8" +} -repeat 2 -start + + +haproxy h2 -arg "-L B" -conf { + defaults + mode http + timeout server "${HAPROXY_TEST_TIMEOUT-5s}" + timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" + timeout client "${HAPROXY_TEST_TIMEOUT-5s}" + + peers mypeers + bind "fd@${B}" + server A ${h1_A_addr}:${h1_A_port} + server B + table mytable type string size 10m + + backend be1 + balance roundrobin + stick on urlp(client) table mypeers/mytable + server s_not_used_7 ${s_not_used_7_addr}:${s_not_used_7_port} + server s_not_used_8 ${s_not_used_8_addr}:${s_not_used_8_port} + server s_not_used_9 ${s_not_used_9_addr}:${s_not_used_9_port} + server srv1 ${s5_addr}:${s5_port} + server s_not_used_10 ${s_not_used_10_addr}:${s_not_used_10_port} + server s_not_used_11 ${s_not_used_11_addr}:${s_not_used_11_port} + server s_not_used_12 ${s_not_used_12_addr}:${s_not_used_12_port} + server srv2 ${s6_addr}:${s6_port} + + backend be2 + balance roundrobin + stick on urlp(client) table mypeers/mytable + server s_not_used_1 ${s_not_used_1_addr}:${s_not_used_1_port} + server s_not_used_2 ${s_not_used_2_addr}:${s_not_used_2_port} + server s_not_used_3 ${s_not_used_3_addr}:${s_not_used_3_port} + server s_not_used_4 ${s_not_used_4_addr}:${s_not_used_4_port} + server s_not_used_5 ${s_not_used_5_addr}:${s_not_used_5_port} + server s_not_used_6 ${s_not_used_6_addr}:${s_not_used_6_port} + server srv1 ${s7_addr}:${s7_port} + server srv2 ${s8_addr}:${s8_port} + + frontend fe + acl acl_be1 path_beg /be1 + acl acl_be2 path_beg /be2 + use_backend be1 if acl_be1 + use_backend be2 if acl_be2 + bind "fd@${fe}" +} + +haproxy h1 -start +delay 0.2 +haproxy h2 -start +delay 2 + +client cx -connect ${h1_fe_sock} { + txreq -url "/be1?client=c1" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ be1/s1 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cy -connect ${h1_fe_sock} { + txreq -url "/be2?client=c1" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ be2/s3 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cx -connect ${h2_fe_sock} { + txreq -url "/be1?client=c1" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ be1/s5 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cy -connect ${h2_fe_sock} { + txreq -url "/be2?client=c1" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ be2/s7 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cX -connect ${h1_fe_sock} { + txreq -url "/be1?client=c2" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ be1/s2 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cY -connect ${h1_fe_sock} { + txreq -url "/be2?client=c2" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ be2/s4 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cX -connect ${h2_fe_sock} { + txreq -url "/be1?client=c2" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ be1/s6 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cY -connect ${h2_fe_sock} { + txreq -url "/be2?client=c2" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ be2/s8 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + diff --git a/reg-tests/stickiness/srvkey-addr.vtc b/reg-tests/stickiness/srvkey-addr.vtc new file mode 100644 index 0000000..0dc1148 --- /dev/null +++ b/reg-tests/stickiness/srvkey-addr.vtc @@ -0,0 +1,263 @@ +vtest "A reg test for stickiness with srvkey addr" +feature ignore_unknown_macro +#REGTEST_TYPE=slow + +# The aim of this test is to check that "stick on" rules +# do the job they are supposed to do. +# If we remove one of the "stick on" rule, this script fails. + +#REQUIRE_VERSION=2.4 + +server s_not_used_1 {} +server s_not_used_2 {} +server s_not_used_3 {} +server s_not_used_4 {} +server s_not_used_5 {} +server s_not_used_6 {} +server s_not_used_7 {} +server s_not_used_8 {} +server s_not_used_9 {} +server s_not_used_10 {} +server s_not_used_11 {} +server s_not_used_12 {} + +# h1/be1 servers +server s1 { + rxreq + txresp -hdr "Server: s1" +} -repeat 8 -start + +server s2 { + rxreq + txresp -hdr "Server: s2" +} -repeat 8 -start + +haproxy h1 -arg "-L A" -conf { + defaults + mode http + timeout server "${HAPROXY_TEST_TIMEOUT-5s}" + timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" + timeout client "${HAPROXY_TEST_TIMEOUT-5s}" + log stdout format raw local0 debug + + peers mypeers + bind "fd@${A}" + server A + server B ${h2_B_addr}:${h2_B_port} + table mytable type string size 10m srvkey addr + + backend be1 + balance roundrobin + stick on urlp(client) table mypeers/mytable + server srv1 ${s1_addr}:${s1_port} + server srv2 ${s2_addr}:${s2_port} + + backend be2 + balance roundrobin + stick on urlp(client) table mypeers/mytable + server s_not_used_1 ${s_not_used_1_addr}:${s_not_used_1_port} + server s_not_used_2 ${s_not_used_2_addr}:${s_not_used_2_port} + server s_not_used_3 ${s_not_used_3_addr}:${s_not_used_3_port} + server srv2_2 ${s2_addr}:${s2_port} + server s_not_used_4 ${s_not_used_4_addr}:${s_not_used_4_port} + server s_not_used_5 ${s_not_used_5_addr}:${s_not_used_5_port} + server s_not_used_6 ${s_not_used_6_addr}:${s_not_used_6_port} + server srv1_2 ${s1_addr}:${s1_port} + server s_no_addr_1 unresolvable1.addr.local init-addr none + + frontend fe + acl acl_be1 path_beg /be1 + acl acl_be2 path_beg /be2 + use_backend be1 if acl_be1 + use_backend be2 if acl_be2 + bind "fd@${fe}" +} + +haproxy h2 -arg "-L B" -conf { + defaults + mode http + timeout server "${HAPROXY_TEST_TIMEOUT-5s}" + timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" + timeout client "${HAPROXY_TEST_TIMEOUT-5s}" + + peers mypeers + bind "fd@${B}" + server A ${h1_A_addr}:${h1_A_port} + server B + table mytable type string size 10m srvkey addr + + backend be1 + balance roundrobin + stick on urlp(client) table mypeers/mytable + server s_not_used_7 ${s_not_used_7_addr}:${s_not_used_7_port} + server s_not_used_8 ${s_not_used_8_addr}:${s_not_used_8_port} + server s_not_used_9 ${s_not_used_9_addr}:${s_not_used_9_port} + server srv1_h2_1 ${s1_addr}:${s1_port} + server s_not_used_10 ${s_not_used_10_addr}:${s_not_used_10_port} + server s_not_used_11 ${s_not_used_11_addr}:${s_not_used_11_port} + server s_not_used_12 ${s_not_used_12_addr}:${s_not_used_12_port} + server srv2_h2_1 ${s2_addr}:${s2_port} + server s_no_addr_1 unresolvable1.addr.local init-addr none + + backend be2 + balance roundrobin + stick on urlp(client) table mypeers/mytable + server s_not_used_1 ${s_not_used_1_addr}:${s_not_used_1_port} + server s_not_used_2 ${s_not_used_2_addr}:${s_not_used_2_port} + server s_not_used_3 ${s_not_used_3_addr}:${s_not_used_3_port} + server s_not_used_4 ${s_not_used_4_addr}:${s_not_used_4_port} + server s_not_used_5 ${s_not_used_5_addr}:${s_not_used_5_port} + server s_not_used_6 ${s_not_used_6_addr}:${s_not_used_6_port} + server srv1_h2_2 ${s1_addr}:${s1_port} + server srv2_h2_2 ${s2_addr}:${s2_port} + server s_no_addr_2 unresolvable2.addr.local init-addr none + + frontend fe + acl acl_be1 path_beg /be1 + acl acl_be2 path_beg /be2 + use_backend be1 if acl_be1 + use_backend be2 if acl_be2 + bind "fd@${fe}" +} + +haproxy h1 -start +delay 0.2 +haproxy h2 -start +delay 2 + +client cx -connect ${h1_fe_sock} { + txreq -url "/be1?client=c1" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ s1 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cy -connect ${h1_fe_sock} { + txreq -url "/be2?client=c1" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ s1 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cx -connect ${h2_fe_sock} { + txreq -url "/be1?client=c1" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ s1 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cy -connect ${h2_fe_sock} { + txreq -url "/be2?client=c1" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ s1 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cX -connect ${h1_fe_sock} { + txreq -url "/be1?client=c2" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ s2 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cY -connect ${h1_fe_sock} { + txreq -url "/be2?client=c2" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ s2 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cX -connect ${h2_fe_sock} { + txreq -url "/be1?client=c2" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ s2 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +client cY -connect ${h2_fe_sock} { + txreq -url "/be2?client=c2" + rxresp + expect resp.status == 200 + expect resp.http.Server ~ s2 +} -repeat 2 -run + +haproxy h1 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + +haproxy h2 -cli { + send "show table mypeers/mytable" + expect ~ .* +} + |