varnishtest "Lua: check httpclient functionality from a lua-task"

# A request if first made with c0 with the port of s1 and s2 so the httpclient
# can generate its URI with it.
#
# This reg-test sends a payload with the httpclient to s1, s1 returns another
# payload. The 2nd lua httpclient sends back the payload from s1 to s2.
#

feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev7)'"
feature ignore_unknown_macro

#REQUIRE_OPTIONS=LUA

server s1 {
    rxreq
    txresp -bodylen 54000
    expect req.body ~ ".*0 ABCDEFGHIJKLMNOPQRSTUVWXYZ.*"
    expect req.body ~ ".*500 ABCDEFGHIJKLMNOPQRSTUVWXYZ.*"
    expect req.body ~ ".*1000 ABCDEFGHIJKLMNOPQRSTUVWXYZ.*"
    expect req.body ~ ".*1500 ABCDEFGHIJKLMNOPQRSTUVWXYZ.*"
    expect req.body ~ ".*2000 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
} -start

server s2 {
   rxreq
   txresp
   expect req.bodylen == 54000
} -start

server s3 {
   rxreq
   txresp -bodylen 54000
   expect req.method == "GET"
   expect req.http.host == "foobar.haproxy.local"
} -start


haproxy h1 -conf {
    global
        lua-load ${testdir}/lua_httpclient.lua

    frontend fe1
        mode http
        bind "fd@${fe1}"
        default_backend b1

    backend b1
        mode http
        http-request use-service lua.fakeserv

   listen li1
       mode http
       bind unix@${testdir}/srv3
       server srv3 ${s3_addr}:${s3_port}

} -start

client c0 -connect ${h1_fe1_sock} {
    txreq -url "/" -hdr "vtcport: ${s1_port}" -hdr "vtcport2: ${s2_port}" -hdr "vtcport3: unix@${testdir}/srv3"
    rxresp
    expect resp.status == 200
} -run


server s1 -wait
server s2 -wait
server s3 -wait
