https://github.com/vdaburon/jmeter-graph-tool-maven-plugin
A maven plugin to include features from jmeter-plugins.org for JMeterPluginsCMD Command Line Tool to create graphs, export csv files from jmeter result files and Filter Result tool.
https://github.com/vdaburon/jmeter-graph-tool-maven-plugin
graph graphs java jmeter jmeter-charts jmeter-plugin jmeter-plugins jmeter-report jmx load-testing maven maven-plugin performance-testing performance-visualization
Last synced: 2 months ago
JSON representation
A maven plugin to include features from jmeter-plugins.org for JMeterPluginsCMD Command Line Tool to create graphs, export csv files from jmeter result files and Filter Result tool.
- Host: GitHub
- URL: https://github.com/vdaburon/jmeter-graph-tool-maven-plugin
- Owner: vdaburon
- Created: 2021-09-20T15:43:21.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-06-07T12:36:05.000Z (about 1 year ago)
- Last Synced: 2025-04-24T00:02:14.813Z (2 months ago)
- Topics: graph, graphs, java, jmeter, jmeter-charts, jmeter-plugin, jmeter-plugins, jmeter-report, jmx, load-testing, maven, maven-plugin, performance-testing, performance-visualization
- Language: Java
- Homepage:
- Size: 748 KB
- Stars: 11
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-jmeter - JMeter Graph Tool Maven Plugin - Maven plugin to create graphs and filter results using CMDRunner and Filter Results Tools from [JMeter Plugins](#plugins); usually used along with the [JMeter Maven Plugin](#tools--plugins) and set of ["companion" plugins](https://github.com/vdaburon/jmeter-graph-tool-maven-plugin#compagnion-tools). (Results Processing / Results Analysis)
README
# jmeter-graph-tool-maven-plugin
A maven plugin to create graphs using the **JMeter Plugins CMDRunner** from JMeter result files (\*.jtl or \*.csv) or using **Filter Results Tool**.
See [https://jmeter-plugins.org/wiki/JMeterPluginsCMD/](https://jmeter-plugins.org/wiki/JMeterPluginsCMD/) for more informations for graphs and graphs parameters.
See [https://jmeter-plugins.org/wiki/FilterResultsTool/](https://jmeter-plugins.org/wiki/FilterResultsTool/) for more informations for Filter Result Tools.
A fork from project [jmeter-graph-maven-plugin project](https://github.com/codecentric/jmeter-graph-maven-plugin) and renamed project, add 'tool' to the artifactId. With the permission of the old main developper Michael LEX (september 2021).
Global documentation for graphs : [Customizing graphs](https://jmeter-plugins.org/wiki/SettingsPanel/)
Note: DBMon monitoring graph do not work with this version (log library trouble)
## License
See the LICENSE file Apache 2 [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)## Graphs demo created by jmeter-graph-tool-maven-plugin
Some graphs generated with this pluginActive Threads Over Time with 2 Thread Groups

Response Times Over Time only pages for Thread Group SC01 force Y to 1000 ms

Response Times Over Time only pages for Thread Group SC03 force Y to 1000 ms

Response Codes per Second (http status)

Response Times Percentiles

Synthesis Report filtered with regular expression for label (the plugin creates only csv result file not this table display)

OS Monitoring CPU with PerfMon plugin

JMX Monitoring for Tomcat (JVM Memory with JMXMon plugin)

Apache httpd monitoring with Page Data Extractor plugin

## Usage
The maven groupId, artifactId and version, this plugin is in the **Maven Central Repository** [](https://maven-badges.herokuapp.com/maven-central/io.github.vdaburon/jmeter-graph-tool-maven-plugin)
```xml
io.github.vdaburon
jmeter-graph-tool-maven-plugin
1.2
```
Just include the plugin in your `pom.xml` and execute `mvn jmeter-graph:create-graph`.```xml
io.github.vdaburon
jmeter-graph-tool-maven-plugin
1.2
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_regex_filtred.csv
false
0.*
true
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_offset_filtred.jtl
false
2
20
true
ResponseTimesOverTime
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
${project.build.directory}/jmeter/results/ResponseTimesOverTime.png
800
600
50
no
no
2
20
0.*
true
1000
no
2
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
TransactionsPerSecond
800
600
${project.build.directory}/jmeter/results/TransactionsPerSecond.png
no
yes
no
PageDataExtractorOverTime
${project.build.directory}/jmeter/results/pde_httpd.jtl
${project.build.directory}/jmeter/results/pde_httpd_all_workers.png
(BusyWorkers|IdleWorkers):.*{;}[A-Za-z]+:.([0-9]+){;}false{;}true
1024
800
no
no
no
PageDataExtractorOverTime
${project.build.directory}/jmeter/results/pde_httpd.jtl
${project.build.directory}/jmeter/results/pde_httpd_busy_workers.png
(BusyWorkers):.*{;}BusyWorkers:.([0-9]+){;}false{;}true
1024
800
no
no
no
PerfMon
${project.build.directory}/jmeter/results/perfmon.csv
${project.build.directory}/jmeter/results/Perfmon_CPU.png
.*CPU.*
true
1024
800
no
no
no
PerfMon
${project.build.directory}/jmeter/results/perfmon.csv
${project.build.directory}/jmeter/results/Perfmon_Memory.png
.*Memory.*
true
1024
800
no
no
no
JMXMon
${project.build.directory}/jmeter/results/gest_jmx_tomcat.jtl
${project.build.directory}/jmeter/results/JMX_memory_jvm.png
used.HeapMemoryUsage.*
true
1024
800
no
no
no
JMXMon
${project.build.directory}/jmeter/results/gest_jmx_tomcat.jtl
${project.build.directory}/jmeter/results/JMX_currentThreadsBusy.png
.*currentThreadsBusy.*
true
1024
800
no
no
no
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
AggregateReport
${project.build.directory}/jmeter/results/AggregateReport.csv
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
ResponseCodesPerSecond
800
600
${project.build.directory}/jmeter/results/ResponseCodesPerSecond.png
no
no
no
${project.build.directory}/jmeter/testFiles
${jvm_xms}
${jvm_xmx}
-Duser.language=en
en
```
You can also bind the graph-generation to a maven-phase, e.g. `verify`:
```xml
io.github.vdaburon
jmeter-graph-tool-maven-plugin
1.2
create-graphs
create-graph
verify
ResponseTimesOverTime
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
${project.build.directory}/jmeter/results/ResponseTimesOverTime.png
1024
768
```
### Parameters for a graph (depends of the pluginType) :
- inputFile (mandatory)
- pluginType (mandatory)
- width
- height
- generatePng (mandatory depends of the pluginType)
- generateCsv (mandatory depends of the pluginType)
- granulation
- relativeTimes
- aggregateRows
- paintGradient
- paintZeroing
- paintMarkers
- preventOutliers
- limitRows
- forceY
- hideLowCounts
- successFilter
- includeLabels
- excludeLabels
- autoScale
- lineWeight
- extractorRegexps
- includeLabelRegex
- excludeLabelRegex
- startOffset
- endOffset### List of the graph plugins type
- AggregateReport [more informations](https://jmeter.apache.org/usermanual/component_reference.html#Aggregate_Report)
- SynthesisReport [more informations](https://jmeter-plugins.org/wiki/SynthesisReport/)
- ThreadsStateOverTime [more informations](https://jmeter-plugins.org/wiki/ActiveThreadsOverTime/)
- BytesThroughputOverTime [more informations](https://jmeter-plugins.org/wiki/BytesThroughput/)
- HitsPerSecond [more informations](https://jmeter-plugins.org/wiki/HitsPerSecond/)
- LatenciesOverTime [more informations](https://jmeter-plugins.org/wiki/LatenciesOverTime/)
- PerfMon [more informations](https://jmeter-plugins.org/wiki/PerfMon/)
- DbMon (trouble with this plugin because log library error) [more informations](https://jmeter-plugins.org/wiki/DbMon/)
- JMXMon [more informations](https://jmeter-plugins.org/wiki/JMXMon/)
- ResponseCodesPerSecond [more informations](https://jmeter-plugins.org/wiki/ResponseCodesPerSecond/)
- ResponseTimesDistribution [more informations](https://jmeter-plugins.org/wiki/RespTimesDistribution/)
- ResponseTimesOverTime [more informations](https://jmeter-plugins.org/wiki/ResponseTimesOverTime/)
- ResponseTimesPercentiles [more informations](https://jmeter-plugins.org/wiki/RespTimePercentiles/)
- ThroughputVsThreads [more informations](https://jmeter-plugins.org/wiki/TransactionThroughputVsThreads/)
- TimesVsThreads [more informations](https://jmeter-plugins.org/wiki/ResponseTimesVsThreads/)
- TransactionsPerSecond [more informations](https://jmeter-plugins.org/wiki/TransactionsPerSecond/)
- PageDataExtractorOverTime [more informations](https://jmeter-plugins.org/wiki/PageDataExtractor/)### Parameters for a filterResultsTool
- inputFile (path to the file to read)
- outputFile (path to the file to write)
- successFilter (true/false, true : only success samplers, false : all results by default)
- includeLabels (labels list with comma or label with regular expression)
- includeLabelRegex (true/false, true if your label is a regular expression)
- excludeLabels (labels list with comma or label with regular expression)
- excludeLabelRegex (true/false, true if your label is a regular expression))
- startOffset (integer, number of seconds since the start to remove)
- endOffset (integer, number of seconds offset to remove samplers after with value, keep samplers between startOffset and endOffset seconds)
- saveAsXml (true/false, false : CSV format by default)## user.properties and jmeter.properties
Files in the directory <directoryTestFiles> are **copied** by the **jmeter-graph-tool-maven-plugin** to the build directory <MAVEN_PROJECT_DIRECTORY>/target/jmeter/bin.You can put your jmeter.properties or your user.properties in the <MAVEN_PROJECT_DIRECTORY>/src/test/jmeter, files will be place by **jmeter-maven-plugin** in <MAVEN_PROJECT_DIRECTORY>/target/jmeter/testFiles (Note : ${project.build.directory} == <MAVEN_PROJECT_DIRECTORY>/target), and declare
```xml
${project.build.directory}/jmeter/testFiles
```You can also add or replace user properties values with the
```xml
propertyValue
E.g.en
will be : language=en in final the user.properties
```
Properties read order :default jmeter.properties **<** jmeter.properties in <MAVEN_PROJECT_DIRECTORY>/src/test/jmeter or <directoryTestFiles>${project.build.directory}/jmeter/testFiles
default user.properties **<** user.propertes in <MAVEN_PROJECT_DIRECTORY>/src/test/jmeter or <directoryTestFiles>${project.build.directory}/jmeter/testFiles **<** properties declared in the pom.xml under the <propertiesUser>
## JVM Setting
You could change the JVM setting with <jMeterProcessJVMSettings>- xms Memory Start unit MB
- xmx Memory Max unit MB
and arguments for more JVM configurationE.g :
```xml
1024
2048
-Duser.language=en
```
## Compagnion tools
This tools are also used with this maven plugin :* [JMReportCsvToHtml](https://github.com/vdaburon/JMReportCsvToHtml) Create a html table from report csv file (Report : Aggregate, Summary or Synthesis)
* [CreateHtmlForFilesInDirectory](https://github.com/vdaburon/CreateHtmlForFilesInDirectory) Recursively scans a directory looking for files of different types to generate a link or include the content in the generated html page. Create a little static web site.
* [CreateGitlabWikiPageForFilesInDirectory](https://github.com/vdaburon/CreateGitlabWikiPageForFilesInDirectory) Generating a Gitlab Wiki Page that references or includes various files.
* [JUnitReportKpiJMeterReportCsv](https://github.com/vdaburon/JUnitReportKpiJMeterReportCsv) Read KPI declarations in a file and apply the KPI assertion on a JMeter Report CSV file and generates a result file in JUnit XML format and export also in Html, CSV and JSON formats.
* [JUnitReportKpiCompareJMeterReportCsv](https://github.com/vdaburon/JUnitReportKpiCompareJMeterReportCsv) Compare 2 load tests JMeter Report CSV File and create a JUnit Report based on custom Key Performance Indicators (KPIs) and export also in Html, CSV and JSON formats.
* [JUnitReportKpiJMeterDashboardStats](https://github.com/vdaburon/JUnitReportKpiJMeterDashboardStats) Read KPI declarations in a file and apply the KPI assertion on a JMeter Dashboard Statistics Json file and generates a result file in JUnit XML format and export also in Html, CSV and JSON formats.### Tools installed with jmeter-plugins-manager from jmeter-plugins.org
This tools could be installed with the jmeter-plugins-manager in Apache JMeter.
* [JUnitReportKpiJMeterReportCsv](https://github.com/vdaburon/JUnitReportKpiJMeterReportCsv) Read KPI declarations in a file and apply the KPI assertion on a JMeter Report CSV file and generates a result file in JUnit XML format and export also in Html, CSV and JSON formats.
* [JUnitReportKpiCompareJMeterReportCsv](https://github.com/vdaburon/JUnitReportKpiCompareJMeterReportCsv) Compare 2 load tests JMeter Report CSV File and create a JUnit Report based on custom Key Performance Indicators (KPIs) and export also in Html, CSV and JSON formats.
* [JUnitReportKpiJMeterDashboardStats](https://github.com/vdaburon/JUnitReportKpiJMeterDashboardStats) Read KPI declarations in a file and apply the KPI assertion on a JMeter Dashboard Statistics Json file and generates a result file in JUnit XML format and export also in Html, CSV and JSON formats.## Full example
A full example, use **jmeter-maven-plugin** [see](https://github.com/jmeter-maven-plugin/jmeter-maven-plugin) and **jmeter-graph-tool-maven-plugin**.Launch load test and the monitoring (PerfMon, JMXMon, Page Data Extractor), then filter results and generate graphs and Aggregate Report.
Use maven-phase `verify`
```xml
4.0.0
io.github.vdaburon.jmeter
jm_maven
1.3
UTF-8
1.8
1.8
256
756
20
180
com.lazerycode.jmeter
jmeter-maven-plugin
3.6.1
configuration
configure
jmeter-tests
jmeter
mysql:mysql-connector-java:8.0.30
kg.apc:jmeter-plugins-functions:2.2
kg.apc:jmeter-plugins-casutg:2.10
kg.apc:jmeter-plugins-dummy:0.4
kg.apc:jmeter-plugins-dbmon:0.1
kg.apc:jmeter-plugins-jmxmon:0.3
kg.apc:jmeter-plugins-pde:0.1
kg.apc:jmeter-plugins-perfmon:2.1
kg.apc:jmeter-plugins-graphs-basic:2.0
kg.apc:jmeter-plugins-cmn-jmeter:0.7
commons-pool2:commons-pool2
true
${jvm_xms}
${jvm_xmx}
${project.build.directory}/jmeter
${nb_vusers}
${duration}
false
false
csv
io.github.vdaburon
jmeter-graph-tool-maven-plugin
1.2
create-graphs
create-graph
verify
${project.build.directory}/jmeter/testFiles
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_regex_filtred.csv
false
0.*
true
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_offset_filtred.jtl
false
2
20
true
AggregateReport
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
${project.build.directory}/jmeter/results/AggregateReport.csv
ResponseTimesOverTime
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
${project.build.directory}/jmeter/results/ResponseTimesOverTime.png
800
600
50
no
no
2
20
0.*
true
1000
no
4
LatenciesOverTime
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
800
600
${project.build.directory}/jmeter/results/LatenciesOverTime.png
no
no
ResponseCodesPerSecond
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
800
600
${project.build.directory}/jmeter/results/ResponseCodesPerSecond.png
no
no
ResponseTimesDistribution
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
800
600
${project.build.directory}/jmeter/results/ResponseTimesDistribution.png
no
ResponseTimesOverTime
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
800
600
${project.build.directory}/jmeter/results/ResponseTimesOverTime.png
no
no
ResponseTimesPercentiles
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
800
600
${project.build.directory}/jmeter/results/ResponseTimesPercentiles.png
no
ThroughputVsThreads
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
800
600
${project.build.directory}/jmeter/results/ThroughputVsThreads.png
no
TimesVsThreads
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
800
600
${project.build.directory}/jmeter/results/TimesVsThreads.png
no
TransactionsPerSecond
${project.build.directory}/jmeter/results/gestdoc_sc01_menu_local_monit.csv
800
600
${project.build.directory}/jmeter/results/TransactionsPerSecond.png
no
yes
no
PageDataExtractorOverTime
${project.build.directory}/jmeter/results/pde_httpd.jtl
${project.build.directory}/jmeter/results/pde_httpd_all_workers.png
(BusyWorkers|IdleWorkers):.*{;}[A-Za-z]+:.([0-9]+){;}false{;}true
1024
800
no
no
PageDataExtractorOverTime
${project.build.directory}/jmeter/results/pde_httpd.jtl
${project.build.directory}/jmeter/results/pde_httpd_busy_workers.png
(BusyWorkers):.*{;}BusyWorkers:.([0-9]+){;}false{;}true
1024
800
no
no
PerfMon
${project.build.directory}/jmeter/results/perfmon.csv
${project.build.directory}/jmeter/results/Perfmon_CPU.png
.*CPU.*
true
1024
800
no
no
PerfMon
${project.build.directory}/jmeter/results/perfmon.csv
${project.build.directory}/jmeter/results/Perfmon_Memory.png
.*Memory.*
true
1024
800
no
no
JMXMon
${project.build.directory}/jmeter/results/gest_jmx_tomcat.jtl
${project.build.directory}/jmeter/results/JMX_memory_jvm.png
used.HeapMemoryUsage.*
true
1024
800
no
no
JMXMon
${project.build.directory}/jmeter/results/gest_jmx_tomcat.jtl
${project.build.directory}/jmeter/results/JMX_currentThreadsBusy.png
.*currentThreadsBusy.*
true
1024
800
no
no
${project.build.directory}/jmeter/testFiles
${jvm_xms}
${jvm_xmx}
-Duser.language=en
```