Apache JMeter

## org.apache.jmeter.protocol.http.sampler
Class HTTPSamplerBase

    java.lang.Object
      org.apache.jmeter.testelement.AbstractTestElement
          org.apache.jmeter.samplers.AbstractSampler
              org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase

All Implemented Interfaces:
  Serializable, Cloneable, HTTPConstantsInterface, Sampler, TestElement, TestListener, ThreadListener

Direct Known Subclasses:
  AjpSampler, HTTPSampler, HTTPSampler2, HTTPSamplerProxy, WebServiceSampler

    public abstract class HTTPSamplerBase

extends AbstractSampler
implements TestListener, ThreadListener, HTTPConstantsInterface

Common constants and methods for HTTP samplers

See Also:
  Serialized Form

Nested Class Summary
`class` `HTTPSamplerBase.ASyncSample` Callable class to sample asynchronously resources embedded

Field Summary
`static String` `ARGUMENTS`
`static String` `AUTH_MANAGER`
`static String` `AUTO_REDIRECTS`
`static String` `BROWSER_COMPATIBLE_MULTIPART`
`static boolean` `BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT`
`static String` `CACHE_MANAGER`
`static String` `CONCURRENT_DWN`
`static String` `CONCURRENT_POOL`
`static int` `CONCURRENT_POOL_SIZE`
`static String` `CONNECT_TIMEOUT`
`static String` `CONTENT_ENCODING`
`static String` `CONTENT_TYPE`
`static String` `COOKIE_MANAGER`
`static String` `DEFAULT_METHOD`
`static String` `DO_MULTIPART_POST`
`static String` `DOMAIN`
`static String` `EMBEDDED_URL_RE`
`static String` `FOLLOW_REDIRECTS`
`static String` `HEADER_MANAGER`
`static String` `IMAGE_PARSER`
`static String` `IMPLEMENTATION`
`static String` `IP_SOURCE` IP source to use - does not apply to Java HTTP implementation currently
`protected static int` `MAX_FRAME_DEPTH`
`protected static int` `MAX_REDIRECTS`
`static String` `METHOD`
`static String` `MONITOR`
`protected static String` `NON_HTTP_RESPONSE_CODE`
`protected static String` `NON_HTTP_RESPONSE_MESSAGE`
`static String` `PATH`
`static String` `PORT`
`static String` `PROTOCOL`
`static String` `PROXYHOST`
`static String` `PROXYPASS`
`static String` `PROXYPORT`
`static String` `PROXYUSER`
`static String` `RESPONSE_TIMEOUT`
`static int` `UNSPECIFIED_PORT` A number to indicate that the port has not been set.
`static String` `UNSPECIFIED_PORT_AS_STRING`
`static String` `URL`
`static int` `URL_UNSPECIFIED_PORT` If the port is not present in a URL, getPort() returns -1
`static String` `URL_UNSPECIFIED_PORT_AS_STRING`
`static String` `USE_KEEPALIVE`

Fields inherited from interface org.apache.jmeter.protocol.http.util.HTTPConstantsInterface

`APPLICATION_X_WWW_FORM_URLENCODED, CACHE_CONTROL, CONNECT, CONNECTION_CLOSE, DEFAULT_HTTP_PORT, DEFAULT_HTTP_PORT_STRING, DEFAULT_HTTPS_PORT, DEFAULT_HTTPS_PORT_STRING, DELETE, ENCODING_GZIP, ETAG, EXPIRES, GET, HEAD, HEADER_AUTHORIZATION, HEADER_CONNECTION, HEADER_CONTENT_DISPOSITION, HEADER_CONTENT_ENCODING, HEADER_CONTENT_LENGTH, HEADER_CONTENT_TYPE, HEADER_COOKIE, HEADER_HOST, HEADER_LOCATION, HEADER_SET_COOKIE, HTTP_1_1, IF_MODIFIED_SINCE, IF_NONE_MATCH, KEEP_ALIVE, LAST_MODIFIED, MULTIPART_FORM_DATA, OPTIONS, POST, PROTOCOL_HTTP, PROTOCOL_HTTPS, PUT, TRACE, TRANSFER_ENCODING`

