Changelog - mathieuboniface/gatling GitHub Wiki

v2.0.0-M3a #

This version fixes several major bugs in 2.0.0-M3, users are recommended to upgrade (transparent from M3)

Fixes

  • #1281 Core: XPath check fails, ByteBufferInputStream buffer overflow
  • #1282 Core: Simulation doesn't terminate properly
  • #1283 HTTP: Wrong time out
  • #1286 HTTP: Header regex check fails with NPE

v2.0.0-M3 #

This version also contains all the fixes and features from 1.5.1 and 1.5.2.

Beware of the breaking changes since 2.0.0-M2, like protocol set up and HTTP request bodies, see Gatling 2 page.

Fixes

  • #1140 Core: Fix during loop
  • #1148 Core: Remove Expression type alias that messes up with implicit conversions
  • #1153 Recorder: Bug with URI parsing
  • #1154 Recorder: Protect headers
  • #1183 Charts: Incorrect OK/KO counts on groups
  • #1207 HTTP: Additional CRLF when no Content-Disposition in multipart
  • #1219 Recorder: Protected values in HAR files
  • #1224 Core: Don't eagerly fetch resources from classpath
  • #1243 Core: Div by 0 in ramp injection
  • #1244 Charts: Percentage round up
  • #1257 Core: TryMax exit condition
  • #1259 Core: Wrong behavior when existASAP = false (repeat, foreach)
  • #1266 Core: TryMax doesn't log inner groups
  • #1270 App: Wrong behavior when simulation compiled class already exists

Features

  • #62 and #1142 JDBC: Store stats in RDBMS, contributed by Jay Patel (@jaypatel512)
  • #1141 Core: Simulation set up refactoring
  • #1083, #1084 and #1208 Core: Support loading resources (feeder, bodies) from classpath
  • #1163 and #1166 HTTP: Multipart support
  • #1176 Recorder: Generate inline queries instead of queryParams
  • #1181 Charts: Display KO percentages
  • #1182 and #1265 Recorder: Handle pauses around tags, contributed by Sébastien Keller (@Skeebl)
  • #1185 Core: Expose XML parser config in gatling.conf
  • #1211 HTTP: Drop Scalate's SSP
  • #1226 HTTP: Make SSL store type optional
  • #1237 HTTP: Make request bodies cache configurable
  • #1252 Charts: Add errors distribution table
  • #1269 HTTP: Support Grizzly as HTTP provider

v1.5.2 #

Fixes

  • #1203 Recorder: Recorder doesn't record binary bodies correctly
  • #1204 Core: CSV parser escapeChar doesn't work properly
  • #1213 Maven: When skipping, maven plugin shouldn't parse args
  • #1214 Core: Race condition in DataWriter.uninitialized
  • #1216 HTTP: Have query param support both "foo=" and "foo" forms
  • #1223 Core: JsonPath with array element NPE when the array is actually null
  • #1225 Charts: Dots in javascript variable names make jQuery crash

Features

  • #1209 HTTP: Gatling doesn't honor RFC6265 cookie encoding style
  • #1217 HTTP: Support AHC maxConnectionLifeTime
  • #1221 HTTP: HEAD verb can have a body
  • #1222 HTTP: Add OPTIONS verb support
  • #1235 HTTP: Expose Virtual Host configuration
  • #1240 HTTP: Add HttpProtocol.baseHeaders(headers)

Features

v1.5.1 #

From this version, one can:

  • use -Dgatling.test.skip in order to disable the gatling maven plugin
  • chose between jodd and jsoup in gatling.conf for the CSS Selector engine
  • display multiple Simulations (launched in multiple maven plugin executions for example) in the Jenkins plugin

Fixes

  • #1139 Core: Round-Robin feeder memory leak
  • #1146 HTTP: Set AHC maxRetry to 0 by default
  • #1155 Recorder: Recorder doesn't dump with selected encoding
  • #1157 Recorder: Recorder doesn't properly extract bodies

Features

  • #1063 Maven: Allow one to skip gatling tests
  • #1138 HTTP: Backport support for poorly encoded Location header
  • #1145 Core: Let exec take a Scenario
  • #1160 HTTP: Add session to log triggered by request failure
  • #1162 Jenkins: Multiple gatling runs in single jenkins job, thanks to @cprice-puppet
  • #1170 Core: Revive Jodd support, make it default implementation
  • #1171 Core: Backport extractors caching to 1.5

