1. gatling.sh
  2. Gatlingの実行オプション

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