Fields inherited from interface org.apache.jmeter.testelement.TestElement
`COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

Constructor Summary
`HTTPSamplerBase()`

Method Summary
`void` `addArgument(String name, String value)`
`void` `addArgument(String name, String value, String metadata)`
`void` `addEncodedArgument(String name, String value)` Add an argument which has already been encoded
`void` `addEncodedArgument(String name, String value, String metaData)`
`void` `addEncodedArgument(String name, String value, String metaData, String contentEncoding)` Creates an HTTPArgument and adds it to the current set `getArguments()` of arguments.
`void` `addNonEncodedArgument(String name, String value, String metadata)`
`void` `addTestElement(TestElement el)`
`void` `clearTestElementChildren()` This method should clear any test element properties that are merged by `TestElement.addTestElement(TestElement)`. Default implementation - does nothing Clears the Header Manager property so subsequent loops don't keep merging more elements
`Object` `clone()`
`protected HTTPSampleResult` `downloadPageResources(HTTPSampleResult res, HTTPSampleResult container, int frameDepth)` Download the resources of an HTML page.
`protected static String` `encodeBackSlashes(String value)`
`protected String` `encodeSpaces(String path)`
`protected HTTPSampleResult` `errorResult(Throwable e, HTTPSampleResult res)` Obtain a result that will help inform the user that an error has occured during sampling, and how long it took to detect the error.
`protected HTTPSampleResult` `followRedirects(HTTPSampleResult res, int frameDepth)` Iteratively download the redirect targets of a redirect response.
`Arguments` `getArguments()`
`AuthManager` `getAuthManager()`
`boolean` `getAutoRedirects()`
`CacheManager` `getCacheManager()`
`String` `getConcurrentPool()` Get the pool size for concurrent thread pool to get embedded resources.
`int` `getConnectTimeout()`
`String` `getContentEncoding()`
`CookieManager` `getCookieManager()`
`static int` `getDefaultPort(String protocol, int port)` Get the port number for a URL, applying defaults if necessary.
`boolean` `getDoBrowserCompatibleMultipart()`
`String` `getDomain()`
`boolean` `getDoMultipartPost()`
`String` `getEmbeddedUrlRE()` Get the regular expression URLs must match.
`boolean` `getFollowRedirects()`
`HeaderManager` `getHeaderManager()`
`int` `getHTTPFileCount()`
`HTTPFileArg[]` `getHTTPFiles()` Get the collection of files as a list.
`String` `getImplementation()`
`String` `getIpSource()` get IP source to use - does not apply to Java HTTP implementation currently
`String` `getMethod()`
`String` `getMonitor()`
`String` `getPath()`
`int` `getPort()` Get the port; apply the default for the protocol if necessary.
`int` `getPortIfSpecified()` Get the port number from the port string, allowing for trailing blanks.
`String` `getProtocol()` Gets the protocol, with default.
`String` `getProxyHost()`
`String` `getProxyPass()`
`int` `getProxyPortInt()`
`String` `getProxyUser()`
`String` `getQueryString()` Gets the QueryString attribute of the UrlConfig object, using UTF-8 to encode the URL
`String` `getQueryString(String contentEncoding)` Gets the QueryString attribute of the UrlConfig object, using the specified encoding to encode the parameter values put into the URL
`int` `getResponseTimeout()`
`boolean` `getSendFileAsPostBody()` Determine if the file should be sent as the entire Post body, i.e. without any additional wrapping
`boolean` `getSendParameterValuesAsPostBody()` Determine if none of the parameters have a name, and if that is the case, it means that the parameter values should be sent as the post body
`URL` `getUrl()` Get the URL, built from its component parts.
`boolean` `getUseKeepAlive()`
`boolean` `getUseMultipartForPost()` Determine if we should use multipart/form-data or application/x-www-form-urlencoded for the post
`static String[]` `getValidMethodsAsArray()`
`boolean` `hasArguments()`
`boolean` `isConcurrentDwn()` Return if used a concurrent thread pool to get embedded resources.
`boolean` `isImageParser()`
`boolean` `isMonitor()`
`boolean` `isProtocolDefaultPort()` Tell whether the default port for the specified protocol is used
`static boolean` `isSecure(String protocol)`
`static boolean` `isSecure(URL url)`
`protected boolean` `isSuccessCode(int code)` Determine if the HTTP status code is successful or not i.e. in range 200 to 399 inclusive
`protected void` `notifySSLContextWasReset()` Called by testIterationStart if the SSL Context was reset.
`void` `parseArguments(String queryString)`
`void` `parseArguments(String queryString, String contentEncoding)` This method allows a proxy server to send over the raw text from a browser's output stream to be parsed and stored correctly into the UrlConfig object.
`byte[]` `readResponse(SampleResult sampleResult, InputStream in, int length)` Read response from the input stream, converting to MD5 digest if the useMD5 property is set.

`protected HTTPSampleResult`

`resultProcessing(boolean areFollowingRedirect, int frameDepth, HTTPSampleResult res)`
Follow redirects and download page resources if appropriate. this works, but the container stuff here is what's doing it. followRedirects() is actually doing the work to make sure we have only one container to make this work more naturally, I think this method - sample() - needs to take an HTTPSamplerResult container parameter instead of a boolean:areFollowingRedirect.

`SampleResult` `sample()` Perform a sample, and return the results
`SampleResult` `sample(Entry e)` Do a sampling and return its results.
`protected abstract HTTPSampleResult` `sample(URL u, String method, boolean areFollowingRedirect, int depth)` Samples the URL passed in and stores the result in `HTTPSampleResult`, following redirects and downloading page resources as appropriate.
`void` `setArguments(Arguments value)`
`void` `setAuthManager(AuthManager value)`
`void` `setAutoRedirects(boolean value)`
`void` `setCacheManager(CacheManager value)`
`void` `setConcurrentDwn(boolean concurrentDwn)`
`void` `setConcurrentPool(String poolSize)`
`void` `setConnectTimeout(String value)`
`void` `setContentEncoding(String value)`
`void` `setCookieManager(CookieManager value)`
`void` `setDoBrowserCompatibleMultipart(boolean value)`
`void` `setDomain(String value)`
`void` `setDoMultipartPost(boolean value)`
`void` `setEmbeddedUrlRE(String regex)`
`void` `setFollowRedirects(boolean value)`
`void` `setHeaderManager(HeaderManager value)`
`void` `setHTTPFiles(HTTPFileArg[] files)` Saves the list of files.
`void` `setImageParser(boolean parseImages)`
`void` `setImplementation(String value)`
`void` `setIpSource(String value)` set IP source to use - does not apply to Java HTTP implementation currently
`void` `setMD5(boolean truth)`
`void` `setMethod(String value)`
`void` `setMonitor(boolean truth)`
`void` `setMonitor(String value)`
`void` `setPath(String path)` Sets the Path attribute of the UrlConfig object Also calls parseArguments to extract and store any query arguments
`void` `setPath(String path, String contentEncoding)` Sets the PATH property; also calls `parseArguments(String, String)` to extract and store any query arguments if the request is a GET or DELETE.
`void` `setPort(int value)`
`void` `setProtocol(String value)`
`void` `setResponseTimeout(String value)`
`void` `setUseKeepAlive(boolean value)`
`void` `testEnded()` Called once for all threads after the end of a test.
`void` `testEnded(String host)` Called once for all threads after the end of a test.
`void` `testIterationStart(LoopIterationEvent event)` Each time through a Thread Group's test script, an iteration event is fired for each thread.
`void` `testStarted()` Called just before the start of the test from the main engine thread.
`void` `testStarted(String host)` Called just before the start of the test from the main engine thread.
`void` `threadFinished()` Called for each thread after all samples have been processed.
`void` `threadStarted()` Called for each thread before starting sampling.
`String` `toString()`
`boolean` `useMD5()`

Methods inherited from class org.apache.jmeter.testelement.AbstractTestElement

`addProperty, canRemove, clear, clearTemporary, emptyTemporary, equals, getComment, getName, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getThreadContext, getThreadName, hashCode, isEnabled, isRunningVersion, isTemporary, logProperties, mergeIn, propertyIterator, recoverRunningVersion, removeProperty, setComment, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse, traverseCollection, traverseMap, traverseProperty`

Methods inherited from class java.lang.Object
`finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.apache.jmeter.testelement.TestElement

