All Projects → egaillardon → jmeter-plugins

egaillardon / jmeter-plugins

Licence: Unlicense License
Docker image for Apache JMeter with JMeter plugins - https://jmeter.apache.org & https://jmeter-plugins.org

Programming Languages

Dockerfile
14818 projects
shell
77523 projects

Projects that are alternatives of or similar to jmeter-plugins

Jmeter Maven Plugin
The JMeter Maven Plugin
Stars: ✭ 362 (+1710%)
Mutual labels:  load-testing, jmeter
jmeter-grpc-plugin
A JMeter plugin supports load test gRPC
Stars: ✭ 36 (+80%)
Mutual labels:  load-testing, jmeter
Performance Testing Framework
Framework allows to perform load testing with Apache Jmeter, view application/server metrics in real-time with Grafana, analyze errors cause with detailed traces for failed requests, compare different test runs in scripted dashboard and perform frontend performance testing with sitespeed.io+webpagetest
Stars: ✭ 275 (+1275%)
Mutual labels:  load-testing, jmeter
Jmeter Ec2
Automates running Apache JMeter on Amazon EC2
Stars: ✭ 448 (+2140%)
Mutual labels:  load-testing, jmeter
jmeter-grpc-request
JMeter gRPC Request load test plugin for gRPC
Stars: ✭ 137 (+585%)
Mutual labels:  load-testing, jmeter
jmeter-aci-terraform
Scalable cloud load/stress testing pipeline solution with Apache JMeter and Terraform to dynamically provision and destroy the required infrastructure on Azure.
Stars: ✭ 114 (+470%)
Mutual labels:  load-testing, jmeter
Awesome Jmeter
A collection of resources covering different aspects of JMeter usage.
Stars: ✭ 413 (+1965%)
Mutual labels:  load-testing, jmeter
Taurus
Automation-friendly framework for Continuous Testing by
Stars: ✭ 1,566 (+7730%)
Mutual labels:  load-testing, jmeter
Performance Plugin
Performance Test Running and Reporting for Jenkins CI
Stars: ✭ 176 (+780%)
Mutual labels:  load-testing, jmeter
jmeter-to-k6
Converts JMeter .jmx files to k6 JS code
Stars: ✭ 57 (+185%)
Mutual labels:  load-testing, jmeter
StressThing
a software testing platform to perform stress test on web of things
Stars: ✭ 12 (-40%)
Mutual labels:  load-testing, jmeter
ab-go
apache ab testing tool port in golang
Stars: ✭ 20 (+0%)
Mutual labels:  load-testing
f1
A tool for writing load test scenarios in Golang with a powerful command line runner
Stars: ✭ 81 (+305%)
Mutual labels:  load-testing
jmeter-rmi-plugin
Plugin to add support for recording and playing back RMI calls
Stars: ✭ 14 (-30%)
Mutual labels:  jmeter
blockchain-load-testing
Code for load testing the Stellar network.
Stars: ✭ 36 (+80%)
Mutual labels:  load-testing
k6-template-es6
Template repository for bundling test projects into single test scripts runnable by k6
Stars: ✭ 39 (+95%)
Mutual labels:  load-testing
baton
HTTP load testing witten in Go
Stars: ✭ 177 (+785%)
Mutual labels:  load-testing
grandma
👵 fully programmable stress testing framework
Stars: ✭ 20 (+0%)
Mutual labels:  load-testing
yandex-tank-api
HTTP API for Yandex.Tank
Stars: ✭ 16 (-20%)
Mutual labels:  load-testing
karate-runner
VSCode Extension for Karate
Stars: ✭ 23 (+15%)
Mutual labels:  load-testing

Docker image for Apache JMeter and JMeter plugins

Apache JMeter Logo JMeter PLugins Logo

Docker Stars Docker Pulls Docker Automated build Docker Build Status

Github Stars Github Forks

Follow Tweet

  • Apache JMeter : an application designed to load test functional behavior and measure performance - https://jmeter.apache.org

  • JMeter Plugins : an independent set of plugins - https://jmeter-plugins.org

  • The version number is composed of two version numbers

    • the first is the version of the Apache JMeter embedded in this docker image
    • the second is for this docker image itself

Apache JMeter including all plugins available with the JMeter Plugins Manager

  • egaillardon/jmeter-plugins

For a Docker image containing only Apache JMeter, see https://hub.docker.com/r/egaillardon/jmeter/

Supported tags and respective Dockerfile links

Quick reference

How to use this image

Working directory

The working directory defined in the Dockerfile is /jmeter.

Default User

The default user is jmeter.

