Upgrading from 3.9 to 3.10
Java 11 Baseline
Gatling now requires Java 11. This is also true for all the satellite components such as the Maven, Gradle and sbt plugins.
Source Compatibility
Gatling 3.10 introduces the following breaking changes:
slf4j 2 upgrade
slf4j
is the most popular Java logging interface, logback
is its default implementation.
Like more and more other Java based technology, Gatling 3.10 is finally upgrading from slf4j 1 to slf4j 2, and logback 1.2 to logback 1.4.
As indicated by the major version change, slf4j 1 and slf4j 2 are not compatible.
If you’re bringing into Gatling’s classpath some extra libraries that are pulling slf4j or logback dependencies, you have to make sure that you end up with slf4j and logback versions that are compatible with each other:
- slf4j 1 is compatible with logback 1.2 included
- slf4j 2 is compatible with logback 1.3 or greater
With maven, you would use mvn dependency:tree
in order to check the actual versions used and dependencyManagement to force the desired versions.
For more details, please check the issue #4386
Feeding multiple records at once
feed(feeder, n)
lets you feed n records at once.
Previously, this method was generating arrays of records.
As of Gatling 3.10, this method now generates Java List or Scala Seq depending on the Gatling SDK you’re using.
For more details, please check the issue #4423
HTTP SignatureCalculator change
SignatureCalculator
is used to add a signature to an HTTP request before it’s written on the socket.
Previously, SignatureCalculator
was essentially a Consumer<Request>
, which only let the user set a signature HTTP header (as HttpHeaders are mutable).
This API made it impossible to sign the request with another mean, such as adding the signature in the query or a form body.
The new API is basically Function<Request, Request>
which makes it possible to return a new URL or a new Body.
For more details, please check the issue #4477
Java SDK exitBlockOnFail signature change
The previous syntax was not consistent with the rest of the Java SDK.
exitBlockOnFail(
http("name").get("/")
);
must now be changed into:
exitBlockOnFail().on(
http("name").get("/")
);
For more details, please check the issue #4490
Binary Compatibility
Gatling 3.10 is not binary compatible with previous versions. Any code compiled with a previous version must be recompiled in order to be executed with Gatling 3.10.
Gradle 7.0 Baseline
As of 3.10.0, the Gatling Gradle plugin now requires Gradle 7.0.