`canRemove, clear, getComment, getName, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getThreadContext, getThreadName, isEnabled, isRunningVersion, isTemporary, propertyIterator, recoverRunningVersion, removeProperty, setComment, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse`

Field Detail

### ARGUMENTS

    public static final String ARGUMENTS

See Also:
  Constant Field Values

### AUTH_MANAGER

    public static final String AUTH_MANAGER

See Also:
  Constant Field Values

### COOKIE_MANAGER

    public static final String COOKIE_MANAGER

See Also:
  Constant Field Values

### CACHE_MANAGER

    public static final String CACHE_MANAGER

See Also:
  Constant Field Values

### HEADER_MANAGER

    public static final String HEADER_MANAGER

See Also:
  Constant Field Values

### DOMAIN

    public static final String DOMAIN

See Also:
  Constant Field Values

### PORT

    public static final String PORT

See Also:
  Constant Field Values

### PROXYHOST

    public static final String PROXYHOST

See Also:
  Constant Field Values

### PROXYPORT

    public static final String PROXYPORT

See Also:
  Constant Field Values

### PROXYUSER

    public static final String PROXYUSER

See Also:
  Constant Field Values

### PROXYPASS

    public static final String PROXYPASS

See Also:
  Constant Field Values

### CONNECT_TIMEOUT

    public static final String CONNECT_TIMEOUT

