Another comment, AFAIU, reportgenerator.properties must be added to bundles ? I commited the fix, but please review as I am not sure.
On Sat, May 7, 2016 at 12:06 AM, sebb <seb...@gmail.com> wrote: > On 6 May 2016 at 22:44, Philippe Mouawad <philippe.moua...@gmail.com> > wrote: > > -1 > > > > I thought no important modification was to be done before 3.0 release ? > > Is that your only objection? > > > > > > > On Fri, May 6, 2016 at 11:38 PM, <s...@apache.org> wrote: > > > >> Author: sebb > >> Date: Fri May 6 21:38:36 2016 > >> New Revision: 1742642 > >> > >> URL: http://svn.apache.org/viewvc?rev=1742642&view=rev > >> Log: > >> Move ReportGenerator defaults to a separate properties file > >> > >> Added: > >> jmeter/trunk/bin/reportgenerator.properties (with props) > >> Modified: > >> jmeter/trunk/bin/jmeter.properties > >> > >> > jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/ReportGenerator.java > >> > >> Modified: jmeter/trunk/bin/jmeter.properties > >> URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/bin/jmeter.properties?rev=1742642&r1=1742641&r2=1742642&view=diff > >> > >> > ============================================================================== > >> --- jmeter/trunk/bin/jmeter.properties (original) > >> +++ jmeter/trunk/bin/jmeter.properties Fri May 6 21:38:36 2016 > >> @@ -1184,116 +1184,6 @@ view.results.tree.renderers_order=.Rende > >> classfinder.functions.contain=.functions. > >> classfinder.functions.notContain=.gui. > >> > >> > >> > -#--------------------------------------------------------------------------- > >> -# Reporting configuration > >> > >> > -#--------------------------------------------------------------------------- > >> - > >> -# Sets the satisfaction threshold for the APDEX calculation (in > >> milliseconds). > >> -#jmeter.reportgenerator.apdex_satisfied_threshold=500 > >> - > >> -# Sets the tolerance threshold for the APDEX calculation (in > >> milliseconds). > >> -#jmeter.reportgenerator.apdex_tolerated_threshold=1500 > >> - > >> -# Regular Expression which Indicates which samples to keep for graphs > and > >> statistics generation. > >> -# Empty value means no filtering > >> -#jmeter.reportgenerator.sample_filter= > >> - > >> -# Sets the temporary directory used by the generation process if it > needs > >> file I/O operations. > >> -#jmeter.reportgenerator.temp_dir=temp > >> - > >> -# Sets the size of the sliding window used by percentile evaluation. > >> -# Caution : higher value provides a better accuracy but needs more > memory. > >> -#jmeter.reportgenerator.statistic_window = 200000 > >> - > >> -# Configure this property to change the report title > >> -#jmeter.reportgenerator.report_title=Apache JMeter Dashboard > >> - > >> -# Defines the overall granularity for over time graphs > >> -jmeter.reportgenerator.overall_granularity=60000 > >> - > >> -# Response Time Percentiles graph definition > >> > >> > -jmeter.reportgenerator.graph.responseTimePercentiles.classname=org.apache.jmeter.report.processor.graph.impl.ResponseTimePercentilesGraphConsumer > >> -jmeter.reportgenerator.graph.responseTimePercentiles.title=Response > Time > >> Percentiles > >> - > >> -# Response Time Distribution graph definition > >> > >> > -jmeter.reportgenerator.graph.responseTimeDistribution.classname=org.apache.jmeter.report.processor.graph.impl.ResponseTimeDistributionGraphConsumer > >> -jmeter.reportgenerator.graph.responseTimeDistribution.title=Response > Time > >> Distribution > >> > >> > -jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=500 > >> - > >> -# Active Threads Over Time graph definition > >> > >> > -jmeter.reportgenerator.graph.activeThreadsOverTime.classname=org.apache.jmeter.report.processor.graph.impl.ActiveThreadsGraphConsumer > >> -jmeter.reportgenerator.graph.activeThreadsOverTime.title=Active Threads > >> Over Time > >> > >> > -jmeter.reportgenerator.graph.activeThreadsOverTime.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> - > >> -# Time VS Threads graph definition > >> > >> > -jmeter.reportgenerator.graph.timeVsThreads.classname=org.apache.jmeter.report.processor.graph.impl.TimeVSThreadGraphConsumer > >> -jmeter.reportgenerator.graph.timeVsThreads.title=Time VS Threads > >> - > >> -# Bytes Throughput Over Time graph definition > >> > >> > -jmeter.reportgenerator.graph.bytesThroughputOverTime.classname=org.apache.jmeter.report.processor.graph.impl.BytesThroughputGraphConsumer > >> -jmeter.reportgenerator.graph.bytesThroughputOverTime.title=Bytes > >> Throughput Over Time > >> > >> > -jmeter.reportgenerator.graph.bytesThroughputOverTime.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> - > >> -# Response Time Over Time graph definition > >> > >> > -jmeter.reportgenerator.graph.responseTimesOverTime.classname=org.apache.jmeter.report.processor.graph.impl.ResponseTimeOverTimeGraphConsumer > >> -jmeter.reportgenerator.graph.responseTimesOverTime.title=Response Time > >> Over Time > >> > >> > -jmeter.reportgenerator.graph.responseTimesOverTime.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> - > >> -# Latencies Over Time graph definition > >> > >> > -jmeter.reportgenerator.graph.latenciesOverTime.classname=org.apache.jmeter.report.processor.graph.impl.LatencyOverTimeGraphConsumer > >> -jmeter.reportgenerator.graph.latenciesOverTime.title=Latencies Over > Time > >> > >> > -jmeter.reportgenerator.graph.latenciesOverTime.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> - > >> -# Response Time Vs Request graph definition > >> > >> > -jmeter.reportgenerator.graph.responseTimeVsRequest.classname=org.apache.jmeter.report.processor.graph.impl.ResponseTimeVSRequestGraphConsumer > >> -jmeter.reportgenerator.graph.responseTimeVsRequest.title=Response Time > Vs > >> Request > >> > >> > -jmeter.reportgenerator.graph.responseTimeVsRequest.exclude_controllers=true > >> > >> > -jmeter.reportgenerator.graph.responseTimeVsRequest.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> - > >> -# Latencies Vs Request graph definition > >> > >> > -jmeter.reportgenerator.graph.latencyVsRequest.classname=org.apache.jmeter.report.processor.graph.impl.LatencyVSRequestGraphConsumer > >> -jmeter.reportgenerator.graph.latencyVsRequest.title=Latencies Vs > Request > >> -jmeter.reportgenerator.graph.latencyVsRequest.exclude_controllers=true > >> > >> > -jmeter.reportgenerator.graph.latencyVsRequest.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> - > >> -# Hits Per Second graph definition > >> > >> > -jmeter.reportgenerator.graph.hitsPerSecond.classname=org.apache.jmeter.report.processor.graph.impl.HitsPerSecondGraphConsumer > >> -jmeter.reportgenerator.graph.hitsPerSecond.title=Hits Per Second > >> -jmeter.reportgenerator.graph.hitsPerSecond.exclude_controllers=true > >> > >> > -jmeter.reportgenerator.graph.hitsPerSecond.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> - > >> -# Codes Per Second graph definition > >> > >> > -jmeter.reportgenerator.graph.codesPerSecond.classname=org.apache.jmeter.report.processor.graph.impl.CodesPerSecondGraphConsumer > >> -jmeter.reportgenerator.graph.codesPerSecond.title=Codes Per Second > >> -jmeter.reportgenerator.graph.codesPerSecond.exclude_controllers=true > >> > >> > -jmeter.reportgenerator.graph.codesPerSecond.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> - > >> -# Transactions Per Second graph definition > >> > >> > -jmeter.reportgenerator.graph.transactionsPerSecond.classname=org.apache.jmeter.report.processor.graph.impl.TransactionsPerSecondGraphConsumer > >> -jmeter.reportgenerator.graph.transactionsPerSecond.title=Transactions > Per > >> Second > >> > >> > -jmeter.reportgenerator.graph.transactionsPerSecond.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> - > >> -# HTML Export > >> > >> > -jmeter.reportgenerator.exporter.html.classname=org.apache.jmeter.report.dashboard.HtmlTemplateExporter > >> - > >> -# Sets the source directory of templated files from which the html > pages > >> are generated. > >> > >> > -#jmeter.reportgenerator.exporter.html.property.template_dir=report-template > >> - > >> -# Sets the destination directory for generated html pages. > >> -# This will be overridden by the command line option -o > >> -#jmeter.reportgenerator.exporter.html.property.output_dir=report-output > >> - > >> -# Regular Expression which Indicates which graph series are filtered in > >> display > >> -# Empty value means no filtering > >> -#jmeter.reportgenerator.exporter.html.series_filter= > >> - > >> -# Indicates whether series filter apply only on sample series or to all > >> series > >> -# setting this to false can lead to empty graphs if series_filter does > not > >> -# contain required series > >> -#jmeter.reportgenerator.exporter.html.filters_only_sample_series=true > >> - > >> -# Indicates whether only controller samples are displayed on graphs > that > >> support it. > >> -#jmeter.reportgenerator.exporter.html.show_controllers_only=false > >> > >> > >> > #--------------------------------------------------------------------------- > >> # Additional property files to load > >> > >> Added: jmeter/trunk/bin/reportgenerator.properties > >> URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/bin/reportgenerator.properties?rev=1742642&view=auto > >> > >> > ============================================================================== > >> --- jmeter/trunk/bin/reportgenerator.properties (added) > >> +++ jmeter/trunk/bin/reportgenerator.properties Fri May 6 21:38:36 2016 > >> @@ -0,0 +1,140 @@ > >> > >> > +################################################################################ > >> +# Apache JMeter Property file for Report Generator > >> > >> > +################################################################################ > >> + > >> +## Licensed to the Apache Software Foundation (ASF) under one or more > >> +## contributor license agreements. See the NOTICE file distributed > with > >> +## this work for additional information regarding copyright > ownership. > >> +## The ASF licenses this file to You under the Apache License, > Version > >> 2.0 > >> +## (the "License"); you may not use this file except in compliance > with > >> +## the License. You may obtain a copy of the License at > >> +## > >> +## http://www.apache.org/licenses/LICENSE-2.0 > >> +## > >> +## Unless required by applicable law or agreed to in writing, > software > >> +## distributed under the License is distributed on an "AS IS" BASIS, > >> +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > >> implied. > >> +## See the License for the specific language governing permissions > and > >> +## limitations under the License. > >> + > >> > >> > +################################################################################ > >> +# > >> +# THIS FILE SHOULD NOT BE MODIFIED > >> +# > >> +# This avoids having to re-apply the modifications when upgrading > JMeter > >> +# Instead only user.properties should be modified: > >> +# 1/ copy the property you want to modify to user.properties from here > >> +# 2/ Change its value there > >> +# > >> > >> > +################################################################################ > >> + > >> > >> > +#--------------------------------------------------------------------------- > >> +# Reporting configuration > >> > >> > +#--------------------------------------------------------------------------- > >> + > >> +# Sets the satisfaction threshold for the APDEX calculation (in > >> milliseconds). > >> +#jmeter.reportgenerator.apdex_satisfied_threshold=500 > >> + > >> +# Sets the tolerance threshold for the APDEX calculation (in > >> milliseconds). > >> +#jmeter.reportgenerator.apdex_tolerated_threshold=1500 > >> + > >> +# Regular Expression which Indicates which samples to keep for graphs > and > >> statistics generation. > >> +# Empty value means no filtering > >> +#jmeter.reportgenerator.sample_filter= > >> + > >> +# Sets the temporary directory used by the generation process if it > needs > >> file I/O operations. > >> +#jmeter.reportgenerator.temp_dir=temp > >> + > >> +# Sets the size of the sliding window used by percentile evaluation. > >> +# Caution : higher value provides a better accuracy but needs more > memory. > >> +#jmeter.reportgenerator.statistic_window = 200000 > >> + > >> +# Configure this property to change the report title > >> +#jmeter.reportgenerator.report_title=Apache JMeter Dashboard > >> + > >> +# Defines the overall granularity for over time graphs > >> +jmeter.reportgenerator.overall_granularity=60000 > >> + > >> +# Response Time Percentiles graph definition > >> > >> > +jmeter.reportgenerator.graph.responseTimePercentiles.classname=org.apache.jmeter.report.processor.graph.impl.ResponseTimePercentilesGraphConsumer > >> +jmeter.reportgenerator.graph.responseTimePercentiles.title=Response > Time > >> Percentiles > >> + > >> +# Response Time Distribution graph definition > >> > >> > +jmeter.reportgenerator.graph.responseTimeDistribution.classname=org.apache.jmeter.report.processor.graph.impl.ResponseTimeDistributionGraphConsumer > >> +jmeter.reportgenerator.graph.responseTimeDistribution.title=Response > Time > >> Distribution > >> > >> > +jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=500 > >> + > >> +# Active Threads Over Time graph definition > >> > >> > +jmeter.reportgenerator.graph.activeThreadsOverTime.classname=org.apache.jmeter.report.processor.graph.impl.ActiveThreadsGraphConsumer > >> +jmeter.reportgenerator.graph.activeThreadsOverTime.title=Active Threads > >> Over Time > >> > >> > +jmeter.reportgenerator.graph.activeThreadsOverTime.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> + > >> +# Time VS Threads graph definition > >> > >> > +jmeter.reportgenerator.graph.timeVsThreads.classname=org.apache.jmeter.report.processor.graph.impl.TimeVSThreadGraphConsumer > >> +jmeter.reportgenerator.graph.timeVsThreads.title=Time VS Threads > >> + > >> +# Bytes Throughput Over Time graph definition > >> > >> > +jmeter.reportgenerator.graph.bytesThroughputOverTime.classname=org.apache.jmeter.report.processor.graph.impl.BytesThroughputGraphConsumer > >> +jmeter.reportgenerator.graph.bytesThroughputOverTime.title=Bytes > >> Throughput Over Time > >> > >> > +jmeter.reportgenerator.graph.bytesThroughputOverTime.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> + > >> +# Response Time Over Time graph definition > >> > >> > +jmeter.reportgenerator.graph.responseTimesOverTime.classname=org.apache.jmeter.report.processor.graph.impl.ResponseTimeOverTimeGraphConsumer > >> +jmeter.reportgenerator.graph.responseTimesOverTime.title=Response Time > >> Over Time > >> > >> > +jmeter.reportgenerator.graph.responseTimesOverTime.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> + > >> +# Latencies Over Time graph definition > >> > >> > +jmeter.reportgenerator.graph.latenciesOverTime.classname=org.apache.jmeter.report.processor.graph.impl.LatencyOverTimeGraphConsumer > >> +jmeter.reportgenerator.graph.latenciesOverTime.title=Latencies Over > Time > >> > >> > +jmeter.reportgenerator.graph.latenciesOverTime.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> + > >> +# Response Time Vs Request graph definition > >> > >> > +jmeter.reportgenerator.graph.responseTimeVsRequest.classname=org.apache.jmeter.report.processor.graph.impl.ResponseTimeVSRequestGraphConsumer > >> +jmeter.reportgenerator.graph.responseTimeVsRequest.title=Response Time > Vs > >> Request > >> > >> > +jmeter.reportgenerator.graph.responseTimeVsRequest.exclude_controllers=true > >> > >> > +jmeter.reportgenerator.graph.responseTimeVsRequest.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> + > >> +# Latencies Vs Request graph definition > >> > >> > +jmeter.reportgenerator.graph.latencyVsRequest.classname=org.apache.jmeter.report.processor.graph.impl.LatencyVSRequestGraphConsumer > >> +jmeter.reportgenerator.graph.latencyVsRequest.title=Latencies Vs > Request > >> +jmeter.reportgenerator.graph.latencyVsRequest.exclude_controllers=true > >> > >> > +jmeter.reportgenerator.graph.latencyVsRequest.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> + > >> +# Hits Per Second graph definition > >> > >> > +jmeter.reportgenerator.graph.hitsPerSecond.classname=org.apache.jmeter.report.processor.graph.impl.HitsPerSecondGraphConsumer > >> +jmeter.reportgenerator.graph.hitsPerSecond.title=Hits Per Second > >> +jmeter.reportgenerator.graph.hitsPerSecond.exclude_controllers=true > >> > >> > +jmeter.reportgenerator.graph.hitsPerSecond.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> + > >> +# Codes Per Second graph definition > >> > >> > +jmeter.reportgenerator.graph.codesPerSecond.classname=org.apache.jmeter.report.processor.graph.impl.CodesPerSecondGraphConsumer > >> +jmeter.reportgenerator.graph.codesPerSecond.title=Codes Per Second > >> +jmeter.reportgenerator.graph.codesPerSecond.exclude_controllers=true > >> > >> > +jmeter.reportgenerator.graph.codesPerSecond.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> + > >> +# Transactions Per Second graph definition > >> > >> > +jmeter.reportgenerator.graph.transactionsPerSecond.classname=org.apache.jmeter.report.processor.graph.impl.TransactionsPerSecondGraphConsumer > >> +jmeter.reportgenerator.graph.transactionsPerSecond.title=Transactions > Per > >> Second > >> > >> > +jmeter.reportgenerator.graph.transactionsPerSecond.property.set_granularity=${jmeter.reportgenerator.overall_granularity} > >> + > >> +# HTML Export > >> > >> > +jmeter.reportgenerator.exporter.html.classname=org.apache.jmeter.report.dashboard.HtmlTemplateExporter > >> + > >> +# Sets the source directory of templated files from which the html > pages > >> are generated. > >> > >> > +#jmeter.reportgenerator.exporter.html.property.template_dir=report-template > >> + > >> +# Sets the destination directory for generated html pages. > >> +# This will be overridden by the command line option -o > >> +#jmeter.reportgenerator.exporter.html.property.output_dir=report-output > >> + > >> +# Regular Expression which Indicates which graph series are filtered in > >> display > >> +# Empty value means no filtering > >> +#jmeter.reportgenerator.exporter.html.series_filter= > >> + > >> +# Indicates whether series filter apply only on sample series or to all > >> series > >> +# setting this to false can lead to empty graphs if series_filter does > not > >> +# contain required series > >> +#jmeter.reportgenerator.exporter.html.filters_only_sample_series=true > >> + > >> +# Indicates whether only controller samples are displayed on graphs > that > >> support it. > >> +#jmeter.reportgenerator.exporter.html.show_controllers_only=false > >> > >> Propchange: jmeter/trunk/bin/reportgenerator.properties > >> > >> > ------------------------------------------------------------------------------ > >> svn:eol-style = native > >> > >> Modified: > >> > jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/ReportGenerator.java > >> URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/ReportGenerator.java?rev=1742642&r1=1742641&r2=1742642&view=diff > >> > >> > ============================================================================== > >> --- > >> > jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/ReportGenerator.java > >> (original) > >> +++ > >> > jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/ReportGenerator.java > >> Fri May 6 21:38:36 2016 > >> @@ -18,10 +18,12 @@ > >> package org.apache.jmeter.report.dashboard; > >> > >> import java.io.File; > >> +import java.io.FileInputStream; > >> import java.io.IOException; > >> import java.lang.reflect.InvocationTargetException; > >> import java.lang.reflect.Method; > >> import java.util.Map; > >> +import java.util.Properties; > >> import java.util.regex.Matcher; > >> import java.util.regex.Pattern; > >> > >> @@ -66,6 +68,8 @@ import org.apache.log.Logger; > >> * @since 3.0 > >> */ > >> public class ReportGenerator { > >> + private static final String REPORTGENERATOR_PROPERTIES = > >> "reportgenerator.properties"; > >> + > >> private static final Logger LOG = > LoggingManager.getLoggerForClass(); > >> > >> private static final boolean CSV_OUTPUT_FORMAT = "csv" > >> @@ -135,8 +139,21 @@ public class ReportGenerator { > >> } > >> this.resultCollector = resultCollector; > >> this.testFile = file; > >> - configuration = ReportGeneratorConfiguration > >> - .loadFromProperties(JMeterUtils.getJMeterProperties()); > >> + final Properties merged = new Properties(); > >> + merged.putAll(loadProps(new File(JMeterUtils.getJMeterBinDir(), > >> REPORTGENERATOR_PROPERTIES))); > >> + merged.putAll(JMeterUtils.getJMeterProperties()); > >> + configuration = > >> ReportGeneratorConfiguration.loadFromProperties(merged); > >> + } > >> + > >> + private static Properties loadProps(File file) { > >> + final Properties props = new Properties(); > >> + try (FileInputStream inStream = new FileInputStream(file)) { > >> + props.load(inStream); > >> + } catch (IOException e) { > >> + LOG.error("Problem loading properties ", e); > >> + System.err.println("Problem loading properties " + e); > >> + } > >> + return props; > >> } > >> > >> /** > >> > >> > >> > > > > > > -- > > Cordialement. > > Philippe Mouawad. > -- Cordialement. Philippe Mouawad.