5
votes

I am new to JMeter, and I'm trying to get JMeter to produce the html report dashboard for an existing test script. I do not get any exceptions in processing, and the log indicates no issues generating the reports:

2016/07/08 12:42:24 DEBUG - jmeter.report.dashboard.ReportGenerator: Start report generation
2016/07/08 12:42:25 INFO  - jmeter.report.processor.NormalizerSampleConsumer: Using format:ms to parse timeStamp field
2016/07/08 12:42:25 DEBUG - jmeter.report.dashboard.ReportGenerator: Start samples processing
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.AggregateConsumer#stopProducing(): beginDate produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.AggregateConsumer#stopProducing(): endDate produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.ApdexSummaryConsumer#stopProducing(): apdexSummary produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.RequestsSummaryConsumer#stopProducing(): requestsSummary produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.StatisticsSummaryConsumer#stopProducing(): statisticsSummary produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.ErrorsSummaryConsumer#stopProducing(): errorsSummary produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.LatencyVSRequestGraphConsumer#stopProducing(): latencyVsRequest produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.HitsPerSecondGraphConsumer#stopProducing(): hitsPerSecond produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.CodesPerSecondGraphConsumer#stopProducing(): codesPerSecond produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.ResponseTimeVSRequestGraphConsumer#stopProducing(): responseTimeVsRequest produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.FilterConsumer#stopProducing(): startIntervalControlerFilter produced 4175 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.ResponseTimePercentilesGraphConsumer#stopProducing(): responseTimePercentiles produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.ResponseTimeOverTimeGraphConsumer#stopProducing(): responseTimesOverTime produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.BytesThroughputGraphConsumer#stopProducing(): bytesThroughputOverTime produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.ActiveThreadsGraphConsumer#stopProducing(): activeThreadsOverTime produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.TimeVSThreadGraphConsumer#stopProducing(): timeVsThreads produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.ResponseTimeDistributionGraphConsumer#stopProducing(): responseTimeDistribution produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.LatencyOverTimeGraphConsumer#stopProducing(): latenciesOverTime produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.TransactionsPerSecondGraphConsumer#stopProducing(): transactionsPerSecond produced 0 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.FilterConsumer#stopProducing(): nameFilter produced 10020 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.NormalizerSampleConsumer#stopProducing(): normalizer produced 2505 samples
2016/07/08 12:42:25 INFO  - org.apache.jmeter.report.processor.CsvFileSampleSource: produce(): 835 samples produced in 481ms on channel 0
2016/07/08 12:42:25 DEBUG - jmeter.report.dashboard.ReportGenerator: End of samples processing
2016/07/08 12:42:25 DEBUG - jmeter.report.dashboard.ReportGenerator: Start data exporting
2016/07/08 12:42:25 INFO  - jmeter.report.dashboard.ReportGenerator: Exporting data using exporter:'html' of className:'org.apache.jmeter.report.dashboard.HtmlTemplateExporter'
2016/07/08 12:42:25 DEBUG - jmeter.report.dashboard.HtmlTemplateExporter: Start template processing
2016/07/08 12:42:25 INFO  - jmeter.report.dashboard.HtmlTemplateExporter: Will generate dashboard in folder:/tmp/jmeter
2016/07/08 12:42:26 INFO  - jmeter.report.dashboard.HtmlTemplateExporter: Report will be generated in:/tmp/jmeter, creating folder structure
2016/07/08 12:42:26 DEBUG - jmeter.report.dashboard.HtmlTemplateExporter: End of template processing
2016/07/08 12:42:26 DEBUG - jmeter.report.dashboard.ReportGenerator: End of data exporting
2016/07/08 12:42:26 DEBUG - jmeter.report.dashboard.ReportGenerator: End of report generation

However, when I view the produced index.html file, there is no data:

enter image description here

The result.csv file is not empty though:

enter image description here

My reportgenerator and saveservice config is:

#---------------------------------------------------------------------------
# Reporting configuration
#---------------------------------------------------------------------------
# If you want to debug reporting, uncomment this line
log_level.jmeter.report=DEBUG
jmeter.reportgenerator.report_title=AMP JMeter-test Dashboard
jmeter.reportgenerator.overall_granularity=6000
jmeter.reportgenerator.temp_dir = /tmp
#---------------------------------------------------------------------------
# Results file configuration
#---------------------------------------------------------------------------
jmeter.save.saveservice.output_format=csv
# assertion_results_failure_message only affects CSV output
jmeter.save.saveservice.assertion_results_failure_message=true
jmeter.save.saveservice.assertion_results=all
#jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true

jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.timestamp_format=ms
jmeter.save.saveservice.default_delimiter=,
jmeter.save.saveservice.print_field_names=true

csvread.delimiter=,

