Gatling令牌刷新心跳

时间:2018-05-22 23:43:17

标签: scala gatling scala-gatling

我试图模仿定期令牌刷新。我们的前端有javascript代码,可以定期检查是否需要进行令牌刷新,如果是,则发出刷新令牌的调用。只要有人使用该应用程序,每隔几分钟就会运行一次。

我们的应用程序的典型用户将使应用程序保持打开状态,而不会在令牌生命周期内执行任何操作。因此,我无法在每次调用时检查并执行令牌刷新,而无需调整脚本以模仿实际生活使用情况(因为调用需要更频繁地发生)。

任何想法是否或如何可能?

1 个答案:

答案 0 :(得分:0)

好吧,我能提出的最好的解决方案主要是创建我自己的“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())