Time 如何在特定时间过后在JMeter中进行API调用

Time 如何在特定时间过后在JMeter中进行API调用,time,jmeter,Time,Jmeter,我在JMeter脚本中遇到以下情况: 用户获取访问令牌并登录 50在系统中获取API 50条线 循环设置为永久 持续时间设置为10800秒(3小时) 用户获取令牌的登录方法被放置在一次性控制器中,以便每个线程只执行一次登录 用户在60分钟内超时并自动注销 存在获取新访问令牌的刷新令牌方法 我需要使用JMeter执行压力测试,使用50个线程并运行3个小时。问题是,如果50个线程正在运行,它们将在60分钟后开始超时 现在,如果我在50次API调用之后放置Refresh Token方法来获取新的访问令

我在JMeter脚本中遇到以下情况:

  • 用户获取访问令牌并登录
  • 50在系统中获取API
  • 50条线
  • 循环设置为永久
  • 持续时间设置为10800秒(3小时)
  • 用户获取令牌的登录方法被放置在一次性控制器中,以便每个线程只执行一次登录
  • 用户在60分钟内超时并自动注销
  • 存在获取新访问令牌的刷新令牌方法
  • 我需要使用JMeter执行压力测试,使用50个线程并运行3个小时。问题是,如果50个线程正在运行,它们将在60分钟后开始超时


    现在,如果我在50次API调用之后放置Refresh Token方法来获取新的访问令牌,那么有没有一种方法可以在接近60分钟执行时调用此方法,例如:每55分钟调用一次Refresh Token方法?

    我尝试处理您的场景。我在分享——我在理解你的情景后所做的事情

    在下面的屏幕截图中,您可以看到2个线程,其中1个身份验证请求仅通过一个控制器启动。一段时间后,再次发送身份验证请求

    方法:-

  • 设置用户定义的变量,如下所示:-
  • 2.然后在请求下使用JSR223后处理器执行以下代码

    def start_Time = vars.get("startTime")
    log.info "start_Time>>>>>>>"+start_Time
    
    long currentTime = ${__time(,)}
    log.info "currentTime>>>>>>>"+currentTime;
    
    long diff=currentTime.toLong()-start_Time.toLong();
    log.info "diff>>>>>>>"+diff
    
    if(diff>=2000){
        start_Time = ${__time(,)};
        vars.put("startTime",start_Time.toString());
    }
    vars.put("flag",diff.toString());
    log.info "FlagValue>>>>>>>"+vars.get("flag")
    
    3.下面是用于身份验证请求的if条件


    希望这能有所帮助。

    我尝试过处理您的场景。我在分享——我在理解你的情景后所做的事情

    在下面的屏幕截图中,您可以看到2个线程,其中1个身份验证请求仅通过一个控制器启动。一段时间后,再次发送身份验证请求

    方法:-

  • 设置用户定义的变量,如下所示:-
  • 2.然后在请求下使用JSR223后处理器执行以下代码

    def start_Time = vars.get("startTime")
    log.info "start_Time>>>>>>>"+start_Time
    
    long currentTime = ${__time(,)}
    log.info "currentTime>>>>>>>"+currentTime;
    
    long diff=currentTime.toLong()-start_Time.toLong();
    log.info "diff>>>>>>>"+diff
    
    if(diff>=2000){
        start_Time = ${__time(,)};
        vars.put("startTime",start_Time.toString());
    }
    vars.put("flag",diff.toString());
    log.info "FlagValue>>>>>>>"+vars.get("flag")
    
    3.下面是用于身份验证请求的if条件


    希望这能有所帮助。

    我遇到了类似的问题,这就是我采用的解决方案:

  • 添加另一个将并行运行的线程组
  • 在threadgroup-Main中,获取线程组的完成状态并将其设置为属性
  • 在线程组中-身份验证包括一个While控制器,以循环,直到线程组Main完成
  • 添加身份验证请求以及内部的恒定延迟
  • 获取令牌并将其设置为属性值
  • 请参阅线程组-主请求中的该属性

  • 我遇到了一个类似的问题,这就是我采用的解决方案:

  • 添加另一个将并行运行的线程组
  • 在threadgroup-Main中,获取线程组的完成状态并将其设置为属性
  • 在线程组中-身份验证包括一个While控制器,以循环,直到线程组Main完成
  • 添加身份验证请求以及内部的恒定延迟
  • 获取令牌并将其设置为属性值
  • 请参阅线程组-主请求中的该属性

  • @ZeeKay如果有帮助,你也可以投票。请勾选“,”以了解更多信息。@ZeeKay,如果它有助于您也可以投票。请查看“”,了解更多信息。