Jmeter实战轮询(while control)
接口调用顺序就是:
- 调用 POST /api/files 上传一个视频,获得视频 ID
- 调用 POST /api/tasks 创建一个视频解析任务,传入算法 ID 和 视频 ID。 算法ID 是写死的 2,视频ID用第一步返回的。
- 调用 GET /api/tasks/{task_id} 获取任务状态和返回结果ID,轮询等待结果。
- 调用 GET /api/files/{file_id} 下载处理结果文件。
脚本编写步骤:
1. 创建线程组
脚本整体结构如下:
2. 创建事务控制器
3. 添加调试取样器
用于获取上一个接口返回值,作为当前接口的输入
在结果数中查看,调试取样器的响应数据:video_Id_ALL
、task_Id_ALL
、status_ALL
是后续接口中需要传入的变量,可以在后边的接口中引用,引用方式为${变量}
.
4. 添加取样器
开启接口的事务流程:
4.1 调用 POST /api/files 上传一个视频,获得视频 ID
**图中需要注意:**点击文件上传、勾选 对post使用multipart/form-data
,实现视频文件上传;
-
添加Json提取器
获取视频id
-
添加正则提取器
同Json提取器,用于 获取视频id
4.2 调用 POST /api/tasks 创建一个视频解析任务
需要传入算法 ID 和 视频 ID。 算法ID 是写死的 2,视频ID用第一步返回的。
- Http 信息头管理器
User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
Content-Type application/json
Accept */*
Accept-Encoding gzip, deflate
Accept-Language zh-CN,zh-TW;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6
Connection keep-alive
- Json提取器
4.3 调用 GET /api/tasks/{task_id} 获取任务状态和返回结果ID
- Json提取器(获取Status)
- BeanShell后处理器,用于记录轮序次数
设置count变量为1vars.put("count","1");
4.4 接口轮询(获取任务状态和返回结果ID的接口)
- While 控制器
循环条件:循环次数<10 且 status != "FINISHED"
${__javaScript(${count}<10 && "${status_ALL}"!="FINISHED")}
- 固定定时器
轮询间隔10s
4.5 调用 GET /api/files/{file_id} 下载处理结果文件
5. 添加监听器
轮询成功后,获取最终的渲染信息