v2.0.0-M2 #

This version also contains all the fixes and features from 1.5.0.

Fixes

  • #1093 Charts: Broken link if request name contains #
  • #1098 App: Fix regex for scala-compiler jar, thanks to @nap-stig
  • #1124 Charts: Invalid JSON file
  • #1136 Core: else branch of ifOrElse always ignored

Features

  • #827 and #1085 Recorder: Generate Simulation from HAR file
  • #966 and #1090 Output final stats to console, thanks to @jaypatel512
  • #1091 Core: dirac renamed into heaviside
  • #1105 and #1113 Add an exitASAP to during and asLongAs loops so that exit condition is evaluated on every action instead of once per iteration

v1.5.0 #

Fixes

  • #1094 HTTP: JsonPath and XPath checks consume the response body
  • #1095 Charts: Charts names encoding problem
  • #1116 Core: DataWriter race condition
  • #1127 Recorder: Invalid dot in chains
  • #1133 HTTP: Don't drop query params inlined in the URL

Features

  • #1055 Core: Reorganize gatling.conf
  • #1099 Core: Override gatling.data.writers from System properties
  • #1101 and #1102 Recorder: Override default keystore, thanks to @cprice-puppet
  • #1114 Core: Switch from Jodd to Jsoup as CSS selectors implementation
  • #1115 Drop custom JsonPath in favor of Jayway one
  • #1117 HTTP: Add HttpProtocolConfiguration.shareClient to have one http client per user (disabled by default)
  • #1119 HTTP: Add HttpProtocolConfiguration.shareConnections to have one http client per user (enabled by default)
  • #1121 HTTP: Add Session attributes for setting SSL Engine per user
  • #1125 Core: Add a light mode for ConsoleDataWriter
  • #1126 Graphite: Add a light mode for GraphiteDataWriter
  • #1134 and (https://github.com/excilys/gatling/issues/) App: Allow simulation description to be configurable via conf file / CLI, thanks to @cprice-puppet
  • #1137 Refactor doIfOrElse(String, String) into doIfEqualsOfElse(Expression[String], Expression[String])

Note: Beware that the configuration file has changed, so the System property names to override it too! Please check the new file.

v2.0.0-M1 #

See full milestone content and Gatling 2 page.

v1.4.7 #

Fixes

  • #1047 and #1049 Maven: Forked JVM might not exit on Windows, thanks to alvinlin123!
  • #1066 Maven: System properties propagation still not working under Windows
  • #1074 Charts: Broken records cause generation to fail
  • #1080 Charts: Javascript error when request name starts with a number

Features

  • #1050 Core: Upgrade Slf4j 1.7.5
  • #1051 Core: Upgrade Logback 1.0.11
  • #1070 Charts: Long request names break the menu
  • #1072 HTTP: Upgrade AsyncHttpClient 1.7.13
  • #1073 HTTP: Upgrade Netty 3.6.5

v1.4.6 #

Fixes

  • #1018 and #1019 Core: Possible race condition on initialization
  • #1020 HTTP: Warm up done twice, slowing down start up
  • #1037 Maven: Renaming property simulation into simulationClass in order to avoid clash when passing as System property
  • #1042 Recorder: Invalid generated simulation when first element is a tag
  • #1044 Maven: Fails when propagating a System property with a space

Features

  • #1046 Core: Drop attribute axis support in JsonPath, introduce magic value _ to target root array

