Scala 加特林心跳

Scala 加特林心跳,scala,gatling,scala-gatling,Scala,Gatling,Scala Gatling,我试图模拟周期性的令牌刷新。前端中有javascript代码,定期检查是否需要刷新令牌,如果需要,则发出一个刷新令牌的调用。只要有人在使用该应用程序,它就会每隔几分钟左右运行一次 我们的应用程序的典型用户会在超过令牌生存期的时间内保持应用程序打开,而不在其上执行任何操作。因此,我不能在每次调用时简单地检查并执行令牌刷新,而不调整脚本以避免模拟实际使用情况(因为调用需要更频繁地发生) 如果可能,或者如何可能,有什么想法吗?好的,我能想到的最好的解决方案基本上是创建我自己的“Pause”类,将长暂停

我试图模拟周期性的令牌刷新。前端中有javascript代码,定期检查是否需要刷新令牌,如果需要,则发出一个刷新令牌的调用。只要有人在使用该应用程序,它就会每隔几分钟左右运行一次

我们的应用程序的典型用户会在超过令牌生存期的时间内保持应用程序打开,而不在其上执行任何操作。因此,我不能在每次调用时简单地检查并执行令牌刷新,而不调整脚本以避免模拟实际使用情况(因为调用需要更频繁地发生)


如果可能,或者如何可能,有什么想法吗?

好的,我能想到的最好的解决方案基本上是创建我自己的“Pause”类,将长暂停分解为小暂停,并在每次检查之间查看令牌是否需要刷新。大致如下:

//new RefreshADToken().create() creates a ChainBuilder that refreshes the token if it's necessary
object PauseHelpers {

  val tooBigOfPauseThreshold = 150 //300 seconds = 5 minutes, so anything over 150 is too big

  def adPause(duration: Int): ChainBuilder = {
    doIfOrElse(duration > tooBigOfPauseThreshold) {
      val iterations = duration / tooBigOfPauseThreshold
      repeat(iterations, "pause_counter") {
        pause(tooBigOfPauseThreshold)
          .exec(new RefreshADToken().create())

      }.pause(duration % tooBigOfPauseThreshold).exec(new RefreshADToken().create())
    } {
      pause(duration).exec(new RefreshADToken().create())
    }
  }
}
//... then
import orhub.modules.actions._

class POC extends Simulation {
//some stuff
  var scn = scenario("poc")
    .feed(hospitalUsersFeeder)
    .exec(session => {
        session.set("env", environment)
    })
    .exec(new ADPause(120 * 60).create())