haproxy/reg-tests/balance/balance-uri.vtc
Willy Tarreau 19490907b3 REGTESTS: add a few load balancing tests
This adds "balance-rr" to test round robin, "balance-uri" to test the
default balance-uri method, and "balance-uri-path-only" which mixes H1
and H2 through "balance uri path-only" and verifies that they reach
the same server.

Note that for the latter, "proto h2" explicitly had to be placed on
the listening socket otherwise it would timeout. This may indicate an
issue in the H1->H2 upgrade depending how the H2 preface is sent maybe.
2020-09-23 09:02:13 +02:00

75 lines
1.4 KiB
Plaintext

vtest "Test for balance URI"
feature ignore_unknown_macro
#REQUIRE_VERSION=2.0
server s1 {
rxreq
txresp -hdr "Server: s1"
} -repeat 2 -start
server s2 {
rxreq
txresp -hdr "Server: s2"
} -repeat 2 -start
server s3 {
rxreq
txresp -hdr "Server: s3"
} -repeat 2 -start
server s4 {
rxreq
txresp -hdr "Server: s4"
} -repeat 2 -start
haproxy h1 -arg "-L A" -conf {
defaults
mode http
timeout server 1s
timeout connect 1s
timeout client 1s
listen px
bind "fd@${px}"
balance uri
server srv1 ${s1_addr}:${s1_port}
server srv2 ${s2_addr}:${s2_port}
server srv3 ${s3_addr}:${s3_port}
server srv4 ${s4_addr}:${s4_port}
} -start
client c1 -connect ${h1_px_sock} {
txreq -url "/url1"
rxresp
expect resp.status == 200
expect resp.http.Server ~ s2
} -run
client c2 -connect ${h1_px_sock} {
txreq -url "/url1?ignore=this-arg"
rxresp
expect resp.status == 200
expect resp.http.Server ~ s2
} -run
client c3 -connect ${h1_px_sock} {
txreq -url "/url2"
rxresp
expect resp.status == 200
expect resp.http.Server ~ s3
} -run
client c4 -connect ${h1_px_sock} {
txreq -url "/url3"
rxresp
expect resp.status == 200
expect resp.http.Server ~ s4
} -run
client c5 -connect ${h1_px_sock} {
txreq -url "/url4"
rxresp
expect resp.status == 200
expect resp.http.Server ~ s1
} -run