首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wrk执行Lua脚本

wrk执行Lua脚本
EN

Stack Overflow用户
提问于 2017-09-15 17:24:43
回答 1查看 2.6K关注 0票数 3

我的问题是当我跑的时候

代码语言:javascript
复制
wrk -d10s -t20 -c20 -s /mnt/c/xxxx/post.lua http://localhost:xxxx/post

只执行一次的Lua脚本?它将只在URL处将一个项目放入数据库。

代码语言:javascript
复制
-- example HTTP POST script which demonstrates setting the
-- HTTP method, body, and adding a header
math.randomseed(os.time())
number =  math.random()
wrk.method = "POST"
wrk.headers["Content-Type"] = "application/json"        
wrk.body = '{"name": "' .. tostring(number) .. '", "title":"test","enabled":true,"defaultValue":false}'

有没有办法让它动态创建'number‘变量,并不断向数据库中添加新项,直到'wrk’命令完成测试?或者它会在测试期间一直执行脚本,创建新的'number‘变量并将其插入到'wrk.body’中?

抱歉,我只看了Lua几个小时。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-09-15 17:56:26

当你这样做的时候

代码语言:javascript
复制
number = math.random

您没有将number设置为随机数,而是将其设置为等于函数math.random。要将变量设置为函数返回的值,该行应为

代码语言:javascript
复制
number = math.random()

您可能还需要设置一个随机种子(使用math.randomseed()函数和您选择的适当变量参数-系统时间很常见),以避免math.random()在每次运行脚本时都产生相同的结果。这应该在第一次调用math.random之前完成。

因为脚本很短,所以在这里系统时间可能不是一个很好的种子选择(脚本运行的速度比os.time()的值变化快得多,所以每次连续运行几次都会得到相同的结果)。从/dev/urandom读取几个字节应该会得到更好的结果。

您也可以使用/dev/urandom直接生成一个数字,而不是将其作为种子提供给math.random。如下面的代码所示,取自this answer。这不是一个安全的随机数生成器,但对于您的目的,它将是很好的。

代码语言:javascript
复制
urand = assert (io.open ('/dev/urandom', 'rb'))
rand  = assert (io.open ('/dev/random', 'rb'))

function RNG (b, m, r)
  b = b or 4
  m = m or 256
  r = r or urand
  local n, s = 0, r:read (b)

  for i = 1, s:len () do
    n = m * n + s:byte (i)
  end

  return n
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46236165

复制
相关文章

相似问题

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