Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 3 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 (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-07-07T15:31:54.000Z (over 1 year ago)
- Last Synced: 2024-05-07T18:13:28.947Z (6 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: 8
- 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
![Active Threads Over Time.png with 2 Thread Groups](graphs_demo/Active%20Threads%20Over%20Time.png)
Response Times Over Time only pages for Thread Group SC01 force Y to 1000 ms
![Response Times Over Time SC01](graphs_demo/Response%20Times%20Over%20Time%20SC01.png)
Response Times Over Time only pages for Thread Group SC03 force Y to 1000 ms
![Response Times Over Time SC03](graphs_demo/Response%20Times%20Over%20Time%20SC03.png)
Response Codes per Second (http status)
![Response Codes per Second](graphs_demo/Response%20Codes%20per%20Second.png)
Response Times Percentiles
![Response Times Percentiles](graphs_demo/Response%20Times%20Percentiles.png)
Synthesis Report filtered with regular expression for label (the plugin creates only csv result file not this table display)
![Synthesis Report](graphs_demo/Synthesis%20Report.png)
OS Monitoring CPU with PerfMon plugin
![OS CPU](graphs_demo/Perfmon_CPU.png)
JMX Monitoring for Tomcat (JVM Memory with JMXMon plugin)
![JMX Monitoring](graphs_demo/JMX_memory_jvm.png)
Apache httpd monitoring with Page Data Extractor plugin
![Page Data Extractor Monitoring process use for httpd](graphs_demo/pde_httpd_all_workers.png)
## Usage
The maven groupId, artifactId and version, this plugin is in the **Maven Central Repository** [![Maven Central jmeter-graph-tool-maven-plugin](https://maven-badges.herokuapp.com/maven-central/io.github.vdaburon/jmeter-graph-tool-maven-plugin/badge.svg)](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
```