JMeter waits unexpectively to execute if statement related to a CSV File - jmeter

I am running a JMeter Scenario with Apache JMeter 2.11.
The JMeter.bat file contains the following parameterization:
set HEAP=-Xms512m -Xmx12144m
set PERM=-XX:PermSize=64m -XX:MaxPermSize=64m
%JM_START% %JM_LAUNCH% %ARGS% %JVM_ARGS% -XX:ThreadStackSize=4096 -jar "%JMETER_BIN%ApacheJMeter.jar" %JMETER_CMD_LINE_ARGS%
I read my data to be executed from a csv file containing the following
My scenario is defined as below:
A timer is launched at 29/09/2014 14:32:48
<sample t="0" lt="0" ts="1411993968137" s="true" lb="Timer between steps" rc="200" rm="OK" tn="Groupe d&apos;unités 1-1" dt="text" by="307"/>
"Object Property Page" debug sampler is run at 29/09/2014 14:32:48
<sample t="1" lt="0" ts="1411993968370" s="true" lb="object Property Page " rc="200" rm="OK" tn="Groupe d&apos;unités 1-1" dt="text" by="754"/>
The debug Sampler "ProppageUpdate Before" is run at 29/09/2014 14:52:16
<sample t="0" lt="0" ts="1411995135835" s="true" lb="ProppageUpdate Before" rc="200" rm="OK" tn="Groupe d&apos;unités 1-1" dt="text" by="754"/>
That is to say 20 minutes after the "Object Property page" debug sampler.
All the requests coming next are executed far close from the "ProppageUpdate Before" debug sampler.
Does this mean the condition "If Property Page" takes time to execute ?
"If Property Page" is a if statement checking whether "${ObjectType}"=="propage"
Does this mean the csv file parsing is too long ?
We would appreciate any help.
Sylvie

Don't use debug sampler in performance testing , it must be used only when debugging as its name specified.
I wonder , why latency is "0" here and time is too less.Can you add 'view Results Tree' and check the response there [for 'Object Property Page'] ?
Is your CSV file is too huge , what is the size ? how many parameters have you added in his particular CSV ?
Recommendation
Split the CSV parameters to multiple csv files , if there are lot of parameters.
Check if 'http request sampler' has 'Retrieve all embedded resources'option enabled and 'Follow Redirects' enabled. If both options are enabled , its more likely to see the delay.
check the Jmeter.log[in jmeter/bin dir] for detailed debuging with specifying proper loglevel[default info] in jmeter.properties file.
I would suggest that you set the -Xms and -Xmx to the same values for optimal performance.
example:
set HEAP=-Xms1024m -Xmx1024m

Related

Why isn't JMeter saving some requests statistics on non-GUI mode?

I'm doing some tests using JMeter but it seems that when running the test on GUI mode, some HTTPs requests response statistics can be seen via listeners but, when running the same test on non-GUI mode the same responses aren't saved in the jtl file and thus aren't shown in listeners when loading the jtl file on GUI-mode.
After running the test on GUI mode:
Results after running test
And then, running the same test but on non-GUI mode:
Command:
path/to/jmeter -n -t path/to/test.jmx -l path/to/results.jtl -j path/to/logfile.log -JnumUsers=10 -Jjmeterengine.force.system.exit=true -Dnashorn.args=--no-deprecation-warning
Results after loading the jtl file into a listener
You can see that the /buscarAvaliacaoAluno and /alterarAvaliacaoAluno responses aren't there anymore.
edit with error in log
It seems that it says that it can't find the javascript engine used by a postprocessor
After reading this post I understood that if I'm using java 11 or above, using javascript shouldn't work, but when running java -version I get "openjdk version "1.8.0_292" and echo ${JAVA_HOME} I get /usr/java/jdk1.8.0_91
javax.script.ScriptException: Cannot find engine named: 'javascript', ensure you set language field in JSR223 Test Element: Pega id's questionários
at org.apache.jmeter.util.JSR223TestElement.getScriptEngine(JSR223TestElement.java:101) ~[ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:44) [ApacheJMeter_components.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:940) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:572) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.3]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]
We cannot provide a comprehensive response without seeing the test plan, the full listener output and the jmeter.log file
If you don't see a sampler result in the .jtl file most probably it hasn't been executed and there could be various reasons for not executing the sampler.
You're looking into old results. Given you provide number of users as 50 I would expect at least 50 sampler results and you have only 10. Try adding -f command-line argument to your JMeter startup script so it would overwrite the existing .jtl file with the new data
You have logic controllers like If Controller for conditionally executing your /buscarAvaliacaoAluno and /alterarAvaliacaoAluno and the condition is not met
You have "Action to be taken after a Sampler error" other than Continue in Thread Group so your test fails somewhere before these samplers and hence they are not being executed
etc.

Jmeter exception while generating report

I am trying to generate html report using robotframework but getting below error
JMeterLibException: 'No samples were found in a log file.'
Command used :
Run Jmeter ${jmeter} ${jmxPath} ${logPath} -JudvData=${excelData} -Jport=${port} -Jurl=${url} -JSMS.group=1
Analyse Jtl Convert To Html ${logPath}
jtl file is getting generated successfully but facing issue will converting jtl to HTML
Below is the log details ,
If there are no results it means that JMeter script execution has failed somewhere somehow, in this case you can check:
Robot Framework log file
JMeter log file
If you cannot figure out what's wrong from the JMeter log file it is possible to increase logging verbosity either for individual components or for the overall application via log4j2.xml file (lives in "bin" folder of your JMeter installation), see How to Configure JMeter Logging article for more details.
The most common reasons are:
The number of threads (virtual users) or loops (iterations) in Thread Group is 0
Missing data file referenced in CSV Data Set Config
Missing JMeter Plugin

