Author: sebb
Date: Sun Apr 30 15:27:31 2006
New Revision: 398454

URL: http://svn.apache.org/viewcvs?rev=398454&view=rev
Log:
Add active thread counts to result files

Modified:
    jakarta/jmeter/branches/rel-2-1/bin/jmeter.properties
    
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/resources/messages.properties
    
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java
    
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/OldSaveService.java
    
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
    
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/converters/SampleSaveConfigurationConverter.java
    jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml
    jakarta/jmeter/branches/rel-2-1/xdocs/usermanual/listeners.xml

Modified: jakarta/jmeter/branches/rel-2-1/bin/jmeter.properties
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/bin/jmeter.properties?rev=398454&r1=398453&r2=398454&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-1/bin/jmeter.properties (original)
+++ jakarta/jmeter/branches/rel-2-1/bin/jmeter.properties Sun Apr 30 15:27:31 
2006
@@ -262,6 +262,7 @@
 #jmeter.save.saveservice.bytes=false
 #jmeter.save.saveservice.url=false
 #jmeter.save.saveservice.filename=false
+#jmeter.save.saveservice.thread_counts=false
 
 # Timestamp format
 # legitimate values: none, ms, or a format suitable for SimpleDateFormat

Modified: 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/resources/messages.properties
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/resources/messages.properties?rev=398454&r1=398453&r2=398454&view=diff
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/resources/messages.properties
 (original)
+++ 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/resources/messages.properties
 Sun Apr 30 15:27:31 2006
@@ -590,6 +590,7 @@
 save_samplerdata=Save Sampler Data
 save_subresults=Save Sub Results
 save_success=Save Success
+save_threadcounts=Save Active Thread Counts
 save_threadname=Save Thread Name
 save_time=Save Elapsed Time
 save_timestamp=Save Time Stamp

Modified: 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java?rev=398454&r1=398453&r2=398454&view=diff
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java
 Sun Apr 30 15:27:31 2006
@@ -35,6 +35,10 @@
  * - setXyz(boolean)
  * - saveXyz()
  * - update SampleSaveConfigurationConverter to add new field
