Jmeter令牌刷新

时间:2019-11-06 16:24:40

标签: jmeter

我找到了主题Refreshing Auth Token while keep the requests running in JMeter 3.3。我面临着相同的任务-令牌每x次刷新一次,其他请求同时发送。我已经看到作者找到了解决方案。但是,如果您能分享逻辑,我将不胜感激。我在Jmeter中尝试了全局属性,但似乎为所有用户设置了一个令牌。已经添加了计时器,但是我得到一个用于会话的令牌。也许我们有一个针对Jmeter 5.x的新解决方案。谢谢。

2 个答案:

答案 0 :(得分:0)

解决方案将是相同的,您只需要对其稍作修改并使用__threadNum() function即可创建特定于线程(虚拟用户)的属性。

类似的东西:

${__setProperty(token_${__threadNum},variable containing the token,)}

将生成以下JMeter属性:

token_0=token for the first virtual user
token_1=token for the second virtual user
etc.

可以类似地使用__P() function来访问,例如:

${__P(token_${__threadNum},)}

更多信息:Here’s What to Do to Combine Multiple JMeter Variables

答案 1 :(得分:0)

非常感谢!我已经在一个线程组中使用以下逻辑实现了脚本:

  1. 设置var“触发器” = 60秒(令牌刷新间隔,每分钟);
  2. 登录用户;
  3. 获取令牌请求;并执行动作:
    • 提取令牌并保存到vars;
    • 将“ TokenTime”保存到变量(其中,“ CSV”中的“登录”是属性的名称);
    • 计算“ TokenDiffTime” =“ TimeNow- TokenTime”->使用唯一名称另存为属性(唯一名称可以是字符串“ Login” +“ TimeDiff”-其中“ Login”是从CSV和“ TimeDiff”动态登录) –仅是静态字符串;属性名称的示例是“ User1TimeDiff”)。
  4. 具有逻辑的循环控制器:
    • 如果是控制器(令牌是真的吗?->检查“ TokenDiffTime”> =“触发器”)->调用刷新令牌请求;提取实际令牌。
    • 调用App请求;使用实际令牌。
    • 如果是控制器(令牌是真的吗?->检查“ TokenDiffTime”> =“触发器”)->调用刷新令牌请求;提取实际令牌。
    • 调用App请求;使用实际令牌。

因此,这种逻辑考虑了响应时间延迟,并且使用实际令牌调用了新的应用程序请求。 “触发器”是设置令牌刷新间隔的灵活值。希望这样的话题对某人有用。