Gatlingの実行用スクリプトはbinディレクトリにあり、以下のようなファイルがあります。
$ ls -l 合計 20 -rwxr--r-- 1 vagrant vagrant 3124 8月 30 19:15 gatling.bat -rwxr--r-- 1 vagrant vagrant 2191 8月 30 19:15 gatling.sh -rwxr--r-- 1 vagrant vagrant 2191 2月 14 21:56 my.sh -rwxr--r-- 1 vagrant vagrant 2112 8月 30 19:15 recorder.bat -rwxr--r-- 1 vagrant vagrant 1183 8月 30 19:15 recorder.sh
テスト実行用スクリプトは、gatling.shになります。Windowsの場合は、バッチファイル のgatling.batになります。 また、ブラウザ操作を記録してテストケース作成できる、recorder.shとrecorder.batがあります。
gatling.sh
Linuxなどシェル環境でgatlingを実行する場合、gatling.shを使いますが、これは途中で実行するシミュレーションクラス選択やオプションの入力を求められます。 使用するシミュレーションのクラス(テストケース)が固定の場合など、途中の実行クラス選択などを省いた方が良い場合は、専用スクリプトを用意した方が楽です。 ここでは実行スクリプトを調べて、決まったシミュレーションクラスを実行するスクリプトを作成します。
-
gatling.sh
バージョン2.3.0のgatling.shは、先頭のドキュメントを削除して見やすくすると、以下のようになっています。
#!/bin/sh if [ -n "$JAVA_HOME" ]; then JAVA="$JAVA_HOME"/bin/java else JAVA=java fi OLDDIR=`pwd` BIN_DIR=`dirname $0` cd "${BIN_DIR}/.." && DEFAULT_GATLING_HOME=`pwd` && cd "${OLDDIR}" GATLING_HOME="${GATLING_HOME:=${DEFAULT_GATLING_HOME}}" GATLING_CONF="${GATLING_CONF:=$GATLING_HOME/conf}" export GATLING_HOME GATLING_CONF echo "GATLING_HOME is set to ${GATLING_HOME}" DEFAULT_JAVA_OPTS="-server" DEFAULT_JAVA_OPTS="${DEFAULT_JAVA_OPTS} -Xmx1G" DEFAULT_JAVA_OPTS="${DEFAULT_JAVA_OPTS} -XX:+UseG1GC -XX:MaxGCPauseMillis=30 -XX:G1Heap RegionSize=16m -XX:InitiatingHeapOccupancyPercent=75 -XX:+ParallelRefProcEnabled" DEFAULT_JAVA_OPTS="${DEFAULT_JAVA_OPTS} -XX:+PerfDisableSharedMem -XX:+AggressiveOpts - XX:+OptimizeStringConcat" DEFAULT_JAVA_OPTS="${DEFAULT_JAVA_OPTS} -XX:+HeapDumpOnOutOfMemoryError" DEFAULT_JAVA_OPTS="${DEFAULT_JAVA_OPTS} -Djava.net.preferIPv4Stack=true -Djava.net.pref erIPv6Addresses=false" COMPILER_OPTS="-Xss100M $DEFAULT_JAVA_OPTS $JAVA_OPTS" # Setup classpaths COMMON_CLASSPATH="$GATLING_CONF:${JAVA_CLASSPATH}" COMPILER_CLASSPATH="$GATLING_HOME/lib/zinc/*:$COMMON_CLASSPATH" GATLING_CLASSPATH="$GATLING_HOME/lib/*:$GATLING_HOME/user-files:$COMMON_CLASSPATH" # Build compilation classpath COMPILATION_CLASSPATH=`find "$GATLING_HOME/lib" -maxdepth 1 -name "*.jar" -type f -exec printf :{} ';'` # Run the compiler "$JAVA" $COMPILER_OPTS -cp "$COMPILER_CLASSPATH" io.gatling.compiler.ZincCompiler -ccp "$COMPILATION_CLASSPATH" "$@" 2> /dev/null # Run Gatling "$JAVA" $DEFAULT_JAVA_OPTS $JAVA_OPTS -cp "$GATLING_CLASSPATH" io.gatling.app.Gatling " $@"
これを見ると、一番最後の以下を改造すればよさそうです。 また、この最後は、"$@"となっているので、オプションが指定できるようです。
"$JAVA" $DEFAULT_JAVA_OPTS $JAVA_OPTS -cp "$GATLING_CLASSPATH" io.gatling.app.Gatling " $@"
シミュレーションクラス指定オプション
Gatlingの実行オプションは、以下のドキュメントで確認できます。
ドキュメントによれば、実行するシミュレーション(テストケース)のクラスファイルは、"-s"で指定できるということです。 そこで、テストケース作成基礎 で作成したクラスを指定すると、指定クラスが実行されました。
$ bin/gatling.sh -s computerdatabase.MySimulation
GATLING_HOME is set to /home/vagrant/gatling-charts-highcharts-bundle-2.3.0
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Simulation computerdatabase.MySimulation started...
...
Simulation computerdatabase.MySimulation completed in 1 seconds
Parsing log file(s)...
Parsing log file(s) done
Generating reports...
...
Reports generated in 0s.
Please open the following file: /home/vagrant/gatling-charts-highcharts-bundle-2.3.0/results/mysimulation-1518618204410/index.html
ただし、クラスの指定では、パッケージ名の"computerdatabase"が必要です。 そのため、実行するクラスがMySimulationの場合、以下のように指定します。
bin/gatling.sh -s computerdatabase.MySimulation
入力なしの実行スクリプト作成
gatling.shをコピーして、入力なしの実行スクリプトを作成します。コピースクリプトの名前は、mytest.shなど分かりやすくしておきます。
cp gatling.sh mytest.sh
修正部分は、スクリプトファイルの最後の"$@"の部分になります。
"$JAVA" $DEFAULT_JAVA_OPTS $JAVA_OPTS -cp "$GATLING_CLASSPATH" io.gatling.app.Gatling "$@"
これを以下のように修正すれば実行時の入力を省けます。
GATLING_OPTS="-s computerdatabase.MySimulation" "$JAVA" $DEFAULT_JAVA_OPTS $JAVA_OPTS -cp "$GATLING_CLASSPATH" io.gatling.app.Gatling $GATLING_OPTS注意 "$@"を"ダブルクォート有りの"$GATLING_OPTS"にするとエラーになります。
Gatlingの実行オプション
Gatlingの実行オプションは、以下のドキュメントで確認できます。
-
テストケースがあるディレクトリの指定
オプション-sfで、Gatlingのシミュレーションクラス(テストケース)を置くディレクトリを指定できます。
bin/gatling.sh -sf [ディレクトリのパス]
Gatlingのディレクトリに、scenarioディレクトリを作成して、以下のように2個のシミュレーションクラスを作成している場合
$ ls -l scenario/ 合計 8 -rw-r--r-- 1 vagrant vagrant 539 2月 28 21:44 HardSimulation.scala -rw-r--r-- 1 vagrant vagrant 537 2月 28 21:40 MySimulation.scala
scenarioディレクトリをオプション-sfで指定すると、指定ディレクトリ内のシミュレーションクラスを認識してくれます。
$ bin/gatling.sh -sf scenario GATLING_HOME is set to /home/vagrant/gatling-charts-highcharts-bundle-2.3.0 Choose a simulation number: [0] computerdatabase.HardSimulation [1] computerdatabase.MySimulation