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_c7 HTTP/1.1\""
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: .* \"GET /client_c10 HTTP/1.1\""
} -repeat 50 -start

haproxy h1 -conf {
	global
		nbthread 1

	defaults
		mode http
		option httplog
		timeout connect 1000
		timeout client  1000
		timeout server  1000

	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

