| varnishtest "Basic log load-balancing test" |
| feature ignore_unknown_macro |
| |
| #REQUIRE_VERSION=2.0 |
| |
| barrier b1 cond 2 -cyclic |
| barrier b2 cond 2 -cyclic |
| barrier b3 cond 2 -cyclic |
| barrier b4 cond 2 -cyclic |
| barrier b5 cond 2 -cyclic |
| |
| server s1 { |
| rxreq |
| txresp |
| } -repeat 500 -start |
| |
| syslog Slg_1 -level info { |
| recv |
| expect ~ "[^:\\[ ]\\[${h1_pid}\\]: .* \"GET /client_c1 HTTP/1.1\"" |
| recv |
| expect ~ "[^:\\[ ]\\[${h1_pid}\\]: .* \"GET /client_c2 HTTP/1.1\"" |
| recv |
| expect ~ "[^:\\[ ]\\[${h1_pid}\\]: .* \"GET /client_c3 HTTP/1.1\"" |
| recv |
| expect ~ "[^:\\[ ]\\[${h1_pid}\\]: .* \"GET /client_c4 HTTP/1.1\"" |
| recv |
| expect ~ "[^:\\[ ]\\[${h1_pid}\\]: .* \"GET /client_c5 HTTP/1.1\"" |
| } -repeat 50 -start |
| |
| # Here are the syslog messages received by Slg_2: |
| syslog Slg_2 -level info { |
| recv |
| expect ~ "[^:\\[ ]\\[${h1_pid}\\]: .* \"GET /client_c6 HTTP/1.1\"" |
| recv |
| expect ~ "[^:\\[ ]\\[${h1_pid}\\]: .* \"GET /client_c8 HTTP/1.1\"" |
| } -repeat 50 -start |
| |
| haproxy h1 -conf { |
| global |
| nbthread 1 |
| |
| defaults |
| mode http |
| option httplog |
| timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" |
| timeout client "${HAPROXY_TEST_TIMEOUT-5s}" |
| timeout server "${HAPROXY_TEST_TIMEOUT-5s}" |
| |
| frontend fe1 |
| bind "fd@${fe_1}" |
| log ${Slg_1_addr}:${Slg_1_port} local0 |
| default_backend be |
| |
| frontend fe2 |
| bind "fd@${fe_2}" |
| log ${Slg_2_addr}:${Slg_2_port} sample 1,3:5 local0 |
| default_backend be |
| |
| backend be |
| server app1 ${s1_addr}:${s1_port} |
| } -start |
| |
| # The following client are started in background and synchronized |
| client c1 -connect ${h1_fe_1_sock} { |
| txreq -url "/client_c1" |
| rxresp |
| expect resp.status == 200 |
| barrier b1 sync |
| barrier b5 sync |
| } -repeat 50 -start |
| |
| client c2 -connect ${h1_fe_1_sock} { |
| barrier b1 sync |
| txreq -url "/client_c2" |
| rxresp |
| expect resp.status == 200 |
| barrier b2 sync |
| } -repeat 50 -start |
| |
| client c3 -connect ${h1_fe_1_sock} { |
| barrier b2 sync |
| txreq -url "/client_c3" |
| rxresp |
| expect resp.status == 200 |
| barrier b3 sync |
| } -repeat 50 -start |
| |
| client c4 -connect ${h1_fe_1_sock} { |
| barrier b3 sync |
| txreq -url "/client_c4" |
| rxresp |
| expect resp.status == 200 |
| barrier b4 sync |
| } -repeat 50 -start |
| |
| client c5 -connect ${h1_fe_1_sock} { |
| barrier b4 sync |
| txreq -url "/client_c5" |
| rxresp |
| expect resp.status == 200 |
| barrier b5 sync |
| } -repeat 50 -start |
| |
| syslog Slg_1 -wait |
| |
| client c1 -wait |
| client c2 -wait |
| client c3 -wait |
| client c4 -wait |
| client c5 -wait |
| |
| # Same test as before but with fe2 frontend. |
| # The following client are started in background and synchronized |
| client c6 -connect ${h1_fe_2_sock} { |
| txreq -url "/client_c6" |
| rxresp |
| expect resp.status == 200 |
| barrier b1 sync |
| barrier b5 sync |
| } -repeat 50 -start |
| |
| client c7 -connect ${h1_fe_2_sock} { |
| barrier b1 sync |
| txreq -url "/client_c7" |
| rxresp |
| expect resp.status == 200 |
| barrier b2 sync |
| } -repeat 50 -start |
| |
| client c8 -connect ${h1_fe_2_sock} { |
| barrier b2 sync |
| txreq -url "/client_c8" |
| rxresp |
| expect resp.status == 200 |
| barrier b3 sync |
| } -repeat 50 -start |
| |
| client c9 -connect ${h1_fe_2_sock} { |
| barrier b3 sync |
| txreq -url "/client_c9" |
| rxresp |
| expect resp.status == 200 |
| barrier b4 sync |
| } -repeat 50 -start |
| |
| client c10 -connect ${h1_fe_2_sock} { |
| barrier b4 sync |
| txreq -url "/client_c10" |
| rxresp |
| expect resp.status == 200 |
| barrier b5 sync |
| } -repeat 50 -start |
| |
| syslog Slg_2 -wait |
| |
| client c6 -wait |
| client c7 -wait |
| client c8 -wait |
| client c9 -wait |
| client c10 -wait |
| |