Le 14/08/2013 14:19, sebb AT ASF a ecrit :
On 14 August 2013 14:10,  <[email protected]> wrote:
Author: sebb
Date: Wed Aug 14 13:10:10 2013
New Revision: 1513863

URL: http://svn.apache.org/r1513863
Log:
Support device in addition to source IP address
Use enum for source types; don't convert between index and name unnecessarily.
Bugzilla Id: 54874
Hopefully the changed code is OK with you all?

Thanks. After some tests (with success), all seems good for me.



It's unlikely we'll need another enum entry for a while, but if we do,
it should now be quite easy to add.

Modified:
     
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java
     
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPAbstractImpl.java
     
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java

Modified: 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java?rev=1513863&r1=1513862&r2=1513863&view=diff
==============================================================================
--- 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java
 (original)
+++ 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java
 Wed Aug 14 13:10:10 2013
@@ -72,7 +72,7 @@ public class HttpTestSampleGui extends A

      private JTextField sourceIpAddr; // does not apply to Java implementation

-    private JComboBox sourceIpType = new 
JComboBox(HTTPSamplerBase.getSourceTypeList().toArray());
+    private JComboBox sourceIpType = new 
JComboBox(HTTPSamplerBase.getSourceTypeList());

      private final boolean isAJP;

@@ -136,7 +136,7 @@ public class HttpTestSampleGui extends A
          samplerBase.setEmbeddedUrlRE(embeddedRE.getText());
          if (!isAJP) {
              samplerBase.setIpSource(sourceIpAddr.getText());
-            
samplerBase.setIpSourceType(HTTPSamplerBase.getSourceTypeList().indexOf(sourceIpType.getSelectedItem()));
+            samplerBase.setIpSourceType(sourceIpType.getSelectedIndex());
          }
          this.configureTestElement(sampler);
      }
@@ -241,8 +241,7 @@ public class HttpTestSampleGui extends A

          if (!isAJP) {
              // Add a new field source ip address (for HC implementations only)
-            sourceIpType.setSelectedItem(HTTPSamplerBase.getSourceTypeList().
-                    get(HTTPSamplerBase.SOURCE_TYPE_IP_HOSTNAME));  //default: 
IP/Hostname
+            
sourceIpType.setSelectedIndex(HTTPSamplerBase.SourceType.HOSTNAME.ordinal()); 
//default: IP/Hostname
              sourceIpType.setFont(FONT_VERY_SMALL);
              sourceAddrPanel.add(sourceIpType);

@@ -276,8 +275,7 @@ public class HttpTestSampleGui extends A
          embeddedRE.setText(""); // $NON-NLS-1$
          if (!isAJP) {
              sourceIpAddr.setText(""); // $NON-NLS-1$
-            sourceIpType.setSelectedItem(HTTPSamplerBase.getSourceTypeList()
-                    .get(HTTPSamplerBase.SOURCE_TYPE_IP_HOSTNAME));
+            
sourceIpType.setSelectedIndex(HTTPSamplerBase.SourceType.HOSTNAME.ordinal()); 
//default: IP/Hostname
          }
      }


Modified: 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPAbstractImpl.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPAbstractImpl.java?rev=1513863&r1=1513862&r2=1513863&view=diff
==============================================================================
--- 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPAbstractImpl.java
 (original)
+++ 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPAbstractImpl.java
 Wed Aug 14 13:10:10 2013
@@ -35,6 +35,7 @@ import org.apache.jmeter.protocol.http.c
  import org.apache.jmeter.protocol.http.control.CacheManager;
  import org.apache.jmeter.protocol.http.control.CookieManager;
  import org.apache.jmeter.protocol.http.control.HeaderManager;
+import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.SourceType;
  import org.apache.jmeter.protocol.http.util.HTTPConstantsInterface;
  import org.apache.jmeter.protocol.http.util.HTTPFileArg;
  import org.apache.jmeter.samplers.Interruptible;
