5e060d5620
* Fix linting errors Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * feat(linters): add ineffassign linter This commit adds the `ineffassign` linter to the project's `.golangci.yml` configuration file. The `ineffassign` linter helps identify and flag assignments to variables that are never used, helping to improve code quality and maintainability. Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * Add extra linters Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * feat(golangci): Add header check - Added goheader check to ensure all files have license headers - Added build tags for "nats" in the .golangci.yml file to include the necessary dependencies for the "nats" package during the build process. - Also, increased the maximum number of issues per linter and the maximum number of same issues reported by the linter to improve the code quality analysis. Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * feat(.golangci.yml): Add new linters Add the following new linters to the .golangci.yml configuration file: - asasalint - asciicheck - bidichk - contextcheck - decorder - dogsled - errchkjson - errname - execinquery - exportloopref - ginkgolinter - gocheckcompilerdirectives These linters will help improve code quality and catch potential issues during the code review process. Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> --------- Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> |
||
---|---|---|
.. | ||
cmd | ||
scripts | ||
templates | ||
Makefile | ||
README.md | ||
bench.go | ||
client.go | ||
config.go | ||
doc.go | ||
results.go |
README.md
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 extensive load and benchmarking of MQTT brokers used within Mainflux platform.
Complete documentation is available at https://docs.mainflux.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
-t, --timeout Timeout mqtt messages (default 10000)
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 (channels, thingIDs, thingKeys, certs).
You can use provision
tool (in tools/provision) to create this TOML config file.
go run tools/mqtt-bench/cmd/main.go -u test@mainflux.com -p test1234 --host http://127.0.0.1 --num 100 > tools/mqtt-bench/mfconn.toml
Example use and output
Without mtls:
go run tools/mqtt-bench/cmd/main.go --broker tcp://localhost:1883 --count 100 --size 100 --qos 0 --format text --pubs 10 --mainflux tools/mqtt-bench/mfconn.toml
With mtls go run tools/mqtt-bench/cmd/main.go --broker tcps://localhost:8883 --count 100 --size 100 --qos 0 --format text --pubs 10 --mainflux tools/mqtt-bench/mfconn.toml --mtls -ca docker/ssl/certs/ca.crt
You can use `config.toml` to create tests with this tool:
go run tools/mqtt-bench/cmd/main.go --config tools/mqtt-bench/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 count = 100
[log] quiet = false
[mainflux] connections_file = "mfconn.toml"
Based on this, a test scenario is provided in `templates/reference.toml` file.