Author: sebb
Date: Sun Apr  1 08:23:55 2007
New Revision: 524617

URL: http://svn.apache.org/viewvc?view=rev&rev=524617
Log:
Bug 41913 (19861) - fix ViewTree Assertion display; accumulate sub-sample 
byte-count

Modified:
    
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/control/TransactionController.java
    
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java

Modified: 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/control/TransactionController.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/control/TransactionController.java?view=diff&rev=524617&r1=524616&r2=524617
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/control/TransactionController.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/control/TransactionController.java
 Sun Apr  1 08:23:55 2007
@@ -21,6 +21,7 @@
 import java.io.Serializable;
 
 import org.apache.jmeter.samplers.SampleEvent;
+import org.apache.jmeter.samplers.SampleListener;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.jmeter.samplers.Sampler;
 import org.apache.jmeter.threads.JMeterContext;
@@ -35,7 +36,7 @@
  * Transaction Controller to measure transaction times
  * 
  */
-public class TransactionController extends GenericController implements 
Controller, Serializable {
+public class TransactionController extends GenericController implements 
SampleListener, Controller, Serializable {
        protected static final Logger log = LoggingManager.getLoggerForClass();
 
        transient private String threadName;
@@ -43,6 +44,10 @@
        transient private ListenerNotifier lnf;
 
        transient private SampleResult res;
+    
+    transient private int calls;
+
+    transient private int noFailingSamples;
 
        /**
         * Creates a Transaction Controller
@@ -62,26 +67,25 @@
                String n = this.getName();
                log.debug(threadName + " " + n + " " + s);
        }
-
-       private int calls;
-
+    
        /**
         * @see org.apache.jmeter.control.Controller#next()
         */
        public Sampler next() {
-               Sampler returnValue = null;
                if (isFirst()) // must be the start of the subtree
                {
                        log_debug("+++++++++++++++++++++++++++++");
                        calls = 0;
+            noFailingSamples = 0;
                        res = new SampleResult();
+            res.setSampleLabel(getName());
+            // Assume success
+            res.setSuccessful(true);
                        res.sampleStart();
                }
 
-               calls++;
-
-               returnValue = super.next();
-
+        Sampler returnValue = super.next();
+        
                if (returnValue == null) // Must be the end of the controller
                {
                        log_debug("-----------------------------" + calls);
@@ -89,11 +93,10 @@
                                log_debug("already called");
                        } else {
                                res.sampleEnd();
-                               res.setSuccessful(true);
-                               res.setSampleLabel(getName());
-                               res.setResponseCodeOK();
-                               res.setResponseMessage("Called: " + calls);
-                               res.setThreadName(threadName);
+                res.setResponseMessage("Number of samples in transaction : " + 
calls + ", number of failing samples : " + noFailingSamples);
+                if(res.isSuccessful()) {
+                    res.setResponseCodeOK();
+                }
 
                                // TODO could these be done earlier (or just 
once?)
                 JMeterContext threadContext = getThreadContext();
@@ -103,12 +106,38 @@
                                if (pack == null) {
                                        log.warn("Could not fetch 
SamplePackage");
                                } else {
-                                       lnf.notifyListeners(new 
SampleEvent(res, getName()), pack.getSampleListeners());
+                    SampleEvent event = new SampleEvent(res, getName());
+                    // We must set res to null now, before sending the event 
for the transaction,
+                    // so that we can ignore that event in our sampleOccured 
method 
+                    res = null;
+                                       lnf.notifyListeners(event, 
pack.getSampleListeners());
                                }
-                               res = null;
                        }
                }
+        else {
+            // We have sampled one of our children
+            calls++;            
+        }
 
                return returnValue;
        }
+    
+    public void sampleOccurred(SampleEvent se) {
+        // Check if we have are still sampling our children
+        if(res != null) {
+            SampleResult sampleResult = se.getResult(); 
+            res.setThreadName(sampleResult.getThreadName());
+            res.setBytes(res.getBytes() + sampleResult.getBytes());
+            if(!sampleResult.isSuccessful()) {
+                res.setSuccessful(false);
+                noFailingSamples++;
+            }
+       }
+    }
+
+    public void sampleStarted(SampleEvent e) {
+    }
+
+    public void sampleStopped(SampleEvent e) {
+    }
 }

Modified: 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java?view=diff&rev=524617&r1=524616&r2=524617
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
 Sun Apr  1 08:23:55 2007
@@ -200,7 +200,7 @@
                addSubResults(currNode, res);
                // Add any assertion that failed as children of the sample node
                AssertionResult assertionResults[] = res.getAssertionResults();
-               int assertionIndex = 0;
+               int assertionIndex = currNode.getChildCount();
                for (int j = 0; j < assertionResults.length; j++) {
                        AssertionResult item = assertionResults[j];
                        
@@ -231,6 +231,17 @@
 
                        treeModel.insertNodeInto(leafNode, currNode, 
leafIndex++);
                        addSubResults(leafNode, child);
+            // Add any assertion that failed as children of the sample node
+            AssertionResult assertionResults[] = child.getAssertionResults();
+            int assertionIndex = leafNode.getChildCount();
+            for (int j = 0; j < assertionResults.length; j++) {
+                AssertionResult item = assertionResults[j];
+                
+                if (item.isFailure() || item.isError()) {
+                    DefaultMutableTreeNode assertionNode = new 
DefaultMutableTreeNode(item);
+                    treeModel.insertNodeInto(assertionNode, leafNode, 
assertionIndex++);
+                }
+            }
                }
        }
 
@@ -602,9 +613,7 @@
                xmlButton.setEnabled(true);
        }
 
-       // TODO this method changed because Render XML button added
-       // Could probably be private anyway, because it's only used locally
-       protected Component createHtmlOrTextPane() {
+       private Component createHtmlOrTextPane() {
                ButtonGroup group = new ButtonGroup();
 
                textButton = new JRadioButton(TEXT_BUTTON_LABEL);
@@ -741,11 +750,11 @@
                resultsScrollPane = makeScrollPane(results);
                imageLabel = new JLabel();
 
-               JPanel resultsPane = new JPanel(new BorderLayout());
-               resultsPane.add(resultsScrollPane, BorderLayout.CENTER);
-               resultsPane.add(createHtmlOrTextPane(), BorderLayout.SOUTH);
+               JPanel panel = new JPanel(new BorderLayout());
+               panel.add(resultsScrollPane, BorderLayout.CENTER);
+               panel.add(createHtmlOrTextPane(), BorderLayout.SOUTH);
 
-               return resultsPane;
+               return panel;
        }
 
        private static class ResultsNodeRenderer extends 
DefaultTreeCellRenderer {



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

Reply via email to