使用中频控制器

时间:2019-08-27 17:07:06

标签: jmeter code-duplication jsr223

我想在每个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,)}

1 个答案:

答案 0 :(得分:0)

您可以使用Module Controller并将If Controller和JSR223放在Test fragment中以供重用

  

Module Controller提供了一种在运行时将测试计划片段替换为当前测试计划的机制。

     

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