svn commit: r889049 - in /jakarta/jmeter/trunk: bin/ docs/images/screenshots/ src/core/org/apache/jmeter/resources/ src/core/org/apache/jmeter/samplers/ src/core/org/apache/jmeter/save/ src/core/org/apache/jmeter/save/converters/ xdocs/ xdocs/images/sc...

[email protected]
Newsgroups gmane.comp.jakarta.jmeter.devel
Message-ID <[email protected]>
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- &amp; 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.