You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2009/12/10 02:20:42 UTC

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...

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>



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org