Extending the Test Suite
The following resources maybe tweaked, or used to develop extended tests
- Load test client Scripts used
The load generation scripts can be found in the "samples/bin" directory, and primarily includes two scripts. The "smoketest.sh" could be used to ensure that the Test suite and all test cases are properly setup before a complete execution run - and thus includes a test for each scenario. The "loadtest.sh" includes the full list of test scenarios.
username@host:~/java/ultraesb-1.5.0/samples/bin$ cat smoketest.sh
#/bin/sh
# Directory which contains the soa-toolbox-1.5.0.jar
RUN_DIR=../../lib/samples
# Script to loop test
LOOP=../../samples/bin/loop.sh
# Sample requests directory
REQ_DIR=../../samples/resources/requests
# Depends on the ESB
SERVICE_PREFIX=$1
cd $RUN_DIR
echo Executing in directory $PWD
echo "Warm-up..."
$LOOP 1 $REQ_DIR/1K_buyStocks.xml 1000 20 urn:buyStocks.2 $SERVICE_PREFIX/DirectProxy
$LOOP 1 $REQ_DIR/1K_buyStocks.xml 1000 20 urn:buyStocks.2 $SERVICE_PREFIX/CBRProxy
$LOOP 1 $REQ_DIR/1K_buyStocks.xml 1000 20 urn:buyStocks.2 $SERVICE_PREFIX/CBRSOAPHeaderProxy
$LOOP 1 $REQ_DIR/1K_buyStocks.xml 1000 20 urn:buyStocks.2 $SERVICE_PREFIX/CBRTransportHeaderProxy
$LOOP 1 $REQ_DIR/1K_buyStocks.xml 1000 20 urn:buyStocks.2 $SERVICE_PREFIX/XSLTProxy
$LOOP 1 $REQ_DIR/1K_buyStocks_secure.xml 1000 20 urn:buyStocks.2 $SERVICE_PREFIX/SecureProxy
echo "Completed"
When executing either of the scripts loadtest.sh or smoketest.sh, the prefix for the proxy services hosted on the selected ESB must be passed as a parameter. The load test would then iterate the scenario a number of times (default 1) using the script "loop.sh" (See lines 16-21 above). This would fire off a request of the form shown below, invoking the ApacheBench style high performance HTTP/S client.
The "-p" specifies the request payload filename and the "-n" parameter specifies the number of requests, while "-c" specifies the concurrency. The socket timeout in ms is specified by "-t" and "-k" selects keepalive connections. The "-T" specifies the content type, and the "-H" adds a custom HTTP header. These options are the same or similar to the ApacheBench options.
java -Xms512M -Xmx512M -server -XX:+UseParallelGC -jar ToolBox.jar -p $file -n $n -c $c -k -t 120000 -H "SOAPAction: $action" -T "text/xml; charset=UTF-8" $url
To use the load test client directly, use the JavaBench tab of the graphical ToolBox test kit, or execute JavaBench from the command line as follows:
username@host:~/java/ultraesb-1.5.0/lib/samples$ java -Xms512M -Xmx512M -server -XX:+UseParallelGC -cp soa-toolbox-1.5.0.jar:commons-cli-1.2.jar:../log4j-1.2.15.jar org.adroitlogic.toolbox.javabench.JavaBench
usage: SOA-Toolbox/1.5.0 (c) 2010 AdroitLogic. All Rights Reserved
JavaBench [options]
http[s]://hostname[:port]/path
-c <concurrency> Concurrency while performing the benchmarking
session. The default is to just use a single
thread/client.
-g Accept GZip. Default is false
-H <header> Add arbitrary header line, eg. 'Accept-Encoding:
gzip' inserted after all normal header lines.
(repeatable as -H "h1: v1","h2: v2" etc)
-h Display usage information.
-k Enable the HTTP KeepAlive feature, i.e., perform
multiple requests within one HTTP session. Default
is no KeepAlive
-m <HTTP method> HTTP Method. Default is POST. Possible options are
GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE
-n <requests> Number of requests to perform for the benchmarking
session. The default is to just perform a single
request which usually leads to non-representative
benchmarking results.
-o Use HTTP/S 1.0
-p <POST-postFile> File containing data to POST.
-T <content-type> Content-type header to use for POST data.
-t <socket-Timeout> Client side socket timeout (in ms) - default 60
Secs
-u Chunk entity. Default is false
-v <verbosity> Set verbosity level - 4 and above prints response
content, 3 and above prints information on headers,
2 and above prints response codes (404, 200, etc.),
1 and above prints warnings and info.
-x Use Expect-Continue. Default is false
The sample requests used during the performance test execution maybe found in the "samples/resources/requests" subdirectory of the installation.
The WSDL used by the proxy service exposed over the ESB can be found as "samples/resources/perf/ProxyWSDL-embedded.wsdl"
The XSL style sheets used in scenario #3 could be found in the "samples/resources/perf" subdirectory as "transform_env_reverse.xslt" and "transform_env.xslt"
This keystore is the standard WS-Security keystore used for WS-Security interoperability testing and could be found as "samples/resources/perf/store.jks". The keystore password and the passwords for the alias "bob" and "alice" is "password"