Author: sebb
Date: Thu Dec 10 01:20:41 2009
New Revision: 889049
URL: http://svn.apache.org/viewvc?rev=889049&view=rev
Log:
Allow Idle Time to be saved to sample log files
Modified:
jakarta/jmeter/trunk/bin/jmeter.properties
jakarta/jmeter/trunk/docs/images/screenshots/sample_result_config.png
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleSaveConfigurationConverter.java
jakarta/jmeter/trunk/xdocs/changes.xml
jakarta/jmeter/trunk/xdocs/images/screenshots/sample_result_config.png
jakarta/jmeter/trunk/xdocs/usermanual/listeners.xml
Modified: jakarta/jmeter/trunk/bin/jmeter.properties
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/bin/jmeter.properties?rev=889049&r1=889048&r2=889049&view=diff
==============================================================================
--- jakarta/jmeter/trunk/bin/jmeter.properties (original)
+++ jakarta/jmeter/trunk/bin/jmeter.properties Thu Dec 10 01:20:41 2009
@@ -337,6 +337,7 @@
#jmeter.save.saveservice.hostname=false
#jmeter.save.saveservice.thread_counts=false
#jmeter.save.saveservice.sample_count=false
+#jmeter.save.saveservice.idle_time=false
# Timestamp format - this only affects CSV output files
# legitimate values: none, ms, or a format suitable for SimpleDateFormat
Modified: jakarta/jmeter/trunk/docs/images/screenshots/sample_result_config.png
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/images/screenshots/sample_result_config.png?rev=889049&r1=889048&r2=889049&view=diff
==============================================================================
Binary files - no diff available.
Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=889049&r1=889048&r2=889049&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties (original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties Thu Dec 10 01:20:41 2009
@@ -712,6 +712,7 @@
save_filename=Save Response Filename
save_graphics=Save Graph
save_hostname=Save Hostname
+save_idletime=Save Idle Time
save_label=Save Label
save_latency=Save Latency
save_message=Save Response Message
Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java?rev=889049&r1=889048&r2=889049&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java (original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java Thu Dec 10 01:20:41 2009
@@ -36,13 +36,17 @@
* N.B. to add a new field, remember the following
* - static _xyz
* - instance xyz=_xyz
- * - clone s.xyz = xyz
+ * - clone s.xyz = xyz (perhaps)
* - setXyz(boolean)
* - saveXyz()
* - update SampleSaveConfigurationConverter to add new fields to marshall() and shouldSerialiseMember()
* - update SampleResultConverter and/or HTTPSampleConverter
- * - update CSV routines in OldSaveService
+ * - update CSVSaveService: CSV_XXXX, makeResultFromDelimitedString, printableFieldNamesToString, static{}
* - update messages.properties to add save_xyz entry
+ * - update jmeter.properties to add new property
+ * - update listeners.xml to add new property, CSV and XML names etc.
+ * - take screenshot sample_result_config.png
+ * - update listeners.xml and component_reference.xml with new dimensions (might not change)
*
*/
/**
@@ -199,10 +203,11 @@
// <?xml-stylesheet type="text/xsl" href="../extras/jmeter-results-detail-report_21.xsl"?>
private static final String XML_PI = "jmeter.save.saveservice.xml_pi"; // $NON_NLS-1$
- private static final String SAVE_THREAD_COUNTS = "jmeter.save.saveservice.thread_counts"; // $NON_NLS-1$
+ private static final String SAVE_THREAD_COUNTS = "jmeter.save.saveservice.thread_counts"; // $NON_NLS-1$
- private static final String SAVE_SAMPLE_COUNT = "jmeter.save.saveservice.sample_count"; // $NON_NLS-1$
+ private static final String SAVE_SAMPLE_COUNT = "jmeter.save.saveservice.sample_count"; // $NON_NLS-1$
+ private static final String SAVE_IDLE_TIME = "jmeter.save.saveservice.idle_time"; // $NON_NLS-1$
// N.B. Remember to update the equals and hashCode methods when adding new variables.
// Initialise values from properties
@@ -221,6 +226,8 @@
private boolean threadCounts = _threadCounts;
private boolean sampleCount = _sampleCount;
+
+ private boolean idleTime = _idleTime;
// Does not appear to be used (yet)
private int assertionsResultsToSave = _assertionsResultsToSave;
@@ -277,6 +284,8 @@
* comma for CSV files.
*/
private static final String _delimiter;
+
+ private static final boolean _idleTime;
private static final String DEFAULT_DELIMITER = ","; // $NON_NLS-1$
@@ -378,6 +387,8 @@
_threadCounts=TRUE.equalsIgnoreCase(props.getProperty(SAVE_THREAD_COUNTS, FALSE));
_sampleCount=TRUE.equalsIgnoreCase(props.getProperty(SAVE_SAMPLE_COUNT, FALSE));
+
+ _idleTime=TRUE.equalsIgnoreCase(props.getProperty(SAVE_IDLE_TIME, FALSE));
}
// Don't save this, as not settable via GUI
@@ -495,6 +506,7 @@
s.fileName == fileName &&
s.hostname == hostname &&
s.sampleCount == sampleCount &&
+ s.idleTime == idleTime &&
s.threadCounts == threadCounts;
boolean stringValues = false;
@@ -542,6 +554,7 @@
hash = 31 * hash + (delimiter != null ? delimiter.hashCode() : 0);
hash = 31 * hash + (formatter != null ? formatter.hashCode() : 0);
hash = 31 * hash + (sampleCount ? 1 : 0);
+ hash = 31 * hash + (idleTime ? 1 : 0);
return hash;
}
@@ -804,4 +817,12 @@
public void setHostname(boolean save){
hostname = save;
}
+
+ public boolean saveIdleTime() {
+ return idleTime;
+ }
+
+ public void setIdleTime(boolean save) {
+ idleTime = save;
+ }
}
\ No newline at end of file
Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java?rev=889049&r1=889048&r2=889049&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java (original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java Thu Dec 10 01:20:41 2009
@@ -90,6 +90,7 @@
private static final String CSV_LATENCY = "Latency"; // $NON-NLS-1$
private static final String CSV_ENCODING = "Encoding"; // $NON-NLS-1$
private static final String CSV_HOSTNAME = "Hostname"; // $NON-NLS-1$
+ private static final String CSV_IDLETIME = "IdleTime"; // $NON-NLS-1$
// Used to enclose variable name labels, to distinguish from any of the above labels
private static final String VARIABLE_NAME_QUOTE_CHAR = "\""; // $NON-NLS-1$
@@ -309,6 +310,12 @@
hostname = parts[i++];
}
+ if (saveConfig.saveIdleTime()) {
+ field = CSV_IDLETIME;
+ text = parts[i++];
+ result.setIdleTime(Long.parseLong(text));
+ }
+
if (i + saveConfig.getVarCount() < parts.length){
log.warn("Line: "+lineNumber+". Found "+parts.length+" fields, expected "+i+". Extra fields have been ignored.");
}
@@ -433,6 +440,11 @@
text.append(delim);
}
+ if (saveConfig.saveIdleTime()) {
+ text.append(CSV_IDLETIME);
+ text.append(delim);
+ }
+
for (int i = 0; i < SampleEvent.getVarCount(); i++){
text.append(VARIABLE_NAME_QUOTE_CHAR);
text.append(SampleEvent.getVarName(i));
@@ -480,6 +492,7 @@
headerLabelMethods.put(CSV_SAMPLE_COUNT, new Functor("setSampleCount"));
headerLabelMethods.put(CSV_ERROR_COUNT, new Functor("setSampleCount"));
headerLabelMethods.put(CSV_HOSTNAME, new Functor("setHostname"));
+ headerLabelMethods.put(CSV_IDLETIME, new Functor("setIdleTime"));
}
/**
Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java?rev=889049&r1=889048&r2=889049&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java (original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java Thu Dec 10 01:20:41 2009
@@ -89,6 +89,7 @@
private static final String ATT_SUCCESS = "s"; //$NON-NLS-1$
private static final String ATT_SAMPLE_COUNT = "sc"; //$NON-NLS-1$
private static final String ATT_TIME = "t"; //$NON-NLS-1$
+ private static final String ATT_IDLETIME = "it"; //$NON-NLS-1$
private static final String ATT_THREADNAME = "tn"; //$NON-NLS-1$
private static final String ATT_TIME_STAMP = "ts"; //$NON-NLS-1$
@@ -100,24 +101,14 @@
return "$Revision$"; //$NON-NLS-1$
}
- /*
- * (non-Javadoc)
- *
- * @see com.thoughtworks.xstream.converters.Converter#canConvert(java.lang.Class)
- */
+ /** {@inheritDoc} */
@Override
@SuppressWarnings("unchecked") // superclass does not use types
public boolean canConvert(Class arg0) {
return SampleResult.class.equals(arg0);
}
- /*
- * (non-Javadoc)
- *
- * @see com.thoughtworks.xstream.converters.Converter#marshal(java.lang.Object,
- * com.thoughtworks.xstream.io.HierarchicalStreamWriter,
- * com.thoughtworks.xstream.converters.MarshallingContext)
- */
+ /** {@inheritDoc} */
@Override
public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext context) {
SampleResult res = (SampleResult) obj;
@@ -244,6 +235,9 @@
if (save.saveTime()) {
writer.addAttribute(ATT_TIME, Long.toString(res.getTime()));
}
+ if (save.saveIdleTime()) {
+ writer.addAttribute(ATT_IDLETIME, Long.toString(res.getIdleTime()));
+ }
if (save.saveLatency()) {
writer.addAttribute(ATT_LATENCY, Long.toString(res.getLatency()));
}
@@ -283,12 +277,10 @@
writer.addAttribute(ATT_ALL_THRDS, String.valueOf(res.getAllThreads()));
}
SampleEvent event = (SampleEvent) context.get(SaveService.SAMPLE_EVENT_OBJECT);
- if (save.saveHostname()){
- if (event != null) {
+ if (event != null) {
+ if (save.saveHostname()){
writer.addAttribute(ATT_HOSTNAME, event.getHostname());
}
- }
- if (event != null) {
for (int i = 0; i < SampleEvent.getVarCount(); i++){
writer.addAttribute(SampleEvent.getVarName(i), ConversionHelp.encode(event.getVarValue(i)));
}
@@ -309,12 +301,7 @@
}
}
- /*
- * (non-Javadoc)
- *
- * @see com.thoughtworks.xstream.converters.Converter#unmarshal(com.thoughtworks.xstream.io.HierarchicalStreamReader,
- * com.thoughtworks.xstream.converters.UnmarshallingContext)
- */
+ /** {@inheritDoc} */
@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
SampleResult res = (SampleResult) createCollection(context.getRequiredType());
@@ -394,6 +381,7 @@
res.setThreadName(ConversionHelp.decode(reader.getAttribute(ATT_THREADNAME)));
res.setStampAndTime(Converter.getLong(reader.getAttribute(ATT_TIME_STAMP)),
Converter.getLong(reader.getAttribute(ATT_TIME)));
+ res.setIdleTime(Converter.getLong(reader.getAttribute(ATT_IDLETIME)));
res.setLatency(Converter.getLong(reader.getAttribute(ATT_LATENCY)));
res.setBytes(Converter.getInt(reader.getAttribute(ATT_BYTES)));
res.setSampleCount(Converter.getInt(reader.getAttribute(ATT_SAMPLE_COUNT),1)); // default is 1
Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleSaveConfigurationConverter.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleSaveConfigurationConverter.java?rev=889049&r1=889048&r2=889049&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleSaveConfigurationConverter.java (original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleSaveConfigurationConverter.java Thu Dec 10 01:20:41 2009
@@ -60,6 +60,7 @@
private static final String NODE_BYTES = "bytes"; // $NON-NLS-1$
private static final String NODE_THREAD_COUNT = "threadCounts"; // $NON-NLS-1$
private static final String NODE_SAMPLE_COUNT = "sampleCount"; // $NON-NLS-1$
+ private static final String NODE_IDLE_TIME = "idleTime"; // $NON-NLS-1$
// Additional member names which are currently not written out
private static final String NODE_DELIMITER = "delimiter"; // $NON-NLS-1$
@@ -86,6 +87,7 @@
if (fieldName.equals(NODE_HOSTNAME)) { return false; }
if (fieldName.equals(NODE_THREAD_COUNT)) { return false; }
if (fieldName.equals(NODE_SAMPLE_COUNT)) { return false; }
+ if (fieldName.equals(NODE_IDLE_TIME)) { return false; }
// These fields are not currently saved or restored
if (fieldName.equals(NODE_DELIMITER)) { return false; }
@@ -127,6 +129,7 @@
createNode(writer,prop.saveHostname(),NODE_HOSTNAME);
createNode(writer,prop.saveThreadCounts(),NODE_THREAD_COUNT);
createNode(writer,prop.saveSampleCount(),NODE_SAMPLE_COUNT);
+ createNode(writer,prop.saveIdleTime(),NODE_IDLE_TIME);
}
// Helper method to simplify marshall routine
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=889049&r1=889048&r2=889049&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Thu Dec 10 01:20:41 2009
@@ -147,6 +147,7 @@
<li>Bug 47869 - Ability to cleanup fields of SampleResult</li>
<li>Bug 47952 - Added JSR223 Listener</li>
<li>Bug 47474 - View Results Tree support for plugin renderers</li>
+<li>Allow Idle Time to be saved to sample log files</li>
</ul>
<h3>Timers, Assertions, Config, Pre- & Post-Processors</h3>
Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/sample_result_config.png
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/sample_result_config.png?rev=889049&r1=889048&r2=889049&view=diff
==============================================================================
Binary files - no diff available.
Modified: jakarta/jmeter/trunk/xdocs/usermanual/listeners.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/listeners.xml?rev=889049&r1=889048&r2=889049&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/listeners.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/listeners.xml Thu Dec 10 01:20:41 2009
@@ -143,6 +143,7 @@
#jmeter.save.saveservice.hostname=false
#jmeter.save.saveservice.thread_counts=false
#jmeter.save.saveservice.sample_count=false
+#jmeter.save.saveservice.idle_time=false
# Timestamp format
# legitimate values: none, ms, or a format suitable for SimpleDateFormat
@@ -275,6 +276,7 @@
<li>SampleCount - number of samples (1, unless multiple samples are aggregated)</li>
<li>ErrorCount - number of errors (0 or 1, unless multiple samples are aggregated)</li>
<li>Hostname where the sample was generated</li>
+<li>IdleTime - number of milliseconds of 'Idle' time (normally 0)</li>
<li>Variables, if specified</li>
</ul>
@@ -416,6 +418,7 @@
<tr><td>dt</td><td>Data type</td></tr>
<tr><td>ec</td><td>Error count (0 or 1, unless multiple samples are aggregated)</td></tr>
<tr><td>hn</td><td>Hostname where the sample was generated</td></tr>
+<tr><td>it</td><td>Idle Time = time not spent sampling (milliseconds) (generally 0)</td></tr>
<tr><td>lb</td><td>Label</td></tr>
<tr><td>lt</td><td>Latency = time to initial response (milliseconds) - not all samplers support this</td></tr>
<tr><td>na</td><td>Number of active threads for all thread groups</td></tr>
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.