[Jakarta-jmeter Wiki] Update of "JMeterAutomatedRemoteTes ting" by brettcave
Apache Wiki <[email protected]> Fri, 19 Feb 2010 09:34:00 -0000
| Newsgroups | gmane.comp.jakarta.jmeter.devel |
|---|---|
| Message-ID | <[email protected]> |
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?action=diff&rev1=2&rev2=3
--------------------------------------------------
= 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
@@ -16, +17 @@
* 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 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:
+ A bash script similar to the following could be used to start up jmeter (called jmeter_test_wrapper.sh for example):
+
{{{
#!/bin/sh
@@ -43, +46 @@
HOST_LIST=${HOST_LIST:+"-R ${HOST_LIST}"}
for var in `grep -vE "^#|^$" ${JMETER_CUSTOM_PROPERTIES}`; do
- GLOBAL_VARS="-G${var} ${GLOBAL_VARS}"
+ GLOBAL_VARS="-G${var} ${GLOBAL_VARS}"
done
if [ -f ${loadtest}.jmx ]; then
- echo "Running ${loadtest} with:"
+ echo "Running ${loadtest} with:"
- echo -e " -----------------------
- $JMETER -n
- -t ${loadtest}.jmx
+ echo -e " -----------------------
+ $JMETER -n
+ -t ${loadtest}.jmx
- -l ${REPORT_DIR}/${loadtest}.jtl
+ -l ${REPORT_DIR}/${loadtest}.jtl
- -p ${JMETER_PROPERTIES}
- ${GLOBAL_VARS}
- ${HOST_LIST}
+ -p ${JMETER_PROPERTIES}
+ ${GLOBAL_VARS}
+ ${HOST_LIST}
- -j ${REPORT_DIR}/_${loadtest}.log
+ -j ${REPORT_DIR}/_${loadtest}.log
- -----------------------"
+ -----------------------"
- $JMETER -n \
- -t ${loadtest}.jmx \
+ $JMETER -n \
+ -t ${loadtest}.jmx \
- -l ${REPORT_DIR}/${loadtest}.jtl \
+ -l ${REPORT_DIR}/${loadtest}.jtl \
- -p ${JMETER_PROPERTIES} \
- ${GLOBAL_VARS} \
- ${HOST_LIST} \
+ -p ${JMETER_PROPERTIES} \
+ ${GLOBAL_VARS} \
+ ${HOST_LIST} \
- -j ${REPORT_DIR}/_${loadtest}.log
+ -j ${REPORT_DIR}/_${loadtest}.log
else
- echo "Could not find test plan for ${loadtest}"
+ echo "Could not find test plan for ${loadtest}"
fi
}}}
+ For a local test, you could run: `./jmeter_test_wrapper.sh`
+ For a remote test, it can be modified as `HOST_LIST="192.168.1.10,192.168.1.12" ./jmeter_test_wrapper.sh`
+ Now all you need to do is make sure the servers are running and add the above command into scheduler.