Gatling条件判断

3739 ワード

Gatlingを使用している間、現在インタフェースが異常で、他のインタフェースの要求パラメータ室としてデータを取得できず、インタフェースは要求できません.あるいはfeederで取得したデータは、異なる状況を区別して異なるインタフェースを要求する.このときgatlingの判断文を用いて対応するリクエストを処理し,完全なリクエストチェーンを構成する.これを前提にfeederとcheckのsaveAsはいずれもsessionにパラメータを設定しますが、ここではsessionに保存されているパラメータ値を判断の根拠とします
関数#カンスウ#
説明する
doif
成立を判断した場合に特定の操作チェーンを実行する
doIfEquals
二つの値が等しいと判断する
doIfOrElseとdoIfEqualsOrElse
第1の操作チェーンを実行すると判断し、第2の操作チェーンを実行すると判断しない
doSwitch、doSwitchOrElse
じょうけんけってい
randomSwitchとrandomSwitchOrElse
設定した確率値は100%未満でなければならず、命中確率は等しくない.
uniformRandomSwitch
ランダム実行、ヒット確率が等しい 
roundRobinSwitch
ループ実行
 
 シナリオ:
eg:doif
  val demo_test = scenario("test")
      .exec(_.set("status",0))
      .exec(_.set("OpenID","start-open-end"))
      .doIf( session=>session("status").as[Int]==0 ){
 
        //  status  
        exec()
      }
      .doIf(session=>session("OpenID").as[String].equals("start-open-end")){
 
       //  OpenID  
        exec()
      }
      .doIf(session=>session("OpenID").as[String].startsWith("start")){
 
        //  OpenID   start  
        exec()
      }
      .doIf(session=>session("OpenID").as[String].contains("open")){
 
        //  OpenID    open
        exec()
      }

  eg:doIfEquals
 val demo_test = scenario("test")
      .exec(_.set("status",0))
      .exec(_.set("OpenID","start-open-end"))
      .doIfEquals( "${status}", 0 ){
 
        //  status  0
        exec()
      }
      .doIfEquals("${OpenID}","start-open-end"){
 
        //  OpenID  start-open-end
        exec()
      }

eg:doIfOrElseとdoIfEqualsOrEls
val demo_test = scenario("test")
      .exec(_.set("status",0))
      .exec(_.set("OpenID","start-open-end"))
      .doIfOrElse(session=>session("OpenID").as[String].endsWith("start")){
//             
        exec()
      }{
//              
        exec()
      }
      .doIfEqualsOrElse( "${status}", 1 ){
 
        exec()
      }{
        exec()
      }

  eg:doSwitch、doSwitchOrElse
  val array_feeder = Array(
    Map("status" -> 1),
    Map("status" -> 2),
    Map("status" -> 3),
    Map("status" -> 4)
  ).random
 
 
  val demo_test = scenario("test")
      .feed(array_feeder)
      .doSwitch("${status}")(
        1 -> exec(),
        2 -> exec()
      )
      .doSwitchOrElse("${status}")(
        3 -> exec(),
        4 -> exec()
      )(
        exec()
      )

eg:randomSwitchとrandomSwitchOrElse
 val demo_test = scenario("test")
      .randomSwitch(
        50d -> exec(session=>{
          println("50%      ")
          session
        }),
        30d -> exec(session=>{
          println("30%      ")
          session
        })
      ).randomSwitchOrElse(
        1d -> exec(session=>{
          println("1%        ")
          session
        })
      )(
          exec(session=>{
            println("99%        ")
            session
          })
      )

  eg:uniformRandomSwitch
val demo_test = scenario("test")
    .uniformRandomSwitch(
          exec(),
          exec(),
          exec()
      )

  eg:roundRobinSwitch
val demo_test = scenario("test")
    .roundRobinSwitch(
          exec(),
          exec(),
          exec()
      )