mstover1 2005/08/30 08:17:27
Modified: src/components/org/apache/jmeter/visualizers
ViewResultsFullVisualizer.java
src/protocol/http/org/apache/jmeter/protocol/http/control
Cookie.java CookieManager.java
src/core/org/apache/jmeter/resources messages.properties
src/components/org/apache/jmeter/assertions
CompareAssertion.java
Added: src/components/org/apache/jmeter/visualizers
TreeNodeRenderer.java ComparisonVisualizer.java
src/core/org/apache/jmeter/assertions
CompareAssertionResult.java
Log:
Cookies now differentiate based on port as well as host
New ComparisonVisualizer for viewing falied comparison assertion results
side-by-side.
Revision Changes Path
1.53 +1 -13
jakarta-jmeter/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
Index: ViewResultsFullVisualizer.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -r1.52 -r1.53
--- ViewResultsFullVisualizer.java 12 Jul 2005 20:50:29 -0000 1.52
+++ ViewResultsFullVisualizer.java 30 Aug 2005 15:17:20 -0000 1.53
@@ -585,7 +585,7 @@
treeModel = new DefaultTreeModel(root);
jTree = new JTree(treeModel);
- jTree.setCellRenderer(new ResultsNodeRenderer());
+ jTree.setCellRenderer(new TreeNodeRenderer());
jTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
jTree.addTreeSelectionListener(this);
jTree.setRootVisible(false);
@@ -642,18 +642,6 @@
return resultsPane;
}
-
- private class ResultsNodeRenderer extends DefaultTreeCellRenderer {
- public Component getTreeCellRendererComponent(JTree tree,
Object value, boolean sel, boolean expanded,
- boolean leaf, int row, boolean focus) {
- super.getTreeCellRendererComponent(tree, value, sel,
expanded, leaf, row, focus);
- if (!((SampleResult) ((DefaultMutableTreeNode)
value).getUserObject()).isSuccessful()) {
- this.setForeground(Color.red);
- }
- return this;
- }
- }
-
private static class LocalHTMLEditorKit extends HTMLEditorKit {
private static final ViewFactory defaultFactory = new
LocalHTMLFactory();
1.1
jakarta-jmeter/src/components/org/apache/jmeter/visualizers/TreeNodeRenderer.java
Index: TreeNodeRenderer.java
===================================================================
package org.apache.jmeter.visualizers;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import org.apache.jmeter.samplers.SampleResult;
public class TreeNodeRenderer extends DefaultTreeCellRenderer {
public TreeNodeRenderer() {
super();
}
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean expanded,
boolean leaf, int row, boolean focus) {
super.getTreeCellRendererComponent(tree, value, sel, expanded,
leaf, row, focus);
Object obj = ((DefaultMutableTreeNode) value).getUserObject();
if(obj instanceof SampleResult)
{
if (!((SampleResult) obj).isSuccessful()) {
this.setForeground(Color.red);
}
}
return this;
}
}
1.1
jakarta-jmeter/src/components/org/apache/jmeter/visualizers/ComparisonVisualizer.java
Index: ComparisonVisualizer.java
===================================================================
package org.apache.jmeter.visualizers;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
import org.apache.jmeter.assertions.AssertionResult;
import org.apache.jmeter.assertions.CompareAssertionResult;
import org.apache.jmeter.samplers.Clearable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
public class ComparisonVisualizer extends AbstractVisualizer implements
Clearable {
JTree resultsTree;
DefaultTreeModel treeModel;
DefaultMutableTreeNode root;
JTextPane base, secondary;
public ComparisonVisualizer() {
super();
init();
}
public void add(SampleResult sample) {
DefaultMutableTreeNode currNode = new
DefaultMutableTreeNode(sample);
treeModel.insertNodeInto(currNode, root, root.getChildCount());
if (root.getChildCount() == 1) {
resultsTree.expandPath(new TreePath(root));
}
}
public String getLabelResource() {
return "comparison_visualizer_title";
}
private void init() {
setLayout(new BorderLayout());
setBorder(makeBorder());
add(makeTitlePanel(), BorderLayout.NORTH);
JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
split.add(getTreePanel());
split.add(getSideBySidePanel());
add(split, BorderLayout.CENTER);
}
private JComponent getSideBySidePanel() {
JPanel main = new JPanel(new GridLayout(1, 2));
JScrollPane base = new JScrollPane(getBaseTextPane());
base.setPreferredSize(base.getMinimumSize());
JScrollPane secondary = new JScrollPane(getSecondaryTextPane());
secondary.setPreferredSize(secondary.getMinimumSize());
main.add(base);
main.add(secondary);
main.setPreferredSize(main.getMinimumSize());
return main;
}
private JTextPane getBaseTextPane() {
base = new JTextPane();
return base;
}
private JTextPane getSecondaryTextPane() {
secondary = new JTextPane();
return secondary;
}
private JComponent getTreePanel() {
root = new DefaultMutableTreeNode("Root");
treeModel = new DefaultTreeModel(root);
resultsTree = new JTree(treeModel);
resultsTree.setCellRenderer(new TreeNodeRenderer());
resultsTree.setCellRenderer(new TreeNodeRenderer());
resultsTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
resultsTree.addTreeSelectionListener(new Selector());
resultsTree.setRootVisible(false);
resultsTree.setShowsRootHandles(true);
JScrollPane treePane = new JScrollPane(resultsTree);
treePane.setPreferredSize(new Dimension(150, 50));
JPanel panel = new JPanel(new GridLayout(1, 1));
panel.add(treePane);
return panel;
}
private class Selector implements TreeSelectionListener {
/*
* (non-Javadoc)
*
* @see
javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
*/
public void valueChanged(TreeSelectionEvent e) {
try {
DefaultMutableTreeNode node =
(DefaultMutableTreeNode) resultsTree.getLastSelectedPathComponent();
SampleResult sr = (SampleResult)
node.getUserObject();
AssertionResult[] results =
sr.getAssertionResults();
CompareAssertionResult result = null;
for (AssertionResult r : results) {
if (r instanceof
CompareAssertionResult) {
result =
(CompareAssertionResult) r;
break;
}
}
if (result == null)
result = new CompareAssertionResult();
base.setText(result.getBaseResult());
secondary.setText(result.getSecondaryResult());
} catch (Exception err) {
base.setText("Invalid Node " + err);
secondary.setText("Invalid Node " + err);
}
base.setCaretPosition(0);
secondary.setCaretPosition(0);
}
}
/*
* (non-Javadoc)
*
* @see org.apache.jmeter.gui.AbstractJMeterGuiComponent#clear()
*/
@Override
public void clear() {
super.clear();
while (root.getChildCount() > 0) {
// the child to be removed will always be 0 'cos as the
nodes are
// removed the nth node will become (n-1)th
treeModel.removeNodeFromParent((DefaultMutableTreeNode)
root.getChildAt(0));
base.setText("");
secondary.setText("");
}
}
}
1.13 +14 -1
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/control/Cookie.java
Index: Cookie.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/control/Cookie.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Cookie.java 12 Jul 2005 20:50:46 -0000 1.12
+++ Cookie.java 30 Aug 2005 15:17:23 -0000 1.13
@@ -23,6 +23,7 @@
import org.apache.jmeter.config.ConfigElement;
import org.apache.jmeter.testelement.AbstractTestElement;
import org.apache.jmeter.testelement.property.BooleanProperty;
+import org.apache.jmeter.testelement.property.IntegerProperty;
import org.apache.jmeter.testelement.property.LongProperty;
import org.apache.jorphan.util.JOrphanUtils;
@@ -41,6 +42,8 @@
private static String SECURE = "Cookie.secure";
private static String PATH = "Cookie.path";
+
+ private static String PORT = "Cookie.port";
/**
* create the coookie
@@ -146,6 +149,16 @@
public synchronized void setPath(String path) {
setProperty(PATH, path);
}
+
+ public void setPort(int port)
+ {
+ setProperty(new IntegerProperty(PORT,port));
+ }
+
+ public int getPort()
+ {
+ return getProperty(PORT).getIntValue();
+ }
/**
* creates a string representation of this cookie
1.41 +5 -3
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/control/CookieManager.java
Index: CookieManager.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/control/CookieManager.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- CookieManager.java 12 Jul 2005 20:50:46 -0000 1.40
+++ CookieManager.java 30 Aug 2005 15:17:24 -0000 1.41
@@ -278,7 +278,8 @@
+ cookie.getPath() + "
expires=" + cookie.getExpires());
}
if (host.endsWith(cookie.getDomain()) &&
url.getFile().startsWith(cookie.getPath())
- && ((cookie.getExpires() == 0) // treat
as never expiring
+ && ((cookie.getExpires() == 0 && //
treat as never expiring
+ (cookie.getPort() == 0 ||
cookie.getPort() == url.getPort()))
// (bug 27713)
|| (System.currentTimeMillis() / 1000)
<= cookie.getExpires())) {
if (header.length() > 0) {
@@ -333,6 +334,7 @@
// means
//
session
//
cookie
+ newCookie.setPort(url.getPort());
// check the rest of the headers
while (st.hasMoreTokens()) {
nvp = st.nextToken();
1.1
jakarta-jmeter/src/core/org/apache/jmeter/assertions/CompareAssertionResult.java
Index: CompareAssertionResult.java
===================================================================
package org.apache.jmeter.assertions;
public class CompareAssertionResult extends AssertionResult {
private static final long serialVersionUID = 1;
private ResultHolder comparedResults = new ResultHolder();
public CompareAssertionResult() {
super();
}
public CompareAssertionResult(boolean failure, boolean error, String
message) {
super(failure, error, message);
}
public void addToBaseResult(String resultData)
{
comparedResults.addToBaseResult(resultData);
}
public void addToSecondaryResult(String resultData)
{
comparedResults.addToSecondaryResult(resultData);
}
public String getBaseResult()
{
return comparedResults.baseResult;
}
public String getSecondaryResult()
{
return comparedResults.secondaryResult;
}
private class ResultHolder
{
String baseResult;
String secondaryResult;
public ResultHolder()
{
}
public void addToBaseResult(String r)
{
if(baseResult == null)
{
baseResult = r;
}
else
{
baseResult = baseResult + "\n\n" + r;
}
}
public void addToSecondaryResult(String r)
{
if(secondaryResult == null)
{
secondaryResult = r;
}
else
{
secondaryResult = secondaryResult + "\n\n" + r;
}
}
}
}
1.162 +1 -0
jakarta-jmeter/src/core/org/apache/jmeter/resources/messages.properties
Index: messages.properties
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/resources/messages.properties,v
retrieving revision 1.161
retrieving revision 1.162
diff -u -r1.161 -r1.162
--- messages.properties 29 Aug 2005 01:24:19 -0000 1.161
+++ messages.properties 30 Aug 2005 15:17:25 -0000 1.162
@@ -76,6 +76,7 @@
column_number=Column number of CSV file | next | *alias
compare=Compare
comparefilt=Compare filter
+comparison_visualizer_title=Comparison Assertion Visualizer
config_element=Config Element
config_save_settings=Configure
configure_wsdl=Configure
1.4 +45 -64
jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertion.java
Index: CompareAssertion.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertion.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- CompareAssertion.java 29 Aug 2005 21:04:12 -0000 1.3
+++ CompareAssertion.java 30 Aug 2005 15:17:26 -0000 1.4
@@ -22,7 +22,9 @@
public class CompareAssertion extends AbstractTestElement implements
Assertion, TestBean, Serializable,
LoopIterationListener {
static Logger log = LoggingManager.getLoggerForClass();
+
transient List responses;
+
private static final Substitution emptySub = new StringSubstitution("");
transient boolean iterationDone = false;
@@ -30,7 +32,7 @@
private boolean compareContent = true;
private long compareTime = -1;
-
+
Collection<String> stringsToSkip;
public CompareAssertion() {
@@ -41,18 +43,16 @@
log.info("get assertion result for sample");
responses.add(response);
if (responses.size() > 1) {
- AssertionResult result = new
AssertionResult(false,false,null);
+ CompareAssertionResult result = new
CompareAssertionResult(false, false, null);
compareContent(result);
compareTime(result);
return result;
} else
return new AssertionResult(false, false, null);
}
-
- protected void compareTime(AssertionResult result)
- {
- if(compareTime > -1)
- {
+
+ protected void compareTime(CompareAssertionResult result) {
+ if (compareTime > -1) {
Iterator iter = responses.iterator();
long prevTime = -1;
SampleResult prevResult = null;
@@ -60,29 +60,19 @@
while (iter.hasNext()) {
SampleResult sResult = (SampleResult)
iter.next();
long currentTime = sResult.getTime();
- if (prevTime != -1)
- {
+ if (prevTime != -1) {
success = Math.abs(prevTime -
currentTime) < compareTime;
prevResult = sResult;
}
if (!success) {
result.setFailure(true);
- StringBuffer message = new
StringBuffer("##################\n");
- message.append("From Request: ");
- message.append(prevResult.toString());
- message.append("\n\n");
- message.append("Response Time = ");
- message.append(prevTime);
- message.append("\n\n");
- message.append("Not Close Enough To:
\n\n");
- message.append("From Request: ");
- message.append(sResult.toString());
- message.append("\n\n");
- message.append("Response Time = ");
- message.append(currentTime);
- message.append("/n/n");
-
message.append("==============================\n\n");
-
result.setFailureMessage(message.toString());
+ StringBuffer buf = new
StringBuffer(prevResult.getSamplerData().trim()).append("\n").append(
+
prevResult.getRequestHeaders()).append("\n\n").append("Response Time:
").append(prevTime);
+ result.addToBaseResult(buf.toString());
+ buf = new
StringBuffer(sResult.getSamplerData().trim()).append("\n").append(
+
sResult.getRequestHeaders()).append("\n\n").append("Response Time:
").append(currentTime);
+
result.addToSecondaryResult(buf.toString());
+ result.setFailureMessage("Responses
differ in response time");
break;
}
prevResult = sResult;
@@ -91,7 +81,7 @@
}
}
- protected void compareContent(AssertionResult result) {
+ protected void compareContent(CompareAssertionResult result) {
if (compareContent) {
Iterator iter = responses.iterator();
String prevContent = null;
@@ -104,60 +94,48 @@
currentContent = new
String(sResult.getResponseData(), sResult.getDataEncoding());
} catch (UnsupportedEncodingException e) {
result.setError(true);
- result.setFailureMessage("Unsupported
Encoding Exception: " +sResult.getDataEncoding());
+ result.setFailureMessage("Unsupported
Encoding Exception: " + sResult.getDataEncoding());
return;
}
currentContent = filterString(currentContent);
- if (prevContent != null)
- {
+ if (prevContent != null) {
success =
prevContent.equals(currentContent);
}
if (!success) {
result.setFailure(true);
- StringBuffer message = new
StringBuffer("##################\n");
- message.append("From Request: ");
- message.append(prevResult.toString());
- message.append("\n\n");
- message.append(prevContent);
- message.append("\n\n");
- message.append("Not Equal To: \n\n");
- message.append("From Request: ");
- message.append(sResult.toString());
- message.append("\n\n");
- message.append(currentContent);
- message.append("\n\n");
-
message.append("==============================\n\n");
-
result.setFailureMessage(message.toString());
+ StringBuffer buf = new
StringBuffer(prevResult.getSamplerData().trim()).append("\n").append(
+
prevResult.getRequestHeaders()).append("\n\n").append(prevContent);
+ result.addToBaseResult(buf.toString());
+ buf = new
StringBuffer(sResult.getSamplerData().trim()).append("\n").append(
+
sResult.getRequestHeaders()).append("\n\n").append(currentContent);
+
result.addToSecondaryResult(buf.toString());
+ result.setFailureMessage("Responses
differ in content");
break;
}
prevResult = sResult;
prevContent = currentContent;
}
}
- }
-
- private String filterString(String content)
- {
- if(stringsToSkip == null || stringsToSkip.size() == 0)
- {
+ }
+
+ private String filterString(String content) {
+ if (stringsToSkip == null || stringsToSkip.size() == 0) {
return content;
- }
- else
- {
- for(String regex : stringsToSkip)
- {
+ } else {
+ for (String regex : stringsToSkip) {
log.info("replacing regex: " + regex);
- content =
Util.substitute(JMeterUtils.getMatcher(),JMeterUtils.getPatternCache().getPattern(regex),emptySub,content,Util.SUBSTITUTE_ALL);
+ content =
Util.substitute(JMeterUtils.getMatcher(),
JMeterUtils.getPatternCache().getPattern(regex),
+ emptySub, content,
Util.SUBSTITUTE_ALL);
}
}
return content;
}
-
+
/*
- * (non-Javadoc)
- *
- * @see
org.apache.jmeter.engine.event.LoopIterationListener#iterationStart(org.apache.jmeter.engine.event.LoopIterationEvent)
- */
+ * (non-Javadoc)
+ *
+ * @see
org.apache.jmeter.engine.event.LoopIterationListener#iterationStart(org.apache.jmeter.engine.event.LoopIterationEvent)
+ */
public void iterationStart(LoopIterationEvent iterEvent) {
log.info("iteration started for compare Assertion");
responses = new LinkedList();
@@ -181,7 +159,8 @@
}
/**
- * @param compareContent The compareContent to set.
+ * @param compareContent
+ * The compareContent to set.
*/
public void setCompareContent(boolean compareContent) {
this.compareContent = compareContent;
@@ -195,7 +174,8 @@
}
/**
- * @param compareTime The compareTime to set.
+ * @param compareTime
+ * The compareTime to set.
*/
public void setCompareTime(long compareTime) {
this.compareTime = compareTime;
@@ -209,10 +189,11 @@
}
/**
- * @param stringsToSkip The stringsToSkip to set.
+ * @param stringsToSkip
+ * The stringsToSkip to set.
*/
public void setStringsToSkip(Collection stringsToSkip) {
- this.stringsToSkip = (Collection<String>)stringsToSkip;
+ this.stringsToSkip = (Collection<String>) stringsToSkip;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]