如何在序列中运行多个Gatling模拟(序列将由我们提供)

时间:2016-06-30 12:03:32

标签: gatling

当我从命令提示符运行Gatling时,我得到一个这样的模拟列表:

选择模拟编号:1,2,3,4

当我键入3时,第三个模拟将运行但是这个序列是自动生成的。假设我想根据我的愿望列出它们:  3,2,1,4

是否可以为模拟列表提供用户定义的序列。如果有可能的话?

2 个答案:

答案 0 :(得分:0)

据我所知,Gatling不可能提供模拟序列。您可以通过编写例如bash脚本来实现此目的。要在mvn中运行Gatling测试,它可能看起来像这样

#!/bin/bash

#params
SIMULATION_CLASSES=

#usage
function usage (){
    echo "usage: $0 options"
    echo "This script run Gatling load tests"
    echo ""
    echo "OPTIONS:"
    echo "Run options:"
    echo "   -s             [*] Simulation classes (comma separated)"
}

#INIT PARAMS
while getopts “s:” OPTION
do
     case $OPTION in
     s) SIMULATION_CLASSES=$OPTARG;;
     ?) usage
        exit 1;;
     esac
done

#checks
if [[ -z $SIMULATION_CLASSES ]]; then
    usage
    exit 1
fi

#run scenarios
SIMULATION_CLASSES_ARRAY=($(echo $SIMULATION_CLASSES | tr "," "\n"))

for SIMULATION_CLASS in "${SIMULATION_CLASSES_ARRAY[@]}"
do
    echo "Run scenario for $SIMULATION_CLASS"
    mvn gatling:execute -Dgatling.simulationClass=$SIMULATION_CLASS
done

样本用法

./campaign.sh -s package.ScenarioClass1,package.ScenarioClass2

答案 1 :(得分:0)

如果你使用Gatling SBT插件(demo project here),你可以用Bash做:

sbt "gatling:testOnly sims.ReadProd02Simulation" "gatling:testOnly sims.ReadProd02Simulation

首先只运行sceenario ReadProd02Simulation ,然后运行 ReadProd03Simulation 。不需要Bash脚本。

输出首先是ReadProd02Simulation和ReadProd03Simulation的输出,如下所示:

08:01:57 46 ~/dev/ed/gatling-sbt-plugin-demo[master*]$ sbt "gatling:testOnly sims.ReadProd02Simulation"  "gatling:testOnly sims.ReadProd02Simulation"
[info] Loading project definition from /home/.../gatling-sbt-plugin-demo/project
[info] Set current project to gatling-sbt-plugin-demo...
Simulation sims.ReadProd02Simulation started...
...
Simulation sims.ReadProd02Simulation completed in 16 seconds
Parsing log file(s)...
Parsing log file(s) done
Generating reports...
======================================================================
- Global Information ----------------------------------------------
> request count                                          3 (OK=3      KO=0     )
...
...
Reports generated in 0s.
Please open the following file: /home/.../gatling-sbt-plugin-demo/target/gatling/readprod02simulation-1491631335723/index.html
[info] Simulation ReadProd02Simulation successful.
[info] Simulation(s) execution ended.
[success] Total time: 19 s, completed Apr 8, 2017 8:02:33 AM
08:02:36.911 [INFO ] i.g.h.a.HttpEngine - Start warm up
08:02:37.240 [INFO ] i.g.h.a.HttpEngine - Warm up done
Simulation sims.ReadProd03Simulation started...
...
Simulation sims.ReadProd03Simulation completed in 4 seconds
Parsing log file(s)...
Parsing log file(s) done
Generating reports...
======================================================================
---- Global Information ----------------------------------------------
> request count                                          3 (OK=3      KO=0     )
......
Reports generated in 0s.
Please open the following file: /home/.../gatling-sbt-plugin-demo/target/gatling/readprod03simulation-1491631356198/index.html
[info] Simulation ReadProd03Simulation successful.
[info] Simulation(s) execution ended.
[success] Total time: 9 s, completed Apr 8, 2017 8:02:42 AM

也就是说,首先它运行一个sim,然后运行另一个,并连接所有输出。

但你如何利用这个?好吧,你可以使用Bash和 grep 输出恰好两行匹配failed 0 ( 0%)(如果你运行两次模拟)+检查两次模拟的总请求数,也可以通过Bash + grep等