|
Apache JMeter | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.jmeter.testelement.AbstractTestElement org.apache.jmeter.samplers.AbstractSampler org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase
public abstract class HTTPSamplerBase
Common constants and methods for HTTP samplers
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_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) .
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)
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 |
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()
|
List<String> |
getSearchableTokens()
We search in URL and arguments }} |
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 |
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 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 |
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 |
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 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 |
---|
public static final String ARGUMENTS
public static final String AUTH_MANAGER
public static final String COOKIE_MANAGER
public static final String CACHE_MANAGER
public static final String HEADER_MANAGER
public static final String DOMAIN
public static final String PORT
public static final String PROXYHOST
public static final String PROXYPORT
public static final String PROXYUSER
public static final String PROXYPASS
public static final String CONNECT_TIMEOUT
public static final String RESPONSE_TIMEOUT
public static final String METHOD
public static final String CONTENT_ENCODING
public static final String IMPLEMENTATION
public static final String PATH
public static final String FOLLOW_REDIRECTS
public static final String AUTO_REDIRECTS
public static final String PROTOCOL
public static final String URL
public static final String IP_SOURCE
public static final String USE_KEEPALIVE
public static final String DO_MULTIPART_POST
public static final String BROWSER_COMPATIBLE_MULTIPART
public static final String CONCURRENT_DWN
public static final String CONCURRENT_POOL
public static final boolean BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT
public static final int CONCURRENT_POOL_SIZE
public static final String DEFAULT_METHOD
public static final String CONTENT_TYPE
public static final String IMAGE_PARSER
public static final String EMBEDDED_URL_RE
public static final String MONITOR
public static final int UNSPECIFIED_PORT
public static final String UNSPECIFIED_PORT_AS_STRING
public static final int URL_UNSPECIFIED_PORT
public static final String URL_UNSPECIFIED_PORT_AS_STRING
protected static final String NON_HTTP_RESPONSE_CODE
protected static final String NON_HTTP_RESPONSE_MESSAGE
public static final String POST_BODY_RAW
public static final boolean POST_BODY_RAW_DEFAULT
protected static final int MAX_REDIRECTS
protected static final int MAX_FRAME_DEPTH
Constructor Detail |
---|
public HTTPSamplerBase()
Method Detail |
---|
public boolean getSendFileAsPostBody()
public boolean getSendParameterValuesAsPostBody()
public boolean getUseMultipartForPost()
public void setProtocol(String value)
public String getProtocol()
public void setPath(String path)
path
- The new Path valuepublic void setPath(String path, String contentEncoding)
parseArguments(String, String)
to extract and store any query arguments if the request is a GET or DELETE.
path
- The new Path valuecontentEncoding
- The encoding used for the querystring parameter valuespublic String getPath()
public void setFollowRedirects(boolean value)
public boolean getFollowRedirects()
public void setAutoRedirects(boolean value)
public boolean getAutoRedirects()
public void setMethod(String value)
public String getMethod()
public void setContentEncoding(String charsetName)
charsetName
- the name of the encoding to be usedpublic String getContentEncoding()
public void setUseKeepAlive(boolean value)
public boolean getUseKeepAlive()
public void setDoMultipartPost(boolean value)
public boolean getDoMultipartPost()
public void setDoBrowserCompatibleMultipart(boolean value)
public boolean getDoBrowserCompatibleMultipart()
public void setMonitor(String value)
public void setMonitor(boolean truth)
public String getMonitor()
public boolean isMonitor()
public void setImplementation(String value)
public String getImplementation()
public boolean useMD5()
public void setMD5(boolean truth)
public void addEncodedArgument(String name, String value)
public void addEncodedArgument(String name, String value, String metaData, String contentEncoding)
getArguments()
of arguments.
name
- - the parameter namevalue
- - the parameter valuemetaData
- - normally just '='contentEncoding
- - the encoding, may be nullpublic void addEncodedArgument(String name, String value, String metaData)
public void addNonEncodedArgument(String name, String value, String metadata)
public void addArgument(String name, String value)
public void addArgument(String name, String value, String metadata)
public boolean hasArguments()
public void addTestElement(TestElement el)
AbstractTestElement
addTestElement
in interface TestElement
addTestElement
in class AbstractTestElement
public void clearTestElementChildren()
TestElement.addTestElement(TestElement)
.
Default implementation - does nothing
Clears the Header Manager property so subsequent loops don't keep merging more elements
clearTestElementChildren
in interface TestElement
clearTestElementChildren
in class AbstractTestElement
public void setPort(int value)
public static int getDefaultPort(String protocol, int port)
protocol
- from URL.getProtocol()
port
- number from URL.getPort()
public int getPortIfSpecified()
public boolean isProtocolDefaultPort()
public int getPort()
public void setDomain(String value)
public String getDomain()
public void setConnectTimeout(String value)
public int getConnectTimeout()
public void setResponseTimeout(String value)
public int getResponseTimeout()
public String getProxyHost()
public int getProxyPortInt()
public String getProxyUser()
public String getProxyPass()
public void setArguments(Arguments value)
public Arguments getArguments()
public void setPostBodyRaw(boolean value)
value
- Boolean that indicates body will be sent as ispublic boolean getPostBodyRaw()
public void setAuthManager(AuthManager value)
public AuthManager getAuthManager()
public void setHeaderManager(HeaderManager value)
public HeaderManager getHeaderManager()
public void setCookieManager(CookieManager value)
public CookieManager getCookieManager()
public void setCacheManager(CacheManager value)
public CacheManager getCacheManager()
public boolean isImageParser()
public void setImageParser(boolean parseImages)
public String getEmbeddedUrlRE()
public void setEmbeddedUrlRE(String regex)
protected HTTPSampleResult errorResult(Throwable e, HTTPSampleResult res)
e
- Exception representing the error.res
- SampleResult to be modified
public URL getUrl() throws MalformedURLException
As a special case, if the path starts with "http[s]://", then the path is assumed to be the entire URL.
MalformedURLException
public String getQueryString()
public String getQueryString(String contentEncoding)
contentEncoding
- the encoding to use for encoding parameter values
public void parseArguments(String queryString, String contentEncoding)
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 thepublic void parseArguments(String queryString)
public String toString()
toString
in class Object
public SampleResult sample(Entry e)
sample
in interface Sampler
e
- Entry
to be sampled
public SampleResult sample()
protected abstract HTTPSampleResult sample(URL u, String method, boolean areFollowingRedirect, int depth)
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.
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.
protected HTTPSampleResult downloadPageResources(HTTPSampleResult res, HTTPSampleResult container, int frameDepth)
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.
protected String encodeSpaces(String path)
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.
testEnded
in interface TestStateListener
StandardJMeterEngine.stopTest()
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.
testEnded
in interface TestStateListener
host
- name of hostStandardJMeterEngine.stopTest()
public void testIterationStart(LoopIterationEvent event)
testIterationStart
in interface TestIterationListener
protected void notifySSLContextWasReset()
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.
testStarted
in interface TestStateListener
StandardJMeterEngine.run()
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.
testStarted
in interface TestStateListener
host
- name of hostStandardJMeterEngine.run()
public Object clone()
clone
in interface TestElement
clone
in class AbstractTestElement
protected HTTPSampleResult followRedirects(HTTPSampleResult res, int frameDepth)
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.
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.
protected HTTPSampleResult resultProcessing(boolean areFollowingRedirect, int frameDepth, HTTPSampleResult res)
areFollowingRedirect
- frameDepth
- res
-
protected boolean isSuccessCode(int code)
protected static String encodeBackSlashes(String value)
public HTTPFileArg[] getHTTPFiles()
public int getHTTPFileCount()
public void setHTTPFiles(HTTPFileArg[] files)
files
- list of files to savepublic static String[] getValidMethodsAsArray()
public static boolean isSecure(String protocol)
public static boolean isSecure(URL url)
public void threadStarted()
ThreadListener
threadStarted
in interface ThreadListener
JMeterThread.threadStarted()
public void threadFinished()
ThreadListener
threadFinished
in interface ThreadListener
JMeterThread.threadFinished(LoopIterationListener)
public byte[] readResponse(SampleResult sampleResult, InputStream in, int length) throws IOException
sampleResult
- in
- input streamlength
- expected input length or zero
IOException
public void setIpSource(String value)
public String getIpSource()
public boolean isConcurrentDwn()
public void setConcurrentDwn(boolean concurrentDwn)
public String getConcurrentPool()
public void setConcurrentPool(String poolSize)
public List<String> getSearchableTokens() throws Exception
getSearchableTokens
in interface Searchable
getSearchableTokens
in class AbstractTestElement
Exception
public boolean applies(ConfigTestElement configElement)
AbstractSampler
applies
in interface ConfigMergabilityIndicator
applies
in class AbstractSampler
configElement
- ConfigTestElement
AbstractSampler.applies(org.apache.jmeter.config.ConfigTestElement)
|
Apache JMeter | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |