Apache JMeter | |
Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
org.apache.jmeter.testelement.AbstractTestElement
org.apache.jmeter.samplers.AbstractSampler
org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase
public abstract class HTTPSamplerBase
extends AbstractSampler
implements TestListener, ThreadListener, HTTPConstantsInterface
Field Summary | |
static String | |
static String | |
static String | |
static String | |
static String | |
static String | |
static String | |
static String | |
static String | |
static String | |
static String | |
static String | |
static String | |
static String | |
static String | |
static String | |
static String | |
protected static int | |
protected static int | |
static String | |
static String | |
protected static String | |
protected static String | |
static String | |
static String | |
static String | |
static String | |
static int |
|
static String | |
static String | |
static int |
|
static String | |
static String |
Fields inherited from interface org.apache.jmeter.protocol.http.util.HTTPConstantsInterface | |
APPLICATION_X_WWW_FORM_URLENCODED , CONNECTION_CLOSE , DEFAULT_HTTPS_PORT , DEFAULT_HTTPS_PORT_STRING , DEFAULT_HTTP_PORT , DEFAULT_HTTP_PORT_STRING , DELETE , ENCODING_GZIP , ETAG , GET , HEAD , HEADER_AUTHORIZATION , HEADER_CONNECTION , HEADER_CONTENT_DISPOSITION , HEADER_CONTENT_ENCODING , HEADER_CONTENT_LENGTH , HEADER_CONTENT_TYPE , HEADER_COOKIE , HEADER_LOCATION , HEADER_SET_COOKIE , HTTP_1_1 , IF_MODIFIED_SINCE , IF_NONE_MATCH , KEEP_ALIVE , LAST_MODIFIED , MULTIPART_FORM_DATA , OPTIONS , POST , PROTOCOL_HTTP , PROTOCOL_HTTPS , PUT , TRACE , TRANSFER_ENCODING |
Fields inherited from interface org.apache.jmeter.testelement.TestElement | |
COMMENTS , ENABLED , GUI_CLASS , NAME , TEST_CLASS |
Constructor Summary | |
Method Summary | |
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void | |
Object |
|
protected HTTPSampleResult |
|
protected static String |
|
protected String |
|
protected HTTPSampleResult |
|
protected HTTPSampleResult |
|
Arguments | |
AuthManager | |
boolean | |
CacheManager | |
String | |
int | |
String | |
CookieManager | |
static int |
|
boolean | |
String | |
String |
|
String |
|
String |
|
boolean | |
int | |
HTTPFileArg[] |
|
HeaderManager | |
String | |
String | |
String |
|
String | |
String |
|
int |
|
int |
|
String |
|
String |
|
String |
|
int | |
boolean |
|
boolean |
|
URL |
|
boolean | |
boolean |
|
static String[] | |
boolean | |
boolean | |
boolean | |
boolean |
|
static boolean |
|
static boolean |
|
protected boolean |
|
void |
|
void |
|
byte[] |
|
protected HTTPSampleResult |
|
SampleResult |
|
protected abstract HTTPSampleResult |
|
SampleResult | |
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void | |
void |
|
void | |
void | |
void |
|
void | |
void | |
String |
|
boolean |
|
public static final String ARGUMENTS
public static final String AUTH_MANAGER
public static final String AUTO_REDIRECTS
public static final String CACHE_MANAGER
public static final String CLIENT
public static final String CONNECT_TIMEOUT
public static final String CONTENT_ENCODING
public static final String CONTENT_TYPE
public static final String COOKIE_MANAGER
public static final String DEFAULT_METHOD
public static final String DOMAIN
public static final String DO_MULTIPART_POST
public static final String EMBEDDED_URL_RE
public static final String FOLLOW_REDIRECTS
public static final String HEADER_MANAGER
public static final String IMAGE_PARSER
public static final String IMPLEMENTATION
protected static final int MAX_FRAME_DEPTH
protected static final int MAX_REDIRECTS
public static final String METHOD
public static final String MONITOR
protected static final String NON_HTTP_RESPONSE_CODE
protected static final String NON_HTTP_RESPONSE_MESSAGE
public static final String PATH
public static final String PORT
public static final String PROTOCOL
public static final String RESPONSE_TIMEOUT
public static final int UNSPECIFIED_PORT
A number to indicate that the port has not been set.
- Field Value:
- 0
public static final String UNSPECIFIED_PORT_AS_STRING
public static final String URL
public static final int URL_UNSPECIFIED_PORT
If the port is not present in a URL, getPort() returns -1
- Field Value:
- -1
public static final String URL_UNSPECIFIED_PORT_AS_STRING
public static final String USE_KEEPALIVE
public void addArgument(String name, String value)
public void addArgument(String name, String value, String metadata)
public void addEncodedArgument(String name, String value)
Add an argument which has already been encoded
public void addEncodedArgument(String name, String value, String metaData)
public void addEncodedArgument(String name, String value, String metaData, String contentEncoding)
public void addNonEncodedArgument(String name, String value, String metadata)
public void addTestElement(TestElement el)
- Specified by:
- addTestElement in interface TestElement
- Overrides:
- addTestElement in interface AbstractTestElement
public Object clone()
- Specified by:
- clone in interface TestElement
- Overrides:
- clone in interface AbstractTestElement
protected HTTPSampleResult downloadPageResources(HTTPSampleResult res, HTTPSampleResult container, int frameDepth)
Download the resources of an HTML page. If createContainerResult is true, the returned result will contain one subsample for each request issued, including the original one that was passed in. It will otherwise look exactly like that original one. If createContainerResult is false, one subsample will be added to the provided result for each requests issued.
- Parameters:
res
- result of the initial request - must contain an HTML responsecontainer
- for storing the resultsframeDepth
- Depth of this target in the frame structure. Used only to prevent infinite recursion.
- Returns:
- "Container" result with one subsample per request issued
protected static String encodeBackSlashes(String value)
protected String encodeSpaces(String path)
protected HTTPSampleResult errorResult(Throwable e, HTTPSampleResult res)
Obtain a result that will help inform the user that an error has occured during sampling, and how long it took to detect the error.
- Parameters:
e
- Exception representing the error.res
- SampleResult
- Returns:
- a sampling result useful to inform the user about the exception.
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
public boolean getAutoRedirects()
public String getClient()
public int getConnectTimeout()
public String getContentEncoding()
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
public boolean getDoMultipartPost()
public String getDomain()
public String getEmbeddedUrlRE()
Get the regular expression URLs must match.
- Returns:
- regular expression (or empty) string
public String getFileField()
Deprecated. Use getHTTPFiles() array instead
The name parameter to be applied to the file
public String getFilename()
Deprecated. Use getHTTPFiles() array instead
The actual name of the file to POST
public boolean getFollowRedirects()
public int getHTTPFileCount()
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)
public String getImplementation()
public String getMethod()
public String getMimetype()
Deprecated. Use getHTTPFiles() array instead
public String getMonitor()
public String getPath()
public int getPort()
Get the port; apply the default for the protocol if necessary.
- Returns:
- the port number, with default applied if required.
public int getPortIfSpecified()
Get the port number from the port string, allowing for trailing blanks.
- Returns:
- port number or UNSPECIFIED_PORT (== 0)
public String getProtocol()
Gets the protocol, with default.
- Returns:
- the protocol
public String getQueryString()
Gets the QueryString attribute of the UrlConfig object, using UTF-8 to encode the URL
- Returns:
- the QueryString value
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
public int getResponseTimeout()
public boolean getSendFileAsPostBody()
Determine if the file should be sent as the entire Post body, i.e. without any additional wrapping
- Returns:
- true if specified file is to be sent as the body, i.e. FileField is blank
public boolean getSendParameterValuesAsPostBody()
Determine if none of the parameters have a name, and if that is the case, it means that the parameter values should be sent as the post body
- Returns:
- true if none of the parameters have a name specified
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.
public boolean getUseKeepAlive()
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
public static String[] getValidMethodsAsArray()
public boolean hasArguments()
public boolean isImageParser()
public boolean isMonitor()
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
public static boolean isSecure(String protocol)
public 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
- Returns:
- whether in range 200-399 or not
public void parseArguments(String queryString)
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 stringcontentEncoding
- - the content encoding of the query string. The query string might actually be the post body of a http post request.
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.
- Parameters:
sampleResult
-in
- input streamlength
- expected input length or zero
- Returns:
- the response or the MD5 of the response
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
public SampleResult sample()
Perform a sample, and return the results
- Returns:
- results of the sampling
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
public SampleResult sample(Entry e)
Do a sampling and return its results.
- Parameters:
e
-Entry
to be sampled
- Returns:
- results of the sampling
public void setAutoRedirects(boolean value)
public void setClient(String client)
public void setConnectTimeout(String value)
public void setContentEncoding(String value)
public void setDoMultipartPost(boolean value)
public void setDomain(String value)
public void setEmbeddedUrlRE(String regex)
public void setFileField(String value)
Deprecated. use setHTTPFiles() instead
The name parameter to be applied to the file
public void setFilename(String value)
Deprecated. use setHTTPFiles() instead
The actual name of the file to POST
public void setFollowRedirects(boolean value)
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
public void setImageParser(boolean parseImages)
public void setImplementation(String value)
public void setMD5(boolean truth)
public void setMethod(String value)
public void setMimetype(String value)
Deprecated. use setHTTPFiles() instead
Set the files mime type
- Parameters:
value
-
public void setMonitor(String value)
public void setMonitor(boolean truth)
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
public void setPath(String path, String contentEncoding)
Sets the Path attribute of the UrlConfig object Also calls parseArguments to extract and store any query arguments
- Parameters:
path
- The new Path valuecontentEncoding
- The encoding used for the querystring parameter values
public void setPort(int value)
public void setProtocol(String value)
public void setResponseTimeout(String value)
public void setUseKeepAlive(boolean value)
public void testIterationStart(LoopIterationEvent event)
- Specified by:
- testIterationStart in interface TestListener
public String toString()
public boolean useMD5()