Sign inSign up

egaillardon/jmeter-plugins

By egaillardon

•Updated over 6 years ago

Docker image for Apache JMeter and JMeter plugins (no more updates since 07/24/2020)

Image
11

500K+

egaillardon/jmeter-plugins repository overview

⁠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/⁠

⁠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
VariableDescriptionDefault value
GC_ALGOJava runtime options to specify JVM garbage collection algorithm"-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20"
VERBOSE_GCJava 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"
HEAPJava runtime options for memory management used when JMeter is started"-Xms1g -Xmx1g -X:MaxMetaspaceSize=256m"
JMETER_LANGUAGEJava runtime options to specify used language"-Duser.language=en -Duser.region=EN"
JMETER_OPTSJava runtime options used when JMeter is started""
JVM_ARGSOptional java args, e.g. -Dprop=val""
JMETER_GROUP_IDSet the jmeter user's group id inside the container1000
JMETER_USER_IDSet the jmeter user's id inside the container1000
⁠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

Tag summary

Content type

Image

Digest

Size

262.9 MB

Last updated

over 6 years ago

docker pull egaillardon/jmeter-plugins