From 0527639cd9fa96ebe600bb3ba9ac746267c8a68c Mon Sep 17 00:00:00 2001 From: PiBa-NL Date: Fri, 30 Nov 2018 21:01:01 +0100 Subject: [PATCH] REGTEST: lua: check socket functionality from a lua-task Adding a new test /reg-tests/lua/b00004.vtc which checks if the core.tcp() socket basic functions properly when used from a lua-task --- reg-tests/lua/b00004.lua | 44 ++++++++++++++++++++++++++++++++++++++++ reg-tests/lua/b00004.vtc | 34 +++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 reg-tests/lua/b00004.lua create mode 100644 reg-tests/lua/b00004.vtc diff --git a/reg-tests/lua/b00004.lua b/reg-tests/lua/b00004.lua new file mode 100644 index 000000000..3ad14fe57 --- /dev/null +++ b/reg-tests/lua/b00004.lua @@ -0,0 +1,44 @@ + +local vtc_port = 0 + +core.register_service("fakeserv", "http", function(applet) + vtc_port = applet.headers["vtcport"][0] + core.Info("APPLET START") + local response = "OK" + applet:add_header("Server", "haproxy/webstats") + applet:add_header("Content-Length", string.len(response)) + applet:add_header("Content-Type", "text/html") + applet:start_response() + applet:send(response) + core.Info("APPLET DONE") +end) + +local function cron() + -- wait for until the correct port is set through the c0 request.. + while vtc_port == 0 do + core.msleep(1) + end + core.Debug('CRON port:' .. vtc_port) + + local socket = core.tcp() + local success = socket:connect("127.0.0.1", vtc_port) + core.Info("SOCKET MADE ".. (success or "??")) + if success ~= 1 then + core.Info("CONNECT SOCKET FAILED?") + return + end + local request = "GET / HTTP/1.1\r\n\r\n" + core.Info("SENDING REQUEST") + socket:send(request) + local result = "" + repeat + core.Info("4") + local d = socket:receive("*a") + if d ~= nil then + result = result .. d + end + until d == nil or d == 0 + core.Info("Received: "..result) +end + +core.register_task(cron) \ No newline at end of file diff --git a/reg-tests/lua/b00004.vtc b/reg-tests/lua/b00004.vtc new file mode 100644 index 000000000..91b5dde3d --- /dev/null +++ b/reg-tests/lua/b00004.vtc @@ -0,0 +1,34 @@ +varnishtest "Lua: check socket functionality from a lua-task" +feature ignore_unknown_macro + +#REQUIRE_OPTIONS=LUA +#REQUIRE_VERSION=1.6 + +server s1 { + rxreq + txresp -bodylen 20 +} -start + +haproxy h1 -conf { + global + lua-load ${testdir}/b00004.lua + + frontend fe1 + mode http + bind "fd@${fe1}" + default_backend b1 + + backend b1 + mode http + http-request use-service lua.fakeserv + +} -start + +client c0 -connect ${h1_fe1_sock} { + txreq -url "/" -hdr "vtcport: ${s1_port}" + rxresp + expect resp.status == 200 +} -run + + +server s1 -wait \ No newline at end of file