Jmeter - Customize jmeter dashboard, convert kb to bytes on dashboard - jmeter

Can we convert/Customize JMeter dashboard values in Statistics table from KB/Sec to Bytes/Sec?

This is not something you can customise as per current JMeter version (JMeter 5.0)
However you can play a trick and multiply send/received bytes metrics by 1024 so JMeter will consider it kilobytes and in fact will be operating bytes.
Add JSR223 Listener as a child of your Test Plan (on global level as per JMeter scoping rules so it will be applied to all the Samplers)
Put the following code into "Script" area:
prev.setHeadersSize(prev.getHeadersSize() * 1024)
prev.setBodySize(prev.getBodySizeAsLong() * 1024)
prev.setSentBytes(prev.getSentBytes() * 1024L)
That's it, now you will have all metrics multiplied by 1024 therefore they will appear as bytes in the dashboard. You can also locate the report-template/content/js/dashboard.js.fmkr file (in "bin" folder of your JMeter installation): and change this line:
cell.innerHTML = "Network (KB/sec)";
to something reflecting the new behaviour, i.e. Network (Bytes/sec)

Related

How to log "server exec time" = (latency - connect time)

How can I log (by using sample_variables=...,...) jdbc/server exec time which we define as (latency - connect time)?
We would like to use the metric for a custom graph in the Jmeter Reporting module.
Add the next line to user.properties file:
sample_variables=execTime
See Sample Variables user manual entry for more information
Add JSR223 PostProcessor as a child of the request which "exec time" you want to measure or put it at the same level as other JDBC Request samplers (see JMeter Scoping Rules - The Ultimate Guide article for details)
Put the following code into "Script" area:
vars.putObject('execTime', prev.getLatency() - prev.getConnectTime())
it will subtract connect time from latency and store the value into execTime JMeter Variable
Now you should be able to follow instructions from Generating customs graphs over time JMeter user manual chapter

How to stop execution of a user in Jmeter after certain data is downloaded

I am testing the performance of a Internet speed test application being build by our company.
The scenario is each user will be downloading 6 files in parallel(six different http requests). So I am using blazemeter parallel controller to replicate this.
Each Jmeter thread will hit these 6 requests in parallel and will move to next iteration.
Now we have to stop or kill the user after it has downloaded x MB of data.
Means any thread which has downloaded X Mb data in all the iterations will stop further iterations.
You could add JSR223 PostProcessor which will be retrieving the response size and check whether it exceeds defined threshold. If it is - you can call setStopThread() function
Example code:
if (prev.getBytesAsLong() > 1000) {
log.info("Sampler downloaded " + prev.getBytesAsLong() + " bytes, stopping")
prev.setStopThread(true)
}
In the above snippet prev stands for the parent HTTPSampleResult, check out Top 8 JMeter Java Classes You Should Be Using with Groovy article to learn more about JMeter API shorthands available for JSR223 Test Elements.

How can i see the summary or aggregate values in jmeter jtl file

Am running recorded jmeter performance script (by adding summary and aggrgate listners), in non-gui mode using Maven. After running am getting .jtl file, but am not seeing the values for summary and aggregate values.
how can i see the summary or aggregate report in .jtl file, without opening Jmeter GUI.
We are planneing to run through jenkins on daily basis. Once jtl file is generated the other script has to look the values for summary / aggregate values and show it on the dashboard.
Can anybody please help me regarding this.
Typically I set the results file int the Summary Report Listener and select the fields I want to get back. When you run the test via non-gui (ie through Jenkins) you will get the summary results file and it should be in your workspace.
Here is my JMX file, testing some mobile APIs. JMeter Test Plan and Results
Also to note is the Generate Summary Results Listener. Per the docs
In Non-GUI mode by default a Generate Summary Results listener named "summariser" is configured,
This will not show up in the JTL but will show up in your log file and will generate lines such as
2015/08/28 15:14:33.305 INFO - jmeter.reporters.Summariser: summary = 2200 in 169s = 13.0/s Avg: 17 Min: 2 Max: 5129 Err: 0 (0.00%)
The values you're used to see in Aggregate Report / Summary Report listeners are being calculated from the following metrics:
timestamp
elapsed
success
bytes
latency
For instance:
Average metric is sub of "elapsed" times for all the samplers divided by samplers count.
Median metric is a common statistical measurement basically 50% percentile
90%, 95%, 99% - are also percentiles like median
etc.
Depending on your skills set you can check i.e. Calculator.java class code to see how JMeter calculates averages, percentiles, throughput, etc. and implement some form of postprocessor, use MS Excel, LibreOffice Calc or equivalent on .jtl CSV results file.
If you need to get these results after JMeter run the easiest option are:
Vanilla Jmeter:
if you launch JMeter via Ant Task or Maven Plugin - you'll get HTML results file like:
For more information on configuring Ant and/or Maven integration refer above links or Five Ways To Launch a JMeter Test without Using the JMeter GUI guide.
Using JMeter plugins:
Console Status Logger - which prints quick stats information to stdout and jmeter.log file
0 Threads: 27/5000 Samples: 1 Latency: 5 Resp.Time: 5 Errors: 0%
1 Threads: 2350/5000 Samples: 142 Latency: 19 Resp.Time: 19 Errors: 0%
2 Threads: 4500/5000 Samples: 130 Latency: 51 Resp.Time: 51 Errors: 0%
3 Threads: 5000/5000 Samples: 153 Latency: 81 Resp.Time: 81 Errors: 0%
Loadosophia.org Uploader - which uploads your test results to Loadosophia.org cloud service where you can perform analysis, see graphs, charts, export report as PDF, etc.

