Batch file to run JMeter script - batch-file

I have a .jmx file of all of my test plans and I want to create a batch file. When I click that, everything starts and ends automatically. So that I can provide it to my client as well to verify that I have performed the load test on his website. How can I achieve this?

jmeter does not support running batch of .jmx files as document part 2.4.3 (Command Line Mode) gives to us.
I would recommend you to try 2 approaches:
1) to follow best practices of running jMeter in non GUI mode.
In accordance to this approach you are expected to use the command
jmeter -n -t D:\TestScripts\script.jmx -l D:\TestScripts\scriptresults.jtl
Where the pareameters:
-n [This specifies JMeter is to run in non-gui mode]
-t [name of JMX file that contains the Test Plan]
-l [name of JTL file to log sample results to]
-j [name of JMeter run log file]
2) to use any cloud service for running your .jmx file.
BlazeMeter (http://blazemeter.com/) worked for me fine.
One can adjust the test plan settings.
Testing results can be seen on “Load Report” tab as soon as test finishes.
For detalization one can follow Getting Started: Scripting with JMeter steps.
Hope this works for you.

Just write the following command in a text file and save this file as SomeName.bat
#ECHO OFF
jmeter -n -t "Your .jmx file path" -l "Your .jtl file path"
For example:
#echo off
jmeter -n -t F:\DEV\WORKSPACE\buyer.jmx -l F:\DEV\WORKSPACE\output.jtl
After saving click on that bat file. The test plan result will be stored into .jtl file.
Note: Make sure you put this bat file into JmeterinstallationDirectory/bin folder.

Related

difference between jmeter.bat/jmeter.sh And jmeter.file

I would need clarification on jmeter.bat/sh and jmeter.FIle which are in bin folder.
With example:
1.If i setup different HEAP size in jmeter and jmeter.bat/sh file,which one will be considered.?
2.Does the above depend on how i run the test?(for ex: jmeter -n -t or jmeter.bat/sh -n -t)
3.If the test started with jmeter command instead of jmeter.bat ,will intern jmeter.bat be called and hence heap in jmeter.bat be used or vice-versa?
Update1: Adding screenshot where we can see jmeter/jmeter.bat/jmeter.bat files
You should update one file based on your OS Windows/ Unix
To run JMeter, run the jmeter.bat (for Windows) or jmeter (for Unix) file.
Both execute internally ApacheJMeter.jar
In windows execute jmeter -n -t is actually calls jmeter.bat
In Unix you can call either jmeter or jmeter.sh
Looking into your screenshot it seems that you're running Windows so the only file you should be considering is jmeter.bat
If you want to change JVM Heap it's better to go for changing HEAP environment variables on Windows level like:
set HEAP=4G && jmeter.bat
when you type jmeter Windows is looking for a relevant executable or shell script first in the current folder than on PATH so jmeter will call jmeter.bat if you're invoking it from JMeter's "bin" folder, if you do it from another folder the command-line interpreter will look for it in PATH and if nothing will be found - it'll fail with "'jmeter' is not recognized as an internal or external command,
operable program or batch file."
More information: How Do I Run JMeter in Non-GUI Mode?

Creating Jmeter Report

I have a scheduled load test which runs daily. Scripts are triggered from CLI (.bat file) and will be creating a html report at the end of the test.
I am saving test report with testnameDATE, where currently the date part is updated manually.
I tried to automate the date part to get the system date on run time using '${__time(MMddyyyy)}', but for html part its not working and report is not getting created.
Eg:
D:
cd D:\Performance Testing\Tools\apache-jmeter-3.0\bin
jmeter -n -t "D:\Performance Testing\batch\DailyRun\Test_DailyRegression.jmx" -l "D:\Performance Testing\batch\DaiyRun\csv\Test${__time(MMddyyyy)}_001.csv" -e -o "D:\Performance Testing\batch\DaiyRun\html\Test${__time(MMddyyyy)}_001.html"
Windows doesn't know anything about JMeter Functions, given you run your JMeter test in command-line non-GUI mode you will need to use date command instead like:
jmeter -n -t ..\extras\Test.jmx -l Test_%date:~10,4%%date:~4,2%%date:~7,2%_001.csv
Demo:

why won't Jenkins write the ouput of my jmeter test to the specified logfile?

I have set up Jenkins to run my parameterized jmeter test (with the kind assistance of knowledgeable users here). I'm not using any other build technologies at the moment. I can run my tests and see the results in Jenkins as expected. However Jenkins is not writing the test data to my specified logfile. Here is my Windows batch script in Jenkins: C:\Users\MikeL\Documents\apache-jmeter\bin\jmeter.bat -n -t C:\Users\MikeL\Documents\apache-jmeter\bin\testApp.jmx -l log.jtl -Jenv=%env% -JloopCount=%loopCount% if I run jmeter -n -t testApp.jmx -l log.jtl -Jenv=dev -JloopCount=1 from the windows cmd prompt inside of jmeters bin dir It does create the log file as expected. If anyone knows why the Jenkins script won't output it I'd be very obliged.

Need to download file on website from command line

I have a link on my website that when clicked dynamically creates a csv file and downloads the file. I need a way to do this in a batch file so that the file can be downloaded automatically (via task scheduler). I have played around with wget but I can't get the file. Thank you in advance for your help!
bitsadmin.exe /transfer "Job Name" downloadUrl destination
If you are using Windows 7 then use same command in Power Shell
Note:
downloadUrl : It is the download url from referred website
destination : It is path of the file where we need to download it.
I use it as follows:
#plain wget
wget "http://blah.com:8080/etc/myjar.jar"
#wget but skirting proxy settings
wget --no-proxy "http://blah.com:8080/etc/myjar.jar"
Or to download to a specific filename (perhaps to enable consistent naming in scripts):
wget -O myjar.jar --no-proxy "http://blah.com:8080/etc/myjar1.jar"
If you're having issues, ensure wget logging is on and possibly debug (which will be augmented with your logging):
# additional logging
wget -o myjar1.jar.log "http://blah.com:8080/etcetcetc/myjar1.jar"
#debug (if wget was compiled with debug symbols only!)
wget -o myjar1.jar.log -d "http://blah.com:8080/etc/myjar1.jar"
Additional checks you may need to do if still no success:
Can you ping the target host?
Can you "see" the target file in a browser?
Is the target file actually on the server?

Looking for better way to load initialization file(.bashrc) in jmeter

Currrently, I am running jmeter with this property to load my script for beanshell preprocessor.
<apache jmeter Bin directory>/bin/jmeter -Jbeanshell.preprocessor.init=D:/commons.bshrc
I need shortcut to lauch JMeter with argument. I would like to store this property somewhere and would be able to use the short cut to load the same file when jmeter is started.
Example : when I click on "apache-jmeter.jar" file from bin directory, it opens jmeter GUI. But it should also load the commons.bshrc file.
Is there any ways to do this?
You can create batch file:
#echo off
start /d "Java bin" -jar jmeter.jar -Jbeanshell.preprocessor.init=D:/commons.bshrc
Check out this wiki, about howto create batch file. http://www.wikihow.com/Write-a-Batch-File
Or you can easily edit your jmeter.bat file.

Resources