I have tried to search for similar problems (here and elsewhere), but I cannot find anything that addresses such a situation. The results are being written and populated in the CSV file in the format I expect, but something seems to go wrong in reading the data. If I can at least get the Errors and Result Summary parts populated I would be happy at this point.

I have noticed in the log (contained in the snippet), that there are a lot of 0 samples reported for different things...but I think I only care about the CsvFileSampleSource, which it correctly identifies as having 800-something samples...

Also, I run my test like:

jmeter -n -t /path/to/my/amp_automation.jmx -l /tmp/result.csv -e -o /tmp/jmeter

Any insight would be appreciated, I may jut be missing something here. I ideally do not want to revert to the "older" ways of getting html reports generated for jmeter (with ant, or other listeners etc.)

Thank you!

10

10 Answers

4
votes

I had similar issue. I realized that I used double quotes as one of the HTTP request name in the .jtl report. I removed double quotes from jtl, regenerated the dashboard. It worked like a charm!.

3
votes

I suggest you carefully read this tutorial by one of JMeter developers and refer to jmeter documentation:

And check:

Note there was a bug up to JMeter 5.0 included when you used quotes in Samples:

Until the 5.1 is released you can use nightly build or remove the quotes:

1
votes

In your user.properties file try adding:

    jmeter.reportgenerator.sample_filter=.*
    jmeter.reportgenerator.exporter.html.series_filter=.*

As mentioned in an earlier answer check your filtering.

For debugging purposes I recommend you separate out the dashboard generation to post run just to debug this issue using the command line -g option so you'll get a less busy jmeter.log

Look at the jmeter.log it should show exactly which values are being read and how there set. You want to make sure your not passing a "None" value especially for sample_filter!

1
votes

From where are you trying to open the report?. Are the other generated folders like content , sbadmin are at the same location?

I changed the place of index.html file so i was facing the same problem. Please make sure you are accessing the index.html file from the folder that jmeter created.

1
votes

I encountered a similar situation today, and in investigating the webpage, I found the charts were generated from JavaScript. When I looked at the dev console in Chrome, I found a syntax error created by double quotes embedded in the JavaScript. I don't have a 100% solution for it yet, but thought this might be something for you to check. I trimmed the escaped quotes out of my csv file and re-generated my report, and got the output I was expecting.

1
votes

The error is visible in the csv file:

double quotes in sampler name

Do not use double quotes (") in sampler names. They are written without any escaping to the .csv file and the dashboard renderer writes them in the javascript as-is. This causes a parse error in the javascript where it inserts the sampler names in table cells and thus nothing gets rendered.

0
votes

Please use below command to generate reports in cmd why because you already have results csv file,with this file you can generate report,Please use below command to generate reports as per your results csv file.

In cmd first you need to go to jmeter/bin folder in cmd then enter below command and replace with your path

jmeter -g E:\Jmeter_Performance_Testing\Silver\SAPPI_Redemption\TestResults\SAPPIRedemption.csv -o E:\Jmeter_Performance_Testing\Silver\SAPPI_Redemption\HTMLReports

jmeter -g path(path of your results csv file) -o path(path to where reports should display). Let me know your feedback.

0
votes

HTML Publisher Plugin version 1.14

None of these worked for me, however the last few posts about escaped characters got me on the right track.

Mine had to do with the Jenkins security policy which blocks the javascript on the generated index.html. Here is a good post to help you fix the issue:

Blocked script execution in <URL>. because the document's frame is sandboxed and the 'allow-scripts' permission is not set

0
votes

I was having this same problem and after trying many things took a guess that my file name was too long. I shortened the filename and now I can see the report generated as expected. See below examples.

jmeter -g Picking_Aggregate_Report_Success_16_890000.csv -o Picking_Aggregate_Report_Success_16_890000_Dashboard\

Produced a blank report

jmeter -g Picking_Aggregate_Report_Success.csv -o Picking_Aggregate_Report_Success_Dashboard\

Produced a visible report

jmeter -g Picking_Aggregate_Report_Error_16_890000.csv -o Picking_Aggregate_Report_Error_16_890000_Dashboard\

Produced a visible report

Nothing but the file name was changed to make it work.

I think there is some maximum length for the argument of the filename that is somewhere around 40 characters and it is having a silent failure if it gets something over that.

-1
votes

I think your user.properties need add something like these: jmeter.reportgenerator.exporter.html.series_filter=((^your label name)|(^...))(-success|-failure)?


As you provided result.csv contents. Maybe you can add as below:

jmeter.reportgenerator.exporter.html.series_filter=((^login)|(^create user))(-success|-failure)?

I suggest you can paste whole contents in your reportgenerator.properties to user.properties. Then setup "jmeter.reportgenerator.exporter.html.series_filter" can quickly solve your problem. Hope this can help you. Good luck.