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>


Reply via email to