Author: pmouawad
Date: Tue Mar 29 19:24:35 2016
New Revision: 1737035
URL: http://svn.apache.org/viewvc?rev=1737035&view=rev
Log:
Bug 59249 - Http Request Defaults : Add "Source address" and "Save responses as
MD5"
Bugzilla Id: 59249
Modified:
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/HttpDefaultsGui.java
jmeter/trunk/xdocs/changes.xml
Modified:
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/HttpDefaultsGui.java
URL:
http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/HttpDefaultsGui.java?rev=1737035&r1=1737034&r2=1737035&view=diff
==============================================================================
---
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/HttpDefaultsGui.java
(original)
+++
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/HttpDefaultsGui.java
Tue Mar 29 19:24:35 2016
@@ -25,35 +25,49 @@ import java.awt.event.ItemListener;
import javax.swing.BorderFactory;
import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import org.apache.commons.lang3.StringUtils;
import org.apache.jmeter.config.ConfigTestElement;
import org.apache.jmeter.config.gui.AbstractConfigGui;
import org.apache.jmeter.gui.util.HorizontalPanel;
+import org.apache.jmeter.gui.util.VerticalPanel;
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase;
import org.apache.jmeter.testelement.AbstractTestElement;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.property.BooleanProperty;
+import org.apache.jmeter.testelement.property.IntegerProperty;
import org.apache.jmeter.testelement.property.StringProperty;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.gui.JLabeledTextField;
+/**
+ * GUI for Http Request defaults
+ *
+ */
public class HttpDefaultsGui extends AbstractConfigGui {
- private static final long serialVersionUID = 240L;
+ private static final long serialVersionUID = 241L;
- private JCheckBox imageParser;
+ private UrlConfigGui urlConfigGui;
+
+ private JCheckBox retrieveEmbeddedResources;
private JCheckBox concurrentDwn;
private JTextField concurrentPool;
- private UrlConfigGui urlConfig;
+ private JCheckBox useMD5;
private JLabeledTextField embeddedRE; // regular expression used to match
against embedded resource URLs
+ private JTextField sourceIpAddr; // does not apply to Java implementation
+
+ private JComboBox<String> sourceIpType = new
JComboBox<>(HTTPSamplerBase.getSourceTypeList());
+
public HttpDefaultsGui() {
super();
init();
@@ -82,18 +96,16 @@ public class HttpDefaultsGui extends Abs
@Override
public void modifyTestElement(TestElement config) {
ConfigTestElement cfg = (ConfigTestElement ) config;
- ConfigTestElement el = (ConfigTestElement)
urlConfig.createTestElement();
- cfg.clear(); // need to clear because the
+ ConfigTestElement el = (ConfigTestElement)
urlConfigGui.createTestElement();
+ cfg.clear();
cfg.addConfigElement(el);
super.configureTestElement(config);
- if (imageParser.isSelected()) {
+ if (retrieveEmbeddedResources.isSelected()) {
config.setProperty(new
BooleanProperty(HTTPSamplerBase.IMAGE_PARSER, true));
- enableConcurrentDwn(true);
} else {
config.removeProperty(HTTPSamplerBase.IMAGE_PARSER);
- enableConcurrentDwn(false);
-
}
+ enableConcurrentDwn(retrieveEmbeddedResources.isSelected());
if (concurrentDwn.isSelected()) {
config.setProperty(new
BooleanProperty(HTTPSamplerBase.CONCURRENT_DWN, true));
} else {
@@ -108,12 +120,27 @@ public class HttpDefaultsGui extends Abs
config.setProperty(new
StringProperty(HTTPSamplerBase.CONCURRENT_POOL,
String.valueOf(HTTPSamplerBase.CONCURRENT_POOL_SIZE)));
}
+ if(useMD5.isSelected()) {
+ config.setProperty(new BooleanProperty(HTTPSamplerBase.MD5, true));
+ } else {
+ config.removeProperty(HTTPSamplerBase.MD5);
+ }
if (!StringUtils.isEmpty(embeddedRE.getText())) {
config.setProperty(new
StringProperty(HTTPSamplerBase.EMBEDDED_URL_RE,
embeddedRE.getText()));
} else {
config.removeProperty(HTTPSamplerBase.EMBEDDED_URL_RE);
}
+
+ if(!StringUtils.isEmpty(sourceIpAddr.getText())) {
+ config.setProperty(new StringProperty(HTTPSamplerBase.IP_SOURCE,
+ sourceIpAddr.getText()));
+ config.setProperty(new
IntegerProperty(HTTPSamplerBase.IP_SOURCE_TYPE,
+ sourceIpType.getSelectedIndex()));
+ } else {
+ config.removeProperty(HTTPSamplerBase.IP_SOURCE);
+ config.removeProperty(HTTPSamplerBase.IP_SOURCE_TYPE);
+ }
}
/**
@@ -122,67 +149,123 @@ public class HttpDefaultsGui extends Abs
@Override
public void clearGui() {
super.clearGui();
- urlConfig.clear();
- imageParser.setSelected(false);
+ retrieveEmbeddedResources.setSelected(false);
concurrentDwn.setSelected(false);
concurrentPool.setText(String.valueOf(HTTPSamplerBase.CONCURRENT_POOL_SIZE));
+ enableConcurrentDwn(false);
+ useMD5.setSelected(false);
+ urlConfigGui.clear();
embeddedRE.setText(""); // $NON-NLS-1$
+ sourceIpAddr.setText(""); // $NON-NLS-1$
+
sourceIpType.setSelectedIndex(HTTPSamplerBase.SourceType.HOSTNAME.ordinal());
//default: IP/Hostname
}
@Override
public void configure(TestElement el) {
super.configure(el);
- urlConfig.configure(el);
- imageParser.setSelected(((AbstractTestElement)
el).getPropertyAsBoolean(HTTPSamplerBase.IMAGE_PARSER));
- concurrentDwn.setSelected(((AbstractTestElement)
el).getPropertyAsBoolean(HTTPSamplerBase.CONCURRENT_DWN));
- concurrentPool.setText(((AbstractTestElement)
el).getPropertyAsString(HTTPSamplerBase.CONCURRENT_POOL));
- embeddedRE.setText(((AbstractTestElement)
el).getPropertyAsString(HTTPSamplerBase.EMBEDDED_URL_RE, ""));
+ AbstractTestElement samplerBase = (AbstractTestElement) el;
+ urlConfigGui.configure(el);
+
retrieveEmbeddedResources.setSelected(samplerBase.getPropertyAsBoolean(HTTPSamplerBase.IMAGE_PARSER));
+
concurrentDwn.setSelected(samplerBase.getPropertyAsBoolean(HTTPSamplerBase.CONCURRENT_DWN));
+
concurrentPool.setText(samplerBase.getPropertyAsString(HTTPSamplerBase.CONCURRENT_POOL));
+
useMD5.setSelected(samplerBase.getPropertyAsBoolean(HTTPSamplerBase.MD5,
false));
+
embeddedRE.setText(samplerBase.getPropertyAsString(HTTPSamplerBase.EMBEDDED_URL_RE,
""));//$NON-NLS-1$
+
sourceIpAddr.setText(samplerBase.getPropertyAsString(HTTPSamplerBase.IP_SOURCE));
//$NON-NLS-1$
+ sourceIpType.setSelectedIndex(
+ samplerBase.getPropertyAsInt(HTTPSamplerBase.IP_SOURCE_TYPE,
+ HTTPSamplerBase.SOURCE_TYPE_DEFAULT));
}
private void init() { // WARNING: called from ctor so must not be
overridden (i.e. must be private or final)
setLayout(new BorderLayout(0, 5));
setBorder(makeBorder());
- add(makeTitlePanel(), BorderLayout.NORTH);
+ // URL CONFIG
+ urlConfigGui = new UrlConfigGui(false, true, false);
- urlConfig = new UrlConfigGui(false, true, false);
- add(urlConfig, BorderLayout.CENTER);
+ // AdvancedPanel (embedded resources, source address and optional
tasks)
+ JPanel advancedPanel = new VerticalPanel();
+ advancedPanel.add(createEmbeddedRsrcPanel());
+ advancedPanel.add(createSourceAddrPanel());
+ advancedPanel.add(createOptionalTasksPanel());
+
+ JTabbedPane tabbedPane = new JTabbedPane();
+ tabbedPane.add(JMeterUtils
+ .getResString("web_testing_basic"), urlConfigGui);
+ tabbedPane.add(JMeterUtils
+ .getResString("web_testing_advanced"), advancedPanel);
- // OPTIONAL TASKS
- final JPanel embeddedRsrcPanel = new HorizontalPanel();
-
embeddedRsrcPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
JMeterUtils
- .getResString("web_testing_retrieve_title"))); // $NON-NLS-1$
+ JPanel emptyPanel = new JPanel();
+ emptyPanel.setMaximumSize(new Dimension());
- imageParser = new
JCheckBox(JMeterUtils.getResString("web_testing_retrieve_images")); //
$NON-NLS-1$
- embeddedRsrcPanel.add(imageParser);
- imageParser.addItemListener(new ItemListener() {
+ add(makeTitlePanel(), BorderLayout.NORTH);
+ add(tabbedPane, BorderLayout.CENTER);
+ add(emptyPanel, BorderLayout.SOUTH);
+ }
+
+ protected JPanel createEmbeddedRsrcPanel() {
+ // retrieve Embedded resources
+ retrieveEmbeddedResources = new
JCheckBox(JMeterUtils.getResString("web_testing_retrieve_images")); //
$NON-NLS-1$
+ // add a listener to activate or not concurrent dwn.
+ retrieveEmbeddedResources.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(final ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
enableConcurrentDwn(true); }
else { enableConcurrentDwn(false); }
}
});
- // Concurrent resources download
+ // Download concurrent resources
concurrentDwn = new
JCheckBox(JMeterUtils.getResString("web_testing_concurrent_download")); //
$NON-NLS-1$
concurrentDwn.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(final ItemEvent e) {
- if (imageParser.isSelected() && e.getStateChange() ==
ItemEvent.SELECTED) { concurrentPool.setEnabled(true); }
+ if (retrieveEmbeddedResources.isSelected() &&
e.getStateChange() == ItemEvent.SELECTED) { concurrentPool.setEnabled(true); }
else { concurrentPool.setEnabled(false); }
}
});
concurrentPool = new JTextField(2); // 2 columns size
concurrentPool.setMinimumSize(new Dimension(10, (int)
concurrentPool.getPreferredSize().getHeight()));
concurrentPool.setMaximumSize(new Dimension(30, (int)
concurrentPool.getPreferredSize().getHeight()));
+
+ final JPanel embeddedRsrcPanel = new HorizontalPanel();
+
embeddedRsrcPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
JMeterUtils
+ .getResString("web_testing_retrieve_title"))); // $NON-NLS-1$
+ embeddedRsrcPanel.add(retrieveEmbeddedResources);
embeddedRsrcPanel.add(concurrentDwn);
embeddedRsrcPanel.add(concurrentPool);
// Embedded URL match regex
embeddedRE = new
JLabeledTextField(JMeterUtils.getResString("web_testing_embedded_url_pattern"),20);
// $NON-NLS-1$
- embeddedRsrcPanel.add(embeddedRE);
-
+ embeddedRsrcPanel.add(embeddedRE);
- add(embeddedRsrcPanel, BorderLayout.SOUTH);
+ return embeddedRsrcPanel;
+ }
+
+ protected JPanel createSourceAddrPanel() {
+ final JPanel sourceAddrPanel = new HorizontalPanel();
+
sourceAddrPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
JMeterUtils
+ .getResString("web_testing_source_ip"))); // $NON-NLS-1$
+
+
sourceIpType.setSelectedIndex(HTTPSamplerBase.SourceType.HOSTNAME.ordinal());
//default: IP/Hostname
+ sourceAddrPanel.add(sourceIpType);
+
+ sourceIpAddr = new JTextField();
+ sourceAddrPanel.add(sourceIpAddr);
+ return sourceAddrPanel;
+ }
+
+ protected JPanel createOptionalTasksPanel() {
+ // OPTIONAL TASKS
+ final JPanel checkBoxPanel = new VerticalPanel();
+
checkBoxPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
JMeterUtils
+ .getResString("optional_tasks"))); // $NON-NLS-1$
+
+ // Use MD5
+ useMD5 = new
JCheckBox(JMeterUtils.getResString("response_save_as_md5")); // $NON-NLS-1$
+
+ checkBoxPanel.add(useMD5);
+
+ return checkBoxPanel;
}
@Override
@@ -203,12 +286,4 @@ public class HttpDefaultsGui extends Abs
embeddedRE.setEnabled(false);
}
}
-
- public void itemStateChanged(final ItemEvent event) {
- if (event.getStateChange() == ItemEvent.SELECTED) {
- enableConcurrentDwn(true);
- } else {
- enableConcurrentDwn(false);
- }
- }
}
Modified: jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1737035&r1=1737034&r2=1737035&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Tue Mar 29 19:24:35 2016
@@ -252,6 +252,7 @@ Deprecated Libraries dropped or replaced
<li><bug>52073</bug>Embedded Resources Parallel download : Improve
performances by avoiding shutdown of ThreadPoolExecutor at each sample.
Contributed by Benoit Wiart (benoit dot wiart at gmail.com)</li>
<li><bug>59190</bug>HTTP(S) Test Script Recorder : Suggested excludes
should ignore case. Contributed by Antonio Gomes Rodrigues (ra0077 at
gmail.com)</li>
<li><bug>59140</bug>Parallel Download : Add CSS Parsing to extract links
from CSS files</li>
+ <li><bug>59249</bug>Http Request Defaults : Add "Source address" and "Save
responses as MD5"</li>
</ul>
<h3>Other samplers</h3>