Apache JMeter

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

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
              extended by org.apache.jmeter.protocol.http.sampler.WebServiceSampler
All Implemented Interfaces:
Serializable, Cloneable, ConfigMergabilityIndicator, Searchable, HTTPConstantsInterface, Sampler, TestElement, TestIterationListener, TestStateListener, ThreadListener

public class WebServiceSampler
extends HTTPSamplerBase

Sampler to handle Web Service requests. It uses Apache SOAP drivers to perform the XML generation, connection, SOAP encoding and other SOAP functions.

Created on: Jun 26, 2003

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase
HTTPSamplerBase.SourceType
 
Field Summary
static boolean MAINTAIN_SESSION_DEFAULT
           
 
Fields inherited from class org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase
ARGUMENTS, AUTH_MANAGER, AUTO_REDIRECTS, BROWSER_COMPATIBLE_MULTIPART, BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT, CACHE_MANAGER, CONCURRENT_DWN, CONCURRENT_POOL, CONCURRENT_POOL_SIZE, CONNECT_TIMEOUT, CONTENT_ENCODING, CONTENT_TYPE, COOKIE_MANAGER, DEFAULT_METHOD, DO_MULTIPART_POST, DOMAIN, EMBEDDED_URL_RE, FOLLOW_REDIRECTS, HEADER_MANAGER, IMAGE_PARSER, IMPLEMENTATION, IP_SOURCE, IP_SOURCE_TYPE, MAX_FRAME_DEPTH, MAX_REDIRECTS, METHOD, MONITOR, NON_HTTP_RESPONSE_CODE, NON_HTTP_RESPONSE_MESSAGE, PATH, PORT, POST_BODY_RAW, POST_BODY_RAW_DEFAULT, PROTOCOL, PROXYHOST, PROXYPASS, PROXYPORT, PROXYUSER, RESPONSE_TIMEOUT, UNSPECIFIED_PORT, UNSPECIFIED_PORT_AS_STRING, URL, URL_UNSPECIFIED_PORT, URL_UNSPECIFIED_PORT_AS_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
WebServiceSampler()
           
 
Method Summary
 void addEncodedArgument(String name, String value, String metaData)
          We override this to prevent the wrong encoding and provide no implementation.
 String convertSoapHeaders(Map<String,String> ht)
           
 boolean getMaintainSession()
          Get the maintain session option.
 boolean getMemoryCache()
          Get the memory cache.
 String getProxyHost()
          Return the proxy hostname
 int getProxyPort()
          Return the proxy port
protected  String getRandomFileName()
          Method is used internally to check if a random file should be used for the message.
 boolean getReadResponse()
          Return whether or not to read the response.
 String getSoapAction()
          Return the soap action string.
 String getTimeout()
           
 int getTimeoutAsInt()
           
 boolean getUseProxy()
          Return whether or not to use proxy
 String getWsdlURL()
          method returns the WSDL URL
 String getXmlData()
          Get the XML data as a string.
 String getXmlFile()
          Get the file location of the xml file.
 String getXmlPathLoc()
          Get the path where XML messages are stored. this is the directory where JMeter will randomly select a file.
 SampleResult sample()
          Sample the URL using Apache SOAP driver.
protected  HTTPSampleResult sample(URL u, String s, boolean b, int i)
          Samples the URL passed in and stores the result in HTTPSampleResult, following redirects and downloading page resources as appropriate.
 void setMaintainSession(boolean maintainSession)
          Set the maintain session option.
 void setMemoryCache(boolean cache)
          Set the memory cache.
 void setProxyHost(String host)
          Set the proxy hostname
 void setProxyPort(String port)
          Set the proxy port
 void setReadResponse(boolean read)
          Set whether the sampler should read the response or not.
 void setSoapAction(String data)
          Set the soap action which should be in the form of an URN.
 void setTimeout(String text)
           
 void setUseProxy(boolean proxy)
          Set whether or not to use a proxy
 void setWsdlURL(String url)
           
 void setXmlData(String data)
          Set the XML data.
 void setXmlFile(String filename)
          it's kinda obvious, but we state it anyways.
 void setXmlPathLoc(String path)
          Set the path where XML messages are stored for random selection.
 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.
 
Methods inherited from class org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase
addArgument, addArgument, addEncodedArgument, addEncodedArgument, addNonEncodedArgument, addTestElement, applies, clearTestElementChildren, clone, downloadPageResources, encodeBackSlashes, encodeSpaces, errorResult, followRedirects, getArguments, getAuthManager, getAutoRedirects, getCacheManager, getConcurrentPool, getConnectTimeout, getContentEncoding, getCookieManager, getDefaultPort, getDoBrowserCompatibleMultipart, getDomain, getDoMultipartPost, getEmbeddedUrlRE, getFollowRedirects, getHeaderManager, getHTTPFileCount, getHTTPFiles, getImplementation, getIpSource, getIpSourceType, getMethod, getMonitor, getPath, getPort, getPortIfSpecified, getPostBodyRaw, getProtocol, getProxyPass, getProxyPortInt, getProxyUser, getQueryString, getQueryString, getResponseTimeout, getSendFileAsPostBody, getSendParameterValuesAsPostBody, getSourceTypeList, getUrl, getUseKeepAlive, getUseMultipartForPost, getValidMethodsAsArray, hasArguments, isConcurrentDwn, isImageParser, isMonitor, isProtocolDefaultPort, isSecure, isSecure, isSuccessCode, parseArguments, parseArguments, readResponse, resultProcessing, sample, setArguments, setAuthManager, setAutoRedirects, setCacheManager, setConcurrentDwn, setConcurrentPool, setConnectTimeout, setContentEncoding, setCookieManager, setDoBrowserCompatibleMultipart, setDomain, setDoMultipartPost, setEmbeddedUrlRE, setFollowRedirects, setHeaderManager, setHTTPFiles, setImageParser, setImplementation, setIpSource, setIpSourceType, setMD5, setMethod, setMonitor, setMonitor, setPath, setPath, setPort, setPostBodyRaw, setProtocol, setResponseTimeout, setUseKeepAlive, testIterationStart, testStarted, testStarted, threadFinished, threadStarted, toString, 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

