JMeter Report Generation Without Default saveservice - jmeter

Is there a way to generate a report from a .jtl file if I had set some saveservice values to false such as below:
jmeter.save.saveservice.response_message = false
jmeter.save.saveservice.assertion_results_failure_message=false
Its complaining that it cant find them. I tried adding the column manually into the .jtl and just filling it with a null value but that didnt seem to work.

It is possible given the Results File Configuration properties are the same.
So if you run your test on one machine and generating the results on another machine - make sure that the jmeter.save.saveservice. properties are exactly the same, this way you should be able to generate the dashboard normally.
So if you put the next lines to user.properties file:
jmeter.save.saveservice.response_message=false
jmeter.save.saveservice.assertion_results_failure_message=false
the dashboard generation will be successful.
Another option is providing the properties via -J command-line arguments like:
jmeter -Jjmeter.save.saveservice.response_message=false -Jjmeter.save.saveservice.assertion_results_failure_message=false -g -o /path/to/dashboard
See Apache JMeter Properties Customization Guide article for more information on JMeter properties and ways of setting/overriding them.
The order of "columns" is defined under CSVSaveService and as of JMeter 5.3 you cannot configure it, if you decide to save some metric it must be in particular column, i.e. timeStamp will always be the first, elapsed the second, etc.

I figured out you can manually just enter the headers in the jtl/csv file and leave the column empty. As long as you have the necessary columns separated by commas and the saveservice deafult properties are included.
The headers need to be in the right order though as per a normal jtl results file. The headers dont seem to be able to be just added to the end.

Related

I am getting error when passing the value from csv data set config but it’s working when hard coded value is used

I am using jmeter csv data set configuration to pass the value dynamically in amqp publisher. Script is working fine when using the hard coded value but when using csv data set config value is passing correctly as per requirement but getting error in the component saying unrecognized escape character d , but if the same value is hard coded it’s not giving any error in the component
if you're using a plugin - you need to specify which exactly as we're not telepathic enough to guess. Normally looking at jmeter.log file helps to detect the root cause for any misbehaviour. You might need to increase JMeter logging verbosity to see it however. And also normally you should reach out to the plugins author(s) with the questions like this.
This line in log4j2.xml file sets JMeter's log level to DEBUG (it will give ** a lot** of output.
<Logger name="org.apache.jmeter" level="debug" />
you might want to add a similar to raise logging level for the plugin you're using.

Jmeter can get parameters?

My question is - if I run a test via Jmeter, for example , if it's a site which enables you to book a flight, and you choose your source and destination when you record it.
Is it possible to pass different values to the destination field? I mean, maybe a txt file with some destinations and pass it to the Jmeter test and then, you will have some tests which each of them is running with a different destination?
If yes, how can I do it?
It's not necessary that it will be a txt file. Just a way to pass different values to one parameter.
Important: I'm using blazemeter plugin for chrome.
Thanks a lot,
appreciated.
You can use CSV Data Set Config. It is very easy to use for parameterizing variables in the test plan.
Check this article on blazemeter to understand the CSV Data Set Config quickly.
Depending on what you're trying to achieve you can go for:
HTML Link Parser. See Poll Example which shows how you can use it for selecting random values from inputs
You can extract all the possible values from the previous response using a Post-Processor, most probably CSS Selector Extractor and configure each thread to use its own (or random) value from the input
And last, but not the least, you can use an external data source like .txt or .csv file and utilize __StringFromFile() function or CSV Data Set Config so each thread (virtual user) would read the next value from file instead of using recorded hard-coded values.

In JMeter how do I set multiple dynamic variables in User Parameters or CSV Data Set Config

