My performance test setup
Jmeter 5.3
1 JMX File that contains my test plan.
1 default properties file. This is named 'user.properties'.
1 custom properties file. I pass this when I run my test plan headless.
I have a test plan that I run in the following ways,
headless
jmeter -p "customProp.properties" -n -t "myTestPlan.jmx"
GUI
Open > myTestPlan.jmx and like above I want the customProp.properties also to come into effect with myTestPlan.jmx in play.
What I've done so far?
I've used the 'user.properties' attribute within the 'user.properties' file in the bin directory as follows,
user.properties=customProp.properties
I know how to do add properties files when running headless. Just now sure how to do it with GUI. Any pointers?
Just proceed as for Non GUI, but note it’s better to make -p point to jmeter.properties and -q to user.properties and your additional properties file:
jmeter -p path_to_jmeter.properties -q path_to_user.properties -q path_to_custom.properties
See:
https://jmeter.apache.org/usermanual/get-started.html#options
If you don't have any customizations under user.properties file and don't plan to have them in the future - locate the following line in the jmeter.properties file:
user.properties=user.properties
and change it to point to your "custom" properties file:
user.properties=customProp.properties
it will make the change permanent and you won't have to play with command-line arguments no matter whether you run JMeter in GUI or non-GUI modes (JMeter restart will be required to pick the properties up)
More information:
Configuring JMeter
Apache JMeter Properties Customization Guide
Related
I tried on my local system then it generates but only generates up to 69 users records and I gave 1000 users in non GUI mode.
May I know what would be the issue of generating 68 users?
I have 2400 users list and want to run script and save the output. What system configuration do I require? And how do we analyze system configuration per users?
I am unable to find the jmeter log file.
I am using this below where I have given given 1000 users to hit the server.
"jmeter -Jthreads=1000 -n -t Anand.jmx -l Anand1000-1.csv "
We don't know, check jmeter.log file, Thread Group settings, CSV Data Set Config setup and your application log
We don't know as it depends on the nature of your test, size of requests/responses, number of hits per second, presence of post-processors, assertions, etc.
jmeter.log file normally is in the "bin" folder of your JMeter installation. If you're launching JMeter via i.e. desktop shortcut - it will be in the current "working" folder. If you're still unable to find it - locate the following line in log4j2.xml file (lives in "bin" folder of your JMeter installation):
<File name="jmeter-log" fileName="${sys:jmeter.logfile:-jmeter.log}" append="false">
and change ${sys:jmeter.logfile:-jmeter.log} to some hard-coded path, i.e. c:\temp\jmeter.log. JMeter restart will be required to pick up the change.
I'm trying to set up distributed test in Jmeter however whenever I tried to run the "create-rmi-keystore.bat" file in bin folder doesn't seem to work.. It's not opening...Can someone enlighten me what should be the problem and solution.
Nobody can "enlighten" you about the solution unless you run this command in the terminal and share the output with us, the possible reasons are:
You already have rmi_keystore.jks file in the "bin" folder of your JMeter installation
You don't have keytool program in your operating system PATH
I also believe that 99.99999% of users don't need secure communication between JMeter master and slaves as it doesn't add any value and just consuming valuable resources, so I tend to disable secure RMI communication when I run JMeter tests in distributed mode.
Add the next line to user.properties file (lives in "bin" folder of your JMeter installation)
server.rmi.ssl.disable=true
Restart JMeter to pick the property up
Repeat it for all machines which are involved in distributed test
That's it, you don't need this rmi-keystore.jks anymore
References:
Remote hosts and RMI configuration
JMeter Distributed Testing with Docker
Remote Testing
On Unix system use create-rmi-keystore.sh script instead
for Windows systems (called bin/create-rmi-keystore.bat) and Unix like systems (called bin/create-rmi-keystore.sh)
$ ./create-rmi-keystore.sh
I have issue, which is relate to read csv file. When i run jmx file with gui, everything is ok, but when run with non-gui always show error java.lang.Nullpointer exception.
Does anyone know how to fix it?
Have you tried to "See the log file for details"? The file is called jmeter.log and it's being generated in "bin" folder of your JMeter installation or in the folder where you launch JMeter from (if it differs from the above)
You can try troubleshooting the issue yourself by comparing JMeter log files from GUI and from non-GUI execution. Another suggestion is using full path to the CSV file instead of the relative one.
References:
JMeter Hints and Tips: Enabling debug logging
How to Configure JMeter Logging
I installed jmeter with brew and built a test plan which I hoped to be able to run on a distributed set of nodes. But I cannot find where the jmeter.properties file is in order to tell my local client where to look for the helper nodes. Any ideas? I tried adding it manually, but it did not take.
The /usr/local/Cellar/jmeter/5.0/bin folder only contains jmeter and jmeter.log
Thanks!
Looking into JMeter formula my expectation is that you should see jmeter.properties file under /usr/local/Cellar/jmeter/5.0/libexec/bin/ folder (this is applicable for JMeter 5.0, for other versions location should be different)
PS1. You can install JMeter without using Homebrew, if you execute the following commands:
cd ~
wget https://www-eu.apache.org/dist//jmeter/binaries/apache-jmeter-5.0.tgz
tar xf apache-jmeter-5.0.tgz
then you will have "normal" JMeter installation as apache-jmeter-5.0 in your home folder
PS2. According to JMeter Best Practices you should be rather using user.properties than jmeter.properties so consider placing your configuration into /usr/local/Cellar/jmeter/5.0/libexec/bin/user.properties file instead
PS3. You can also pass any JMeter property via -J command-line argument so you can do something like
jmeter -JpropertyName=propertyValue
i.e.
jmeter -Jremote.hosts=10.10.10.1,10.10.10.2 -n -t test.jmx -l result.jtl
It's also not in my /usr/local/Cellar/jmeter/5.0/bin folder.
However, if your intention is simply to have jmeter load your user.properties file, then
create a user.properties file inside
/usr/local/Cellar/jmeter/5.0/bin
then execute jmeter by running $ /usr/local/Cellar/jmeter/5.0/bin/jmeter
The user.properties file would be loaded by jmeter.
I've created a test plan to do some load testing against HTTP endpoints. I want to run the same test plan against multiple endpoints, and find myself having to do the following each time:
Change variable that determines which endpoint I'm hitting.
Run the test.
When complete, record results.
Clear all results.
Back to step 1.
I want to automate this. Is the following possible?
Define a list of endpoints as a variable.
For each endpoint in endpoints
Run test against endpoint
When complete, save results
Clear all results.
The things in particular that I don't know how to automate are:
Starting a test
Defining an list-style variable
Clearing all results
Any help would be greatly appreciated!
Please see answers below:
Starting a test
Apart from running JMeter from GUI there are several execution options such as:
Command line non-GUI mode - you can wrap JMeter execution line in operating system batch file
JMeter Ant Task - integration with Apache Ant build system, more powerful if you're comfortable with it
JMeter Maven Plugin - the same as Ant but for Apache Maven
Option to run JMeter with CI systems like Jenkins
Defining an list-style variable
JMeter offers "properties" which can be set via .properties files (see user.properties in /bin folder of your JMeter installation for example) or passed as name/value pairs to JMeter startup script. For instance instead of hard-coding your host in .jmx file you can use read a property function.
Set "Server Name or IP" field value to ${__P(myhost,)}
Add myhost=example.com line to user.properties file in /bin folder of your JMeter installation, restart JMeter and run the test. Request will go to example.com.
Alternatively you can pass myhost property to JMeter in command-line mode as follows
jmeter -Jmyhost=example.com
Multiple properties can be passed this way:
jmeter -Jproperty1=value1 -Jproperty2=value2 ....
And even files via -p or --propfile JMeter command line argument
See Apache JMeter Properties Customization Guide for more options and information.
Clearing all results
It depends on unattended execution option you'll choose, all of them provide at least one way to delete file and/or folder. Personally I wouldn't delete any results and would rather keep them for future reference. To distinguish different endpoints test runs and to avoid overwriting I would use timestamps like:
jmeter -Jhttp.endpoint=my.test.host -n -t your-script.jmx -l my-test-host-results-${date}.jtl
where
-J - sets endpoint to my.test.host
-n - tells JMeter to run in non-GUI mode
-t - specifies .jmx file to use
-l - specifies name and location of results file