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
eg:doIfEquals
eg:doIfOrElseとdoIfEqualsOrEls
eg:doSwitch、doSwitchOrElse
eg:randomSwitchとrandomSwitchOrElse
eg:uniformRandomSwitch
eg:roundRobinSwitch
関数#カンスウ#
説明する
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()
)