jmeter - 使用中频控制器
问题描述
我想在每个 HTTP 请求之前检查一个条件。
我有一个访问令牌和一个刷新令牌。
一旦访问令牌过期,就会调用刷新令牌端点来生成新的访问令牌。(oauth2)。
因此,在每次 HTTP 请求之后,我都想检查访问令牌是否已过期。如果我在每个 HTTP 请求之后添加一个 jmeter IF 控制器,就可以实现这一点。有没有办法全局设置 IF 控制器(在每个请求之前不检查)。
我使用 JSR223 后处理器检查到期时间,并根据结果执行 IF 控制器。我想全局设置这个 IF 控制器以避免重复。
JSR 223 后处理器
import java.text.SimpleDateFormat;
import java.util.*;
import org.apache.jmeter.util.JMeterUtils;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
long expiryTime = sdf.parse(vars.get("expiry_time")).getTime();
long currentTime = sdf.parse(vars.get("time")).getTime();
long timeleft = currentTime - expiryTime;
vars.putObject("isExpired",timeleft);
每个 HTTP 请求之前的 IF 控制器条件
${__jexl3(${isExpired}>0,)}
解决方案
您可以使用Module Controller并将您的 If Controller 和 JSR223 放在Test 片段中以供重用
模块控制器提供了一种在运行时将测试计划片段替换为当前测试计划的机制。
测试计划片段由控制器和其中包含的所有测试元素(采样器等)组成。片段可以位于任何线程组中。如果片段位于线程组中,则可以禁用其控制器以防止片段在模块控制器之外运行。或者您可以将片段存储在虚拟线程组中,并禁用整个线程组。
推荐阅读
- javascript - Reactjs 在嵌套函数上更改状态
- laravel - 编辑模型后背包 Laravel 管理员错误地重定向
- assembly - 64 组装中的 Imul
- excel - Excel 数字格式数据
- excel - excel VBA:在单元格而不是公式中填充结果 - 加快处理速度
- python-3.x - 由于 cron 作业导致的高 CPU 使用率问题
- apache-kafka - 在 Kafka-Connect 中自动重新连接失败的任务
- javascript - jQuery悬停不允许光标进入下拉菜单
- typescript - 比较两个具有不同精度打字稿火力的数字
- java - 没有版本声明的 Gradle 依赖项无法解析