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: 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.

Lists

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 plugin

Active 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 configuration

E.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.1
kg.apc:jmeter-plugins-casutg:2.9
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.3


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


${jvm_xms}
${jvm_xmx}

-Duser.language=en







```