varnishtest "Health-checks: http-check send test"
#REGTEST_TYPE=slow
#REQUIRE_VERSION=2.2
feature ignore_unknown_macro

# This script tests HTTP health-checks and more particularly the "http-check
# send" directive.

server s1 {
    rxreq
    expect req.method == OPTIONS
    expect req.url == /
    expect req.proto == HTTP/1.0
    txresp
} -start

server s2 {
    rxreq
    expect req.method == GET
    expect req.url == /test
    expect req.proto == HTTP/1.1
    txresp
} -start

server s3 {
    rxreq
    expect req.method == OPTIONS
    expect req.url == /
    expect req.proto == HTTP/1.0
    expect req.http.hdr == <undef>
    expect req.http.host == <undef>
    expect req.http.x-test == <undef>
    expect req.bodylen == 0
    txresp
} -start

server s4 {
    rxreq
    expect req.method == GET
    expect req.url == /status
    expect req.proto == HTTP/1.1
    expect req.http.hdr == <undef>
    expect req.http.host == "my-www-host"
    expect req.http.x-test == true
    expect req.http.content-length == 4
    expect req.bodylen == 4
    expect req.body == "test"
    txresp
} -start

server s5 {
    rxreq
    expect req.method == OPTIONS
    expect req.url == /
    expect req.proto == HTTP/1.0
    expect req.http.hdr == <undef>
    expect req.http.host == "other-www-host"
    expect req.http.x-test == <undef>
    expect req.http.x-new-test == true
    expect req.http.content-length == 10
    expect req.bodylen == 10
    expect req.body == "other test"
    txresp
} -start


syslog S1 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Proxy be1 started."
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/srv succeeded.*code: 200"
} -start

syslog S2 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Proxy be2 started."
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be2/srv succeeded.*code: 200"
} -start

syslog S3 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Proxy be3 started."
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be3/srv succeeded.*code: 200"
} -start

syslog S4 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Proxy be4 started."
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be4/srv succeeded.*code: 200"
} -start

syslog S5 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Proxy be5 started."
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be5/srv succeeded.*code: 200"
} -start


haproxy h1 -conf {
    defaults
        mode http
        timeout client 1s
        timeout server 1s
        timeout connect 200ms
        option httpchk
        option log-health-checks

    backend be1
        log ${S1_addr}:${S1_port} len 2048 local0
        server srv ${s1_addr}:${s1_port} check inter 200ms rise 1 fall 1

    backend be2
        log ${S2_addr}:${S2_port} len 2048 local0
        option httpchk GET /test HTTP/1.1
        server srv ${s2_addr}:${s2_port} check inter 200ms rise 1 fall 1

    defaults
        mode http
        timeout client 1s
        timeout server 1s
        timeout connect 200ms
        option httpchk GET /status HTTP/1.1\r\nHdr:\ must-be-removed
        option log-health-checks
        http-check send hdr Host "my-www-host" hdr X-test true body "test"

    backend be3
        option httpchk
        log ${S3_addr}:${S3_port} len 2048 local0
        server srv ${s3_addr}:${s3_port} check inter 200ms rise 1 fall 1

    backend be4
        log ${S4_addr}:${S4_port} len 2048 local0
        server srv ${s4_addr}:${s4_port} check inter 200ms rise 1 fall 1

    backend be5
        log ${S5_addr}:${S5_port} len 2058 local0
        http-check send hdr Host "other-www-host" hdr X-New-Test true body "other test"
        server srv ${s5_addr}:${s5_port} check inter 200ms rise 1 fall 1

} -start

syslog S1 -wait
syslog S2 -wait
syslog S3 -wait
syslog S4 -wait
syslog S5 -wait
