You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2017/02/10 07:44:48 UTC
svn commit: r1782438 - in /jmeter/trunk/src/core/org/apache/jmeter: plugin/
report/config/ report/core/ report/dashboard/ report/processor/
report/processor/graph/ reporters/
Author: pmouawad
Date: Fri Feb 10 07:44:47 2017
New Revision: 1782438
URL: http://svn.apache.org/viewvc?rev=1782438&view=rev
Log:
Bug 60564 - Migrating LogKit to SLF4J - core/engine,plugin,report,reporters packages (2/2)
Contributed by Woonsan Ko
This closes #270
Bugzilla Id: 60564
Modified:
jmeter/trunk/src/core/org/apache/jmeter/plugin/PluginManager.java
jmeter/trunk/src/core/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java
jmeter/trunk/src/core/org/apache/jmeter/report/core/AbstractSampleWriter.java
jmeter/trunk/src/core/org/apache/jmeter/report/core/CsvSampleReader.java
jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java
jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/ReportGenerator.java
jmeter/trunk/src/core/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java
jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java
jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultAction.java
jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java
jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java
jmeter/trunk/src/core/org/apache/jmeter/reporters/Summariser.java
Modified: jmeter/trunk/src/core/org/apache/jmeter/plugin/PluginManager.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/plugin/PluginManager.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/plugin/PluginManager.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/plugin/PluginManager.java Fri Feb 10 07:44:47 2017
@@ -23,13 +23,13 @@ import java.net.URL;
import javax.swing.ImageIcon;
import org.apache.jmeter.gui.GUIFactory;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public final class PluginManager {
private static final PluginManager instance = new PluginManager();
- private static final Logger log = LoggingManager.getLoggerForClass();
+ private static final Logger log = LoggerFactory.getLogger(PluginManager.class);
private PluginManager() {
}
@@ -56,13 +56,13 @@ public final class PluginManager {
URL resource = classloader.getResource(icon[1].trim());
if (resource == null) {
- log.warn("Can't find icon for " + icon[0] + " - " + icon[1]);
+ log.warn("Can't find icon for {} - {}", icon[0], icon[1]);
} else {
GUIFactory.registerIcon(icon[0], new ImageIcon(resource));
if (icon.length > 2 && icon[2] != null) {
URL resource2 = classloader.getResource(icon[2].trim());
if (resource2 == null) {
- log.info("Can't find disabled icon for " + icon[0] + " - " + icon[2]);
+ log.info("Can't find disabled icon for {} - {}", icon[0], icon[2]);
} else {
GUIFactory.registerDisabledIcon(icon[0], new ImageIcon(resource2));
}
Modified: jmeter/trunk/src/core/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java Fri Feb 10 07:44:47 2017
@@ -27,11 +27,11 @@ import java.util.Map;
import java.util.Properties;
import java.util.regex.Pattern;
-import jodd.props.Props;
-
import org.apache.commons.lang3.StringUtils;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import jodd.props.Props;
/**
* The class ReportGeneratorConfiguration describes the configuration of the
@@ -41,7 +41,7 @@ import org.apache.log.Logger;
*/
public class ReportGeneratorConfiguration {
- private static final Logger LOG = LoggingManager.getLoggerForClass();
+ private static final Logger log = LoggerFactory.getLogger(ReportGeneratorConfiguration.class);
private static final String RANGE_DATE_FORMAT_DEFAULT = "yyyyMMddHHmmss"; //$NON-NLS-1$
@@ -92,10 +92,6 @@ public class ReportGeneratorConfiguratio
private static final String REPORT_GENERATOR_KEY_END_DATE = REPORT_GENERATOR_KEY_PREFIX
+ KEY_DELIMITER + "end_date";
- private static final String LOAD_EXPORTER_FMT = "Load configuration for exporter \"%s\"";
- private static final String LOAD_GRAPH_FMT = "Load configuration for graph \"%s\"";
- private static final String INVALID_KEY_FMT = "Invalid property \"%s\", skip it.";
- private static final String NOT_FOUND_PROPERTY_FMT = "Property \"%s\" not found, using default value \"%s\" instead.";
// Required graph properties
// Exclude controllers
@@ -126,11 +122,6 @@ public class ReportGeneratorConfiguratio
public static final String SUBCONF_KEY_CLASSNAME = "classname";
public static final String SUBCONF_KEY_PROPERTY = "property";
- private static final String START_LOADING_MSG = "Report generator properties loading";
- private static final String END_LOADING_MSG = "End of report generator properties loading";
- private static final String REQUIRED_PROPERTY_FMT = "Use \"%s\" value for required property \"%s\"";
- private static final String OPTIONAL_PROPERTY_FMT = "Use \"%s\" value for optional property \"%s\"";
-
private static final class ExporterConfigurationFactory implements
SubConfigurationFactory<ExporterConfiguration> {
private final Props props;
@@ -148,7 +139,7 @@ public class ReportGeneratorConfiguratio
public void initialize(String exportId,
ExporterConfiguration exportConfiguration)
throws ConfigurationException {
- LOG.debug(String.format(LOAD_EXPORTER_FMT, exportId));
+ log.debug("Load configuration for exporter '{}'", exportId);
// Get the property defining the class name
String className = getRequiredProperty(
@@ -156,9 +147,7 @@ public class ReportGeneratorConfiguratio
getExporterPropertyKey(exportId,
SUBCONF_KEY_CLASSNAME), "",
String.class);
- if(LOG.isDebugEnabled()) {
- LOG.debug("Using class:'"+className+"'"+" for exporter:'"+exportId+"'");
- }
+ log.debug("Using class:'{}' for exporter:'{}'", className, exportId);
exportConfiguration.setClassName(className);
// Get the property defining whether only sample series
@@ -236,7 +225,7 @@ public class ReportGeneratorConfiguratio
public void initialize(String graphId,
GraphConfiguration graphConfiguration)
throws ConfigurationException {
- LOG.debug(String.format(LOAD_GRAPH_FMT, graphId));
+ log.debug("Load configuration for graph '{}'", graphId);
// Get the property defining whether the graph have to
// filter controller samples
@@ -261,9 +250,7 @@ public class ReportGeneratorConfiguratio
getGraphPropertyKey(graphId,
SUBCONF_KEY_CLASSNAME), "",
String.class);
- if(LOG.isDebugEnabled()) {
- LOG.debug("Using class:'"+className+"' for graph:'"+title+"' with id:'"+graphId+"'");
- }
+ log.debug("Using class:'{}' for graph:'{}' with id:'{}'", className, title, graphId);
graphConfiguration.setClassName(className);
}
@@ -477,8 +464,7 @@ public class ReportGeneratorConfiguratio
throws ConfigurationException {
String value = props.getValue(key);
if (value == null) {
- LOG.info(String.format(NOT_FOUND_PROPERTY_FMT, key,
- defaultValue));
+ log.info("Property '{}' not found, using default value '{}' instead.", key, defaultValue);
return defaultValue;
}
return ConfigurationUtils.convert(value, clazz);
@@ -488,7 +474,7 @@ public class ReportGeneratorConfiguratio
String key, Class<TProperty> clazz) throws ConfigurationException {
TProperty property = getProperty(props, key, null, clazz);
if (property != null) {
- LOG.debug(String.format(OPTIONAL_PROPERTY_FMT, property, key));
+ log.debug("Use '{}' value for optional property '{}'", property, key);
}
return property;
}
@@ -497,7 +483,7 @@ public class ReportGeneratorConfiguratio
String key, TProperty defaultValue, Class<TProperty> clazz)
throws ConfigurationException {
TProperty property = getProperty(props, key, defaultValue, clazz);
- LOG.debug(String.format(REQUIRED_PROPERTY_FMT, property, key));
+ log.debug("Use '{}' value for required property '{}'", property, key);
return property;
}
@@ -559,7 +545,7 @@ public class ReportGeneratorConfiguratio
subConfigurations.put(name, subConfiguration);
}
} else {
- LOG.warn(String.format(INVALID_KEY_FMT, key));
+ log.warn("Invalid property '{}', skip it.", key);
}
}
@@ -598,15 +584,13 @@ public class ReportGeneratorConfiguratio
public static ReportGeneratorConfiguration loadFromProperties(
Properties properties) throws ConfigurationException {
- LOG.debug(START_LOADING_MSG);
+ log.debug("Report generator properties loading");
ReportGeneratorConfiguration configuration = new ReportGeneratorConfiguration();
// Use jodd.Props to ease property handling
final Props props = new Props();
- if(LOG.isDebugEnabled()) {
- LOG.debug("Loading properties:\r\n"+properties);
- }
+ log.debug("Loading properties:\r\n{}", properties);
props.load(properties);
// Load temporary directory property
@@ -664,8 +648,8 @@ public class ReportGeneratorConfiguratio
configuration.setStartDate(reportStartDate);
}
} catch (ParseException e) {
- LOG.error("Error parsing property " + REPORT_GENERATOR_KEY_START_DATE + " with value: " + startDateValue
- + " using format: " + rangeDateFormat, e);
+ log.error("Error parsing property {} with value: {} using format: {}", REPORT_GENERATOR_KEY_START_DATE,
+ startDateValue, rangeDateFormat, e);
}
try {
if(!StringUtils.isEmpty(endDateValue)) {
@@ -673,11 +657,11 @@ public class ReportGeneratorConfiguratio
configuration.setEndDate(reportEndDate);
}
} catch (ParseException e) {
- LOG.error("Error parsing property " + REPORT_GENERATOR_KEY_END_DATE + " with value: " + endDateValue
- + " using format: " + rangeDateFormat, e);
+ log.error("Error parsing property {} with value: {} using format: {}", REPORT_GENERATOR_KEY_END_DATE,
+ endDateValue, rangeDateFormat, e);
}
- LOG.info("Will use date range start date: " + startDateValue + ", end date: " + endDateValue);
+ log.info("Will use date range start date: {}, end date: {}", startDateValue, endDateValue);
// Find graph identifiers and load a configuration for each
final Map<String, GraphConfiguration> graphConfigurations = configuration
@@ -687,7 +671,7 @@ public class ReportGeneratorConfiguratio
new GraphConfigurationFactory(props));
if (graphConfigurations.isEmpty()) {
- LOG.info("No graph configuration found.");
+ log.info("No graph configuration found.");
}
// Find exporter identifiers and load a configuration for each
@@ -698,10 +682,10 @@ public class ReportGeneratorConfiguratio
new ExporterConfigurationFactory(props));
if (exportConfigurations.isEmpty()) {
- LOG.warn("No export configuration found. No report will be generated.");
+ log.warn("No export configuration found. No report will be generated.");
}
- LOG.debug(END_LOADING_MSG);
+ log.debug("End of report generator properties loading");
return configuration;
}
Modified: jmeter/trunk/src/core/org/apache/jmeter/report/core/AbstractSampleWriter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/core/AbstractSampleWriter.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/core/AbstractSampleWriter.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/core/AbstractSampleWriter.java Fri Feb 10 07:44:47 2017
@@ -29,8 +29,9 @@ import java.nio.charset.StandardCharsets
import org.apache.commons.lang3.Validate;
import org.apache.jmeter.save.SaveService;
-import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.util.JOrphanUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Base class for implementing sample writer.<br>
@@ -50,7 +51,7 @@ public abstract class AbstractSampleWrit
private static final String CHARSET = SaveService.getFileEncoding(StandardCharsets.UTF_8.displayName());
- private static org.apache.log.Logger log = LoggingManager.getLoggerForClass();
+ private static Logger log = LoggerFactory.getLogger(AbstractSampleWriter.class);
/** output writer to write samples to */
protected PrintWriter writer;
@@ -88,7 +89,7 @@ public abstract class AbstractSampleWrit
try {
setWriter(new OutputStreamWriter(out, CHARSET));
} catch (UnsupportedEncodingException e) {
- log.warn("Unsupported CHARSET: " + CHARSET, e);
+ log.warn("Unsupported CHARSET: {}", CHARSET, e);
}
}
Modified: jmeter/trunk/src/core/org/apache/jmeter/report/core/CsvSampleReader.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/core/CsvSampleReader.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/core/CsvSampleReader.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/core/CsvSampleReader.java Fri Feb 10 07:44:47 2017
@@ -31,9 +31,9 @@ import org.apache.jmeter.samplers.Sample
import org.apache.jmeter.save.CSVSaveService;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.util.JOrphanUtils;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Reader class for reading CSV files.
@@ -45,7 +45,7 @@ import org.apache.log.Logger;
*/
public class CsvSampleReader implements Closeable{
- private static final Logger LOG = LoggingManager.getLoggerForClass();
+ private static final Logger log = LoggerFactory.getLogger(CsvSampleReader.class);
private static final int BUF_SIZE = 1024 * 1024;
private static final String CHARSET = SaveService.getFileEncoding(StandardCharsets.UTF_8.displayName());
@@ -134,8 +134,12 @@ public class CsvSampleReader implements
&& CSVSaveService.getSampleSaveConfiguration(line,
file.getAbsolutePath()) == null) {
// Build metadata from default save config
- LOG.warn("File '"+file.getAbsolutePath()+"' does not contain the field names header, "
- + "ensure the jmeter.save.saveservice.* properties are the same as when the CSV file was created or the file may be read incorrectly");
+ if (log.isWarnEnabled()) {
+ log.warn(
+ "File '{}' does not contain the field names header, "
+ + "ensure the jmeter.save.saveservice.* properties are the same as when the CSV file was created or the file may be read incorrectly",
+ file.getAbsolutePath());
+ }
System.err.println("File '"+file.getAbsolutePath()+"' does not contain the field names header, "
+ "ensure the jmeter.save.saveservice.* properties are the same as when the CSV file was created or the file may be read incorrectly");
result = new SampleMetadata(
Modified: jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java Fri Feb 10 07:44:47 2017
@@ -45,9 +45,9 @@ import org.apache.jmeter.report.processo
import org.apache.jmeter.report.processor.ValueResultData;
import org.apache.jmeter.report.processor.graph.AbstractGraphConsumer;
import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.util.JOrphanUtils;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import freemarker.template.Configuration;
import freemarker.template.TemplateExceptionHandler;
@@ -63,7 +63,7 @@ public class HtmlTemplateExporter extend
/** Format used for non null check of parameters. */
private static final String MUST_NOT_BE_NULL = "%s must not be null";
- private static final Logger LOG = LoggingManager.getLoggerForClass();
+ private static final Logger log = LoggerFactory.getLogger(HtmlTemplateExporter.class);
public static final String DATA_CTX_REPORT_TITLE = "reportTitle";
public static final String DATA_CTX_TESTFILE = "testFile";
@@ -216,8 +216,8 @@ public class HtmlTemplateExporter extend
// whereas the current graph support controller
// discrimination and excludes
// controllers
- LOG.warn(ReportGeneratorConfiguration.EXPORTER_KEY_SHOW_CONTROLLERS_ONLY
- + " is set while the graph "+graphId+" excludes controllers.");
+ log.warn("{} is set while the graph {} excludes controllers.",
+ ReportGeneratorConfiguration.EXPORTER_KEY_SHOW_CONTROLLERS_ONLY, graphId);
return false;
} else {
if (filterPattern != null) {
@@ -264,8 +264,8 @@ public class HtmlTemplateExporter extend
}
if (!matches) {
// None series matches the pattern
- LOG.warn("No serie matches the series_filter:"
- + ReportGeneratorConfiguration.EXPORTER_KEY_SERIES_FILTER + " in graph:"+graphId);
+ log.warn("No serie matches the series_filter: {} in graph: {}",
+ ReportGeneratorConfiguration.EXPORTER_KEY_SERIES_FILTER, graphId);
return false;
}
}
@@ -334,7 +334,7 @@ public class HtmlTemplateExporter extend
Validate.notNull(file, MUST_NOT_BE_NULL, "file");
Validate.notNull(configuration, MUST_NOT_BE_NULL, "configuration");
- LOG.debug("Start template processing");
+ log.debug("Start template processing");
// Create data context and populate it
DataContext dataContext = new DataContext();
@@ -349,7 +349,7 @@ public class HtmlTemplateExporter extend
if (!templateDirectory.isDirectory()) {
String message = String.format(INVALID_TEMPLATE_DIRECTORY_FMT,
templateDirectory.getAbsolutePath());
- LOG.error(message);
+ log.error(message);
throw new ExportException(message);
}
@@ -363,7 +363,9 @@ public class HtmlTemplateExporter extend
JOrphanUtils.canSafelyWriteToFolder(outputDir);
- LOG.info("Will generate dashboard in folder:" + outputDir.getAbsolutePath());
+ if (log.isInfoEnabled()) {
+ log.info("Will generate dashboard in folder: {}", outputDir.getAbsolutePath());
+ }
// Add the flag defining whether only sample series are filtered to the
// context
@@ -379,8 +381,7 @@ public class HtmlTemplateExporter extend
try {
filterPattern = Pattern.compile(seriesFilter);
} catch (PatternSyntaxException ex) {
- LOG.error(String.format("Invalid series filter: \"%s\", %s",
- seriesFilter, ex.getDescription()));
+ log.error("Invalid series filter: '{}', {}", seriesFilter, ex.getDescription());
}
}
addToContext(DATA_CTX_SERIES_FILTER, seriesFilter, dataContext);
@@ -478,9 +479,9 @@ public class HtmlTemplateExporter extend
templateCfg.setDirectoryForTemplateLoading(templateDirectory);
templateCfg.setTemplateExceptionHandler(
TemplateExceptionHandler.RETHROW_HANDLER);
- LOG.info(
- "Report will be generated in:" + outputDir.getAbsolutePath()
- + ", creating folder structure");
+ if (log.isInfoEnabled()) {
+ log.info("Report will be generated in: {}, creating folder structure", outputDir.getAbsolutePath());
+ }
FileUtils.forceMkdir(outputDir);
TemplateVisitor visitor = new TemplateVisitor(
templateDirectory.toPath(), outputDir.toPath(), templateCfg,
@@ -490,7 +491,7 @@ public class HtmlTemplateExporter extend
throw new ExportException("Unable to process template files.", ex);
}
- LOG.debug("End of template processing");
+ log.debug("End of template processing");
}
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=1782438&r1=1782437&r2=1782438&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 Feb 10 07:44:47 2017
@@ -57,8 +57,8 @@ import org.apache.jmeter.report.processo
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.samplers.SampleSaveConfiguration;
import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* The class ReportGenerator provides a way to generate all the templated files
@@ -69,7 +69,7 @@ import org.apache.log.Logger;
public class ReportGenerator {
private static final String REPORTGENERATOR_PROPERTIES = "reportgenerator.properties";
- private static final Logger LOG = LoggingManager.getLoggerForClass();
+ private static final Logger log = LoggerFactory.getLogger(ReportGenerator.class);
private static final boolean CSV_OUTPUT_FORMAT = "csv"
.equalsIgnoreCase(JMeterUtils.getPropDefault(
@@ -122,7 +122,7 @@ public class ReportGenerator {
"Report generation requires csv output format, check 'jmeter.save.saveservice.output_format' property");
}
- LOG.info("ReportGenerator will use for Parsing the separator:'"+CSV_DEFAULT_SEPARATOR+"'");
+ log.info("ReportGenerator will use for Parsing the separator: '{}'", CSV_DEFAULT_SEPARATOR);
File file = new File(resultsFile);
if (resultCollector == null) {
@@ -130,27 +130,23 @@ public class ReportGenerator {
throw new IllegalArgumentException(String.format(
"Cannot read test results file : %s", file));
}
- LOG.info("Will only generate report from results file:"
- + resultsFile);
+ log.info("Will only generate report from results file: {}", resultsFile);
} else {
if (file.exists() && file.length() > 0) {
throw new IllegalArgumentException("Results file:"
+ resultsFile + " is not empty");
}
- LOG.info("Will generate report at end of test from results file:"
- + resultsFile);
+ log.info("Will generate report at end of test from results file: {}", resultsFile);
}
this.resultCollector = resultCollector;
this.testFile = file;
final Properties merged = new Properties();
File rgp = new File(JMeterUtils.getJMeterBinDir(), REPORTGENERATOR_PROPERTIES);
- if(LOG.isInfoEnabled()) {
- LOG.info("Reading report generator properties from:"+rgp.getAbsolutePath());
+ if(log.isInfoEnabled()) {
+ log.info("Reading report generator properties from: {}", rgp.getAbsolutePath());
}
merged.putAll(loadProps(rgp));
- if(LOG.isInfoEnabled()) {
- LOG.info("Merging with JMeter properties");
- }
+ log.info("Merging with JMeter properties");
merged.putAll(JMeterUtils.getJMeterProperties());
configuration = ReportGeneratorConfiguration.loadFromProperties(merged);
}
@@ -160,8 +156,8 @@ public class ReportGenerator {
try (FileInputStream inStream = new FileInputStream(file)) {
props.load(inStream);
} catch (IOException e) {
- LOG.error("Problem loading properties from file ", e);
- System.err.println("Problem loading properties " + e); // NOSONAR
+ log.error("Problem loading properties from file.", e);
+ System.err.println("Problem loading properties. " + e); // NOSONAR
}
return props;
}
@@ -197,10 +193,10 @@ public class ReportGenerator {
public void generate() throws GenerationException {
if (resultCollector != null) {
- LOG.info("Flushing result collector before report Generation");
+ log.info("Flushing result collector before report Generation");
resultCollector.flushFile();
}
- LOG.debug("Start report generation");
+ log.debug("Start report generation");
File tmpDir = configuration.getTempDirectory();
boolean tmpDirCreated = createTempDir(tmpDir);
@@ -242,29 +238,33 @@ public class ReportGenerator {
}
// Generate data
- LOG.debug("Start samples processing");
+ log.debug("Start samples processing");
try {
source.run(); // NOSONAR
} catch (SampleException ex) {
throw new GenerationException("Error while processing samples:"+ex.getMessage(), ex);
}
- LOG.debug("End of samples processing");
+ log.debug("End of samples processing");
- LOG.debug("Start data exporting");
+ log.debug("Start data exporting");
// Process configuration to build data exporters
- for (Map.Entry<String, ExporterConfiguration> entry : configuration
- .getExportConfigurations().entrySet()) {
- LOG.info("Exporting data using exporter:'"
- +entry.getKey()+"' of className:'"+entry.getValue().getClassName()+"'");
- exportData(sampleContext, entry.getKey(), entry.getValue());
+ String key;
+ ExporterConfiguration value;
+ for (Map.Entry<String, ExporterConfiguration> entry : configuration.getExportConfigurations().entrySet()) {
+ key = entry.getKey();
+ value = entry.getValue();
+ if (log.isInfoEnabled()) {
+ log.info("Exporting data using exporter:'{}' of className:'{}'", key, value.getClassName());
+ }
+ exportData(sampleContext, key, value);
}
- LOG.debug("End of data exporting");
+ log.debug("End of data exporting");
removeTempDir(tmpDir, tmpDirCreated);
- LOG.debug("End of report generation");
+ log.debug("End of report generation");
}
@@ -301,9 +301,7 @@ public class ReportGenerator {
try {
FileUtils.deleteDirectory(tmpDir);
} catch (IOException ex) {
- LOG.warn(String.format(
- "Cannot delete created temporary directory \"%s\".",
- tmpDir), ex);
+ log.warn("Cannot delete created temporary directory, '{}'.", tmpDir, ex);
}
}
}
@@ -315,7 +313,7 @@ public class ReportGenerator {
if (!tmpDirCreated) {
String message = String.format(
"Cannot create temporary directory \"%s\".", tmpDir);
- LOG.error(message);
+ log.error(message);
throw new GenerationException(message);
}
}
@@ -360,7 +358,7 @@ public class ReportGenerator {
} catch (ClassNotFoundException | IllegalAccessException
| InstantiationException | ClassCastException ex) {
String error = String.format(INVALID_CLASS_FMT, className);
- LOG.error(error, ex);
+ log.error(error, ex);
throw new GenerationException(error, ex);
}
}
@@ -381,11 +379,11 @@ public class ReportGenerator {
} catch (ClassNotFoundException | IllegalAccessException
| InstantiationException | ClassCastException ex) {
String error = String.format(INVALID_CLASS_FMT, className);
- LOG.error(error, ex);
+ log.error(error, ex);
throw new GenerationException(error, ex);
} catch (ExportException ex) {
String error = String.format(INVALID_EXPORT_FMT, exporterName);
- LOG.error(error, ex);
+ log.error(error, ex);
throw new GenerationException(error, ex);
}
}
@@ -541,14 +539,12 @@ public class ReportGenerator {
}
i++;
}
- LOG.warn(String
- .format("\"%s\" is not a valid property for class \"%s\", skip it",
- propertyName, className));
+ log.warn("'{}' is not a valid property for class '{}', skip it", propertyName, className);
} catch (InvocationTargetException | ConvertException ex) {
String message = String
.format("Cannot assign \"%s\" to property \"%s\" (mapped as \"%s\"), skip it",
propertyValue, propertyName, setterName);
- LOG.error(message, ex);
+ log.error(message, ex);
throw new GenerationException(message, ex);
}
}
Modified: jmeter/trunk/src/core/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java Fri Feb 10 07:44:47 2017
@@ -26,8 +26,8 @@ import org.apache.jmeter.report.core.Sam
import org.apache.jmeter.samplers.SampleSaveConfiguration;
import org.apache.jmeter.save.CSVSaveService;
import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Consume samples using the JMeter timestamp property (defaulting to {@link SampleSaveConfiguration#MILLISECONDS}) and reproduce them as a long
@@ -37,7 +37,7 @@ import org.apache.log.Logger;
*/
public class NormalizerSampleConsumer extends AbstractSampleConsumer {
- private static final Logger log = LoggingManager.getLoggerForClass();
+ private static final Logger log = LoggerFactory.getLogger(NormalizerSampleConsumer.class);
private static final String TIMESTAMP_FORMAT =
JMeterUtils.getPropDefault(
@@ -80,7 +80,7 @@ public class NormalizerSampleConsumer ex
if(SampleSaveConfiguration.NONE.equalsIgnoreCase(TIMESTAMP_FORMAT)) {
throw new SampleException("'none' format for 'jmeter.save.saveservice.timestamp_format' property is not accepted for report generation");
}
- log.info("Using format:"+TIMESTAMP_FORMAT+" to parse timeStamp field");
+ log.info("Using format, '{}', to parse timeStamp field", TIMESTAMP_FORMAT);
isMillisFormat = SampleSaveConfiguration.MILLISECONDS.equalsIgnoreCase(TIMESTAMP_FORMAT);
SimpleDateFormat formatter = null;
Modified: jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java Fri Feb 10 07:44:47 2017
@@ -32,8 +32,8 @@ import org.apache.jmeter.report.core.Sam
import org.apache.jmeter.report.processor.AbstractSampleConsumer;
import org.apache.jmeter.report.processor.MapResultData;
import org.apache.jmeter.report.processor.ValueResultData;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* The class AbstractOverTimeGraphConsumer provides a base class for over time
@@ -162,7 +162,7 @@ public abstract class AbstractVersusRequ
private static class TimeCountConsumer extends AbstractSampleConsumer {
- private static final Logger log = LoggingManager.getLoggerForClass();
+ private static final Logger log = LoggerFactory.getLogger(TimeCountConsumer.class);
private class FileInfo {
private final File file;
@@ -350,9 +350,7 @@ public abstract class AbstractVersusRequ
try {
FileUtils.deleteDirectory(workingDir);
} catch (IOException e) {
- log.warn(String.format(
- "Cannot delete created temporary directory \"%s\"",
- workingDir), e);
+ log.warn("Cannot delete created temporary directory, '{}'", workingDir, e);
}
}
Modified: jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultAction.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultAction.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultAction.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultAction.java Fri Feb 10 07:44:47 2017
@@ -24,8 +24,8 @@ import org.apache.jmeter.samplers.Sample
import org.apache.jmeter.samplers.SampleListener;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.testelement.OnErrorTestElement;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* ResultAction - take action based on the status of the last Result
@@ -33,9 +33,9 @@ import org.apache.log.Logger;
*/
public class ResultAction extends OnErrorTestElement implements Serializable, SampleListener {
- private static final long serialVersionUID = 240L;
+ private static final long serialVersionUID = 241L;
- private static final Logger log = LoggingManager.getLoggerForClass();
+ private static final Logger log = LoggerFactory.getLogger(ResultAction.class);
/*
* Constructor is initially called once for each occurrence in the test plan
@@ -45,9 +45,6 @@ public class ResultAction extends OnErro
*/
public ResultAction() {
super();
- // log.debug(Thread.currentThread().getName());
- // System.out.println(">> "+me+" "+this.getName()+"
- // "+Thread.currentThread().getName());
}
/**
@@ -58,7 +55,9 @@ public class ResultAction extends OnErro
@Override
public void sampleOccurred(SampleEvent e) {
SampleResult s = e.getResult();
- log.debug(s.getSampleLabel() + " OK? " + s.isSuccessful());
+ if (log.isDebugEnabled()) {
+ log.debug("{} OK? {}", s.getSampleLabel(), s.isSuccessful());
+ }
if (!s.isSuccessful()) {
if (isStopTestNow()) {
s.setStopTestNow(true);
Modified: jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java Fri Feb 10 07:44:47 2017
@@ -52,10 +52,10 @@ import org.apache.jmeter.testelement.pro
import org.apache.jmeter.testelement.property.ObjectProperty;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jmeter.visualizers.Visualizer;
-import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.util.JMeterError;
import org.apache.jorphan.util.JOrphanUtils;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* This class handles all saving of samples.
@@ -88,9 +88,9 @@ public class ResultCollector extends Abs
log.info("Shutdown hook ended");
}
}
- private static final Logger log = LoggingManager.getLoggerForClass();
+ private static final Logger log = LoggerFactory.getLogger(ResultCollector.class);
- private static final long serialVersionUID = 233L;
+ private static final long serialVersionUID = 234L;
// This string is used to identify local test runs, so must not be a valid host name
private static final String TEST_IS_LOCAL = "*local*"; // $NON-NLS-1$
@@ -304,7 +304,7 @@ public class ResultCollector extends Abs
if (shutdownHook != null) {
Runtime.getRuntime().removeShutdownHook(shutdownHook);
} else {
- log.warn("Should not happen: shutdownHook==null, instanceCount=" + instanceCount);
+ log.warn("Should not happen: shutdownHook==null, instanceCount={}", instanceCount);
}
finalizeFileOutput();
inTest = false;
@@ -330,7 +330,7 @@ public class ResultCollector extends Abs
this.isStats = getVisualizer().isStats();
}
} catch (Exception e) {
- log.error("", e);
+ log.error("Exception occurred while initializing file output.", e);
}
}
inTest = true;
@@ -377,7 +377,7 @@ public class ResultCollector extends Abs
dataReader.close();
dataReader = null;
if (line == null) {
- log.warn(filename+" is empty");
+ log.warn("{} is empty", filename);
} else {
if (!line.startsWith("<?xml ")){// No, must be CSV //$NON-NLS-1$
CSVSaveService.processSamples(filename, visualizer, this);
@@ -389,13 +389,15 @@ public class ResultCollector extends Abs
new ResultCollectorHelper(this, visualizer));
parsedOK = true;
} catch (Exception e) {
- log.warn("Failed to load " + filename + " using XStream. Error was: " + e);
+ if (log.isWarnEnabled()) {
+ log.warn("Failed to load {} using XStream. Error was: {}", filename, e.toString());
+ }
}
}
}
} catch (IOException | JMeterError | RuntimeException | OutOfMemoryError e) {
// FIXME Why do we catch OOM ?
- log.warn("Problem reading JTL file: " + file);
+ log.warn("Problem reading JTL file: {}", file);
} finally {
JOrphanUtils.closeQuietly(dataReader);
JOrphanUtils.closeQuietly(bufferedInputStream);
@@ -463,15 +465,17 @@ public class ResultCollector extends Abs
if (pdir != null) {
// returns false if directory already exists, so need to check again
if(pdir.mkdirs()){
- log.info("Folder "+pdir.getAbsolutePath()+" was created");
+ if (log.isInfoEnabled()) {
+ log.info("Folder at {} was created", pdir.getAbsolutePath());
+ }
} // else if might have been created by another process so not a problem
if (!pdir.exists()){
- log.warn("Error creating directories for "+pdir.toString());
+ log.warn("Error creating directories for {}", pdir);
}
}
writer = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(filename,
trimmed)), SaveService.getFileEncoding(StandardCharsets.UTF_8.name())), SAVING_AUTOFLUSH);
- log.debug("Opened file: "+filename);
+ log.debug("Opened file: {}", filename);
files.put(filename, new FileEntry(writer, saveConfig));
} else {
writer = fe.pw;
@@ -503,14 +507,16 @@ public class ResultCollector extends Abs
pos = raf.getFilePointer();
}
if (line == null) {
- log.warn("Unexpected EOF trying to find XML end marker in " + filename);
+ log.warn("Unexpected EOF trying to find XML end marker in {}", filename);
return false;
}
raf.setLength(pos + end);// Truncate the file
} catch (FileNotFoundException e) {
return false;
} catch (IOException e) {
- log.warn("Error trying to find XML terminator " + e.toString());
+ if (log.isWarnEnabled()) {
+ log.warn("Error trying to find XML terminator. {}", e.toString());
+ }
return false;
}
return true;
@@ -614,24 +620,30 @@ public class ResultCollector extends Abs
* Flush PrintWriter, called by Shutdown Hook to ensure no data is lost
*/
private static void flushFileOutput() {
- for(Map.Entry<String,ResultCollector.FileEntry> me : files.entrySet()){
- log.debug("Flushing: "+me.getKey());
- FileEntry fe = me.getValue();
- fe.pw.flush();
- if (fe.pw.checkError()){
- log.warn("Problem detected during use of "+me.getKey());
+ String key;
+ ResultCollector.FileEntry value;
+ for(Map.Entry<String, ResultCollector.FileEntry> me : files.entrySet()) {
+ key = me.getKey();
+ value = me.getValue();
+ log.debug("Flushing: {}", key);
+ value.pw.flush();
+ if (value.pw.checkError()){
+ log.warn("Problem detected during use of {}", key);
}
}
}
private void finalizeFileOutput() {
- for(Map.Entry<String,ResultCollector.FileEntry> me : files.entrySet()){
- log.debug("Closing: "+me.getKey());
- FileEntry fe = me.getValue();
- writeFileEnd(fe.pw, fe.config);
- fe.pw.close();
- if (fe.pw.checkError()){
- log.warn("Problem detected during use of "+me.getKey());
+ String key;
+ ResultCollector.FileEntry value;
+ for(Map.Entry<String, ResultCollector.FileEntry> me : files.entrySet()) {
+ key = me.getKey();
+ value = me.getValue();
+ log.debug("Closing: {}", key);
+ writeFileEnd(value.pw, value.config);
+ value.pw.close();
+ if (value.pw.checkError()){
+ log.warn("Problem detected during use of {}", key);
}
}
files.clear();
Modified: jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java Fri Feb 10 07:44:47 2017
@@ -33,9 +33,9 @@ import org.apache.jmeter.samplers.Sample
import org.apache.jmeter.services.FileServer;
import org.apache.jmeter.testelement.AbstractTestElement;
import org.apache.jmeter.threads.JMeterContextService;
-import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.util.JOrphanUtils;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Save Result responseData to a set of files
@@ -45,9 +45,9 @@ import org.apache.log.Logger;
*
*/
public class ResultSaver extends AbstractTestElement implements Serializable, SampleListener {
- private static final Logger log = LoggingManager.getLoggerForClass();
+ private static final Logger log = LoggerFactory.getLogger(ResultSaver.class);
- private static final long serialVersionUID = 240L;
+ private static final long serialVersionUID = 241L;
private static final Object LOCK = new Object();
@@ -172,8 +172,8 @@ public class ResultSaver extends Abstrac
}
String fileName = makeFileName(s.getContentType(), getSkipAutoNumber(), getSkipSuffix());
- if(log.isDebugEnabled()) {
- log.debug("Saving " + s.getSampleLabel() + " in " + fileName);
+ if (log.isDebugEnabled()) {
+ log.debug("Saving {} in {}", s.getSampleLabel(), fileName);
}
s.setResultFileName(fileName);// Associate sample with file name
String variable = getVariableName();
@@ -188,10 +188,10 @@ public class ResultSaver extends Abstrac
File out = new File(fileName);
try (FileOutputStream fos = new FileOutputStream(out)){
JOrphanUtils.write(s.getResponseData(), fos); // chunk the output if necessary
- } catch (FileNotFoundException e1) {
- log.error("Error creating sample file for " + s.getSampleLabel(), e1);
- } catch (IOException e1) {
- log.error("Error saving sample " + s.getSampleLabel(), e1);
+ } catch (FileNotFoundException e) {
+ log.error("Error creating sample file for {}", s.getSampleLabel(), e);
+ } catch (IOException e) {
+ log.error("Error saving sample {}", s.getSampleLabel(), e);
}
}
Modified: jmeter/trunk/src/core/org/apache/jmeter/reporters/Summariser.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/reporters/Summariser.java?rev=1782438&r1=1782437&r2=1782438&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/reporters/Summariser.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/reporters/Summariser.java Fri Feb 10 07:44:47 2017
@@ -36,9 +36,9 @@ import org.apache.jmeter.testelement.Tes
import org.apache.jmeter.threads.JMeterContextService;
import org.apache.jmeter.threads.JMeterContextService.ThreadCounts;
import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.util.JOrphanUtils;
-import org.apache.log.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Generate a summary of the test run so far to the log file and/or standard
@@ -68,9 +68,9 @@ public class Summariser extends Abstract
* Totals accumulator object for the samples to be stored in.
*/
- private static final long serialVersionUID = 233L;
+ private static final long serialVersionUID = 234L;
- private static final Logger log = LoggingManager.getLoggerForClass();
+ private static final Logger log = LoggerFactory.getLogger(Summariser.class);
/** interval between summaries (in seconds) default 30 seconds */
private static final long INTERVAL = JMeterUtils.getPropDefault("summariser.interval", 30); //$NON-NLS-1$
@@ -80,7 +80,7 @@ public class Summariser extends Abstract
/** Write messages to System.out ? */
private static final boolean TOOUT = JMeterUtils.getPropDefault("summariser.out", true); //$NON-NLS-1$
-
+
/** Ignore TC generated SampleResult in summary */
private static final boolean IGNORE_TC_GENERATED_SAMPLERESULT = JMeterUtils.getPropDefault("summariser.ignore_transaction_controller_sample_result", true); //$NON-NLS-1$
@@ -206,11 +206,11 @@ public class Summariser extends Abstract
}
}
if (reportNow) {
- writeToLog(format(myName, myDelta, "+"));
+ formatAndWriteToLog(myName, myDelta, "+");
// Only if we have updated them
if (myTotal != null && myDelta != null &&myTotal.getNumSamples() != myDelta.getNumSamples()) { // NOSONAR
- writeToLog(format(myName, myTotal, "="));
+ formatAndWriteToLog(myName, myTotal, "=");
}
}
}
@@ -229,55 +229,6 @@ public class Summariser extends Abstract
return JOrphanUtils.rightAlign(sb, len);
}
- /**
- * Formats summariserRunningSample
- * @param name Summariser name
- * @param summariserRunningSample {@link SummariserRunningSample}
- * @param type Type of summariser (difference or total)
- * @return the summary information
- */
- private static String format(String name, SummariserRunningSample summariserRunningSample, String type) {
- DecimalFormat dfDouble = new DecimalFormat("#0.0"); // $NON-NLS-1$
- StringBuilder tmp = new StringBuilder(20); // for intermediate use
- StringBuilder sb = new StringBuilder(140); // output line buffer
- sb.append(name);
- sb.append(' ');
- sb.append(type);
- sb.append(' ');
- sb.append(longToSb(tmp, summariserRunningSample.getNumSamples(), 6));
- sb.append(" in ");
- long elapsed = summariserRunningSample.getElapsed();
- long elapsedSec = (elapsed + 500) / 1000; // rounded seconds
- sb.append(JOrphanUtils.formatDuration(elapsedSec));
- sb.append(" = ");
- if (elapsed > 0) {
- sb.append(doubleToSb(dfDouble, tmp, summariserRunningSample.getRate(), 6, 1));
- } else {
- sb.append("******");// Rate is effectively infinite
- }
- sb.append("/s Avg: ");
- sb.append(longToSb(tmp, summariserRunningSample.getAverage(), 5));
- sb.append(" Min: ");
- sb.append(longToSb(tmp, summariserRunningSample.getMin(), 5));
- sb.append(" Max: ");
- sb.append(longToSb(tmp, summariserRunningSample.getMax(), 5));
- sb.append(" Err: ");
- sb.append(longToSb(tmp, summariserRunningSample.getErrorCount(), 5));
- sb.append(" (");
- sb.append(summariserRunningSample.getErrorPercentageString());
- sb.append(')');
- if ("+".equals(type)) {
- ThreadCounts tc = JMeterContextService.getThreadCounts();
- sb.append(" Active: ");
- sb.append(tc.activeThreads);
- sb.append(" Started: ");
- sb.append(tc.startedThreads);
- sb.append(" Finished: ");
- sb.append(tc.finishedThreads);
- }
- return sb.toString();
- }
-
/** {@inheritDoc} */
@Override
public void sampleStarted(SampleEvent e) {
@@ -362,20 +313,72 @@ public class Summariser extends Abstract
// Only print final delta if there were some samples in the delta
// and there has been at least one sample reported previously
if (total.delta.getNumSamples() > 0 && total.total.getNumSamples() > 0) {
- writeToLog(format(name, total.delta, "+"));
+ formatAndWriteToLog(name, total.delta, "+");
}
total.moveDelta(); // This will update the total endTime
- writeToLog(format(name, total.total, "="));
+ formatAndWriteToLog(name, total.total, "=");
}
}
- private void writeToLog(String str) {
- if (TOLOG) {
- log.info(str);
+ private void formatAndWriteToLog(String name, SummariserRunningSample summariserRunningSample, String type) {
+ if (TOOUT || (TOLOG && log.isInfoEnabled())) {
+ String formattedMessage = format(name, summariserRunningSample, type);
+ if (TOLOG) {
+ log.info(formattedMessage);
+ }
+ if (TOOUT) {
+ System.out.println(formattedMessage);
+ }
+ }
+ }
+
+ /**
+ * Formats summariserRunningSample
+ * @param name Summariser name
+ * @param summariserRunningSample {@link SummariserRunningSample}
+ * @param type Type of summariser (difference or total)
+ * @return the summary information
+ */
+ private static String format(String name, SummariserRunningSample summariserRunningSample, String type) {
+ DecimalFormat dfDouble = new DecimalFormat("#0.0"); // $NON-NLS-1$
+ StringBuilder tmp = new StringBuilder(20); // for intermediate use
+ StringBuilder sb = new StringBuilder(140); // output line buffer
+ sb.append(name);
+ sb.append(' ');
+ sb.append(type);
+ sb.append(' ');
+ sb.append(longToSb(tmp, summariserRunningSample.getNumSamples(), 6));
+ sb.append(" in ");
+ long elapsed = summariserRunningSample.getElapsed();
+ long elapsedSec = (elapsed + 500) / 1000; // rounded seconds
+ sb.append(JOrphanUtils.formatDuration(elapsedSec));
+ sb.append(" = ");
+ if (elapsed > 0) {
+ sb.append(doubleToSb(dfDouble, tmp, summariserRunningSample.getRate(), 6, 1));
+ } else {
+ sb.append("******");// Rate is effectively infinite
}
- if (TOOUT) {
- System.out.println(str);
+ sb.append("/s Avg: ");
+ sb.append(longToSb(tmp, summariserRunningSample.getAverage(), 5));
+ sb.append(" Min: ");
+ sb.append(longToSb(tmp, summariserRunningSample.getMin(), 5));
+ sb.append(" Max: ");
+ sb.append(longToSb(tmp, summariserRunningSample.getMax(), 5));
+ sb.append(" Err: ");
+ sb.append(longToSb(tmp, summariserRunningSample.getErrorCount(), 5));
+ sb.append(" (");
+ sb.append(summariserRunningSample.getErrorPercentageString());
+ sb.append(')');
+ if ("+".equals(type)) {
+ ThreadCounts tc = JMeterContextService.getThreadCounts();
+ sb.append(" Active: ");
+ sb.append(tc.activeThreads);
+ sb.append(" Started: ");
+ sb.append(tc.startedThreads);
+ sb.append(" Finished: ");
+ sb.append(tc.finishedThreads);
}
+ return sb.toString();
}
}