Gatling 2.1.0 is out!

Hi there,

3 months after releasing 2.0.0, the Gatling Team is very proud to announce that we’ve just released 2.1.0.

New Features:

  • Assertions are now displayed in the reports: 1057
  • forAll let you define an assertion to be applied on all requests: 1618
  • You can now use a Certificate Authority (either Gatling’s or you own) with the Recorder, so you’re no longer asked for Security Exceptions: 1894
  • You can now use EL template files for checking a response body with “bodyString”: 2072. Kudos to Brice Jaglin for contributing!
  • You can configure enabled SSL protocols and cipher suites: 2323
  • You can use a new “substring” check to detect the presence of a string inside a response body. This is more efficient than performing a regex: 2352
  • New “jsonStringify()” EL function that serialize a Session attribute into a JSON string: 2360
  • More percentiles: 2394
  • Using throttling now induces a maxDuration: 2415
  • New Normal pause distribution: 2438

Please have a look at the milestone content for more details.


Gatling now targets Scala 2.11.
This migration was only possible because we had some major refactoring on the launcher modules: app, maven archetype, maven and sbt plugins.
So please upgrade both your Scala version AND your build tool plugin.

The new EL template body check feature also caused us to rename the request-bodies directory.

Please read the migration guide for more details.


Oops, I forgot to mention that we now support Server-Sent Events, originally contributed by Cédric Tran-Xuan!




I am having some issue with IDEPathHelper. I can not find File class in IDEPathHelper.


import java.nio.file.Path
import io.gatling.core.util.PathHelper._

val projectRootDir = File(gatlingConfUrl).ancestor(3)// Error on File


Am I missing an import?

My bad, made an error in the migration guide…
Will fix.

IDEPathHelper should look like this :

No Problem.

I think there couple of minor issues as well. Can you verify


  1. Changed to bodiesDirectory from requestBodies…


1) props.bodiesFolder from props.requestBodiesFolder

1) props.bodiesDirectory from props.requestBodiesDirectory.

Also, intellij is complaining about RecorderController(, Some(IDEPathHelper.recorderConfigFile))
as type mismatch, expecting Option: Path instead of Some:File.

Nevermind. I just looked at git hub page.

But Recoder.scala is still complaining on GatlingRecorder.fromMap(, Some(IDEPathHelper.recorderConfigFile))

Nevermind, just removed .toFile from IDEPathHelper variable. Sorry about creating unnecessary posts.

No problem, glad you made it working :slight_smile:

Sorry, spoke too soon.

There is one more issue. While running engine/recorder from windows machine, looks like java.nio.Path does not like colon ":’ in “C:…”

I get the following error
java.nio.file.InvalidPathException: Illegal char <:> at index 2: /C:/Users/GognaAb/dev/GatlingTest/target/test-classes/gatling.conf

Can you replace “getFile” by “toURI” on the 'val gatlingConfUrl …’ line and tell me if that fixes it ?

There is no “getFile” to gatlingConfigUrl in IDEPathHelper.

Also, it looks like for some reason we have a extra “/” in


I hard coded gatling.conf to test if everything else worked and it did.


val gatlingConfUrl: Path = """C:/Users/GognaAb/dev/GatlingTest/target/test-classes/gatling.conf"""


Not the best solution but until we fix it.

Sorry, I posted too fast. I meant “getPath”.
So that :

val gatlingConfUrl: Path = getClass.getClassLoader.getResource(“gatling.conf”).getPath


val gatlingConfUrl: Path = getClass.getClassLoader.getResource(“gatling.conf”).toURI

I’ve updated the migration guide.
Instead of listing all the changes, the best solution is either to generate a new project, or directly replace and fix the 3 classes.



That did it (toUri). Thank you guys for your awesome support!

Ok. Please dont hate me but I can’t get any of my simulations running with 2.1.0. I get the following error

Exception in thread "main" java.util.concurrent.ExecutionException: connection timed out: at com.ning.http.client.providers.netty.future.NettyResponseFuture.abort( at com.ning.http.client.providers.netty.request.NettyConnectListener.onFutureFailure( at com.ning.http.client.providers.netty.request.NettyConnectListener.operationComplete( at at at at at at at at at org.jboss.netty.util.internal.DeadLockProofWorker$ at java.util.concurrent.ThreadPoolExecutor.runWorker( at java.util.concurrent.ThreadPoolExecutor$ at Caused by: connection timed out: at com.ning.http.client.providers.netty.request.NettyConnectListener.onFutureFailure( ... 13 more Caused by: connection timed out: at ... 8 more

Can you try after uncommenting “enableGA” in gatling.conf and setting it to false ?

That worked. Looks like google analytics was turned on by default. Can we set it back to false by default.

Also, this line

props.simulationPackage("${package}") display $package in recorder. Not a big deal but if a window user leaves it like that by default then 
he may run into directory/package not created.

I suppose you’re looking at the classes from Github ?
This is a not a bug, it’s just that those classes get preprocessed during the archetype creation and ${package} get replaced by the package you entered.

Well, it’s pretty strange that it’s failing for you, since it’s pretty simple request after all…