See Also:
  Constant Field Values

### RESPONSE_TIMEOUT

    public static final String RESPONSE_TIMEOUT

See Also:
  Constant Field Values

### METHOD

    public static final String METHOD

See Also:
  Constant Field Values

### CONTENT_ENCODING

    public static final String CONTENT_ENCODING

See Also:
  Constant Field Values

### IMPLEMENTATION

    public static final String IMPLEMENTATION

See Also:
  Constant Field Values

### PATH

    public static final String PATH

See Also:
  Constant Field Values

### FOLLOW_REDIRECTS

    public static final String FOLLOW_REDIRECTS

See Also:
  Constant Field Values

### AUTO_REDIRECTS

    public static final String AUTO_REDIRECTS

See Also:
  Constant Field Values

### PROTOCOL

    public static final String PROTOCOL

See Also:
  Constant Field Values

### URL

    public static final String URL

See Also:
  Constant Field Values

### IP_SOURCE

    public static final String IP_SOURCE

  IP source to use - does not apply to Java HTTP implementation currently

  See Also:
    Constant Field Values

### USE_KEEPALIVE

    public static final String USE_KEEPALIVE

See Also:
  Constant Field Values

### DO_MULTIPART_POST

    public static final String DO_MULTIPART_POST

See Also:
  Constant Field Values

### BROWSER_COMPATIBLE_MULTIPART

    public static final String BROWSER_COMPATIBLE_MULTIPART

See Also:
  Constant Field Values

### CONCURRENT_DWN

    public static final String CONCURRENT_DWN

See Also:
  Constant Field Values

### CONCURRENT_POOL

    public static final String CONCURRENT_POOL

See Also:
  Constant Field Values

### BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT

    public static final boolean BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT

See Also:
  Constant Field Values

### CONCURRENT_POOL_SIZE

    public static final int CONCURRENT_POOL_SIZE

See Also:
  Constant Field Values

### DEFAULT_METHOD

    public static final String DEFAULT_METHOD

See Also:
  Constant Field Values

### CONTENT_TYPE

    public static final String CONTENT_TYPE

See Also:
  Constant Field Values

### IMAGE_PARSER

    public static final String IMAGE_PARSER

See Also:
  Constant Field Values

### EMBEDDED_URL_RE

    public static final String EMBEDDED_URL_RE

See Also:
  Constant Field Values

### MONITOR

    public static final String MONITOR

See Also:
  Constant Field Values

### UNSPECIFIED_PORT

    public static final int UNSPECIFIED_PORT

  A number to indicate that the port has not been set.

  See Also:
    Constant Field Values

### UNSPECIFIED_PORT_AS_STRING

    public static final String UNSPECIFIED_PORT_AS_STRING

See Also:
  Constant Field Values

