首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wrk with lua脚本-生成具有不同正文的多个POST请求

wrk with lua脚本-生成具有不同正文的多个POST请求
EN

Stack Overflow用户
提问于 2021-07-21 16:00:22
回答 2查看 519关注 0票数 0

我为wrk编写了一些lua脚本来生成多个POST请求。我的问题是我的脚本只对第一个请求起作用。所有后续生成的请求都与第一个请求完全相同。我希望为每个POST请求生成新的用户变量:

代码语言:javascript
复制
lowerCase = "abcdefghijklmnopqrstuvwxyz" 
characterSet = lowerCase
   
keyLength = 13
user = ""    
math.randomseed(os.time())
for i = 1, keyLength do
rand = math.random(#characterSet)
user = user .. string.sub(characterSet, rand, rand )
end


wrk.path  = "/somepath"
wrk.method = "POST"
wrk.body   = [[{"username":"]].. user .. [[,"password":"somepassword"}]]
wrk.headers["Content-Type"] = "application/json"
EN

回答 2

Stack Overflow用户

发布于 2021-07-30 21:06:12

试试这样的东西。它应该执行request3 ~50%的时间,另外两个~25%的时间。干杯!

代码语言:javascript
复制
names = { "Maverick", "Goose", "Viper", "Iceman", "Merlin", "Sundown", "Cougar", "Hollywood", "Wolfman", "Jester" }

request1 = function()
    headers = {}
    headers["Content-Type"] = "application/json"
    body = '{"name": ' .. names[math.random(#names)] .. '}'
    return wrk.format("POST", "/test1", headers, body)
end

request2 = function()
    headers = {}
    headers["Content-Type"] = "application/json"
    body = '{"name": ' .. names[math.random(#names)] .. '}'
    return wrk.format("POST", "/test2", headers, body)
end

request3 = function()
    headers = {}
    headers["Content-Type"] = "application/json"
    body = '{"name": ' .. names[math.random(#names)] .. '}'
    return wrk.format("GET", "/test3", headers, body)
end

requests = {}
requests[0] = request1
requests[1] = request2
requests[2] = request3
requests[3] = request3

request = function()
    return requests[math.random(0, 3)]()
end

response = function(status, headers, body)
    if status ~= 200 then
        io.write("------------------------------\n")
        io.write("Response with status: ".. status .."\n")
        io.write("------------------------------\n")
        io.write("[response] Body:\n")
        io.write(body .. "\n")
    end
end
票数 1
EN

Stack Overflow用户

发布于 2021-07-21 16:39:38

我不熟悉wrk。

我猜您在一秒钟内多次运行该代码。由于os.time具有第二个精确度,因此在第二个精确度内,您将拥有相同的随机种子,因此具有相同的用户名。

通过查看脚本示例,我会说脚本只评估一次,或者每个线程可能只评估一次。这些示例实现的函数将由wrk调用。为每个请求定义这些函数是没有意义的。

在您的脚本中添加打印以确保。

下面是一个计算请求数的示例。您可能可以将代码放入该函数中

代码语言:javascript
复制
function request()
   requests = requests + 1
   return wrk.request()
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68465947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档