Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jakarta-jmeter Wiki" 
for change notification.

The "JMeterAutomatedRemoteTesting" page has been changed by brettcave.
http://wiki.apache.org/jakarta-jmeter/JMeterAutomatedRemoteTesting

--------------------------------------------------

New page:
This document shows how you can use JMeter to perform more automated 
(non-interactive) testing.

= Requirements =
This article assumes that you:
* know the basics of JMeter
* have an existing test plan
* have a bit of knowledge on using variables in test plans
* have touched on remote testing (from GUI is fine)

= Set up =
# In your existing test plan, make sure that any variations in testing make use 
of variables. For example, if running a HTTP sampler, use HTTP Request Defaults 
to specify a host as "${__P(targetHost)}". Other useful places for variables 
might include number of threads, ramp-up period or scheduler duration in a 
thread group, using a format of ${__P(threadgroup.threads,500)}  (The __P 
function is shorthand for __parameter. See the userguide for more info on using 
this parameter).
# Save your test plan and properties file to a directory.
# Create a properties file containing all your variables. E.g. 
mytest.properties could contain threadgroup.threads=100, 
targetHost=my-target-host.com
# The test plan does not need Listeners, as this will be configured via 
parameters. This will improve performance on the testing.
# Run the test mode in stand-alone mode (i.e. no remote servers):   `jmeter -n 
-t load_test.jmx -l load_test_report.jtl -q mytest.properties -j mytest.log`
# 1 small piece of functionality missing is the ability to set global variables 
from a property file. the "-q" parameter defines an additional property file, 
which is the equivalent of setting properties for the contents of the file 
using the -J parameter. This parameters are not global however, as would be set 
by the -G parameter. the following bash script (if your using Linux) would help 
with converting a properties file to global properties:
{{{
for var in `grep -vE "^(#|$)" mytest.properties`; do
  GLOBAL_VARS="-G${var} ${GLOBAL_VARS}"
done
}}}

This is a relatively simple bash expansion, and will break if there are any 
spaces in variable names or values (e.g. test.description="My Test" - the space 
would break the bash for loop.)

# On all client machines, start up JMeter server, ensuring that firewall is not 
blocking connections (clients must all be on the same subnet). 
# On JMeter controller (the host initializing the test), run the test with the 
-R parameter (can be run using -r and specfiying hosts in jmeter properties 
file):
`jmeter -n -t load_test.jmx -l load_test_report.jtl -q mytest.properties -j 
mytest.log -R remotehost1,remotehost2 ${GLOBAL_VARS}`

Note that load injection to targets will be a increased as a ratio of number of 
threads per thread group multiplied by number of client machines.

A script similar to the following could be used to start up jmeter:
{{{
#!/bin/sh

loadtest="myloadtest"
GLOBAL_VARS=""
REPORT_DIR=/tmp
JMETER_PROPERTIES=jmeter.properties
JMETER_CUSTOM_PROPERTIES=mytest.properties
# If set as an environment var, then use it, otherwise leave it unset.
HOST_LIST=${HOST_LIST:+"-R ${HOST_LIST}"}

for var in `grep -vE "^#|^$" ${JMETER_CUSTOM_PROPERTIES}`; do
        GLOBAL_VARS="-G${var} ${GLOBAL_VARS}"
done

if [ -f ${loadtest}.jmx ]; then
        echo "Running ${loadtest} with:"
        echo -e "               -----------------------
        $JMETER -n
                -t ${loadtest}.jmx
                -l ${REPORT_DIR}/${loadtest}.jtl
                -p ${JMETER_PROPERTIES}
                ${GLOBAL_VARS}
                ${HOST_LIST}
                -j ${REPORT_DIR}/_${loadtest}.log
        -----------------------"
        $JMETER -n \
                -t ${loadtest}.jmx \
                -l ${REPORT_DIR}/${loadtest}.jtl \
                -p ${JMETER_PROPERTIES} \
                ${GLOBAL_VARS} \
                ${HOST_LIST} \
                -j ${REPORT_DIR}/_${loadtest}.log
else
        echo "Could not find test plan for ${loadtest}"
fi
}}}



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscr...@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-h...@jakarta.apache.org

Reply via email to