Environment variables

Variable Description Default value
GC_ALGO Java runtime options to specify JVM garbage collection algorithm "-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20"
VERBOSE_GC Java runtime options to generate GC verbose file "-verbose:gc -Xloggc:gc_jmeter_%p.log -XX:+PrintGCDetails -XX:+PrintGCCause -XX:+PrintTenuringDistribution -XX:+PrintHeapAtGC -XX:+PrintGCApplicationConcurrentTime -XX:+PrintAdaptiveSizePolicy -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDateStamps"
HEAP Java runtime options for memory management used when JMeter is started "-Xms1g -Xmx1g -X:MaxMetaspaceSize=256m"
JMETER_LANGUAGE Java runtime options to specify used language "-Duser.language=en -Duser.region=EN"
JMETER_OPTS Java runtime options used when JMeter is started ""
JVM_ARGS Optional java args, e.g. -Dprop=val ""
JMETER_GROUP_ID Set the jmeter user's group id inside the container 1000
JMETER_USER_ID Set the jmeter user's id inside the container 1000

Running clients and servers

Running standalone clients

Runner an interactive dockerized client in non-GUI mode

docker run --interactive --tty --rm --volume `pwd`:/jmeter egaillardon/jmeter-plugins --nongui --testfile test.jmx --logfile result.jtl

Runner a detached dockerized client in non-GUI mode

docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter-plugins --nongui --testfile test.jmx --logfile result.jtl

Running servers

Running a server on 192.168.1.1 with default RMI port (1099) and SSL for RMI disabled

docker run --detach --publish 1099:1099 --rm egaillardon/jmeter-plugins -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.1.1 -Jserver.rmi.localport=1099 --server

Running a server on 192.168.1.1 with specified RMI port (1098) and SSL for RMI disabled

docker run --detach --publish 1098:1098 --rm egaillardon/jmeter-plugins -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.1.1 -Jserver.rmi.localport=1098 -Dserver_port=1098 --server

Running clients in distributed tesing mode

Running a client in non-GUI mode with SSL for RMI disabled, connecting to a remote server on 192.168.1.1 with default RMI port (1099)
  • with docker

docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter-plugins -Jserver.rmi.ssl.disable=true --nongui --testfile test.jmx --remotestart 192.168.1.1 --logfile result.jtl

  • without docker

jmeter -Jserver.rmi.ssl.disable=true --nongui --testfile ../test.jmx --remotestart 192.168.1.1 --logfile result.jtl

Running a dockerized client in non-GUI mode with SSL for RMI disabled, connecting to a remote server on 192.168.1.1 with specfied RMI port (1098)
  • with docker

docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter-plugins -Jserver.rmi.ssl.disable=true --nongui --testfile test.jmx --remotestart 192.168.1.1:1098 --logfile result.jtl

  • without docker

jmeter -Jserver.rmi.ssl.disable=true --nongui --testfile ../test.jmx --remotestart 192.168.1.1:1098 --logfile result.jtl

Running a dockerized client in non-GUI mode with SSL for RMI disabled, connecting to the two remote servers on 192.168.1.1
  • with docker

docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter-plugins -Jserver.rmi.ssl.disable=true --nongui --testfile test.jmx --remotestart 192.168.1.1:1098,192.168.1.1:1099 --logfile result.jtl

  • without docker

jmeter -Jserver.rmi.ssl.disable=true --nongui --testfile ../test.jmx --remotestart 192.168.1.1:1098,192.168.1.1:1099 --logfile result.jtl

An example that generates a report at the end of the run

docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter-plugins -Jserver.rmi.ssl.disable=true --nongui --testfile test.jmx --remotestart 192.168.1.1:1098,192.168.1.1:1099 --logfile result.jtl --forceDeleteResultFile --reportatendofloadtests --reportoutputfolder report -Jjmeter.reportgenerator.overall_granularity=10000

Full list of command-line options

Command

docker run --interactive --tty --rm egaillardon/jmeter-plugins

Result

--?
  print command line options and exit
-h, --help
  print usage information and exit
-v, --version
  print the version information and exit
-p, --propfile <argument>
  the jmeter property file to use
-q, --addprop <argument>
  additional JMeter property file(s)
-t, --testfile <argument>
  the jmeter test(.jmx) file to run. "-t LAST" will load last
  used file
-l, --logfile <argument>
  the file to log samples to
-i, --jmeterlogconf <argument>
  jmeter logging configuration file (log4j2.xml)
-j, --jmeterlogfile <argument>
  jmeter run log file (jmeter.log)
