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. 创建线程组
脚本整体结构如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/2f4a611395ce474bb1711d370a0538f2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16)
2. 创建事务控制器
![在这里插入图片描述](https://img-blog.csdnimg.cn/388e6594ca424d80a4d7e14c90f188d4.png)
3. 添加调试取样器
用于获取上一个接口返回值,作为当前接口的输入 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1432c1f3f684412f8b11e6a4ee096c86.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16) 在结果数中查看,调试取样器的响应数据: ![在这里插入图片描述](https://img-blog.csdnimg.cn/3e8ad68f81944d5d97db91f65315538f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16) video_Id_ALL 、task_Id_ALL 、status_ALL 是后续接口中需要传入的变量,可以在后边的接口中引用,引用方式为${变量} .
4. 添加取样器
开启接口的事务流程:
4.1 调用 POST /api/files 上传一个视频,获得视频 ID
![在这里插入图片描述](https://img-blog.csdnimg.cn/453b783d3c1b4940899124668cb50f43.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/678d15a2f21c4d25bc0bae2af13b7a8d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16)
**图中需要注意:**点击文件上传、勾选 对post使用multipart/form-data ,实现视频文件上传;
- 添加Json提取器
获取视频id ![在这里插入图片描述](https://img-blog.csdnimg.cn/62751005896d4977be15d2134bd5bbdc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16) - 添加正则提取器
同Json提取器,用于 获取视频id ![在这里插入图片描述](https://img-blog.csdnimg.cn/71ffbf2807ae485dbce6ec7310bad08d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16)
4.2 调用 POST /api/tasks 创建一个视频解析任务
需要传入算法 ID 和 视频 ID。 算法ID 是写死的 2,视频ID用第一步返回的。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2d3183495ae74984a11ad29afa9baa90.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4f4f2aa6b9e347f19f6adf0fa239b6b3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/399491d22bb04c688c8a5ad6fabb4a8a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16)
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提取器
![在这里插入图片描述](https://img-blog.csdnimg.cn/7bb974616f3045789f5a61d17c1338a9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16)
4.3 调用 GET /api/tasks/{task_id} 获取任务状态和返回结果ID
![在这里插入图片描述](https://img-blog.csdnimg.cn/8f775f50963347cfbce205e19b8cf75a.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/3a178e68ff2445f9be3992814187e51b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16)
- Json提取器(获取Status)
![在这里插入图片描述](https://img-blog.csdnimg.cn/b39f2498d15d4a60a834404c4ed50896.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16) - BeanShell后处理器,用于记录轮序次数
设置count变量为1![在这里插入图片描述](https://img-blog.csdnimg.cn/c508a056d64e4ed39ca6d42c46130e18.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16) vars.put("count","1");
4.4 接口轮询(获取任务状态和返回结果ID的接口)
![在这里插入图片描述](https://img-blog.csdnimg.cn/ff57c59f4671456aaadd685cf4aec5f8.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2ae084de5600434e9568fb912debda83.png) 循环条件:循环次数<10 且 status != "FINISHED"
${__javaScript(${count}<10 && "${status_ALL}"!="FINISHED")}
![在这里插入图片描述](https://img-blog.csdnimg.cn/0da40cacd4b048db9aa84a686e40b98c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16) - 固定定时器 轮询间隔10s ![在这里插入图片描述](https://img-blog.csdnimg.cn/59336d4ef7474fc689b096bc4dc182d7.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/259368dc53384faca2b83e5b14b98693.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/45ecf2693da04b0ca4e292626dd5ddac.png)
4.5 调用 GET /api/files/{file_id} 下载处理结果文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/f01ef725ccb045a98783ab299c9cc5ad.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/17fdd08dd8014ca3b4e0ed08fb649ca6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16)
5. 添加监听器
轮询成功后,获取最终的渲染信息 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a2a2f5e7645143148970e8dd98bdb131.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKn5rW35LqM6Ziz,size_20,color_FFFFFF,t_70,g_se,x_16)
|