+ * - update SampleResultConverter and/or HTTPSampleConverter
+ * - update CSV routines in OldSaveService
+ * - update messages.properties to add save_xyz entry
+ * 
  */
 /**
  * Holds details of which sample attributes to save.
@@ -43,12 +47,13 @@
  * For each field XXX
  * - methods have the signature "boolean saveXXX()" 
  * - a corresponding "void setXXX(boolean)" method
+ * - messages.properties contains the key save_XXX
  * 
  * @author mstover
  *
  */
 public class SampleSaveConfiguration implements Cloneable, Serializable {
-       static final long serialVersionUID = 3;
+       static final long serialVersionUID = 4;
 
        // ---------------------------------------------------------------------
        // PROPERTY FILE CONSTANTS
@@ -187,6 +192,8 @@
     // <?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$
+
     // N.B. Remember to update the clone method when adding new variables.
     
        // Initialise values from properties
@@ -200,6 +207,8 @@
 
        private boolean url = _url, bytes = _bytes , fileName = _fileName;
        
+    private boolean threadCounts = _threadCounts;
+    
        private int assertionsResultsToSave = _assertionsResultsToSave;
 
        private String delimiter = _delimiter;
@@ -241,6 +250,8 @@
        
        private static final boolean _fileName;
 
+    private static final boolean _threadCounts;
+    
        private static final SimpleDateFormat _formatter;
 
        /**
@@ -326,6 +337,7 @@
                        _xml = false;
                }
 
+        
_threadCounts=TRUE.equalsIgnoreCase(props.getProperty(SAVE_THREAD_COUNTS, 
FALSE));
        }
 
        private static final SampleSaveConfiguration _static = new 
SampleSaveConfiguration();
@@ -374,6 +386,7 @@
         s.url = url;
         s.bytes = bytes;
         s.fileName = fileName;
+        s.threadCounts = threadCounts;
                return s;
        }
 
@@ -565,6 +578,14 @@
        public void setAssertionResultsFailureMessage(boolean b) {
                saveAssertionResultsFailureMessage = b;
        }
+
+    public boolean saveThreadCounts() {
+        return threadCounts;
+    }
+
+    public void setThreadCounts(boolean save) {
+        this.threadCounts = save;
+    }
 
        ///////////////// End of standard field accessors /////////////////////
        

Modified: 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/OldSaveService.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/OldSaveService.java?rev=398454&r1=398453&r2=398454&view=diff
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/OldSaveService.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/OldSaveService.java
 Sun Apr 30 15:27:31 2006
@@ -46,6 +46,7 @@
 import org.apache.jmeter.testelement.property.MapProperty;
 import org.apache.jmeter.testelement.property.StringProperty;
 import org.apache.jmeter.testelement.property.TestElementProperty;
+import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jmeter.util.NameUpdater;
 import org.apache.jorphan.collections.HashTree;
 import org.apache.jorphan.collections.ListedHashTree;
@@ -93,6 +94,8 @@
 
     private static final String CSV_TIME = "elapsed"; // $NON-NLS-1$
     private static final String CSV_BYTES= "bytes"; // $NON-NLS-1$
+    private static final String CSV_THREAD_COUNT1 = "grpThreads"; // 
$NON-NLS-1$
+    private static final String CSV_THREAD_COUNT2 = "allThreads"; // 
$NON-NLS-1$
     private static final String CSV_URL = "URL"; // $NON-NLS-1$
     private static final String CSV_FILENAME = "Filename"; // $NON-NLS-1$
     
@@ -107,6 +110,11 @@
        private OldSaveService() {
        }
 
+    
//////////////////////////////////////////////////////////////////////////////
+    //                  Start of CSV methods
+    
+    // TODO - move to separate file? If so, remember that some of the
+    
        /**
         * Make a SampleResult given a delimited string.
         * 
@@ -247,6 +255,13 @@
             text.append(delim);
         }
 
+        if (saveConfig.saveThreadCounts()) {
+            text.append(CSV_THREAD_COUNT1);
+            text.append(delim);
+            text.append(CSV_THREAD_COUNT2);
+            text.append(delim);
+        }
+
         if (saveConfig.saveUrl()) {
             text.append(CSV_URL);
             text.append(delim);
@@ -270,21 +285,7 @@
                return resultString;
        }
 
-       public static void saveSubTree(HashTree subTree, OutputStream writer) 
throws IOException {
-               Configuration config = (Configuration) 
getConfigsFromTree(subTree).get(0);
-               DefaultConfigurationSerializer saver = new 
DefaultConfigurationSerializer();
-
-               saver.setIndent(true);
-               try {
-                       saver.serialize(writer, config);
-               } catch (SAXException e) {
-                       throw new IOException("SAX implementation problem");
-               } catch (ConfigurationException e) {
-                       throw new IOException("Problem using Avalon 
Configuration tools");
-               }
-       }
-    
-    /**
+       /**
      * Method will save aggregate statistics as CSV. For now I put it here.
      * Not sure if it should go in the newer SaveService instead of here.
      * if we ever decide to get rid of this class, we'll need to move this
@@ -307,7 +308,145 @@
         }
     }
 
-       public static SampleResult getSampleResult(Configuration config) {
+    /**
+     * Convert a result into a string, where the fields of the result are
+     * separated by the default delimiter.
+     * 
+     * @param sample
+     *            the test result to be converted
+     * @return the separated value representation of the result
+     */
+    public static String resultToDelimitedString(SampleResult sample) {
+       return resultToDelimitedString(sample, 
sample.getSaveConfig().getDelimiter());
+    }
+
+    /**
+     * Convert a result into a string, where the fields of the result are
+     * separated by a specified String.
+     * 
+     * @param sample
+     *            the test result to be converted
+     * @param delimiter
+     *            the separation string
+     * @return the separated value representation of the result
+     */
+    public static String resultToDelimitedString(SampleResult sample, String 
delimiter) {
+       StringBuffer text = new StringBuffer();
+       SampleSaveConfiguration saveConfig = sample.getSaveConfig();
+    
+       if (saveConfig.saveTimestamp()) {
+               if (saveConfig.printMilliseconds()){
+                       text.append(sample.getTimeStamp());
+                       text.append(delimiter);
+               } else if (saveConfig.formatter() != null) {
+                       String stamp = saveConfig.formatter().format(new 
Date(sample.getTimeStamp()));
+                       text.append(stamp);
+                       text.append(delimiter);
+               }
+       }
+    
+       if (saveConfig.saveTime()) {
+               text.append(sample.getTime());
+               text.append(delimiter);
+       }
+    
+       if (saveConfig.saveLabel()) {
+               text.append(sample.getSampleLabel());
+               text.append(delimiter);
+       }
+    
+       if (saveConfig.saveCode()) {
+               text.append(sample.getResponseCode());
+               text.append(delimiter);
+       }
+    
+       if (saveConfig.saveMessage()) {
+               text.append(sample.getResponseMessage());
+               text.append(delimiter);
+       }
+    
+       if (saveConfig.saveThreadName()) {
+               text.append(sample.getThreadName());
+               text.append(delimiter);
+       }
+    
+       if (saveConfig.saveDataType()) {
+               text.append(sample.getDataType());
+               text.append(delimiter);
+       }
+    
+       if (saveConfig.saveSuccess()) {
+               text.append(sample.isSuccessful());
+               text.append(delimiter);
+       }
+    
+       if (saveConfig.saveAssertionResultsFailureMessage()) {
+               String message = null;
+               AssertionResult[] results = sample.getAssertionResults();
+    
+               if ((results != null) && (results.length > 0)) {
+                       message = results[0].getFailureMessage();
+               }
+    
+               if (message != null) {
+                       text.append(message);
+               }
+               text.append(delimiter);
+       }
+    
+        if (saveConfig.saveBytes()) {
+            text.append(sample.getBytes());
+            text.append(delimiter);
+        }
+    
+        if (saveConfig.saveThreadCounts()) {
+            
text.append(JMeterContextService.getContext().getThreadGroup().getNumberOfThreads());
+            text.append(delimiter);
+            text.append(JMeterContextService.getNumberOfThreads());
+            text.append(delimiter);
+        }
+        if (saveConfig.saveUrl()) {
+            text.append(sample.getURL());
+            text.append(delimiter);
+        }
+    
+        if (saveConfig.saveFileName()) {
+            text.append(sample.getResultFileName());
+            text.append(delimiter);
+        }
+    
+       String resultString = null;
+       int size = text.length();
+       int delSize = delimiter.length();
+    
+       // Strip off the trailing delimiter
+       if (size >= delSize) {
+               resultString = text.substring(0, size - delSize);
+       } else {
+               resultString = text.toString();
+       }
+       return resultString;
+    }
+
+    //              End of CSV methods
+    
//////////////////////////////////////////////////////////////////////////////////////////
+    //              Start of Avalon methods
+    
+    public static void saveSubTree(HashTree subTree, OutputStream writer) 
throws IOException {
+               Configuration config = (Configuration) 
getConfigsFromTree(subTree).get(0);
+               DefaultConfigurationSerializer saver = new 
DefaultConfigurationSerializer();
+
+               saver.setIndent(true);
+               try {
+                       saver.serialize(writer, config);
+               } catch (SAXException e) {
+                       throw new IOException("SAX implementation problem");
+               } catch (ConfigurationException e) {
+                       throw new IOException("Problem using Avalon 
Configuration tools");
+               }
+       }
+    
+    public static SampleResult getSampleResult(Configuration config) {
                SampleResult result = new 
SampleResult(config.getAttributeAsLong(TIME_STAMP, 0L), 
config.getAttributeAsLong(
                                TIME, 0L));
 
@@ -460,120 +599,6 @@
                        
config.addChild(getConfiguration(result.getResponseData()));
                }
                return config;
-       }
-
-       /**
-        * Convert a result into a string, where the fields of the result are
-        * separated by the default delimiter.
-        * 
-        * @param sample
-        *            the test result to be converted
-        * @return the separated value representation of the result
-        */
-       public static String resultToDelimitedString(SampleResult sample) {
-               return resultToDelimitedString(sample, 
sample.getSaveConfig().getDelimiter());
-       }
-
-       /**
-        * Convert a result into a string, where the fields of the result are
-        * separated by a specified String.
-        * 
-        * @param sample
-        *            the test result to be converted
-        * @param delimiter
-        *            the separation string
-        * @return the separated value representation of the result
-        */
-       public static String resultToDelimitedString(SampleResult sample, 
String delimiter) {
-               StringBuffer text = new StringBuffer();
-               SampleSaveConfiguration saveConfig = sample.getSaveConfig();
-
-               if (saveConfig.saveTimestamp()) {
-                       if (saveConfig.printMilliseconds()){
-                               text.append(sample.getTimeStamp());
-                               text.append(delimiter);
-                       } else if (saveConfig.formatter() != null) {
-                               String stamp = 
saveConfig.formatter().format(new Date(sample.getTimeStamp()));
-                               text.append(stamp);
-                               text.append(delimiter);
-                       }
-               }
-
-               if (saveConfig.saveTime()) {
-                       text.append(sample.getTime());
-                       text.append(delimiter);
-               }
-
-               if (saveConfig.saveLabel()) {
-                       text.append(sample.getSampleLabel());
-                       text.append(delimiter);
-               }
-
-               if (saveConfig.saveCode()) {
-                       text.append(sample.getResponseCode());
-                       text.append(delimiter);
-               }
-
-               if (saveConfig.saveMessage()) {
-                       text.append(sample.getResponseMessage());
-                       text.append(delimiter);
-               }
-
-               if (saveConfig.saveThreadName()) {
-                       text.append(sample.getThreadName());
-                       text.append(delimiter);
-               }
-
-               if (saveConfig.saveDataType()) {
-                       text.append(sample.getDataType());
-                       text.append(delimiter);
-               }
-
-               if (saveConfig.saveSuccess()) {
-                       text.append(sample.isSuccessful());
-                       text.append(delimiter);
-               }
-
-               if (saveConfig.saveAssertionResultsFailureMessage()) {
-                       String message = null;
-                       AssertionResult[] results = 
sample.getAssertionResults();
-
-                       if ((results != null) && (results.length > 0)) {
-                               message = results[0].getFailureMessage();
-                       }
-
-                       if (message != null) {
-                               text.append(message);
-                       }
-                       text.append(delimiter);
-               }
-
-        if (saveConfig.saveBytes()) {
-            text.append(sample.getBytes());
-            text.append(delimiter);
-        }
-
-        if (saveConfig.saveUrl()) {
-            text.append(sample.getURL());
-            text.append(delimiter);
-        }
-
-        if (saveConfig.saveFileName()) {
-            text.append(sample.getResultFileName());
-            text.append(delimiter);
-        }
-
-               String resultString = null;
-               int size = text.length();
-               int delSize = delimiter.length();
-
-               // Strip off the trailing delimiter
-               if (size >= delSize) {
-                       resultString = text.substring(0, size - delSize);
-               } else {
-                       resultString = text.toString();
-               }
-               return resultString;
        }
 
        public static Configuration getConfigForTestElement(String named, 
TestElement item) {

Modified: 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java?rev=398454&r1=398453&r2=398454&view=diff
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
 Sun Apr 30 15:27:31 2006
@@ -23,15 +23,13 @@
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
-import java.net.URL;
 
 import org.apache.jmeter.assertions.AssertionResult;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.jmeter.samplers.SampleSaveConfiguration;
-//import org.apache.jorphan.logging.LoggingManager;
+import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jorphan.util.Converter;
 import org.apache.jorphan.util.JOrphanUtils;
-//import org.apache.log.Logger;
 
 import com.thoughtworks.xstream.alias.ClassMapper;
 import com.thoughtworks.xstream.converters.MarshallingContext;
@@ -41,10 +39,7 @@
 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
 
 /**
- * @author mstover
- * 
- * To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Generation - Code and Comments
+ * XStream Converter for the SampleResult class
  */
 public class SampleResultConverter extends AbstractCollectionConverter {
        //private static final Logger log = LoggingManager.getLoggerForClass();
@@ -66,13 +61,16 @@
     protected static final String TAG_SAMPLER_DATA      = "samplerData";      
//$NON-NLS-1$
     protected static final String TAG_RESPONSE_FILE     = "responseFile";     
//$NON-NLS-1$
 
-    // samplerData attributes. Must be unique. Keep sorted.
+    // samplerData attributes. Must be unique. Keep sorted by string value.
     private static final String ATT_BYTES             = "by"; //$NON-NLS-1$
     private static final String ATT_DATA_ENCODING     = "de"; //$NON-NLS-1$
     private static final String ATT_DATA_TYPE         = "dt"; //$NON-NLS-1$
     private static final String ATT_LABEL             = "lb"; //$NON-NLS-1$
     private static final String ATT_LATENCY           = "lt"; //$NON-NLS-1$
 
+    private static final String ATT_ALL_THRDS         = "na"; //$NON-NLS-1$
+    private static final String ATT_GRP_THRDS         = "ng"; //$NON-NLS-1$
+
     // N.B. Originally the response code was saved with the code "rs" 
     // but retrieved with the code "rc". Changed to always use "rc", but
     // allow for "rs" when restoring values.
@@ -252,6 +250,12 @@
                        writer.addAttribute(ATT_DATA_ENCODING, 
ConversionHelp.encode(res.getDataEncoding()));
                if (save.saveBytes())
                        writer.addAttribute(ATT_BYTES, 
String.valueOf(res.getBytes()));
+        if (save.saveThreadCounts()){// These cannot be restored
+            writer.addAttribute(ATT_GRP_THRDS,
+                    
String.valueOf(JMeterContextService.getContext().getThreadGroup().getNumberOfThreads()));
+            writer.addAttribute(ATT_ALL_THRDS,
+                    String.valueOf(JMeterContextService.getNumberOfThreads()));
+        }
        }
 
        /**
@@ -348,6 +352,7 @@
                
res.setTimeStamp(Converter.getLong(reader.getAttribute(ATT_TIME_STAMP)));
                
res.setLatency(Converter.getLong(reader.getAttribute(ATT_LATENCY)));
                res.setBytes(Converter.getInt(reader.getAttribute(ATT_BYTES)));
+        // ATT_GRP_THRDS and ATT_ALL_THRDS are write only
        }
 
     protected void readFile(String resultFileName, SampleResult res) {

Modified: 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/converters/SampleSaveConfigurationConverter.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/converters/SampleSaveConfigurationConverter.java?rev=398454&r1=398453&r2=398454&view=diff
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/converters/SampleSaveConfigurationConverter.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-1/src/core/org/apache/jmeter/save/converters/SampleSaveConfigurationConverter.java
 Sun Apr 30 15:27:31 2006
@@ -37,10 +37,12 @@
 
        private static final ReflectionProvider rp = new 
JVM().bestReflectionProvider();
 
+    // N.B. These must agree with the names in SampleSaveConfiguration
     private static final String TRUE = "true"; // $NON-NLS-1$
        private static final String NODE_FILENAME = "fileName"; // $NON-NLS-1$
        private static final String NODE_URL = "url"; // $NON-NLS-1$
        private static final String NODE_BYTES = "bytes"; // $NON-NLS-1$
+    private static final String NODE_THREAD_COUNT = "threadCounts"; // 
$NON-NLS-1$
 
        static class MyWrapper extends MapperWrapper{
 
@@ -53,6 +55,7 @@
             if (fieldName.equals(NODE_BYTES)) return false; 
             if (fieldName.equals(NODE_URL)) return false; 
             if (fieldName.equals(NODE_FILENAME)) return false; 
+            if (fieldName.equals(NODE_THREAD_COUNT)) return false; 
             return true;
         }
     }
@@ -90,25 +93,19 @@
         SampleSaveConfiguration prop = (SampleSaveConfiguration) obj;
         
         // Save the new fields - but only if they are not the default
-        if (prop.saveBytes())
-        {
-            writer.startNode(NODE_BYTES);
-            writer.setValue(TRUE);
-            writer.endNode();
-        }
-        if (prop.saveUrl())
-        {
-            writer.startNode(NODE_URL);
-            writer.setValue(TRUE);
-            writer.endNode();
-        }
-        if (prop.saveFileName())
-        {
-            writer.startNode(NODE_FILENAME);
-            writer.setValue(TRUE);
-            writer.endNode();
-        }
+        createNode(writer,prop.saveBytes(),NODE_BYTES);
+        createNode(writer,prop.saveUrl(),NODE_URL);
+        createNode(writer,prop.saveFileName(),NODE_FILENAME);
+        createNode(writer,prop.saveThreadCounts(),NODE_THREAD_COUNT);
        }
+
+    // Helper method to simplify marshall routine
+    private void createNode(HierarchicalStreamWriter writer, boolean save, 
String node) {
+        if (!save) return;
+        writer.startNode(node);
+        writer.setValue(TRUE);
+        writer.endNode();
+    }
 
        /*
         * (non-Javadoc)

Modified: jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml?rev=398454&r1=398453&r2=398454&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml (original)
+++ jakarta/jmeter/branches/rel-2-1/xdocs/changes.xml Sun Apr 30 15:27:31 2006
@@ -86,6 +86,7 @@
 <li>Counter Pre-Processor now supports formatted numbers</li>
 <li>Add support for HEAD and PUT methods</li>
 <li>Allow default HTTP implementation to be changed</li>
+<li>Optionally save active thread counts (group and all) to result files</li>
 </ul>
 
 <h4>Bug fixes:</h4>

Modified: jakarta/jmeter/branches/rel-2-1/xdocs/usermanual/listeners.xml
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/xdocs/usermanual/listeners.xml?rev=398454&r1=398453&r2=398454&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-1/xdocs/usermanual/listeners.xml (original)
+++ jakarta/jmeter/branches/rel-2-1/xdocs/usermanual/listeners.xml Sun Apr 30 
15:27:31 2006
@@ -244,6 +244,8 @@
 <tr><td>dt</td><td>Data type</td></tr>
 <tr><td>de</td><td>Data encoding</td></tr>
 <tr><td>by</td><td>Bytes</td></tr>
+<tr><td>ng</td><td>Number of active threads in this group</td></tr>
+<tr><td>na</td><td>Number of active threads for all thread groups</td></tr>
 </table>
 <p>
 Versions 2.1 and 2.1.1 of JMeter saved the Response Code as "rs", but read it 
back expecting to find "rc".



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to