Very new to JMeter (and a long time Stack Overflow listener but first time caller so take it easy on me) so any help would be appreciated.
I am trying to set up a JMeter test that uses multiple dynamically generated access tokens to run across scenarios. I currently have a set of data using the CSV Data Set Config containing login credentials of a user's email and password for example:
email1#email.com,password1
email2#email.com,password2
Next I send a HTTP POST request to the Login service which generates an accessToken. Then, I am using the JSON Extractor to grab the generated accessToken. After that I am using the BeanShell Assertion to store the accessToken property/variable.
My issue seems to lie here in this last step since it will only store the last generated variable instead of each of the generated accessTokens. I want to be able to store/overwrite the grabbed accessToken for each email password combination. I would like it to modify/populate the CSV file like this:
email1#email.com,password1,accessToken1
email2#email.com,password2,accessToken2
I have also tried using the Pre Processor > User Parameters
Screen shot of User Parameters
I would like to have the "userBearerToken" variable update/overwrite along with the tests, but I cannot find a way to do so or if this can even currently be done.
I'm finding it difficult to word what I am trying to ask, but basically I want to store multiple dynamically generated variables (accessTokens that change and time out) and use them in other tests. I don't care which component can handle this (either the CSV or User Parameter), but I need to be able to store these variables with their corresponding email password credentials.
If you want to store the accessToken value into a JMeter property for using in other Thread Group(s) be aware that properties are global for the whole JVM and remain until JMeter is restarted so if you define a single accessToken property - each JMeter Thread (or iteration) will overwrite the value.
The solution is to use current thread (or iteration) number as prefix or postfix, this can be done using either __${__threadNum} function or relevant JMeter Variable depending on how iteration is defined or both.
Example setup:
In first thread group: ${__setProperty(access_token_${__threadNum},bar,)}
In second thread group: ${__P(access_token_${__threadNum},)}
Demo:
If you want to save the values into a file writing into the current one is not the best idea as you can (and most probably will) get malformed file due to a form of a race condition. So I would recommend using Sample Variables property instead.
If you add the next line to user.properties file:
sample_variables=email,password,accessToken
JMeter will store the variables named ${email}, ${password}, and ${accessToken} along with their values in the .jtl results file which is basically CSV file which can be re-used anywhere else.
However if you have a requirement to store only the credentials and the token you can go for the Flexible File Writer plugin and configure it to save the aforementioned variables values into a separate file, the relevant configuration would be as simple as:
variable#0,variable#1,variable#2
You can install Flexible File Writer plugin using JMeter Plugins Manager

How do you mix JMeter command line args with Gui args?

I am trying to run a single recording in various different ways without copying the recorded pages.
I have created two Property File Readers that look for:
C:\performance\jmeter\users_${__P(ttype)}.properties
and
C:\performance\jmeter\${__P(env)}_${__P(region)}.properties
where the ${__P(xxx)} variables are passed on the command line as so:
-Jregion=UK -Jenv=dev -Jttype=isolated
These property files load the following variables (for example):
- usercount=25
- duration=1800
- host.name=server1
- host.port=8546
These are used in the HTTP Request Defaults:
${__P(host.name)}
${__P(host.port)}
and Thread Group:
${__P(duration)}
${__P(usercount)}
This works fine. However, if I want to run the same test in the Gui for a single thread (to check it works), these variables are not populated and the test fails.
I can create a User Defined Variable element but these have the format
${xxx}
so cannot be used interchangeably.
Is there any way to do what I'm trying to do here, please?
Option 1: you can pass the same parameters via '-J` arguments as JMeter in the GUI mode respects them as well
Option 2: you can specify your properties values in user.properties file (located in JMeter's "bin" folder) like
usercount=25
duration=1800
etc.
The properties values passed over the command-line will override those, which are specified in the user.properties
See Apache JMeter Properties Customization Guide for more information on using JMeter properties
By the way, you ain't gonna need this Property File Readers, there is a possibility to add extra properties files in JMeter via -q command line argument.
-q, --addprop
additional JMeter property file(s)
Discovered another way to resolve this issue.
The __P() function can take a second argument that acts as the default if the first value isn't resolved.
So
${__P(host.name)}
${__P(host.port)}
become
${__P(host.name,server1)}
${__P(host.port,1234)}
This works as well.

How to Print variable in aggregate report jmeter?

I want to pass variable to aggregate report to distinguish request .How to print/pass a variable in aggregate report jmeter?
Option 1: you can add variable to Sampler Name so you will be able to figure out the variable value and distinguish samplers basing on their labels in the Aggregate Report as
Option 2: you can use sample_variables JMeter property. JMeter will append variable values to sampler metrics in results .jtl file. It will not be displayed in the Aggregare Report, but it will be possible to analyze .jtl file with Excel or equivalent.
To use "sample_variables" feature add the following line to user.properties file (it is located under /bin folder of your JMeter installation)
sample_variables=VAR1,VAR2,VAR3
You can "tell" JMeter to store single or multiple variable values along with request metrics.
JMeter restart is required to pick up amended property from the "user.properties" file. Alternative way is providing property via -J command-line argument as
jmeter -Jsample_variables=foo -n -t /path/to/testplan.jmx
See Apache JMeter Properties Customization Guide for advanced information on using, setting and overriding JMeter properties.

Resources