1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-27 13:48:49 +08:00
Mirko Teodorovic 640dfb7e19 NOISSUE - update mqtt prov tool and some refactor (#831)
* refactor code

Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>

* connect each thing with each channel

Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>

* add some comments

Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>

* connect each thing with each channel

Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>

* reverting - structure fields must be exported

Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>

* reverting - structure fields must be exported

Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>

* revert some names

Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>

* move meausuring time start

Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>

* revert changes to .gitignore

Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>

* small changes

Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
2019-09-05 13:39:58 +02:00
..

MQTT Benchmarking Tool

A simple MQTT benchmarking tool for Mainflux platform.

It connects Mainflux things as subscribers over a number of channels and uses other Mainflux things to publish messages and create MQTT load.

Mainflux things used must be pre-provisioned first, and Mainflux provision tool can be used for this purpose.

Installation

cd tools/mqtt-bench
make

Usage

The tool supports multiple concurrent clients, publishers and subscribers configurable message size, etc:

./mqtt-bench --help
Tool for exctensive load and benchmarking of MQTT brokers used within Mainflux platform.
Complete documentation is available at https://mainflux.readthedocs.io

Usage:
  mqtt-bench [flags]

Flags:
  -b, --broker string     address for mqtt broker, for secure use tcps and 8883 (default "tcp://localhost:1883")
      --ca string         CA file (default "ca.crt")
  -c, --config string     config file for mqtt-bench (default "config.toml")
  -n, --count int         Number of messages sent per publisher (default 100)
  -f, --format string     Output format: text|json (default "text")
  -h, --help              help for mqtt-bench
  -m, --mainflux string   config file for Mainflux connections (default "connections.toml")
      --mtls              Use mtls for connection
  -p, --pubs int          Number of publishers (default 10)
  -q, --qos int           QoS for published messages, values 0 1 2
      --quiet             Supress messages
  -r, --retain            Retain mqtt messages
  -z, --size int          Size of message payload bytes (default 100)
  -t, --skipTLSVer        Skip tls verification
  -s, --subs int          Number of subscribers (default 10)

Two output formats supported: human-readable plain text and JSON.

Before use you need a mfconn.toml - a TOML file that describes Mainflux connection data (channles, thingIDs, thingKeys, certs). You can use provision tool (in tools/provision) to create this TOML config file.

Example use and output

Without mtls:

./mqtt-bench --broker tcp://localhost:1883 --count 100 --size 100 --qos 0 --format text --subs 100 --pubs 0 --mainflux mfconn.toml

With mtls ./mqtt-bench --broker tcps://localhost:8883 --count 100 --size 100 --qos 0 --format text --subs 100 --pubs 0 --mainflux mfconn.toml --mtls -ca ca.crt


You can use `config.toml` to create tests with this tool:

./mqtt-bench --config config.toml


Example of `config.toml`:

[mqtt] [mqtt.broker] url = "tcp://localhost:1883"

[mqtt.message] size = 100 format = "text" qos = 2 retain = true

[mqtt.tls] mtls = false skiptlsver = true ca = "ca.crt"

[test] pubs = 3 subs = 1 count = 100

[log] quiet = false

[mainflux] connections_file = "mfconn.toml"


Based on this, a set of test scenarios (templates) is provided. For example:

./mqtt-benchmark --config tests/fanin.toml


Additionally, you can use script which will run series of tests (scenarios) using mqtt-bench:

cd tools/mqtt-bench/scripts ./mqtt-bench.sh mainflux mainflux.com mfconn.toml