加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

WRK的使用-lua脚本POST请求(静态数据)

发布时间:2020-12-14 21:42:53 所属栏目:大数据 来源:网络整理
导读:HTTP_prot = { ?????? "/gateway/services", ??? "/gateway/services", ? ?? } ? --接口类型 HTTP_type = { ??? "POST", ?????? "POST", ? } ? ? ? --参数 HTTP_body = { ? ?????? ‘{"phone": "19012000335"}‘, ??? ‘{"phone": "19012000335","code": "15

HTTP_prot = {

?????? "/gateway/services",

??? "/gateway/services",

? ??

}

?

--接口类型

HTTP_type = {

??? "POST",

?????? "POST",

?

}

?

?

?

--参数

HTTP_body = {

?

?????? ‘{"phone": "19012000335"}‘,

??? ‘{"phone": "19012000335","code": "1569"}‘,

?????? -- 双中括号里面不转译

}

-----------如果有多个接口,名称、类型、参数必须按照相同的顺序。

math.randomseed(os.time())

?

function changeData(tal,order)

?????? local body = string.format()

?

?

?

?

end

?

local reqIndex =0

numLink = 0?? --记录连接数

numHTTP = 1?? --记录第几个接口

numData = "19012"

lenthHTTP = 0

respError = 0?? --变量,用于记录错误请求的数量

local threads = {}

--测试开始 执行一次

function setup(thread)

--??? thread:set("id",counter)

??? table.insert(threads,thread)

?? ? reqIndex = reqIndex +1;?????

?????? thread:set("index",reqIndex);

?

end

?

--每个线程执行一次

init = function()

?

??? local r = {}

??? local path = ""?? -- 局部变量(不加local 是全局变量)

??? local method = "GET" -- 默认接口类型是GET

??????

??? -- header 头

??? -- wrk.headers["Hash"]= "85280aa135bbd0108dd6aa424565a"

??? -- wrk.headers["Token"]= ""

??

??? for i,v in ipairs(HTTP_prot) do -- 键从1 开始 非 0

??????? path = v??? -- 接口路径

??????? method = HTTP_type[i]? -- method 获得接口类型

?

?????? -----根据接口类型,判断进入那个判断-------

??????? if method == "POST" then? --判断接口类型为“POST”

???????????????????? --POST 参数json格式

??????????? wrk.headers["content-type"]= "application/json"

???????????????????? --POST Token参数

?

???????????? ??? wrk.body = HTTP_body[i] --获得参数

??????? end

??????? if method == "GET" and? HTTP_body[i] ~= "" then --判断接口类型为“GET”,并且参数不为空

???????????????????? path = v .. "?" ..HTTP_body[i]

??????? end

?--???? ??io.write(method,"---",HTTP_body[i],"----",path,"n") -- 打印请求方式(1个线程会打印一次),参数,路径(不含域名)

??????? r[i] =? wrk.format(method,path)?

?????????????

??? end

??? req = table.concat(r)

??????

end

?

?

--每个请求执行一次在请求开始之前

request = function()

?

?

??? return req

end

???

--测试结果,每个链接返回都会执行一次

response = function(status,headers,body)?

?

?????? --判断返回结果是否正确,如果返回结果错误则打印返回结果,进入LOG.txt文件

?????? if(not string.find(body,‘"code":0‘)) then

????????????? respError = respError + 1

????????????? file = io.open("LOG.txt","a")

????????????? file:write(body.."n")

????????????? file:flush()

?????? end

end?

?

-- 测试最终结果,在测试结束执行

done = function(summary,latency,requests)

? local x4 = 0

? for index,thread in ipairs(threads) do

?????? x4 = x4 + thread:get("respError")

? end

?

?

?????? local durations = summary.duration / 1000000??? --执行时间,单位-秒

?????? local errors = summary.errors.status??????????????? --http status(状态)不是200,300开头的

?????? local requests = summary.requests???????????????????????? --总的请求数

?????? local valid = requests - x4?????????????????????????????? --有效请求数 = 总的请求数 - 错误请求数

?????? local connect = summary.errors.connect

?????? local read1 = summary.errors.read

?????? local write1 = summary.errors.write

?????? local timeout = summary.errors.timeout

?????? local errorRate = (x4/requests)*100

?????? errorRate = string.format("%.1f",errorRate)

?

?????? io.write("+++++++++++++++++++++++++++++++++++++n")

?????? io.write(" 测试持续时间: "..string.format("%.2f",durations).."s".."n")

?????? io.write(" 平均响应时间: "..string.format("%.2f",latency.mean / 1000).."ms".."n")

?????? io.write(" 最小响应时间: "..(latency.min / 1000).."ms".."n")

?????? io.write(" 最大响应时间: "..(latency.max / 1000).."ms".."n")

?????? io.write(" 全部请求数量: "..summary.requests.."n")

?????? io.write(" 错误请求数量: "..x4.."n")

?????? io.write(" 有效请求数量: "..valid.."n"? )

?????? io.write(" 错误率: "..errorRate.."%n")

?????? io.write(" 每秒查询率: "..string.format("%.2f",valid / durations).."n"? )

?????? io.write("+++++++++++++++++++++++++++++++++++++n")???????

?

end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读