Execute as jar

Your can execute your load test in CLI, not using sbt.

Set up

First you define build.sbt as this.

Define your simulation

Create main class in src/main/scala, not src/test/scala:

package simulation

import io.gatling.app.runner.GatlingRunner
import io.gatling.thrift.Predef._

object ThriftSimulationMain extends GatlingRunner

class ThriftSimulationExample extends ThriftSimulation {
  ...
}

sbt assembly

Add sbt assembly to project/plugins.sbt:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.5")

And define sbt assembly settings as below:

lazy val root = (project in file(".")).
  settings(assemblysettings).
  settings(...)

lazy val assemblySettings = Seq(
  assemblyMergeStrategy in assembly := {
    case PathList("io", "netty", xs @ _ *) => MergeStrategy.first
    case PathList("META-INF", "MANIFEST.MF") => MergeStrategy.discard
    case PathList("META-INF", "io.netty.versions.properties") => MergeStrategy.first
    case PathList("META-INF", "services", _) => MergeStrategy.concat
    case "BUILD" => MergeStrategy.discard
    case x =>
      val oldStrategy = (assemblyMergeStrategy in assembly).value
      oldStrategy(x)
  },
  test in assembly := {},
  assemblyJarName in assembly := "load-test.jar",
  mainClass in assembly := Some("simulation.ThriftSimulationMain"),
)

Execute

Create fat jar as sbt assembly and execute it:

$ sbt assembly
$ java -jar target/scala-2.12/load-test.jar --simulation simulation.ThriftSimulationExample
The source code for this page can be found here.