Note: Be aware of the 2 breaking changes:

  • Maven plugin property simulation renamed into simulationClass
  • JsonPath not longer supports attribute axis (didn't really make sense and was equivalent to child element one).

v1.4.5 #

Fixes

  • #995 and #1013 Core: Can't use assertions with "manual scaling" procedure, see wiki
  • #1003 Maven: line.separator disappears when propagation System properties
  • #1009 Core: config doesn't get overridden with System properties

Features

v1.4.4 #

Fixes

  • #971 Maven: Plugin broken, wrong Scala version resolved
  • #974 HTTP: XPath and JsonPath checks crash on empty body
  • #984 and #993 Charts: stats.tsv file broken

Features

  • #906, * #911 and * #972 Core: add new foreach DSL, see doc
  • #960 Core: Make user ids unique
  • #977 Maven: Propagate System properties in fork mode
  • #983 Charts: Make Graphite root configurable, defaulting to gatling
  • #996 HTTP: Make SslContext configurable
  • tons of optimizations, see full issues list for details

v1.4.3 #

Fixes

  • #914, #915, #918, #919 Charts: Charts not rendering when request/group name contains special characters
  • #922 Core: Fix pause shift computation
  • #926 HTTP: Improve domain matching in cookie handling
  • #942 Recorder: Handle poorly encoded queries
  • #944 Core: NPE when running a simulation with 2 scenarios with the same name
  • #954 and #956 HTTP: Filtered out multiple cookies with the same name/path (support PHP bug)

Features

  • #913 HTTP: Upgrade Netty 3.6.2
  • #934 HTTP: Upgrade async-http-client 2.10
  • #941 Core: Loops clean up
  • #957 HTTP: Add Connection to possible common headers

v1.4.2 #

Fixes

  • #881 and #910 Core: Fix Zinc incremental compiler NPE
  • #898 Charts: invalid group OK/KO stats
  • #899 HTTP: Cookies are not propagated from HTTP to HTTPS
  • #907 JDBC: JdbcFeeder SQLException with Oracle

v1.4.1 #

Fixes

  • #882 Core: Possible SOE when too many requests
  • #884 Recorder: Not working with HTTPS
  • #886 Charts: Wrong statistics for groups
  • #893 Maven: reportsOnly not work with maven plugin

Features

  • #889 Core: Upgrade Scala 2.9.3-RC1
  • #892 Core: Upgrade Akka 2.0.5
  • #894 HTTP: Upgrade Netty 3.6.1

v1.4.0 #

Fixes

  • #844 Charts: Handle parentheses in request names
  • #846 Core: Fix possible NPE in FileDataWriter.sanitize
  • #866 #867 Charts: Fix stats.tsv file header, thanks to @caps (Pete Capra)

Features

  • #170 #322 Charts: New API for grouping requests
  • #560 Core: New API for acceptance criteria
  • #594 Maven: New Jenkins plugin
  • #772 Charts: Reorganize description
  • #782 Core: 1.3.X deprecated APIs removed
  • #788 #810 Core: Jackson fully configurable through gatling.conf
  • #802 HTTP: Host header doesn't have to be specified as AHC computes it
  • #829 Core: Feeder is now Iterator[Map[String, T]]
  • #832 Charts: Upgrade jQuery 1.8.3
  • #838 #840 Core: Breaking change in Simulation structure: remove apply and configure, introduce setUp
  • #839 Maven: maven plugin now use src/test/scala and src/test/resources folders
  • #841 Core: New .size EL function
  • #847 Core: Make extraResponseInfoExtractor take an ExtendedResponse
  • #848 #879 HTTP: Better tracing/debugging of requests and responses
  • #849 HTTP: Upgrade Netty 3.6.0.Final
  • #857 Core: Stop engine nicely instead of System.exit on feeder starvation
  • #860 Core: Upgrade Logback 1.0.9
  • #861 Core: Upgrade Jackson 2.1.2
  • #864 #872 Maven: maven-gatling-plugin refactoring
  • #870 HTTP: Make fileBody dynamic
  • #874 Core: Fix Zinc when Gatling path contains special characters
  • #876 App: Rename deb package name into gatling-tool
  • #877 HTTP: Upgrade AHC 1.7.9, fix bug when no headers
  • #880 Charts: Upgrade Highcharts 2.3.5 and Highstock 1.2.5

Note: This release introduce a breaking change in the Simulation classes format. Deprecated methods in 1.3.X have been removed. See migration guide

v1.3.5 #

Fixes

  • #799 Maven: src/test/scala directory missing in projects generated with the archetype
  • #800 Core: Fix debig logger in logback.xml
  • #808 HTTP: Original ContentType header shouldn't be propagated when redirecting
  • #813 HTTP: followRedirect not working properly when Location contains a query
  • #816 HTTP: CookieStore not accounting for port number in domain computation
  • #820 Core: JsonPath not supporting wildcards

Features

  • #765 and #814 HTTP: Print HTTP params in debug
  • #792 Core: Make request names dynamic
  • #817 HTTP: Authorization header can now be declared as a common header in HttpProtocolConfiguration
  • #818 HTTP: Support for non UTF-8 encoded cookies (value containing an "=" character)

v1.3.4 #

Fixes

  • #785 Recorder: Fix followRedirect support
  • #786 Core: Fix during loop timer
  • #787 Core: Fix JsonPath

v1.3.3 #

Features

  • #754 Core: Use Zinc incremental compiler
  • #763 and #769 Charts: Redesign statistic summary table
  • #775 HTTP/Recorder: DNT common header support
  • #779 Core: Loop index is now directly exposed as Session attribute

Fixes

  • #755 Charts: Square and curly braces in request names mess up with javascript
  • #756 HTTP: Fix abusing caching
  • #759 Core: Fix check when forcing Simulation
  • #760 Maven: add missing logback.xml file
  • #762 HTTP: Support Expires headers numerical values
  • #766 Metrics: Max and count should be reseted along with the buckets
  • #770 Charts: Run description is not properly printed
  • #777 Core: Fix unrecoverable crash on while condition evaluation
  • #778 Core: Counter should be incremented before the loop content
  • #780 Recorder: Fix pauses shift

v1.3.2 #

Features

  • #750 HTTP: better support of multivalued params and queryParams with multiValuedParam and multiValueQueryParam, see wiki

Fixes

  • #753 HTTP: regression: params were being sent as query params

v1.3.1 #

Features

  • #743 Checks: Add new bodyString check, see wiki
  • #744 HTTP: Upgrade Netty to 3.5.8.Final, critical performance fixes
  • #752 Config: Add aliases for built-ins data readers and writers: console, file and graphite

Fixes

  • #732 HTTP: responseChunksDiscardingEnabled was not working properly
  • #734 HTTP: Host header was being ignored, fixed thanks to @dustinbarnes
  • #735 Core: NPE when using chain
  • #736 Charts: Drop Scalding/Cascading, considerably reduce memory footprint, introduce accuracy config parameter defaulting to 10ms
  • #745 Recorder: Tags were not dumped in the generated Simulation
  • #747 Charts: Some charts disappear. This is due to a Highstock bug that has been fixed yet, so a workaround was introduced
  • #751 Feeders and Charts: File streams were not properly closed

Note: Due to the new accuracy parameter, you will experience less precise values in the charts. You can get the old behavior by setting a 1 ms value, at the cost of a higher memory usage.

v1.3.0 #

Warning: Migration required, see migration guide

API changes:

  • #669 Core: Config file format change
  • #698 Core: Durations expressed as (value, unit) are deprecated
  • #699 Core: Loops refactoring, old ones are deprecated
  • #705 Core: insertChain deprecated, use exec
  • #711 Core: Feeders are now Iterators
  • #730 Core: doIf refactoring

Features

  • #592 Charts: Display mean number of requests/sec in global chart page
  • #593 Charts: Generate a csv file with global stats
  • #604 and #672 Charts: Response time and latency charts now display (min, max) ranges instead of a max values line
  • #606 HTTP: New byteArrayBody(Session => Array[Byte]), see wiki
  • #607 HTTP: New baseUrls for round-robin, thanks to @israel, see wiki
  • #607 and #683 Charts: New summary table on global page
  • #621 Checks: Css checks underlying parser now supports browser conditional tests
  • #623 HTTP: New caching support, see wiki
  • #624 Core: New console dashboard
  • #627 Checks: New currentLocation check, see wiki
  • #628 Core: New pauseCustom(() => Long), see wiki
  • #641 and #658 HTTP: Log requests and responses on failure
  • #644 HTTP: paramKey and fileName upload parameters are now dynamic
  • #646 HTTP: Multi file upload support, thanks to @codemnky
  • #647 and #690 Core: New randomSwitch, see wiki
  • #652 HTTP: New disableResponseChunksDiscarding, see wiki
  • #652 Checks: Css checks now support attribute node selection, see wiki
  • #674 and #675 Graphite: Gatling can now report to Graphite, see wiki
  • #685 Project: Continuous Integration now on Cloudbees
  • #688 Charts: New polar chart with request counts
  • #701 Core: New exitBlockOnFail and exitHereIfFailed, see wiki
  • #702 Core: New tryMax, see wiki
  • #703 Core: Remove bootstrapping from chain, see wiki
  • #706 Core: new randomRoundRobin, see wiki
  • #712 Core: Let exec take a chain vararg, see wiki
  • #714 Core: Better simulations compilation warnings

Fixes

  • #571 HTTP: Better cookies support
  • #609 HTTP: NPE when Location header missing
  • #615 HTTP: Url is encoded twice on redirect
  • #630 Charts: Fix percentiles
  • #639 and #687 Recorder: should ask before overwriting
  • #651 Check: responseTime and latency checks mustn't cause body to be stored
  • #653 HTTP: Duration computation problems
  • #664 Core: Don't display Abstract simulations
  • #665 Core: LinkageError when using inheritance
  • #709 Recorder: support empty valued parameters
  • #713 and #715 Charts: support quotes in request names

v1.2.5 #

Features

  • #596 Better live informations

Fixes

  • #597 Fix cookie handling regression
  • #599 Time measurement is intrinsically imprecise, ensure that it can't cause negative response times
  • #600 Fix response time distribution chart, max value wasn't properly displayed
  • #601 Fix gatling-maven-plugin JVM arguments

v1.2.4 #

Features

  • #446 Add the ability to dump custom data in the logs, thanks to Stephen Kuenzli, see wiki
  • #569 New reponseTimeInMillis and latencyInMillis checks, see wiki
  • #576 new headerRegex check, see wiki
  • #591 Location header is now automatically decoded when checked, see wiki
  • #595 New simple feeder, see wiki

Fixes

  • #572 Fix a bug where cookies with the same name could be sent both under certain conditions
  • #573 Fix script variables scope under Windows, thanks to Henri Tremblay
  • #574 Fix logger in logback.conf, thanks to Henri Tremblay
  • #583 Fix engine encoding handling
  • #586 Fix recorder class name and package generation
  • #587 Fix recorder encoding handling

v1.2.3 #

Fixes

  • #566 Fix body checks regression in 1.2.2

v1.2.2 #

Warning: due to #566, 1.2.2 users are recommended to upgrade to 1.2.3

Features

  • #543 Make charts generation consume multiple simulation(.*).log files, ease multiple instances testing, see wiki
  • #548 New Redis Feeder, thanks to @krishnenc (Krishnen Chedambarum), see wiki
  • #548 New byteArrayBody, thanks to @krishnenc (Krishnen Chedambarum), see wiki
  • #552 Gatling modules can now be built independantly, thanks to @nire (Nicolas Rémond)
  • #553 New checksum checks, see wiki
  • #555 Run name can now be set on gatling-maven-plugin, see wiki
  • #557 Gatling now ships Grizzly to ease switching NIO provider (Gatling still uses Netty by default)

Fixes

  • #562 Fix gatling-maven-plugin crash when setting no-reports or run-name options, thanks to @skuenzli (Stephen Kuenzli)
  • #558 Ensure IfAction and WhileAction don't lose messages on crash

v1.2.1 #

Warning: Due to #545, 1.2.0 users are highly recommended to upgrade!

Features

  • #539 much better reports generation memory footprint

Fixes

  • #536 HttpProtocolConfiguration DSL wouldn't compile when proxy was defined in the middle of the chain
  • #537 Warm up request would break the run when target url cannot be reached
  • #538 Fix scatter plot chart
  • #540 Fix percentile ordinal suffix, thanks to Nicolas Rémond
  • #544 Fix times computation at very high throughput
  • #545 Fix pause duration
  • #546 Fix launch script when path contains special characters, thanks to Jean-François Bilger

v1.2.0 #

Warning: Migration required, see migration guide

Features

  • #376 loop times condition can now be dynamic
  • #432 & #523 Referer header can now be automatically computed
  • #435 & #518 CSS Selector extractors are now supported, thanks to Nicolas Rémond (@nire)
  • #493 & #531 HEAD HTTP word is now supported, thanks to Nicolas Rémond (@nire)
  • #501 Reports global page has been refactored
  • #509 Recorder has been migrated to Scala
  • #514 Common HTTP Headers can be configured on ProtocolConfiguration
  • #522 Outgoing proxy credentials can now be configured in the Recorder
  • #527 Percentiles have been reworked to make more sense
  • #530 New exponentially distributed pauses, thanks to Stephen Kuenzli (@skuenzli)
  • #532 Add automatic request to compensate for engine warm up
  • #535 Calling check() several times will now append them instead of overriding them

Fixes

  • #512 & #528 Fix class name resolution in gatling-maven-plugin, thanks to Cyril Couturi (@ccouturi) and Stephen Kuenzli (@skuenzli)
  • #520 Add protection from SimpleAction crashes
  • #534 Handle empty lines in CSV files

v1.1.6 - Bug fix #

Fixes

  • #498 Recorder: fix NPE on request body
  • #507 gatling-maven-plugin: fix simulation package on Windows
  • #508 Charts: fix encoding
  • #510 Recorder: fix request bodies folder name

v1.1.5 - Bug fix #

Fixes

  • #489 Make recorder use relative URIs once connection established
  • #490 Handle 303 redirect status code
  • #491 Fix status code check when using non default one
  • #497 Fix reports when request name contains "'"
  • #498 Fix NPE in recorder when dumping request bodies
  • #499 Fix latency chart

Features

  • #484 - Remove check logic from the AHC handler in order to reduce pressure on IO threads
  • #486 - Charts: all session series is computed once for all
  • #492 - Add a "maybe" check strategy when one want to capture an optional value
  • #500 - Document transactions/sec chart
  • #502 - Expose AHC configuration in Gatling conf

v1.1.4 - Bug fix #

Fixes

  • #481 Fix http client start up
  • #483 Fix multiple simulations launching

Features

  • #485 - Charts: add new response time distribution
  • #487 - EL: let occurrence be dynamic

v1.1.3 - Bug fix #

Fixes

  • #459 - Upgrade Netty 3.4.0.Final that fixes a compression bug.
  • #460 - Fix recorder SSL certificate.
  • #466 - Support relative Location headers
  • #469 - Regression: the recorder shouldn't record Cookie and Content-Length headers
  • #470 - Fix statistics displayed in the CLI while running

Features

  • #465 - Charts: display percentiles

v1.1.2 - Bug fix #

Fixes

  • #450 - Properly fixes cookie expiration
  • #453 - Make XPathExtractor threadsafe
  • #455 - Fix global statistics

Features

  • #327 - Akka 2 migration, wouhou!!!

v1.1.1 - Bug fix #

Fixes

  • #442 - Fixes fileBody templating
  • #444 - Fixes cookie deletion

Features

  • #447 - Log at debug level the response on failed check

v1.1.0 #

Warning: Migration required, see migration guide

Features

  • Engine
    • configurable run id and run description, see #416
    • periodic statistic display while running, see #384
    • link to generated reports, see #383
  • Check API
    • Check API is now type safe
    • optional transform step on extraction result
    • new JSONPath, see #433
    • xpath namespaces support, see #434
  • Feeder API
    • new JDBC feeders for retrieving data from a SGBDR, see #37
    • escape character support on CSV based feeders, see #105
    • circular feeders, see #321
  • HTTP API
    • follow redirect support, see #105
    • clean cookie handling, see #396
  • Charts API
    • configurable time window, see #323
    • new active transactions/sec over time chart
    • new response latency over time chart
  • Recorder
    • no longer an ubber jar, now to be launched from a script
    • follow redirect support
    • configurable generated Simulation package and class name, see #438
    • configurable encoding, see #386
  • Extensions
    • new gatling-maven-plugin, contributed by @nhuray
    • new gatling debian package, contributed by @nhuray

And tons of bug fixes and performance enhancements!

v1.0.3 - Bug fix #

Fixes

  • Fix a bug in the recorder introduced in 1.0.2 that prevent from recording scenarios with less than 100 requests

v1.0.2 - Bug fix #

Features

  • #345, #348 & #330 - Better support for long scenarios (via manual splitting)
  • #347 - Recorder splits long scenarios so they can be run with no extra configuration.

v1.0.1 - Bug fix #

Fixes

  • #334 - Fixes reports template resolution under Windows
  • #320 - Stops scenario if queue feeder not big enough
  • Fixes a bug with empty lines at end of feeders

Features

  • Better CLI feedback

v1.0.0 - Initial Release #