Jmeter 使用中频控制器

Jmeter 使用中频控制器,jmeter,code-duplication,jsr223,Jmeter,Code Duplication,Jsr223,我想在每个HTTP请求之前检查一个条件 我有一个访问令牌和一个刷新令牌 一旦访问令牌过期,将调用刷新令牌端点以生成新的访问令牌。(oauth2) 所以在每次HTTP请求之后,我想检查访问令牌是否过期。如果在每个HTTP请求之后添加jmeter if控制器,就可以实现这一点。是否有一种全局设置IF控制器的方法(无需在每次请求前进行检查) 我使用JSR223后处理器检查到期时间,并根据结果执行IF控制器。我希望全局设置此IF控制器以避免重复 JSR223后处理器 import java.text.S

我想在每个HTTP请求之前检查一个条件

我有一个访问令牌和一个刷新令牌

一旦访问令牌过期,将调用刷新令牌端点以生成新的访问令牌。(oauth2)

所以在每次HTTP请求之后,我想检查访问令牌是否过期。如果在每个HTTP请求之后添加jmeter if控制器,就可以实现这一点。是否有一种全局设置IF控制器的方法(无需在每次请求前进行检查)

我使用JSR223后处理器检查到期时间,并根据结果执行IF控制器。我希望全局设置此IF控制器以避免重复

JSR223后处理器

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,)}
您可以使用并将If控制器和JSR223放入其中以供重用

模块控制器提供了一种机制,用于在运行时将测试计划片段替换到当前测试计划中

测试计划片段由一个控制器和其中包含的所有测试元素(采样器等)组成。片段可以位于任何线程组中。如果片段位于线程组中,则可以禁用其控制器,以防止除模块控制器外的片段运行。或者,您可以将片段存储在虚拟线程组中,并禁用整个线程组

您可以使用并将If控制器和JSR223放入其中以供重用

模块控制器提供了一种机制,用于在运行时将测试计划片段替换到当前测试计划中

测试计划片段由一个控制器和其中包含的所有测试元素(采样器等)组成。片段可以位于任何线程组中。如果片段位于线程组中,则可以禁用其控制器,以防止除模块控制器外的片段运行。或者,您可以将片段存储在虚拟线程组中,并禁用整个线程组


谢谢你的回复。所以,如果我使用测试片段存储JSR223和if控制器,我如何在每个HTTP请求之后调用它们,我有大约20个请求。我想,我必须在每个HTTP请求之前添加一个模块控制器,对吗?所以,如果我有20个请求,我需要添加20个模块控制器。使用so是一种好的做法吗?@user3153582是的,它只是指向测试框架,类似于调用方法。非常感谢:)非常感谢您的帮助。@user3153582如果有帮助,您可以接受答案,请参阅感谢您的回复。所以,如果我使用测试片段存储JSR223和if控制器,我如何在每个HTTP请求之后调用它们,我有大约20个请求。我想,我必须在每个HTTP请求之前添加一个模块控制器,对吗?所以,如果我有20个请求,我需要添加20个模块控制器。使用so是一种好的做法吗?@user3153582是的,它只是指向测试fragement,类似于调用方法非常感谢:)非常感谢您的帮助。@user3153582如果答案有帮助,您可以接受,请参阅