### URL_UNSPECIFIED_PORT

    public static final int URL_UNSPECIFIED_PORT

  If the port is not present in a URL, getPort() returns -1

  See Also:
    Constant Field Values

### URL_UNSPECIFIED_PORT_AS_STRING

    public static final String URL_UNSPECIFIED_PORT_AS_STRING

See Also:
  Constant Field Values

### NON_HTTP_RESPONSE_CODE

    protected static final String NON_HTTP_RESPONSE_CODE

See Also:
  Constant Field Values

### NON_HTTP_RESPONSE_MESSAGE

    protected static final String NON_HTTP_RESPONSE_MESSAGE

See Also:
  Constant Field Values

### MAX_REDIRECTS

    protected static final int MAX_REDIRECTS

### MAX_FRAME_DEPTH

    protected static final int MAX_FRAME_DEPTH

Constructor Detail

### HTTPSamplerBase

    public HTTPSamplerBase()

Method Detail

### getSendFileAsPostBody

    public boolean getSendFileAsPostBody()

  Determine if the file should be sent as the entire Post body, i.e. without any additional wrapping

  Returns:
    true if specified file is to be sent as the body, i.e. FileField is blank

### getSendParameterValuesAsPostBody

    public boolean getSendParameterValuesAsPostBody()

  Determine if none of the parameters have a name, and if that is the case, it means that the parameter values should be sent as the post body

  Returns:
    true if none of the parameters have a name specified

### getUseMultipartForPost

    public boolean getUseMultipartForPost()

  Determine if we should use multipart/form-data or application/x-www-form-urlencoded for the post

  Returns:
    true if multipart/form-data should be used and method is POST

### setProtocol

    public void setProtocol(String value)

### getProtocol

    public String getProtocol()

  Gets the protocol, with default.

  Returns:
    the protocol

### setPath

    public void setPath(String path)

  Sets the Path attribute of the UrlConfig object Also calls parseArguments to extract and store any query arguments

  Parameters:
    `path` - The new Path value

### setPath

    public void setPath(String path,
                        String contentEncoding)

  Sets the PATH property; also calls `parseArguments(String, String)` to extract and store any query arguments if the request is a GET or DELETE.

  Parameters:
    `path` - The new Path value
    `contentEncoding` - The encoding used for the querystring parameter values

### getPath

    public String getPath()

### setFollowRedirects

    public void setFollowRedirects(boolean value)

### getFollowRedirects

    public boolean getFollowRedirects()

### setAutoRedirects

    public void setAutoRedirects(boolean value)

### getAutoRedirects

    public boolean getAutoRedirects()

### setMethod

    public void setMethod(String value)

### getMethod

    public String getMethod()

### setContentEncoding

    public void setContentEncoding(String value)

### getContentEncoding

    public String getContentEncoding()

### setUseKeepAlive

    public void setUseKeepAlive(boolean value)

### getUseKeepAlive

    public boolean getUseKeepAlive()

### setDoMultipartPost

    public void setDoMultipartPost(boolean value)

### getDoMultipartPost

    public boolean getDoMultipartPost()

### setDoBrowserCompatibleMultipart

    public void setDoBrowserCompatibleMultipart(boolean value)

### getDoBrowserCompatibleMultipart

    public boolean getDoBrowserCompatibleMultipart()

### setMonitor

    public void setMonitor(String value)

### setMonitor

    public void setMonitor(boolean truth)

### getMonitor

    public String getMonitor()

### isMonitor

    public boolean isMonitor()

### setImplementation

    public void setImplementation(String value)

### getImplementation

    public String getImplementation()

### useMD5

    public boolean useMD5()

### setMD5

    public void setMD5(boolean truth)

### addEncodedArgument

    public void addEncodedArgument(String name,
                                   String value)

  Add an argument which has already been encoded

### addEncodedArgument

    public void addEncodedArgument(String name,
                                   String value,
                                   String metaData,
                                   String contentEncoding)

  Creates an HTTPArgument and adds it to the current set `getArguments()` of arguments.

  Parameters:
    `name` - - the parameter name
    `value` - - the parameter value
    `metaData` - - normally just '='
    `contentEncoding` - - the encoding, may be null

### addEncodedArgument

    public void addEncodedArgument(String name,
                                   String value,
                                   String metaData)

