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]