Is there a way to aggregate reports from multiple runs into a single report (so as to present it to management)? Thanks!
No
I tried something that seemed to get that desired effect, but it is a bit of a “hack”.
Using this method, I was able to combine results from 3 different test runs into a single Gatling report that seemed to catch everything.
Here is what I did:
Original post was in the user’s group at this link >
https://groups.google.com/forum/#!searchin/gatling/generate$20reports$20by$20hand/gatling/LqcEc1WpgLU/vI5BCqc7ybwJ
-
Get copy of your log file
-
go to your local installation of Gatling (the one specified as GATLING_HOME on your system)
-
navigate to results directory and create a directory to hold your report (name doesn’t matter)
-
place your log file in that directory
-
navigate to bin directory and run gatling script (replace BlueGreenSimulation… with your directory and remove curly braces >
nwhitbm1:bin nwhit8$ ./gatling.sh -ro {BlueGreenSimulation-1408221816}
Yep, basically, you hacked the “Scaling out” procedure from the Cookbook:
http://gatling.io/docs/2.0.0-RC2/cookbook/scaling_out.html
I tried the steps mentioned above, I am getting the following exception, Any idea?
Exception in thread “main” java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.excilys.ebi.gatling.core.result.reader.DataReader$.newInstance(DataReader.scala:26)
at com.excilys.ebi.gatling.app.Gatling.start(Gatling.scala:106)
at com.excilys.ebi.gatling.app.Gatling$.fromMap(Gatling.scala:54)
at com.excilys.ebi.gatling.app.Gatling$.runGatling(Gatling.scala:74)
at com.excilys.ebi.gatling.app.Gatling$.main(Gatling.scala:49)
at com.excilys.ebi.gatling.app.Gatling.main(Gatling.scala)
Caused by: scala.MatchError: 1409621480875 (of class java.lang.String)
at com.excilys.ebi.gatling.charts.result.reader.ResultsHolder.addScenarioRecord(ResultsHolder.scala:34)
at com.excilys.ebi.gatling.charts.result.reader.FileDataReader$$anonfun$com$excilys$ebi$gatling$charts$result$reader$FileDataReader$$process$3.apply(FileDataReader.scala:119)
at com.excilys.ebi.gatling.charts.result.reader.FileDataReader$$anonfun$com$excilys$ebi$gatling$charts$result$reader$FileDataReader$$process$3.apply(FileDataReader.scala:115)
at scala.collection.Iterator$class.foreach(Iterator.scala:772)
at scala.collection.Iterator$$anon$22.foreach(Iterator.scala:451)
at com.excilys.ebi.gatling.charts.result.reader.FileDataReader.com$excilys$ebi$gatling$charts$result$reader$FileDataReader$$process(FileDataReader.scala:115)
at com.excilys.ebi.gatling.charts.result.reader.FileDataReader$$anonfun$12.apply(FileDataReader.scala:129)
at com.excilys.ebi.gatling.charts.result.reader.FileDataReader$$anonfun$12.apply(FileDataReader.scala:129)
at com.excilys.ebi.gatling.charts.result.reader.FileDataReader.doWithInputFiles(FileDataReader.scala:64)
at com.excilys.ebi.gatling.charts.result.reader.FileDataReader.(FileDataReader.scala:129)
I’d say you have edited some simulation.log file and failed to do so properly so a record (of SCENARIO type) is corrupted: the column that should contain either START or STOP contains 1409621480875 instead.
Line pointed in stacktrace is explicit: https://github.com/gatling/gatling/blob/1.5.X/gatling-charts/src/main/scala/com/excilys/ebi/gatling/charts/result/reader/ResultsHolder.scala#L34
I ran my test with -nr option. Do you think that would have caused this?
First 2 lines of my simulation.log look like follows:
RUN 20140902174932 shippingsimulation shippingsimulation
REQUEST Search and Browse Flags 0 Search and Browse Flags 1409680173407 1409680173407 1409680173429 1409680173437 OK
Git link here appears to be from the earlier version. I am on 2.0.0-M3
So your problem is that somehow you ended up mixing Gatling 1 and Gatling 2 jars.
You state you use 2.0.0-M3, where the package is “io.gatling”, yet the stacktrace shows classes with the “com.excilys.ebi.gatling” package that was the one used in Gatling 1.
My bad…it is working fine with 2.0.0-M3
Glad to hear.
The aggregation of all results into one folder and generating the report works good and very easy way in few seconds.
One problem that i saw is duration and start time title: 2015-02-10 17:29:20 +02:00, duration : 13 seconds
it write the last simulation run and not calculate the whole files.
Is there a way to display every simulation result as one point? i mean, if every run is result of one build, i would like to see the graph of all my builds in this one report.
This feature is intended for people performing “manual scaling out” = aggregate results from the same run from different hosts.
ok i understand so what about what i mentioned? is there other way to do it also ?
I don’t properly understand what you’re trying to do.
start up time and duration are computed based on the first and last records in the files (in the temporal sense).
There are 2 issues:
- The title of the merged report is not correct or not meaning: it print for example 13 seconds duration but this duration is just the duration of the last run. this what it need to print?
- First, I love the gatling report. i want to show the response time of each transaction for each run for long time.
for example: we have one run of load test every night. lets take the Mean column of each run. if i have 10 runs, i want to show the graph of those 10 runs and if i want drill down of every run i will be able to see your lovely report when pressing on a specific run for example.
so what i want to ask is there a way of such aggregation in gatling?
One of the targets of load tests results is to show the results for long time period.
- The title of the merged report is not correct or not meaning: it print for example 13 seconds duration but this duration is just the duration of the last run. this what it need to print?
The FileDataReader collects all the files matching *.log, parse them as a single stream, and compute the runStart and the runEnd as the min event start timestamp and the max event end timestamp respectively.
- First, I love the gatling report. i want to show the response time of each transaction for each run for long time.
for example: we have one run of load test every night. lets take the Mean column of each run. if i have 10 runs, i want to show the graph of those 10 runs and if i want drill down of every run i will be able to see your lovely report when pressing on a specific run for example.
so what i want to ask is there a way of such aggregation in gatling?
One of the targets of load tests results is to show the results for long time period.
The best you can have for now is our Jenkins plugin.
Then, we’re actually currently working on this feature, but it will be a commercial product and won’t be part of the open-source project.
I can keep you posted when we have something to demo if you’re interested.
Cheers,
- ok i see what happened, my files names were from simulation1 to simulation10 but the earliest file was simulation10 so i named it again even the explanation you described is not refer at all to the names, but anyway it works now correct.
- actually we are using bamboo so i don’t know if jenkins plugin will be relevant. about the new feature, yes i would like to know about it more and have a demo when you have, thanks