我想通过执行许多包含文件正文的 HTTP PUT 请求来对应用程序进行基准测试。我有很多文件,每个文件只需要发送一次。
现在我正在尝试使用 WRK 来做到这一点。我找到的一种方法是将我的数据拆分为几个 repo,给每个 WRK 线程一个 repo。但我的大问题是如何将文件作为 PUT 参数传递(基本上是做一个 curl -T)。现在,我通过在 LUA 脚本中重新编辑文件并将内容放入 wrk.body 中来做到这一点,这不是很高效(太慢)。
这是我用来使用文件参数执行 PUT 的部分代码:
function read_file(path)
local file, errorMessage = io.open(path, "r")
if not file then
error("Could not read the file: "..path.." Error : " .. errorMessage .. "\n")
end
local content = file:read "*all"
file:close()
return content
end
request = function()
local body = read_file("/data/"..id.."/"..files[counter])
counter = counter + 1
local Boundary = "----WebKitFormBoundaryePkpFF7tjBAqx29L"
wrk.headers["Content-Type"] = "multipart/form-data; boundary=" .. Boundary
return wrk.format("PUT", url, wrk.headers,body)
end
我只想知道是否有更有效的方法可以使用 WRK 将文件添加为 PUT(或 POST)HTTP 请求。