View | Details | Raw Unified | Return to bug 54874
Collapse All | Expand All

(-)apache-jmeter-2.8/src/core/org/apache/jmeter/resources/messages.properties (-1 / +1 lines)
Lines 1162-1168 Link Here
1162
web_server_timeout_connect=Connect:
1162
web_server_timeout_connect=Connect:
1163
web_server_timeout_response=Response:
1163
web_server_timeout_response=Response:
1164
web_server_timeout_title=Timeouts (milliseconds)
1164
web_server_timeout_title=Timeouts (milliseconds)
1165
web_testing2_source_ip=Source IP address:
1165
web_testing2_source_ip=Source IP address / device:
1166
web_testing2_title=HTTP Request HTTPClient
1166
web_testing2_title=HTTP Request HTTPClient
1167
web_testing_concurrent_download=Use concurrent pool. Size:
1167
web_testing_concurrent_download=Use concurrent pool. Size:
1168
web_testing_embedded_url_pattern=Embedded URLs must match\:
1168
web_testing_embedded_url_pattern=Embedded URLs must match\:
(-)apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java (-2 / +43 lines)
Lines 30-38 Link Here
30
import java.nio.charset.Charset;
30
import java.nio.charset.Charset;
31
import java.security.GeneralSecurityException;
31
import java.security.GeneralSecurityException;
32
import java.util.ArrayList;
32
import java.util.ArrayList;
33
import java.util.Collections;
34
import java.util.Enumeration;
33
import java.util.HashMap;
35
import java.util.HashMap;
34
import java.util.List;
36
import java.util.List;
35
import java.util.Map;
37
import java.util.Map;
38
import java.net.Inet4Address;
39
import java.net.Inet6Address;
40
import java.net.NetworkInterface;
41
import java.net.SocketException;
36
42
37
import org.apache.commons.lang3.StringUtils;
43
import org.apache.commons.lang3.StringUtils;
38
import org.apache.http.Header;
44
import org.apache.http.Header;
Lines 568-573 Link Here
568
        return httpClient;
574
        return httpClient;
569
    }
575
    }
570
576
577
    static private String getInterfaceAddress(String interfaceName) throws SocketException {
578
        // By default use ipv4 addresses
579
        Class<?> inetClass = Inet4Address.class;
580
        if (interfaceName.toLowerCase().startsWith("ipv6:")) {
581
            interfaceName = interfaceName.substring(5);
582
            inetClass = Inet6Address.class;
583
        } else {
584
            if ( interfaceName.toLowerCase().startsWith("ipv4:")) {
585
                interfaceName = interfaceName.substring(5);
586
            }
587
        }
588
589
        Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
590
        for (NetworkInterface netInterface : Collections.list(nets)) {
591
            if (netInterface.getName().equals(interfaceName)) {
592
                Enumeration<InetAddress> inetAddresses = netInterface.getInetAddresses();
593
                ArrayList<InetAddress> inetAddressesList = Collections.list(inetAddresses);
594
                for (int i=0; i < inetAddressesList.size(); i++) {
595
                    if (inetClass == inetAddressesList.get(i).getClass()) {
596
                        return inetAddressesList.get(i).getHostAddress();
597
                    }
598
                }
599
            }
600
        }
601
        return "";
602
    }
603
571
    private void setupRequest(URL url, HttpRequestBase httpRequest, HTTPSampleResult res)
604
    private void setupRequest(URL url, HttpRequestBase httpRequest, HTTPSampleResult res)
572
        throws IOException {
605
        throws IOException {
573
606
Lines 576-583 Link Here
576
    // Set up the local address if one exists
609
    // Set up the local address if one exists
577
    final String ipSource = getIpSource();
610
    final String ipSource = getIpSource();
578
    if (ipSource.length() > 0) {// Use special field ip source address (for pseudo 'ip spoofing')
611
    if (ipSource.length() > 0) {// Use special field ip source address (for pseudo 'ip spoofing')
579
        InetAddress inetAddr = InetAddress.getByName(ipSource);
612
        // Try to treat ipSource as interface
580
        requestParams.setParameter(ConnRoutePNames.LOCAL_ADDRESS, inetAddr);
613
        String interfaceAddress = getInterfaceAddress(ipSource);
614
        if (interfaceAddress.length() > 0) {
615
            InetAddress inetAddr = InetAddress.getByName(interfaceAddress);
616
            requestParams.setParameter(ConnRoutePNames.LOCAL_ADDRESS, inetAddr);
617
        }
618
        else {
619
            InetAddress inetAddr = InetAddress.getByName(ipSource);
620
            requestParams.setParameter(ConnRoutePNames.LOCAL_ADDRESS, inetAddr);
621
        }
581
    } else if (localAddress != null){
622
    } else if (localAddress != null){
582
        requestParams.setParameter(ConnRoutePNames.LOCAL_ADDRESS, localAddress);
623
        requestParams.setParameter(ConnRoutePNames.LOCAL_ADDRESS, localAddress);
583
    } else { // reset in case was set previously
624
    } else { // reset in case was set previously
(-)apache-jmeter-2.8/xdocs/usermanual/component_reference.xml (-1 / +2 lines)
Lines 316-324 Link Here
316
        </property>
316
        </property>
317
        <property name="Use concurrent pool" required="No">Use a pool of concurrent connections to get embedded resources.</property>
317
        <property name="Use concurrent pool" required="No">Use a pool of concurrent connections to get embedded resources.</property>
318
        <property name="Size" required="No">Pool size for concurrent connections used to get embedded resources.</property>
318
        <property name="Size" required="No">Pool size for concurrent connections used to get embedded resources.</property>
319
        <property name="Source IP address:" required="No">
319
        <property name="Source IP address / device:" required="No">
320
        [Only for HTTP Request HTTPClient] 
320
        [Only for HTTP Request HTTPClient] 
321
        Override the default local IP address for this sample.
321
        Override the default local IP address for this sample.
322
        To specify a device use ipvX:device, for instance 'ipv4:eth0'. If IP family not specified, ipv4 used by default.
322
        The JMeter host must have multiple IP addresses (i.e. IP aliases or network interfaces). 
323
        The JMeter host must have multiple IP addresses (i.e. IP aliases or network interfaces). 
323
        If the property <b>httpclient.localaddress</b> is defined, that is used for all HttpClient requests.
324
        If the property <b>httpclient.localaddress</b> is defined, that is used for all HttpClient requests.
324
        </property>
325
        </property>

Return to bug 54874