-n, --nongui
  run JMeter in nongui mode
-s, --server
  run the JMeter server
-E, --proxyScheme <argument>
  Set a proxy scheme to use for the proxy server
-H, --proxyHost <argument>
  Set a proxy server for JMeter to use
-P, --proxyPort <argument>
  Set proxy server port for JMeter to use
-N, --nonProxyHosts <argument>
  Set nonproxy host list (e.g. *.apache.org|localhost)
-u, --username <argument>
  Set username for proxy server that JMeter is to use
-a, --password <argument>
  Set password for proxy server that JMeter is to use
-J, --jmeterproperty <argument>=<value>
  Define additional JMeter properties
-G, --globalproperty <argument>=<value>
  Define Global properties (sent to servers)
  e.g. -Gport=123
   or -Gglobal.properties
-D, --systemproperty <argument>=<value>
  Define additional system properties
-S, --systemPropertyFile <argument>
  additional system property file(s)
-f, --forceDeleteResultFile
  force delete existing results files and web report folder if
   present before starting the test
-L, --loglevel <argument>=<value>
  [category=]level e.g. jorphan=INFO, jmeter.util=DEBUG or com
  .example.foo=WARN
-r, --runremote
  Start remote servers (as defined in remote_hosts)
-R, --remotestart <argument>
  Start these remote servers (overrides remote_hosts)
-d, --homedir <argument>
  the jmeter home directory to use
-X, --remoteexit
  Exit the remote servers at end of test (non-GUI)
-g, --reportonly <argument>
  generate report dashboard only, from a test results file
-e, --reportatendofloadtests
  generate report dashboard after load test
-o, --reportoutputfolder <argument>
  output folder for report dashboard

Tips and tricks

Stopping a server after the end of the test

Set the JMeter property server.exitaftertest to true.

docker run --detach --publish 1099:1099 --rm egaillardon/jmeter-plugins -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.1.15 -Jserver.rmi.localport=1099 -Jserver.exitaftertest=true --server

Stopping a test before the end

Replace relaxed_kilby by your client container id or name.

docker exec -it relaxed_kilby shutdonwn.sh
or
docker exec -it relaxed_kilby stoptest.sh

Setting a fixed RMI port on the client side

Set the JMeter property client.rmi.localport (useful when there is a firewall between the client and servers).

docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter-plugins -Jserver.rmi.ssl.disable=true -Jclient.rmi.localport=2500 --nongui --testfile test.jmx --remotestart 192.168.1.15:1098,192.168.1.15:1099 --logfile result.jtl

Sending the content of the jmeter log file to console

Set the jmeterlogconf option in order to use another log4j2.xml file (see the example file provided)

docker run --detach --publish 1099:1099 --volume `pwd`:/jmeter --rm egaillardon/jmeter-plugins -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.1.15 -Jserver.rmi.localport=1099 -Dserver_port=1099 --server --jmeterlogconf log4j2.xml

Running a client in GUI mode, with SSL for RMI disabled, to connect to remote servers

jmeter -Jremote_hosts=192.168.1.1 -Jserver.rmi.ssl.disable=true

SSL for RMI

In distributed testing, SSL for RMI has to be enabled or disabled on both sides. See Apache JMeter Remote Testing for more information.

Getting the IP address

  • On Linux

hostname -I
/sbin/ifconfig eth0 | grep 'inet '| awk '{ print $2}'

  • On macOS

ipconfig getifaddr en0
/sbin/ifconfig en0 | grep 'inet '| awk '{ print $2}'

Setting your timezone in the docker container

  • Add the TZ environment variable

docker run --detach --publish 1099:1099 --env TZ=Europe/Paris --rm egaillardon/jmeter-plugins

Assigning the local user's id and group to the jmeter user inside the container

docker run --env JMETER_GROUP_ID=/usr/bin/id -g --env JMETER_USER_ID=/usr/bin/id -u --rm egaillardon/jmeter --server -Jserver.rmi.ssl.disable=true

Running JMeter in GUI mode from Docker using X11-forwarding (Pull request #2 submitted by @ericpeters)

Install Quartz
  • Install the latest XQuartz X11 server (https://www.xquartz.org/) and run it
  • Activate the option ‘Allow connections from network clients’ in XQuartz settings
  • Quit & restart XQuartz (to activate the setting)
Run Interactive UI
# allow access from localhost
xhost + 127.0.0.1

docker pull egaillardon/jmeter-plugins
docker run -e DISPLAY=host.docker.internal:0 --interactive --tty --rm egaillardon/jmeter-plugins jmeter.sh

Changelog

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].