### addNonEncodedArgument

    public void addNonEncodedArgument(String name,
                                      String value,
                                      String metadata)

### addArgument

    public void addArgument(String name,
                            String value)

### addArgument

    public void addArgument(String name,
                            String value,
                            String metadata)

### hasArguments

    public boolean hasArguments()

### addTestElement

    public void addTestElement(TestElement el)

  Description copied from class: `AbstractTestElement`

  Specified by:
    `addTestElement` in interface `TestElement`
  Overrides:
    `addTestElement` in class `AbstractTestElement`

### clearTestElementChildren

    public void clearTestElementChildren()

  This method should clear any test element properties that are merged by `TestElement.addTestElement(TestElement)`.

  Default implementation - does nothing

  Clears the Header Manager property so subsequent loops don't keep merging more elements

  Specified by:
    `clearTestElementChildren` in interface `TestElement`
  Overrides:
    `clearTestElementChildren` in class `AbstractTestElement`

### setPort

    public void setPort(int value)

### getDefaultPort

    public static int getDefaultPort(String protocol,
                                     int port)

  Get the port number for a URL, applying defaults if necessary. (Called by CookieManager.)

  Parameters:
    `protocol` - from `URL.getProtocol()`
    `port` - number from `URL.getPort()`
  Returns:
    the default port for the protocol

### getPortIfSpecified

    public int getPortIfSpecified()

  Get the port number from the port string, allowing for trailing blanks.

  Returns:
    port number or UNSPECIFIED_PORT (== 0)

### isProtocolDefaultPort

    public boolean isProtocolDefaultPort()

  Tell whether the default port for the specified protocol is used

  Returns:
    true if the default port number for the protocol is used, false otherwise

### getPort

    public int getPort()

  Get the port; apply the default for the protocol if necessary.

  Returns:
    the port number, with default applied if required.

### setDomain

    public void setDomain(String value)

### getDomain

    public String getDomain()

### setConnectTimeout

    public void setConnectTimeout(String value)

### getConnectTimeout

    public int getConnectTimeout()

### setResponseTimeout

    public void setResponseTimeout(String value)

### getResponseTimeout

    public int getResponseTimeout()

### getProxyHost

    public String getProxyHost()

### getProxyPortInt

    public int getProxyPortInt()

### getProxyUser

    public String getProxyUser()

### getProxyPass

    public String getProxyPass()

### setArguments

    public void setArguments(Arguments value)

### getArguments

    public Arguments getArguments()

### setAuthManager

    public void setAuthManager(AuthManager value)

### getAuthManager

    public AuthManager getAuthManager()

### setHeaderManager

    public void setHeaderManager(HeaderManager value)

### getHeaderManager

    public HeaderManager getHeaderManager()

### setCookieManager

    public void setCookieManager(CookieManager value)

### getCookieManager

    public CookieManager getCookieManager()

### setCacheManager

    public void setCacheManager(CacheManager value)

### getCacheManager

    public CacheManager getCacheManager()

### isImageParser

    public boolean isImageParser()

### setImageParser

    public void setImageParser(boolean parseImages)

### getEmbeddedUrlRE

    public String getEmbeddedUrlRE()

  Get the regular expression URLs must match.

  Returns:
    regular expression (or empty) string

### setEmbeddedUrlRE

    public void setEmbeddedUrlRE(String regex)

### errorResult

    protected HTTPSampleResult errorResult(Throwable e,
                                           HTTPSampleResult res)

  Obtain a result that will help inform the user that an error has occured during sampling, and how long it took to detect the error.

  Parameters:
    `e` - Exception representing the error.
    `res` - SampleResult
  Returns:
    a sampling result useful to inform the user about the exception.

### getUrl

    public URL getUrl()
               throws MalformedURLException

  Get the URL, built from its component parts.

  As a special case, if the path starts with "http[s]://", then the path is assumed to be the entire URL.

  Returns:
    The URL to be requested by this sampler.
  Throws:
    `MalformedURLException`

### getQueryString

    public String getQueryString()

  Gets the QueryString attribute of the UrlConfig object, using UTF-8 to encode the URL

  Returns:
    the QueryString value

