Author: sebb
Date: Sun Jul 26 19:17:22 2009
New Revision: 797975

URL: http://svn.apache.org/viewvc?rev=797975&view=rev
Log:
Bug 47398 - SampleEvents are sent twice over RMI in distributed testing and non 
gui mode

Modified:
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/JMeter.java
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java
    jakarta/jmeter/trunk/xdocs/changes.xml

Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/JMeter.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/JMeter.java?rev=797975&r1=797974&r2=797975&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/JMeter.java (original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/JMeter.java Sun Jul 26 
19:17:22 2009
@@ -736,18 +736,26 @@
             // For GUI runs this is done in Start.java
             convertSubTree(tree);
 
-            if (logFile != null) {
-                ResultCollector logger = new ResultCollector();
-                logger.setFilename(logFile);
-                tree.add(tree.getArray()[0], logger);
-            }
+            Summariser summer = null;
             String summariserName = 
JMeterUtils.getPropDefault("summariser.name", "");//$NON-NLS-1$
             if (summariserName.length() > 0) {
                 log.info("Creating summariser <" + summariserName + ">");
                 println("Creating summariser <" + summariserName + ">");
-                Summariser summer = new Summariser(summariserName);
-                tree.add(tree.getArray()[0], summer);
+                summer = new Summariser(summariserName);
+            }
+            
+            if (logFile != null) {
+                ResultCollector logger = new ResultCollector(summer);
+                logger.setFilename(logFile);
+                tree.add(tree.getArray()[0], logger);
+            }
+            else {
+               // only add Summariser if it can not be shared with the 
ResultCollector
+                   if (summer != null) {
+                       tree.add(tree.getArray()[0], summer);
+                   }
             }
+            
             List engines = new LinkedList();
             tree.add(tree.getArray()[0], new ListenToTest(parent, (remoteStart 
&& remoteStop) ? engines : null));
             println("Created the tree successfully using "+testFile);

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java?rev=797975&r1=797974&r2=797975&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java 
Sun Jul 26 19:17:22 2009
@@ -133,14 +133,22 @@
     private volatile boolean inTest = false;
 
     private volatile boolean isStats = false;
+    
+    /** the summarizer to which this result collector will forward the samples 
*/
+    private Summariser summariser;
 
     /**
      * No-arg constructor.
      */
     public ResultCollector() {
+        this(null);
+    }
+    
+    public ResultCollector(Summariser summer) {
         setErrorLogging(false);
         setSuccessOnlyLogging(false);
         setProperty(new ObjectProperty(SAVE_CONFIG, new 
SampleSaveConfiguration()));
+        summariser = summer;
     }
 
     // Ensure that the sample save config is not shared between copied nodes
@@ -148,6 +156,8 @@
     public Object clone(){
         ResultCollector clone = (ResultCollector) super.clone();
         
clone.setSaveConfig((SampleSaveConfiguration)clone.getSaveConfig().clone());
+        // Unfortunately AbstractTestElement does not call super.clone()
+        clone.summariser = this.summariser;
         return clone;
     }
 
@@ -235,6 +245,10 @@
                 inTest = false;
             }            
         }
+
+        if(summariser != null) {
+            summariser.testEnded(host);
+        }
     }
 
     public synchronized void testStarted(String host) {
@@ -250,6 +264,10 @@
             }
         }
         inTest = true;
+
+        if(summariser != null) {
+            summariser.testStarted(host);
+        }
     }
 
     public void testEnded() {
@@ -484,6 +502,10 @@
                 }
             }
         }
+        
+        if(summariser != null) {
+               summariser.sampleOccurred(event);
+        }
     }
 
     protected final void sendToVisualizer(SampleResult r) {
@@ -577,5 +599,4 @@
     // can find the Clearable nodes - the userObject has to implement the 
interface.
     public void clearData() {
     }
-
 }
\ No newline at end of file

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=797975&r1=797974&r2=797975&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Sun Jul 26 19:17:22 2009
@@ -116,6 +116,7 @@
 
 <h3>Listeners</h3>
 <ul>
+<li>Bug 47398 - SampleEvents are sent twice over RMI in distributed testing 
and non gui mode</li>
 </ul>
 
 <h3>Assertions, Config, Pre- &amp; Post-Processors</h3>



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

Reply via email to