sebb 2003/11/14 18:35:51
Modified: src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui
ProxyControlGui.java
src/protocol/http/org/apache/jmeter/protocol/http/proxy
ProxyControl.java
Log:
Apply default to protocol field. Detect pauses bewteen samples and optionally
generate separators between request blocks; optionally add assertions to first request
in block
Revision Changes Path
1.24 +43 -2
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java
Index: ProxyControlGui.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- ProxyControlGui.java 19 Oct 2003 22:43:51 -0000 1.23
+++ ProxyControlGui.java 15 Nov 2003 02:35:51 -0000 1.24
@@ -122,6 +122,17 @@
*/
private JCheckBox httpHeaders;
+ /**
+ * Add separators between page requests - if there is a large enough time
+ * difference between samples, assume that a new link has been clicked
+ */
+ private JCheckBox addSeparators;
+
+ /**
+ * Add an Assertion to the first sample of each set
+ */
+ private JCheckBox addAssertions;
+
private ProxyControl model;
private JTable excludeTable;
@@ -185,6 +196,8 @@
setIncludeListInProxyControl(model);
setExcludeListInProxyControl(model);
model.setCaptureHttpHeaders(httpHeaders.isSelected());
+ model.setSeparators(addSeparators.isSelected());
+ model.setAssertions(addAssertions.isSelected());
}
}
@@ -228,6 +241,8 @@
model = (ProxyControl)element;
portField.setText(model.getPropertyAsString(ProxyControl.PORT));
httpHeaders.setSelected(model.getPropertyAsBoolean(ProxyControl.CAPTURE_HTTP_HEADERS));
+
addSeparators.setSelected(model.getPropertyAsBoolean(ProxyControl.ADD_SEPARATORS));
+
addAssertions.setSelected(model.getPropertyAsBoolean(ProxyControl.ADD_ASSERTIONS));
populateTable(includeModel, model.getIncludePatterns().iterator());
populateTable(excludeModel, model.getExcludePatterns().iterator());
repaint();
@@ -286,6 +301,14 @@
{
enableRestart();
}
+ else if (command.equals(ProxyControl.ADD_ASSERTIONS))
+ {
+ enableRestart();
+ }
+ else if (command.equals(ProxyControl.ADD_SEPARATORS))
+ {
+ enableRestart();
+ }
else if (command.equals(ADD_EXCLUDE))
{
excludeModel.addNewRow();
@@ -442,7 +465,7 @@
private JPanel createPortPanel()
{
- portField = new JTextField("8080", 8);
+ portField = new JTextField(ProxyControl.DEFAULT_PORT_S, 8);
portField.setName(ProxyControl.PORT);
portField.addKeyListener(this);
@@ -455,12 +478,30 @@
httpHeaders.addActionListener(this);
httpHeaders.setActionCommand(ProxyControl.CAPTURE_HTTP_HEADERS);
+ addSeparators = new
JCheckBox(JMeterUtils.getResString("proxy_separators"));
+ addSeparators.setName(ProxyControl.ADD_SEPARATORS);
+ addSeparators.setSelected(false);
+ addSeparators.addActionListener(this);
+ addSeparators.setActionCommand(ProxyControl.ADD_SEPARATORS);
+
+ addAssertions = new
JCheckBox(JMeterUtils.getResString("proxy_assertions"));
+ addAssertions.setName(ProxyControl.ADD_ASSERTIONS);
+ addAssertions.setSelected(false);
+ addAssertions.addActionListener(this);
+ addAssertions.setActionCommand(ProxyControl.ADD_ASSERTIONS);
+
HorizontalPanel panel = new HorizontalPanel();
panel.add(label);
panel.add(portField);
panel.add(Box.createHorizontalStrut(10));
panel.add(httpHeaders);
+
+ panel.add(Box.createHorizontalStrut(10));
+ panel.add(addSeparators);
+
+ panel.add(Box.createHorizontalStrut(10));
+ panel.add(addAssertions);
return panel;
}
1.31 +85 -3
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
Index: ProxyControl.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- ProxyControl.java 19 Oct 2003 22:43:51 -0000 1.30
+++ ProxyControl.java 15 Nov 2003 02:35:51 -0000 1.31
@@ -63,8 +63,10 @@
import junit.framework.TestCase;
+import org.apache.jmeter.assertions.ResponseAssertion;
import org.apache.jmeter.config.ConfigElement;
import org.apache.jmeter.config.ConfigTestElement;
+import org.apache.jmeter.control.GenericController;
import org.apache.jmeter.exceptions.IllegalUserActionException;
import org.apache.jmeter.functions.InvalidVariableException;
import org.apache.jmeter.gui.GuiPackage;
@@ -97,8 +99,10 @@
public class ProxyControl extends ConfigTestElement implements Serializable
{
transient private static Logger log = LoggingManager.getLoggerForClass();
- Daemon server;
- private static final int DEFAULT_PORT = 8080;
+ private Daemon server;
+ public static final int DEFAULT_PORT = 8080;
+ public static final String DEFAULT_PORT_S =
+ Integer.toString(DEFAULT_PORT);// Used by GUI
private static PatternCacheLRU patternCache =
new PatternCacheLRU(1000, new Perl5Compiler());
transient Perl5Matcher matcher;
@@ -106,6 +110,15 @@
public static final String EXCLUDE_LIST = "ProxyControlGui.exclude_list";
public static final String INCLUDE_LIST = "ProxyControlGui.include_list";
public static final String CAPTURE_HTTP_HEADERS =
"ProxyControlGui.capture_http_headers";
+ public static final String ADD_ASSERTIONS = "ProxyControlGui.add_assertion";
+ public static final String ADD_SEPARATORS = "ProxyControlGui.add_separator";
+
+
+ private long lastTime = 0;//When was the last sample seen?
+ private static final long sampleGap =
+ JMeterUtils.getPropDefault("proxy.pause",1000);//Detect if user has pressed a
new link
+ private boolean addAssertions;
+ private boolean addSeparators;
public ProxyControl()
{
@@ -131,6 +144,18 @@
setProperty(new BooleanProperty(CAPTURE_HTTP_HEADERS,capture));
}
+ public void setSeparators(boolean b)
+ {
+ addSeparators=b;
+ setProperty(new BooleanProperty(ADD_SEPARATORS,b));
+ }
+
+ public void setAssertions(boolean b)
+ {
+ addAssertions=b;
+ setProperty(new BooleanProperty(ADD_ASSERTIONS,b));
+ }
+
public void setIncludeList(Collection list)
{
setProperty(new CollectionProperty(INCLUDE_LIST, new HashSet(list)));
@@ -269,6 +294,37 @@
return ok;
}
+ /*
+ * Helper method to add a Response Assertion
+ */
+ private void addAssertion(JMeterTreeModel model,JMeterTreeNode node)
+ throws IllegalUserActionException
+ {
+ if (addAssertions){
+ ResponseAssertion ra = new ResponseAssertion();
+ ra.setProperty(TestElement.GUI_CLASS,
+ "org.apache.jmeter.assertions.gui.AssertionGui");
+ ra.setProperty(TestElement.NAME,"Check response");
+ ra.setTestField(ResponseAssertion.RESPONSE_DATA);
+ model.addComponent(ra,node);
+ }
+ }
+
+ /*
+ * Helper method to add a Divider
+ */
+ private void addDivider(JMeterTreeModel model,JMeterTreeNode node)
+ throws IllegalUserActionException
+ {
+ if (addSeparators){
+ TestElement sc = new GenericController();
+ sc.setProperty(TestElement.GUI_CLASS,
+ "org.apache.jmeter.control.gui.LogicControllerGui");
+ sc.setProperty(TestElement.NAME,"-------------------");
+ model.addComponent(sc,node);
+ }
+ }
+
private void placeConfigElement(
HTTPSampler sampler,
TestElement[] subConfigs)
@@ -318,8 +374,26 @@
"org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui");
try
{
+ boolean firstInBatch=false;
+ if (lastTime == 0){
+ lastTime =
System.currentTimeMillis();
+ firstInBatch=true;
+ }
+ long now = System.currentTimeMillis();
+ if (now - lastTime > sampleGap){
+ addDivider(treeModel,node);
+ firstInBatch=true;//Remember to save the new node
+ }
+ lastTime = System.currentTimeMillis();
+
JMeterTreeNode newNode =
treeModel.addComponent(sampler, node);
+
+ if(firstInBatch){
+ addAssertion(treeModel,newNode);
+ firstInBatch=false;
+ }
+
for (int i = 0;
subConfigs != null && i < subConfigs.length;
i++)
@@ -367,6 +441,14 @@
.equals(urlConfig.getPropertyAsString(HTTPSampler.PATH)))
{
sampler.setPath("");
+ }
+
+ if (sampler
+ .getProtocol()
+
.equalsIgnoreCase(urlConfig.getPropertyAsString(HTTPSampler.PROTOCOL))
+ )
+ {
+ sampler.setProtocol("");
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]