Author: sebb
Date: Wed Sep 19 19:31:30 2007
New Revision: 577514

URL: http://svn.apache.org/viewvc?rev=577514&view=rev
Log:
Bug 43430 - Count of active threads is incorrect for remote samples

Modified:
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/OldSaveService.java
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterThread.java
    jakarta/jmeter/trunk/xdocs/changes.xml

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java?rev=577514&r1=577513&r2=577514&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java 
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java 
Wed Sep 19 19:31:30 2007
@@ -151,6 +151,10 @@
        private int sampleCount = 1;
 
        private int bytes = 0;
+       
+       private volatile int groupThreads = 0; // Active threads in this thread 
group
+       
+       private volatile int allThreads = 0; // Active threads in all thread 
groups
 
        // TODO do contentType and/or dataEncoding belong in HTTPSampleResult 
instead?
 
@@ -196,6 +200,9 @@
         setDataEncoding(res.getDataEncoding());
                setURL(res.getURL());
 
+               setGroupThreads(res.getGroupThreads());
+               setAllThreads(res.getAllThreads());
+
                addSubResult(res); // this will add res.getTime() to getTime().
        }
 
@@ -820,7 +827,7 @@
        /**
         * return the sample count. by default, the value is 1.
         * 
-        * @return
+        * @return the sample count
         */
        public int getSampleCount() {
                return sampleCount;
@@ -840,7 +847,7 @@
        /**
         * return the bytes returned by the response.
         * 
-        * @return
+        * @return byte count
         */
        public int getBytes() {
                return bytes == 0 ? responseData.length : bytes;
@@ -922,4 +929,20 @@
     public void setResultFileName(String resultFileName) {
         this.resultFileName = resultFileName;
     }
+
+       public int getGroupThreads() {
+               return groupThreads;
+       }
+
+       public void setGroupThreads(int n) {
+               this.groupThreads = n;
+       }
+
+       public int getAllThreads() {
+               return allThreads;
+       }
+
+       public void setAllThreads(int n) {
+               this.allThreads = n;
+       }
 }

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/OldSaveService.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/OldSaveService.java?rev=577514&r1=577513&r2=577514&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/OldSaveService.java 
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/OldSaveService.java 
Wed Sep 19 19:31:30 2007
@@ -49,7 +49,6 @@
 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;
@@ -233,8 +232,13 @@
             }
         
             if (saveConfig.saveThreadCounts()) {
-                i+=2;// two counts
-                // Not saved, as not part of a result
+               field = CSV_THREAD_COUNT1;
+                text = parts[i++];
+                result.setGroupThreads(Integer.parseInt(text));
+                
+               field = CSV_THREAD_COUNT2;
+                text = parts[i++];
+                result.setAllThreads(Integer.parseInt(text));
             }
 
             if (saveConfig.saveUrl()) {
@@ -547,15 +551,9 @@
         }
     
         if (saveConfig.saveThreadCounts()) {
-               org.apache.jmeter.threads.ThreadGroup 
-               threadGroup=JMeterContextService.getContext().getThreadGroup();
-               int numThreads =0;
-               if (threadGroup != null) { // can be null for remote testing
-                   numThreads = threadGroup.getNumberOfThreads();
-               }
-            text.append(numThreads);
+            text.append(sample.getGroupThreads());
             text.append(delimiter);
-            text.append(JMeterContextService.getNumberOfThreads());
+            text.append(sample.getAllThreads());
             text.append(delimiter);
         }
         if (saveConfig.saveUrl()) {

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=577514&r1=577513&r2=577514&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
 Wed Sep 19 19:31:30 2007
@@ -28,7 +28,6 @@
 import org.apache.jmeter.assertions.AssertionResult;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.jmeter.samplers.SampleSaveConfiguration;
-import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jorphan.util.Converter;
 import com.thoughtworks.xstream.mapper.Mapper;
 import com.thoughtworks.xstream.converters.MarshallingContext;
@@ -248,17 +247,9 @@
                        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
-               org.apache.jmeter.threads.ThreadGroup 
-               threadGroup=JMeterContextService.getContext().getThreadGroup();
-               int numThreads =0;
-               if (threadGroup != null) { // can be null for remote testing
-                   numThreads = threadGroup.getNumberOfThreads();
-               }
-            writer.addAttribute(ATT_GRP_THRDS,
-                    String.valueOf(numThreads));
-            writer.addAttribute(ATT_ALL_THRDS,
-                    String.valueOf(JMeterContextService.getNumberOfThreads()));
+        if (save.saveThreadCounts()){
+           writer.addAttribute(ATT_GRP_THRDS, 
String.valueOf(res.getGroupThreads()));
+           writer.addAttribute(ATT_ALL_THRDS, 
String.valueOf(res.getAllThreads()));
         }
        }
 
@@ -357,7 +348,8 @@
                                
Converter.getLong(reader.getAttribute(ATT_TIME)));
                
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
+               
res.setGroupThreads(Converter.getInt(reader.getAttribute(ATT_GRP_THRDS)));
+               
res.setAllThreads(Converter.getInt(reader.getAttribute(ATT_ALL_THRDS)));
        }
 
     protected void readFile(String resultFileName, SampleResult res) {

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterThread.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterThread.java?rev=577514&r1=577513&r2=577514&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterThread.java 
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterThread.java 
Wed Sep 19 19:31:30 2007
@@ -300,6 +300,8 @@
                         
                             // If we got any results, then perform processing 
on the result
                             if (result != null) {
+                               
result.setGroupThreads(threadGroup.getNumberOfThreads());
+                               
result.setAllThreads(JMeterContextService.getNumberOfThreads());
                                 result.setThreadName(threadName);
                                 threadContext.setPreviousResult(result);
                                 runPostProcessors(pack.getPostProcessors());

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=577514&r1=577513&r2=577514&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Wed Sep 19 19:31:30 2007
@@ -32,6 +32,7 @@
 <h4>Bug fixes</h4>
 <ul>
 <li>SaveService no longer needs to instantiate classes</li>
+<li>Bug 43430 - Count of active threads is incorrect for remote samples</li>
 </ul>
 
 <h4>Improvements</h4>



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

Reply via email to