# commit 7b6cc52784526c32efda44b873a4258d3ae0b8c7
# BUG/MINOR: lua: Bad HTTP client request duration.
#
# HTTP LUA applet callback should not update the date on which the HTTP client requests
# arrive. This was done just after the LUA applet has completed its job.
#
# This patch simply removes the affected statement. The same fix has been applied
# to TCP LUA applet callback.
#
# To reproduce this issue, as reported by Patrick Hemmer, implement an HTTP LUA applet
# which sleeps a bit before replying:
#
#   core.register_service("foo", "http", function(applet)
#       core.msleep(100)
#       applet:set_status(200)
#       applet:start_response()
#   end)
#
# This had as a consequence to log %TR field with approximately the same value as
# the LUA sleep time.

varnishtest "LUA bug"
#REQUIRE_OPTIONS=LUA
#REGTEST_TYPE=bug

feature ignore_unknown_macro

syslog Slog {
    recv info
    expect ~ "[^:\\[ ]\\[[0-9]*\\]: Ta=[0-9]* Tc=[0-9]* Td=[0-9]* Th=[0-9]* Ti=[0-9]* Tq=[0-9]* TR=[0-9]* Tr=[0-9]* Tt=[0-9]* Tw=[0-9]*$"

    recv info
    expect ~ "[^:\\[ ]\\[[0-9]*\\]: Tc=[0-9]* Td=[0-9]* Th=[0-9]* Tt=[0-9]* Tw=[0-9]*$"
} -start

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

    defaults
        timeout client 1s
        timeout server 1s
        timeout connect 1s

    frontend f1
        mode http
        ${no-htx} option http-use-htx
        bind "fd@${f1}"
        log ${Slog_addr}:${Slog_port} daemon
        log-format Ta=%Ta\ Tc=%Tc\ Td=%Td\ Th=%Th\ Ti=%Ti\ Tq=%Tq\ TR=%TR\ Tr=%Tr\ Tt=%Tt\ Tw=%Tw
        default_backend b1

    backend b1
        mode http
        ${no-htx} option http-use-htx
        http-request use-service lua.foo.http

    frontend f2
        mode tcp
        bind "fd@${f2}"
        log ${Slog_addr}:${Slog_port} daemon
        log-format Tc=%Tc\ Td=%Td\ Th=%Th\ Tt=%Tt\ Tw=%Tw

        tcp-request inspect-delay 1s
        tcp-request content use-service lua.foo.tcp
} -start

client c1 -connect "${h1_f1_sock}" {
    txreq
    rxresp
} -run

client c2 -connect "${h1_f2_sock}" {
    txreq
    rxresp
} -run

syslog Slog -wait
