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.7.0/samples/bin$ cat smoketest.sh #/bin/sh # Directory which contains the soa-toolbox-x.x.x.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 17-22 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 -cp $ULTRA_CLASSPATH org.adroitlogic.toolbox.javabench.JavaBench -p $file -n $n -c $c -k -t 180000 -H "SOAPAction: \"$action\"","routing: xadmin;server1;community#1.0##" -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:
user@host:~/java/ultraesb-1.7.0/lib/samples$ java -Xms512M -Xmx512M -server -XX:+UseParallelGC -cp soa-toolbox-1.6.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"