【问题标题】:Gatling token refresh heart beat加特林令牌刷新心跳
【发布时间】:2018-05-22 23:43:17
【问题描述】:

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

我们应用程序的典型用户会在超过令牌生命周期的时间内打开应用程序而不对其进行任何操作。所以我不能简单地检查并在每个调用上执行令牌刷新而不调整脚本以不模仿现实生活中的用法(因为调用需要更频繁地发生)。

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

【问题讨论】:

    标签: scala gatling scala-gatling


    【解决方案1】:

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

    //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())
    

    【讨论】:

      猜你喜欢
      • 2018-03-28
      • 2016-08-07
      • 1970-01-01
      • 2021-08-20
      • 2022-10-31
      • 2016-01-05
      • 2019-06-29
      • 1970-01-01
      • 2019-09-23
      相关资源
      最近更新 更多