how to get the response time of web pages in jmeter?

How to generte csv file and load csv using response time graph listener?
Can any one help me in detail that how we find response time in jmeter ?
If you run JMeter in command-line non-GUI mode as follows:
jmeter -n -t /path/to/your/test_plan.jmx -l /path/to/results_file.jtl
your results_file.jtl content will look like:
1409124780902,182,Logon,200,OK,Thread Group 1-1,text,true,214,0
1409124781219,153,Logout,200,OK,Thread Group 1-1,text,true,110,0
where second column is page response time in milliseconds.
Other values are:
"1409124780902" - current time stamp in ms
"182" - page response time
"Logon" - sampler name
"200" - Response Code
"OK" - Response Message
"Thread Group 1-1" - Parent Thread Group name, thread number and iteration.
"text" - response data type
"214" - response data size in bytes
"0" - latency
Once your test run is done you can open JMeter GUI and load this results_file.jtl into the listener of your choice.
You might also be interested in JMeter Plugins Extras Set which is capable of generating nice looking and easy understandable response-time related graphs to wit:
Response Times vs Threads
Response Times Distribution
Response Times Percentiles
You can get it by adding Reporters.
Please keep in mind Reporters is cpu and memory intensive components and thus should not be used while actual load test.
But for sample testing you can use it and for load test run you can get response time, average,throughput etc by saving output to jtl file in JMeter.
For normal/sample run
Aggregate report gives Average response time, min, max, median etc.
Summary report also gives the same with less details,
While performing actual run you can save output of these reporters in a jtl file. After the test results can be analyzed from jtl files.

Thrift API load test

I am new into Apache Jmeter. Basically I want to load test our couple of thrift APIs but have no clue where to start with. It is in java where api takes 2 parameter and then send java object as response.
Any pointer would be very helpful.
JMeter isn't especially for it but it's flexible enough to support your use case.
There is an extensibility mechanism which uses BeanShell. JMeter provides BeanShell Sampler which is capable of invoking Java code, including using external jars.
Simple usage:
Start with empty JMeter project
Create a Thread Group with all defaults (you can play with number of threads, ramp-up, etc)
Add a BeanShell Sampler with following code:
Thread.sleep(2000L);
Add View Results Tree listener
Save and run
You should see a green triangle (or triangles) basing on your number of threads and loops) with output like following:
Thread Name: Thread Group 1-1
Sample Start: 2013-11-02 14:48:11 GMT+03:00
Load time: 5030
Latency: 0
Size in bytes: 0
Headers size in bytes: 0
Body size in bytes: 0
Sample Count: 1
Error Count: 0
Response code: 200
Response message: OK
If you use any of techniques to analyze results, i.e.
JMeter embedded listeners like Aggregate Report, Summary Report, Graph Resuls, etc.
Storing results to CSV file and opening them with Excel or equivalent (see jmeter.properties file under /bin directory of your JMeter installation. Properties prefix is "jmeter.save.saveservice."
JMeter Ant Task (see Test.jmx and build.xml in /extras folder under your JMeter installation)
JMeter Results Analysis Plugin
You'll see your request(s) success rate, min/max/average times (something like 2 seconds I guess) and some more information (depending on your configuration).
Particular your use case assumes
IMPORTANT Placing thrift (or whatever) jars under lib/ext folder (or you won't be able to access your APIs
importing classes you need to test somewhere in BeanShell Sampler
import yourpackage.YourClass;
Invoking methods you want to test from BeanShell Sampler
(optional) do some assertions on responses. i.e.
if (yourresponse != yourexpectedresponse){
IsSuccess=false;
ResponseMessage= "Test Failed";
}
Hope this helps
You can use JSR223 Sampler + Groovy (add groovy-all.jar in jmeter/lib) and look at this client example, see NonblockingClient code for an example:
http://www.javacodegeeks.com/2012/03/apache-thrift-quickstart-tutorial.html
Make your groovy code call a least the following at end:
SampleResult.setSuccessful(true/false)
SampleResult.setResponseCode("code")
SampleResult.setResponseMessage("message")
See:
http://jmeter.apache.org/usermanual/component_reference.html#JSR223_Sampler
And of course, ensure you add the required dependencies in jmeter/lib.
I have writtena CustomThriftSampler for JMeter to load test HBase through thrift service. You can get the details about it at my blog - http://1-st.blogspot.in/2013/12/load-testing-thrift-services-custom.html . Couldn't create a generalized code. Anyway its simple and starightforward java code. Anyone could try it. If time permit I shall write a generalised code and commit to github!!

Resources