Apache JMeter

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

java.lang.Object
  extended by org.apache.jmeter.testelement.AbstractTestElement
      extended by org.apache.jmeter.samplers.AbstractSampler
          extended by org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase
All Implemented Interfaces:
Serializable, Cloneable, ConfigMergabilityIndicator, Searchable, HTTPConstantsInterface, Sampler, TestElement, TestIterationListener, TestStateListener, ThreadListener
Direct Known Subclasses:
AjpSampler, HTTPSampler, HTTPSampler2, HTTPSamplerProxy, WebServiceSampler

public abstract class HTTPSamplerBase
extends AbstractSampler
implements TestStateListener, TestIterationListener, ThreadListener, HTTPConstantsInterface

Common constants and methods for HTTP samplers

See Also:
Serialized Form

Nested Class Summary
static class HTTPSamplerBase.SourceType
           
 
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
          This is the encoding used for the content, i.e. the charset name, not the header "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
static String IP_SOURCE_TYPE
           
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 POST_BODY_RAW
           
static boolean POST_BODY_RAW_DEFAULT
           
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, DATE, 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_LOCAL_ADDRESS, HEADER_LOCATION, HEADER_SET_COOKIE, HTTP_1_1, IF_MODIFIED_SINCE, IF_NONE_MATCH, KEEP_ALIVE, LAST_MODIFIED, MULTIPART_FORM_DATA, OPTIONS, PATCH, 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)
          
 boolean applies(ConfigTestElement configElement)
          Does configElement apply to Sampler
 void clearTestElementChildren()
          This method should clear any test element properties that are merged by TestElement.addTestElement(TestElement).
 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)
          Populates the provided HTTPSampleResult with details from the Exception.
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
 int getIpSourceType()
          get IP/address source type to use
 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.
 boolean getPostBodyRaw()
           
 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 Content 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 entity body
static String[] getSourceTypeList()
           
 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
 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 charsetName)
          Sets the value of the encoding to be used for the content.
 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 setIpSourceType(int value)
          set IP/address source type to use
 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; if the request is a GET or DELETE (and the path does not start with http[s]://) it also calls parseArguments(String, String) to extract and store any query arguments.
 void setPort(int value)
           
 void setPostBodyRaw(boolean 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
addPropertiesValues, addProperty, addProperty, canRemove, clear, clearTemporary, emptyTemporary, equals, getComment, getName, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getSearchableTokens, getThreadContext, getThreadName, hashCode, isEnabled, isRunningVersion, isTemporary, logProperties, mergeIn, propertyIterator, recoverRunningVersion, removeProperty, setComment, setEnabled, setName, setProperty, setProperty, 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, setEnabled, setName, setProperty, setProperty, 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
This is the encoding used for the content, i.e. the charset name, not the header "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

IP_SOURCE_TYPE

public static final String IP_SOURCE_TYPE
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

POST_BODY_RAW

public static final String POST_BODY_RAW
See Also:
Constant Field Values

POST_BODY_RAW_DEFAULT

public static final boolean POST_BODY_RAW_DEFAULT
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

getSourceTypeList

public static final String[] getSourceTypeList()

getSendFileAsPostBody

public boolean getSendFileAsPostBody()
Determine if the file should be sent as the entire Content body, i.e. without any additional wrapping.

Returns:
true if specified file is to be sent as the body, i.e. there is a single file entry which has a non-empty path and an empty Parameter name.

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 entity 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; if the request is a GET or DELETE (and the path does not start with http[s]://) it also calls parseArguments(String, String) to extract and store any query arguments.

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 charsetName)
Sets the value of the encoding to be used for the content.

Parameters:
charsetName - the name of the encoding to be used

getContentEncoding

public String getContentEncoding()
Returns:
the encoding of the content, i.e. its charset name

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()

setPostBodyRaw

public void setPostBodyRaw(boolean value)
Parameters:
value - Boolean that indicates body will be sent as is

getPostBodyRaw

public boolean getPostBodyRaw()
Returns:
boolean that indicates body will be sent as is

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)
Populates the provided HTTPSampleResult with details from the Exception. Does not create a new instance, so should not be used directly to add a subsample.

Parameters:
e - Exception representing the error.
res - SampleResult to be modified
Returns:
the modified sampling result containing details of 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 TestStateListener
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 TestStateListener
Parameters:
host - name of host
See Also:
StandardJMeterEngine.stopTest()

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 TestStateListener
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 TestStateListener
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(org.apache.jmeter.engine.event.LoopIterationListener)

testIterationStart

public void testIterationStart(LoopIterationEvent event)
Description copied from interface: TestIterationListener
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 TestIterationListener

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

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


setIpSourceType

public void setIpSourceType(int value)
set IP/address source type to use


getIpSourceType

public int getIpSourceType()
get IP/address source type to use

Returns:
address source type

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)

applies

public boolean applies(ConfigTestElement configElement)
Description copied from class: AbstractSampler
Does configElement apply to Sampler

Specified by:
applies in interface ConfigMergabilityIndicator
Overrides:
applies in class AbstractSampler
Parameters:
configElement - ConfigTestElement
Returns:
boolean
See Also:
AbstractSampler.applies(org.apache.jmeter.config.ConfigTestElement)

Apache JMeter

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