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
,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
Nested Classes Modifier and Type Class Description static class
HTTPSamplerBase.SourceType
-
Field Summary
-
Fields inherited from interface org.apache.jmeter.protocol.http.util.HTTPConstantsInterface
APPLICATION_X_WWW_FORM_URLENCODED, CACHE_CONTROL, CONNECT, CONNECTION_CLOSE, COPY, 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, LOCK, MKCALENDAR, MKCOL, MOVE, MULTIPART_FORM_DATA, OPTIONS, PATCH, POST, PROPFIND, PROPPATCH, PROTOCOL_HTTP, PROTOCOL_HTTPS, PUT, REPORT, TRACE, TRANSFER_ENCODING, UNLOCK
-
Fields inherited from interface org.apache.jmeter.testelement.TestElement
COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS
-
-
Constructor Summary
Constructors Constructor Description HTTPSamplerBase()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description 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 encodedvoid
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 setgetArguments()
of arguments.void
addNonEncodedArgument(String name, String value, String metadata)
void
addTestElement(TestElement el)
boolean
applies(ConfigTestElement configElement)
Does configElement apply to Samplervoid
clearTestElementChildren()
This method should clear any test element properties that are merged byTestElement.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.DNSCacheManager
getDNSResolver()
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 currentlyint
getIpSourceType()
get IP/address source type to useString
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 URLString
getQueryString(String contentEncoding)
Gets the QueryString attribute of the UrlConfig object, using the specified encoding to encode the parameter values put into the URLint
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 bodystatic 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 poststatic 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 usedstatic 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 inclusivevoid
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 resultsprotected abstract HTTPSampleResult
sample(URL u, String method, boolean areFollowingRedirect, int depth)
Samples the URL passed in and stores the result inHTTPSampleResult
, following redirects and downloading page resources as appropriate.SampleResult
sample(Entry e)
Do a sampling and return its results.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
setDNSResolver(DNSCacheManager cacheManager)
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 currentlyvoid
setIpSourceType(int value)
set IP/address source type to usevoid
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 argumentsvoid
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 callsparseArguments(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
-
DNS_CACHE_MANAGER
public static final String DNS_CACHE_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
-
-
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 callsparseArguments(String, String)
to extract and store any query arguments.- Parameters:
path
- The new Path valuecontentEncoding
- 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- Parameters:
name
- name of the argumentvalue
- value of the argument
-
addEncodedArgument
public void addEncodedArgument(String name, String value, String metaData, String contentEncoding)
Creates an HTTPArgument and adds it to the current setgetArguments()
of arguments.- Parameters:
name
- - the parameter namevalue
- - the parameter valuemetaData
- - normally just '='contentEncoding
- - the encoding, may be null
-
addNonEncodedArgument
public void addNonEncodedArgument(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 interfaceTestElement
- Overrides:
addTestElement
in classAbstractTestElement
-
clearTestElementChildren
public void clearTestElementChildren()
This method should clear any test element properties that are merged byTestElement.addTestElement(TestElement)
.Default implementation - does nothing
Clears the Header Manager property so subsequent loops don't keep merging more elements
- Specified by:
clearTestElementChildren
in interfaceTestElement
- Overrides:
clearTestElementChildren
in classAbstractTestElement
-
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
- fromURL.getProtocol()
port
- number fromURL.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()
-
getDNSResolver
public DNSCacheManager getDNSResolver()
-
setDNSResolver
public void setDNSResolver(DNSCacheManager cacheManager)
-
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
- if url is malformed
-
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)
-
sample
public SampleResult sample(Entry e)
Do a sampling and return its results.
-
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 inHTTPSampleResult
, 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 samplemethod
- HTTP method: GET, POST,...areFollowingRedirect
- whether we're getting a redirect targetdepth
- Depth of this target in the frame structure. Used only to prevent infinite recursion.- Returns:
- results of the sampling, can be null if u is in CacheManager
-
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 responsecontainer
- for storing the results, if anyframeDepth
- 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
-
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 interfaceTestStateListener
- 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 interfaceTestStateListener
- 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 interfaceTestStateListener
- 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 interfaceTestStateListener
- Parameters:
host
- name of host- See Also:
StandardJMeterEngine.run()
-
clone
public Object clone()
- Specified by:
clone
in interfaceTestElement
- Overrides:
clone
in classAbstractTestElement
-
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 responseframeDepth
- 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
- flag whether we are getting a redirect targetframeDepth
- Depth of this target in the frame structure. Used only to prevent infinite recursion.res
- sample result to process- 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- Parameters:
code
- status code to check- Returns:
- whether in range 200-399 or not
-
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 interfaceThreadListener
- 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 interfaceThreadListener
- 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 interfaceTestIterationListener
- Parameters:
event
- the iteration event
-
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
- sample to store information about the response intoin
- input stream from which to read the responselength
- expected input length or zero- Returns:
- the response or the MD5 of the response
- Throws:
IOException
- if reading the result fails
-
setIpSource
public void setIpSource(String value)
set IP source to use - does not apply to Java HTTP implementation currently- Parameters:
value
- IP source to use
-
getIpSource
public String getIpSource()
get IP source to use - does not apply to Java HTTP implementation currently- Returns:
- IP source to use
-
setIpSourceType
public void setIpSourceType(int value)
set IP/address source type to use- Parameters:
value
- type of the IP/address source
-
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 interfaceConfigMergabilityIndicator
- Overrides:
applies
in classAbstractSampler
- Parameters:
configElement
-ConfigTestElement
- Returns:
- boolean
- See Also:
AbstractSampler.applies(org.apache.jmeter.config.ConfigTestElement)
-
-