From: William Lallemand Date: Thu, 28 Oct 2021 13:57:33 +0000 (+0200) Subject: REGTESTS: lua: test httpclient with body streaming X-Git-Tag: v2.5-dev12~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=207f0cb3bece1f47caa0f2bc6929a76b5a93b34b;p=thirdparty%2Fhaproxy.git REGTESTS: lua: test httpclient with body streaming Improve the httpclient reg-tests to test the streaming, The regtest now sends a big payload to vtest, then receive a payload from vtest and send it again. --- diff --git a/reg-tests/lua/lua_httpclient.lua b/reg-tests/lua/lua_httpclient.lua index 08103d5432..a79dfb2d15 100644 --- a/reg-tests/lua/lua_httpclient.lua +++ b/reg-tests/lua/lua_httpclient.lua @@ -1,8 +1,10 @@ local vtc_port = 0 +local vtc_port2 = 0 core.register_service("fakeserv", "http", function(applet) vtc_port = applet.headers["vtcport"][0] + vtc_port2 = applet.headers["vtcport2"][0] core.Info("APPLET START") local response = "OK" applet:add_header("Server", "haproxy/webstats") @@ -22,14 +24,20 @@ local function cron() local body = "" - for i = 0, 200 do + for i = 0, 2000 do body = body .. i .. ' ABCDEFGHIJKLMNOPQRSTUVWXYZ\n' end - + core.Info("First httpclient request") local httpclient = core.httpclient() local response = httpclient:post{url="http://127.0.0.1:" .. vtc_port, body=body} - core.Info("Received: " .. response.body) + + body = response.body + + core.Info("Second httpclient request") + local httpclient2 = core.httpclient() + local response2 = httpclient2:post{url="http://127.0.0.1:" .. vtc_port2, body=body} + end core.register_task(cron) diff --git a/reg-tests/lua/lua_httpclient.vtc b/reg-tests/lua/lua_httpclient.vtc index 6d68ffbe2e..a67e4bc00b 100644 --- a/reg-tests/lua/lua_httpclient.vtc +++ b/reg-tests/lua/lua_httpclient.vtc @@ -1,4 +1,12 @@ 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 @@ -6,7 +14,14 @@ feature ignore_unknown_macro server s1 { rxreq - txresp -bodylen 20 + txresp -bodylen 200 + expect req.body ~ ".*2000 ABCDEFGHIJKLMNOPQRSTUVWXYZ" +} -start + +server s2 { + rxreq + txresp + expect req.bodylen == 200 } -start haproxy h1 -conf { @@ -25,10 +40,11 @@ haproxy h1 -conf { } -start client c0 -connect ${h1_fe1_sock} { - txreq -url "/" -hdr "vtcport: ${s1_port}" + txreq -url "/" -hdr "vtcport: ${s1_port}" -hdr "vtcport2: ${s2_port}" rxresp expect resp.status == 200 } -run server s1 -wait +server s2 -wait