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}\\]: Health check for server be1/srv succeeded.*code: 200"
} -start

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

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

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

syslog S5 -level notice {
    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