@@ -142,13 +143,6 @@ public abstract class HTTPAbstractImpl i
      }

      /**
-     * Invokes {@link HTTPSamplerBase#getIpSourceType()}
-     */
-    protected int getIpSourceType() {
-        return testElement.getIpSourceType();
-    }
-
-    /**
       * Gets the IP source address (IP spoofing) if one has been provided.
       *
       * @return the IP source address to use (or null, if none provided or the 
device address could not be found)
@@ -159,16 +153,18 @@ public abstract class HTTPAbstractImpl i
          final String ipSource = getIpSource();
          if (ipSource.trim().length() > 0) {
              Class<? extends InetAddress> ipClass = null;
-            switch (getIpSourceType()) {
-            case HTTPSamplerBase.SOURCE_TYPE_DEVICE:
+            final SourceType sourceType = 
HTTPSamplerBase.SourceType.values()[testElement.getIpSourceType()];
+            switch (sourceType) {
+            case DEVICE:
                  ipClass = InetAddress.class;
                  break;
-            case HTTPSamplerBase.SOURCE_TYPE_DEVICE_IPV4:
+            case DEVICE_IPV4:
                  ipClass = Inet4Address.class;
                  break;
-            case HTTPSamplerBase.SOURCE_TYPE_DEVICE_IPV6:
+            case DEVICE_IPV6:
                  ipClass = Inet6Address.class;
                  break;
+            case HOSTNAME:
              default:
                  return InetAddress.getByName(ipSource);
              }

Modified: 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java?rev=1513863&r1=1513862&r2=1513863&view=diff
==============================================================================
--- 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
 (original)
+++ 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
 Wed Aug 14 13:10:10 2013
@@ -189,22 +189,28 @@ public abstract class HTTPSamplerBase ex

      public static final int CONCURRENT_POOL_SIZE = 4; // Default concurrent 
pool size for download embedded resources

-    public static final int SOURCE_TYPE_IP_HOSTNAME = 0;
-
-    public static final int SOURCE_TYPE_DEVICE = 1;
-
-    public static final int SOURCE_TYPE_DEVICE_IPV4 = 2;
+    public static enum SourceType {
+        HOSTNAME("web_testing_source_ip_hostname"), //$NON-NLS-1$
+        DEVICE("web_testing_source_ip_device"), //$NON-NLS-1$
+        DEVICE_IPV4("web_testing_source_ip_device_ipv4"), //$NON-NLS-1$
+        DEVICE_IPV6("web_testing_source_ip_device_ipv6"); //$NON-NLS-1$
+
+        public final String propertyName;
+        SourceType(String propertyName) {
+            this.propertyName = propertyName;
+        }
+    }

-    public static final int SOURCE_TYPE_DEVICE_IPV6 = 3;
+    private static final int SOURCE_TYPE_DEFAULT = 
HTTPSamplerBase.SourceType.HOSTNAME.ordinal();

      // Use for ComboBox Source Address Type. Preserve order (specially with 
localization)
-    public static final ArrayList<String> getSourceTypeList() {
-        ArrayList<String> sourceTypeList = new ArrayList<String>(4);
-        
sourceTypeList.add(JMeterUtils.getResString("web_testing_source_ip_hostname")); 
//$NON-NLS-1$
-        
sourceTypeList.add(JMeterUtils.getResString("web_testing_source_ip_device")); 
//$NON-NLS-1$
-        
sourceTypeList.add(JMeterUtils.getResString("web_testing_source_ip_device_ipv4"));
 //$NON-NLS-1$
-        
sourceTypeList.add(JMeterUtils.getResString("web_testing_source_ip_device_ipv6"));
 //$NON-NLS-1$
-        return sourceTypeList;
+    public static final String[] getSourceTypeList() {
+        final SourceType[] types = SourceType.values();
+        final String[] displayStrings = new String[types.length];
+        for(int i = 0; i < types.length; i++) {
+            displayStrings[i] = 
JMeterUtils.getResString(types[i].propertyName);
+        }
+        return displayStrings;
      }

      public static final String DEFAULT_METHOD = HTTPConstants.GET; // 
$NON-NLS-1$
@@ -1737,7 +1743,7 @@ public abstract class HTTPSamplerBase ex
       * set IP/address source type to use
       */
      public void setIpSourceType(int value) {
-        setProperty(IP_SOURCE_TYPE, value, 
HTTPSamplerBase.SOURCE_TYPE_IP_HOSTNAME);
+        setProperty(IP_SOURCE_TYPE, value, SOURCE_TYPE_DEFAULT);
      }

      /**
@@ -1746,7 +1752,7 @@ public abstract class HTTPSamplerBase ex
       * @return address source type
       */
      public int getIpSourceType() {
-        return getPropertyAsInt(IP_SOURCE_TYPE, 
HTTPSamplerBase.SOURCE_TYPE_IP_HOSTNAME);
+        return getPropertyAsInt(IP_SOURCE_TYPE, SOURCE_TYPE_DEFAULT);
      }

      /**



Reply via email to