### getQueryString

    public String getQueryString(String contentEncoding)

  Gets the QueryString attribute of the UrlConfig object, using the specified encoding to encode the parameter values put into the URL

  Parameters:
    `contentEncoding` - the encoding to use for encoding parameter values
  Returns:
    the QueryString value

### parseArguments

    public void parseArguments(String queryString,
                               String contentEncoding)

  This method allows a proxy server to send over the raw text from a browser's output stream to be parsed and stored correctly into the UrlConfig object. For each name found, addArgument() is called

  Parameters:
    `queryString` - - the query string, might be the post body of a http post request.
    `contentEncoding` - - the content encoding of the query string; if non-null then it is used to decode the

### parseArguments

    public void parseArguments(String queryString)

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

### sample

    public SampleResult sample(Entry e)

  Do a sampling and return its results.

  Specified by:
    `sample` in interface `Sampler`
  Parameters:
    `e` - `Entry` to be sampled
  Returns:
    results of the sampling

### sample

    public SampleResult sample()

  Perform a sample, and return the results

  Returns:
    results of the sampling

### sample

    protected abstract HTTPSampleResult sample(URL u,
                                               String method,
                                               boolean areFollowingRedirect,
                                               int depth)

  Samples the URL passed in and stores the result in `HTTPSampleResult`, following redirects and downloading page resources as appropriate.

  When getting a redirect target, redirects are not followed and resources are not downloaded. The caller will take care of this.

  Parameters:
    `u` - URL to sample
    `method` - HTTP method: GET, POST,...
    `areFollowingRedirect` - whether we're getting a redirect target
    `depth` - Depth of this target in the frame structure. Used only to prevent infinite recursion.
  Returns:
    results of the sampling

### downloadPageResources

    protected HTTPSampleResult downloadPageResources(HTTPSampleResult res,
                                                     HTTPSampleResult container,
                                                     int frameDepth)

  Download the resources of an HTML page.

  Parameters:
    `res` - result of the initial request - must contain an HTML response
    `container` - for storing the results, if any
    `frameDepth` - Depth of this target in the frame structure. Used only to prevent infinite recursion.
  Returns:
    res if no resources exist, otherwise the "Container" result with one subsample per request issued

### encodeSpaces

    protected String encodeSpaces(String path)

### testEnded

    public void testEnded()

  Called once for all threads after the end of a test. This will use the same element instances as at the start of the test.

  N.B. testStarted() and testEnded() are called from different threads.

  Specified by:
    `testEnded` in interface `TestListener`
  See Also:
    `StandardJMeterEngine.stopTest()`

### testEnded

    public void testEnded(String host)

  Called once for all threads after the end of a test. This will use the same element instances as at the start of the test.

  N.B. testStarted() and testEnded() are called from different threads.

  Specified by:
    `testEnded` in interface `TestListener`
  Parameters:
    `host` - name of host
  See Also:
    `StandardJMeterEngine.stopTest()`

### testIterationStart

    public void testIterationStart(LoopIterationEvent event)

  Each time through a Thread Group's test script, an iteration event is fired for each thread. This will be after the test elements have been cloned, so in general the instance will not be the same as the ones the start/end methods call.

  Specified by:
    `testIterationStart` in interface `TestListener`

### notifySSLContextWasReset

    protected void notifySSLContextWasReset()

  Called by testIterationStart if the SSL Context was reset. This implementation does nothing.

### testStarted

    public void testStarted()

  Called just before the start of the test from the main engine thread. This is before the test elements are cloned. Note that not all the test variables will have been set up at this point.

  N.B. testStarted() and testEnded() are called from different threads.

  Specified by:
    `testStarted` in interface `TestListener`
  See Also:
    `StandardJMeterEngine.run()`

### testStarted

    public void testStarted(String host)

  Called just before the start of the test from the main engine thread. This is before the test elements are cloned. Note that not all the test variables will have been set up at this point.

  N.B. testStarted() and testEnded() are called from different threads.

  Specified by:
    `testStarted` in interface `TestListener`
  Parameters:
    `host` - name of host
  See Also:
    `StandardJMeterEngine.run()`

### clone

    public Object clone()

  Specified by:
    `clone` in interface `TestElement`
  Overrides:
    `clone` in class `AbstractTestElement`

