JMeter Load Testing Center (codename jltc
) - dashboard/report analyzer for load testing with JMeter (http://jmeter.apache.org/).
Developed and used in Innogames GmbH (www.innogames.com) to provide load tests results.
Online web-application/dashboard for "continuous integration" (CI) Load testing with JMeter.
A central system for launching (incl. distribution testing), monitoring tests, creating reports and for a comparative analysis between different load tests provided with Jmeter.
Can be used with Jenkins or as a replacement for Jenkins + Plugins + Jmeter combination.
Consist of several modules:
- Analyzer - build reports, analyze results and compare results with another.
- Online - online monitoring for running tests
- Controller - configure and run the tests
- Administrator - configure different parameters
Create dynamic report for the tests
Get a performance trends for all test results
Get fancy good-readable aggregate table for the test:
Get detailed report for executed action:
Get response times, rps, errors data from test:
Provides online test monitoring, reads .csv result files and builds graphs online without Graphite,plugins,etc:
Configure and start tests, using normal or distribution testing. Possible to configure and run pre- and post-test bash-scripts (currently on development) and additional JMeter test-plan parameters:
The application comes with:
- [c3.js] (http://c3js.org)
- jQuery
- Twitter Bootstrap
- Highlights.js
- nvd3
Current requirements.txt
file is:
python=2.7
django_debug_toolbar==1.7
Django==1.10.5
matplotlib==1.4.3
numpy==1.10.0
pandas==0.17.0
psutil==5.2.1
matplotlib==1.4.3
SQLAlchemy==1.1.3
For data storage uses Postgres (9.5+). Supports Linux and Windows.
You have to download project files in your folder: $ cd /home/ $ git clone git://github.com/v0devil/JMeter-Control-Center.git
Right there, you will find the requirements.txt file that has all tools, django. To install them, simply type:
$ pip install -r requirements.txt
Also probably will be needed to install the next packages:
$ apt-get install python-matplotlib
$ apt-get install python-tk
First set the database engine (only PostgreSQL 9.5+) in your settings files; jltc/settings.py
Of course, remember to install necessary database driver for your engine. Then define your credentials as well.
By default jltc will use jltc
schema in database, which needs to be created:
su - postgres
psql
\c YOUR_DATABASE_NAME
CREATE SCHEMA jltc AUTHORIZATION your_user_name;
Then execute in jltc folder:
./manage.py makemigrations
./manage.py migrate
./manage.py syncdb
nohup python manage.py runserver 8888 &
Current implementation of jltc supports only CSV result files. By default to save results from your test you have to add SimpleDataWriter listener with the next parameters:
<ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="results writer"
enabled="true">
<boolProp name="ResultCollector.error_logging">false</boolProp>
<objProp>
<name>saveConfig</name>
<value class="SampleSaveConfiguration">
<time>true</time>
<latency>true</latency>
<timestamp>true</timestamp>
<success>true</success>
<label>true</label>
<code>true</code>
<message>false</message>
<threadName>false</threadName>
<dataType>false</dataType>
<encoding>false</encoding>
<assertions>false</assertions>
<subresults>false</subresults>
<responseData>false</responseData>
<samplerData>false</samplerData>
<xml>false</xml>
<fieldNames>true</fieldNames>
<responseHeaders>false</responseHeaders>
<requestHeaders>false</requestHeaders>
<responseDataOnError>false</responseDataOnError>
<saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
<assertionsResultsToSave>0</assertionsResultsToSave>
<bytes>true</bytes>
<threadCounts>true</threadCounts>
</value>
</objProp>
<stringProp name="filename">/tmp/file</stringProp>
<stringProp name="TestPlan.comments">Added automatically</stringProp>
</ResultCollector>
It is possible to use this application in cooperation with Jenkins. (if to start with Yandex-tank https://github.com/yandex/yandex-tank)
To parse data after the test just add in Jenkins post-job script:
curl --data "results_dir=$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_NUMBER/" http://localhost:8888/controller/parse_results
OR
datagenerator_linux.py
To use with HTML Pulblisher plugin (https://wiki.jenkins.io/display/JENKINS/HTML+Publisher+Plugin) set this values in project setting in Publish HTML reports section:
HTML directory to archive: `$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_NUMBER/`
Index page[s]: `https://URL/?action=getbuilddata&project_name=$JOB_NAME&build_number=$BUILD_NUMBER`
Keep past HTML reports: `enabled`