MAINTAIN_SESSION_DEFAULT

public static final boolean MAINTAIN_SESSION_DEFAULT
See Also:
Constant Field Values
Constructor Detail

WebServiceSampler

public WebServiceSampler()
Method Detail

setXmlPathLoc

public void setXmlPathLoc(String path)
Set the path where XML messages are stored for random selection.


getXmlPathLoc

public String getXmlPathLoc()
Get the path where XML messages are stored. this is the directory where JMeter will randomly select a file.


setXmlFile

public void setXmlFile(String filename)
it's kinda obvious, but we state it anyways. Set the xml file with a string path.

Parameters:
filename -

getXmlFile

public String getXmlFile()
Get the file location of the xml file.

Returns:
String file path.

getRandomFileName

protected String getRandomFileName()
Method is used internally to check if a random file should be used for the message. Messages must be valid. This is one way to load test with different messages. The limitation of this approach is parsing XML takes CPU resources, so it could affect JMeter GUI responsiveness.

Returns:
String filename

setXmlData

public void setXmlData(String data)
Set the XML data.

Parameters:
data -

getXmlData

public String getXmlData()
Get the XML data as a string.

Returns:
String data

setSoapAction

public void setSoapAction(String data)
Set the soap action which should be in the form of an URN.

Parameters:
data -

getSoapAction

public String getSoapAction()
Return the soap action string.

Returns:
String soap action

setMaintainSession

public void setMaintainSession(boolean maintainSession)
Set the maintain session option.

Parameters:
maintainSession -

getMaintainSession

public boolean getMaintainSession()
Get the maintain session option.

Returns:
boolean cache

setMemoryCache

public void setMemoryCache(boolean cache)
Set the memory cache.

Parameters:
cache -

getMemoryCache

public boolean getMemoryCache()
Get the memory cache.

Returns:
boolean cache

setReadResponse

public void setReadResponse(boolean read)
Set whether the sampler should read the response or not.

Parameters:
read -

getReadResponse

public boolean getReadResponse()
Return whether or not to read the response.

Returns:
boolean

setUseProxy

public void setUseProxy(boolean proxy)
Set whether or not to use a proxy

Parameters:
proxy -

getUseProxy

public boolean getUseProxy()
Return whether or not to use proxy

Returns:
true if should use proxy

setProxyHost

public void setProxyHost(String host)
Set the proxy hostname

Parameters:
host -

getProxyHost

public String getProxyHost()
Return the proxy hostname

Overrides:
getProxyHost in class HTTPSamplerBase
Returns:
the proxy hostname

setProxyPort

public void setProxyPort(String port)
Set the proxy port

Parameters:
port -

getProxyPort

public int getProxyPort()
Return the proxy port

Returns:
the proxy port

setWsdlURL

public void setWsdlURL(String url)
Parameters:
url -

getWsdlURL

public String getWsdlURL()
method returns the WSDL URL

Returns:
the WSDL URL

sample

protected HTTPSampleResult sample(URL u,
                                  String s,
                                  boolean b,
                                  int i)
Description copied from class: HTTPSamplerBase
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.

Specified by:
sample in class HTTPSamplerBase
Parameters:
u - URL to sample
s - HTTP method: GET, POST,...
b - whether we're getting a redirect target
i - Depth of this target in the frame structure. Used only to prevent infinite recursion.
Returns:
results of the sampling

sample

public SampleResult sample()
Sample the URL using Apache SOAP driver. Implementation note for myself and those that are curious. Current logic marks the end after the response has been read. If read response is set to false, the buffered reader will read, but do nothing with it. Essentially, the stream from the server goes into the ether.

Overrides:
sample in class HTTPSamplerBase
Returns:
results of the sampling

addEncodedArgument

public void addEncodedArgument(String name,
                               String value,
                               String metaData)
We override this to prevent the wrong encoding and provide no implementation. We want to reuse the other parts of HTTPSampler, but not the connection. The connection is handled by the Apache SOAP driver.

Overrides:
addEncodedArgument in class HTTPSamplerBase

convertSoapHeaders

public String convertSoapHeaders(Map<String,String> ht)

getTimeout

public String getTimeout()

getTimeoutAsInt

public int getTimeoutAsInt()

setTimeout

public void setTimeout(String text)

testEnded

public void testEnded()
Description copied from class: HTTPSamplerBase

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
Overrides:
testEnded in class HTTPSamplerBase
See Also:
StandardJMeterEngine.stopTest()

testEnded

public void testEnded(String host)
Description copied from class: HTTPSamplerBase

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
Overrides:
testEnded in class HTTPSamplerBase
Parameters:
host - name of host
See Also:
StandardJMeterEngine.stopTest()

Apache JMeter

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