Taurus YAML Runtime Property Change for JMeter

I am trying to invoke Jmeter script with user defined properties with YAML which I am able to change and execute with below configuration.
However if the test started and I need to increase the user on any thread - without stopping the test, how can I achieve that? Let's say the test was started with Thread1 value as 30 and now if I need to change it to 50 dynamically on runtime. I did not find a way myself. Please advise.
execution:
- #concurrency: ${__P(my_conc,3)} # use `my_conc` prop or default=3 if property isn't found
ramp-up: 1
hold-for: ${__P(my_hold,1)}
scenario: simple
modules:
jmeter:
properties:
my_hold: 60
scenarios:
simple:
variables:
#User DEFINED variable
Sampler1 : TestSampler1
Sampler2 : TestSampler2
script: SampleYAMLJMeter.jmx
properties:
#Thread Level variable
thread1 : 30
thread2 : 45
Add the following global JMeter properties:
modules:
jmeter:
properties:
beanshell.server.port: 9000
beanshell.server.file: ../extras/startup.bsh
Create the setconc.bsh file under .bzt/jmeter-taurus/x.x.x/lib folder and put the following code into it:
org.apache.jmeter.util.JMeterUtils.setProperty("my_conc", args[0]);
That's it, whenever you need to change the concurrency of your tests just execute the following command from the .bzt/jmeter-taurus/x.x.x/lib folder:
java -jar bshclient.jar localhost 9000 setconc.bsh 1234
replace 1234 with the actual concurrency you want to achieve
More information:
Beanshell server
How to Change JMeter´s Load During Runtime

MergeResults plugin throws Error parsing field 'timeStamp' at line 1. java.text.ParseException: Unparseable date:

When I tried to do merge using MergeResults plugin it throws error:
Error parsing field 'timeStamp' at line 1. java.text.ParseException: Unparseable date:"
TWO AggregateReport JTL files successfully converted into csv using the below CMD runner command
JMeterPluginsCMD.bat --generate-csv E:\JMETER\PROJECT_NGP\Results\SL_Rel\Build_165-20749\Reports_09-05-2017-17-07-07\NGP_LoadTest_Results_AgReport.csv --input-jtl E:\JMETER\PROJECT_NGP\Results\SL_Rel\Build_165-20749\Reports_09-05-2017-17-07-07\NGP_LoadTest_Results_AgReport.jtl --plugin-type AggregateReport
Below is the error log details from jmeter.log file
2017-09-06 12:35:40,963 INFO o.a.j.s.CSVSaveService: E:\JMETER\PROJECT_NGP\Results\SL_Rel\Build_165-20749\Reports_09-05-2017-17-07-07\NGP_LoadTest_Results_AgReport.csv does not appear to have a valid header. Using default configuration.
2017-09-06 12:35:40,963 WARN o.a.j.s.CSVSaveService: Error parsing field 'timeStamp' at line 1. java.text.ParseException: Unparseable date: "sampler_label,aggregate_report_count,average,aggregate_report_median,aggregate_report_90%_line,aggregate_report_95%_line,aggregate_report_99%_line,aggregate_report_min,aggregate_report_max,aggregate_report_error%,aggregate_report_rate,aggregate_report_bandwidth,aggregate_report_stddev"
2017-09-06 12:35:40,963 WARN o.a.j.r.ResultCollector: Problem reading JTL file: E:\JMETER\PROJECT_NGP\Results\SL_Rel\Build_165-20749\Reports_09-05-2017-17-07-07\NGP_LoadTest_Results_AgReport.csv
2017-09-06 12:35:40,963 WARN o.a.j.s.CSVSaveService: Unknown column name sampler_label,aggregate_report_count,average,aggregate_report_median,aggregate_report_90%_line,aggregate_report_95%_line,aggregate_report_99%_line,aggregate_report_min,aggregate_report_max,aggregate_report_error%,aggregate_report_rate,aggregate_report_bandwidth,aggregate_report_stddev
In user.properties file and properties file timestamp settings are same(see the below screenshots).
Not able to figured it out what was wrong, Please advise.
JMeter configuration on the machine where you are doing results merge must match configuration of the machine where tests were executed. If there are inconsistencies the majority of JMeter Listeners will fail, neither you will be able to generate HTML Reporting Dashboard
For example I see in your user.properties file the following issues:
You have duplicate jmeter.save.saveservice.timestamp_format property settings defining different timestamp formats
You have jmeter.save.saveservice.default_delimiter property set to \t while your results file is comma-separated
So you need to inspect JMeter's configuration of the machine where you are trying to merge results and make it inline with the machine where you ran the test.
References:
Configuring JMeter
Apache JMeter Properties Customization Guide
With the raw jtl files it's working as expected.

Missing values from JMeter results file when run remotely

When running a test which makes use of the of the Jmeter-Plugins listener Response Times vs Threads or Active Threads Over Time remote running of the test plan produces a results file which contains missing results used to plot the actual graph, however when run locally all results are returned. E.g. when using the Response Times vs Threads:
Example of a local result:
1383659591841,59,Example 1,200,OK,Example 1 1-579,text,true,183,22,22,59
Example of a remote result:
1383659859149,43,Example 1,200,OK,Example 1 1-575,text,true,183,43
Note the last two fields are missing
I would check the script definition of the two server: maybe some configuration for the "Write results to file" controller has been changed.
Take the local jmx service and copy it to the remote server.
Also, look for differences in the "# Results file configuration" section of jmeter.properties file.
Make sure that on all of the slave/remote servers the jmeter.properties file within $JMETER_HOME/bin has the following setting
jmeter.save.saveservice.thread_counts=true
By default this is set to false (and commented out)
For more informtation:
JMeter Plugins Installation

Resources