### followRedirects

    protected HTTPSampleResult followRedirects(HTTPSampleResult res,
                                               int frameDepth)

  Iteratively download the redirect targets of a redirect response.

  The returned result will contain one subsample for each request issued, including the original one that was passed in. It will be an HTTPSampleResult that should mostly look as if the final destination of the redirect chain had been obtained in a single shot.

  Parameters:
    `res` - result of the initial request - must be a redirect response
    `frameDepth` - Depth of this target in the frame structure. Used only to prevent infinite recursion.
  Returns:
    "Container" result with one subsample per request issued

### resultProcessing

    protected HTTPSampleResult resultProcessing(boolean areFollowingRedirect,
                                                int frameDepth,
                                                HTTPSampleResult res)

  Follow redirects and download page resources if appropriate. this works, but the container stuff here is what's doing it. followRedirects() is actually doing the work to make sure we have only one container to make this work more naturally, I think this method - sample() - needs to take an HTTPSamplerResult container parameter instead of a boolean:areFollowingRedirect.

  Parameters:
    `areFollowingRedirect` -
    `frameDepth` -
    `res` -
  Returns:
    the sample result

### isSuccessCode

    protected boolean isSuccessCode(int code)

  Determine if the HTTP status code is successful or not i.e. in range 200 to 399 inclusive

  Returns:
    whether in range 200-399 or not

### encodeBackSlashes

    protected static String encodeBackSlashes(String value)

### getHTTPFiles

    public HTTPFileArg[] getHTTPFiles()

  Get the collection of files as a list. The list is built up from the filename/filefield/mimetype properties, plus any additional entries saved in the FILE_ARGS property. If there are no valid file entries, then an empty list is returned.

  Returns:
    an array of file arguments (never null)

### getHTTPFileCount

    public int getHTTPFileCount()

### setHTTPFiles

    public void setHTTPFiles(HTTPFileArg[] files)

  Saves the list of files. The first file is saved in the Filename/field/mimetype properties. Any additional files are saved in the FILE_ARGS array.

  Parameters:
    `files` - list of files to save

### getValidMethodsAsArray

    public static String[] getValidMethodsAsArray()

### isSecure

    public static boolean isSecure(String protocol)

### isSecure

    public static boolean isSecure(URL url)

### threadStarted

    public void threadStarted()

  Description copied from interface: `ThreadListener`
  Called for each thread before starting sampling. WARNING: this is called before any Config test elements are processed, so any properties they define will not have been merged in yet.

  Specified by:
    `threadStarted` in interface `ThreadListener`
  See Also:
    `JMeterThread.threadStarted()`

### threadFinished

    public void threadFinished()

  Description copied from interface: `ThreadListener`
  Called for each thread after all samples have been processed.

  Specified by:
    `threadFinished` in interface `ThreadListener`
  See Also:
    `JMeterThread.threadFinished(LoopIterationListener)`

### readResponse

    public byte[] readResponse(SampleResult sampleResult,
                               InputStream in,
                               int length)
                        throws IOException

  Read response from the input stream, converting to MD5 digest if the useMD5 property is set. For the MD5 case, the result byte count is set to the size of the original response. Closes the inputStream (unless there was an error)

  Parameters:
    `sampleResult` -
    `in` - input stream
    `length` - expected input length or zero
  Returns:
    the response or the MD5 of the response
  Throws:
    `IOException`

### setIpSource

    public void setIpSource(String value)

  set IP source to use - does not apply to Java HTTP implementation currently

### getIpSource

    public String getIpSource()

  get IP source to use - does not apply to Java HTTP implementation currently

### isConcurrentDwn

    public boolean isConcurrentDwn()

  Return if used a concurrent thread pool to get embedded resources.

  Returns:
    true if used

### setConcurrentDwn

    public void setConcurrentDwn(boolean concurrentDwn)

### getConcurrentPool

    public String getConcurrentPool()

  Get the pool size for concurrent thread pool to get embedded resources.

  Returns:
    the pool size

### setConcurrentPool

    public void setConcurrentPool(String poolSize)

Apache JMeter

Copyright © 1998-2011 Apache Software Foundation. All Rights Reserved.