2019-08-30 14:09:12 +02:00
|
|
|
// Copyright (c) Mainflux
|
|
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
2023-06-14 12:40:37 +02:00
|
|
|
// Package main contains the entry point of the mqtt-bench tool.
|
2019-08-27 12:21:39 +00:00
|
|
|
package main
|
2019-08-13 10:56:31 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
|
|
|
|
2019-09-06 12:59:35 +00:00
|
|
|
bench "github.com/mainflux/mainflux/tools/mqtt-bench"
|
2019-08-13 10:56:31 +00:00
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/spf13/viper"
|
|
|
|
)
|
|
|
|
|
2019-08-27 12:21:39 +00:00
|
|
|
func main() {
|
2019-08-30 14:09:12 +02:00
|
|
|
confFile := ""
|
|
|
|
bconf := bench.Config{}
|
|
|
|
|
|
|
|
// Command
|
|
|
|
var rootCmd = &cobra.Command{
|
|
|
|
Use: "mqtt-bench",
|
|
|
|
Short: "mqtt-bench is MQTT benchmark tool for Mainflux",
|
MF-1718 - Use static code analysis in CI (#1729)
* things, twins, and logger lint fixed
Signed-off-by: aryan <aryangodara03@gmail.com>
* all services updated, auth jwt not working, ineffectual assignment issue
Signed-off-by: aryan <aryangodara03@gmail.com>
* handle error from grpc server in endpointtest
Signed-off-by: aryan <aryangodara03@gmail.com>
* temp commit, auth/jwt needs to be resolved
Signed-off-by: aryan <aryangodara03@gmail.com>
* revert back to jwt v4 temporarily
Signed-off-by: aryan <aryangodara03@gmail.com>
* updated jwt tokenizer
Signed-off-by: aryan <aryangodara03@gmail.com>
* resolve EOF error for httptest requests
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix auth jwt, update to registeredclaims
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix ineffective assignment, auth/api/grpc endpoint failing
Signed-off-by: aryan <aryangodara03@gmail.com>
* temp commit, remove later
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix grpc server setup
Signed-off-by: aryan <aryangodara03@gmail.com>
* resolve golangci tests, remove debug statements
Signed-off-by: aryan <aryangodara03@gmail.com>
* update golangci version and modify linters used
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix failing tests
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix grpc server for setup tests
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix logging and errors inlined
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix remarks, update grpc setup_test
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix setup_test
Signed-off-by: aryan <aryangodara03@gmail.com>
* update setup_test grpc
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix data race
Signed-off-by: aryan <aryangodara03@gmail.com>
* update setup_test grpc
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix grpc setup down to single simple function
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix linting issues
Signed-off-by: aryan <aryangodara03@gmail.com>
* resolve pr comments
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix tests, handle returned errors, go mod tidy vendor
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix errors from new linters
Signed-off-by: aryan <aryangodara03@gmail.com>
---------
Signed-off-by: aryan <aryangodara03@gmail.com>
2023-04-22 08:14:35 -07:00
|
|
|
Long: `Tool for exctensive load and benchmarking of MQTT brokers used within the Mainflux platform.
|
2021-06-23 13:31:46 +02:00
|
|
|
Complete documentation is available at https://docs.mainflux.io`,
|
2019-08-30 14:09:12 +02:00
|
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
|
|
if confFile != "" {
|
|
|
|
viper.SetConfigFile(confFile)
|
|
|
|
|
|
|
|
if err := viper.ReadInConfig(); err != nil {
|
2023-02-22 20:50:51 +01:00
|
|
|
log.Printf("Failed to load config - %s", err)
|
2019-08-30 14:09:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if err := viper.Unmarshal(&bconf); err != nil {
|
|
|
|
log.Printf("Unable to decode into struct, %v", err)
|
|
|
|
}
|
2019-08-13 10:56:31 +00:00
|
|
|
}
|
|
|
|
|
2023-07-28 04:01:27 +03:00
|
|
|
if err := bench.Benchmark(bconf); err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
2019-08-30 14:09:12 +02:00
|
|
|
},
|
2019-08-13 10:56:31 +00:00
|
|
|
}
|
|
|
|
|
2019-08-30 14:09:12 +02:00
|
|
|
// Flags
|
|
|
|
// MQTT Broker
|
|
|
|
rootCmd.PersistentFlags().StringVarP(&bconf.MQTT.Broker.URL, "broker", "b", "tcp://localhost:1883",
|
|
|
|
"address for mqtt broker, for secure use tcps and 8883")
|
2019-08-13 10:56:31 +00:00
|
|
|
|
2019-08-30 14:09:12 +02:00
|
|
|
// MQTT Message
|
|
|
|
rootCmd.PersistentFlags().IntVarP(&bconf.MQTT.Message.Size, "size", "z", 100, "Size of message payload bytes")
|
2019-09-06 12:59:35 +00:00
|
|
|
rootCmd.PersistentFlags().StringVarP(&bconf.MQTT.Message.Payload, "payload", "l", "", "Template message")
|
2019-08-30 14:09:12 +02:00
|
|
|
rootCmd.PersistentFlags().StringVarP(&bconf.MQTT.Message.Format, "format", "f", "text", "Output format: text|json")
|
|
|
|
rootCmd.PersistentFlags().IntVarP(&bconf.MQTT.Message.QoS, "qos", "q", 0, "QoS for published messages, values 0 1 2")
|
|
|
|
rootCmd.PersistentFlags().BoolVarP(&bconf.MQTT.Message.Retain, "retain", "r", false, "Retain mqtt messages")
|
2019-11-16 16:20:29 +01:00
|
|
|
rootCmd.PersistentFlags().IntVarP(&bconf.MQTT.Timeout, "timeout", "o", 10000, "Timeout mqtt messages")
|
2019-08-13 10:56:31 +00:00
|
|
|
|
2019-08-30 14:09:12 +02:00
|
|
|
// MQTT TLS
|
|
|
|
rootCmd.PersistentFlags().BoolVarP(&bconf.MQTT.TLS.MTLS, "mtls", "", false, "Use mtls for connection")
|
|
|
|
rootCmd.PersistentFlags().BoolVarP(&bconf.MQTT.TLS.SkipTLSVer, "skipTLSVer", "t", false, "Skip tls verification")
|
|
|
|
rootCmd.PersistentFlags().StringVarP(&bconf.MQTT.TLS.CA, "ca", "", "ca.crt", "CA file")
|
2019-08-13 10:56:31 +00:00
|
|
|
|
2019-08-30 14:09:12 +02:00
|
|
|
// Test params
|
|
|
|
rootCmd.PersistentFlags().IntVarP(&bconf.Test.Count, "count", "n", 100, "Number of messages sent per publisher")
|
|
|
|
rootCmd.PersistentFlags().IntVarP(&bconf.Test.Subs, "subs", "s", 10, "Number of subscribers")
|
|
|
|
rootCmd.PersistentFlags().IntVarP(&bconf.Test.Pubs, "pubs", "p", 10, "Number of publishers")
|
2019-08-13 10:56:31 +00:00
|
|
|
|
2019-08-30 14:09:12 +02:00
|
|
|
// Log params
|
MF-1718 - Use static code analysis in CI (#1729)
* things, twins, and logger lint fixed
Signed-off-by: aryan <aryangodara03@gmail.com>
* all services updated, auth jwt not working, ineffectual assignment issue
Signed-off-by: aryan <aryangodara03@gmail.com>
* handle error from grpc server in endpointtest
Signed-off-by: aryan <aryangodara03@gmail.com>
* temp commit, auth/jwt needs to be resolved
Signed-off-by: aryan <aryangodara03@gmail.com>
* revert back to jwt v4 temporarily
Signed-off-by: aryan <aryangodara03@gmail.com>
* updated jwt tokenizer
Signed-off-by: aryan <aryangodara03@gmail.com>
* resolve EOF error for httptest requests
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix auth jwt, update to registeredclaims
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix ineffective assignment, auth/api/grpc endpoint failing
Signed-off-by: aryan <aryangodara03@gmail.com>
* temp commit, remove later
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix grpc server setup
Signed-off-by: aryan <aryangodara03@gmail.com>
* resolve golangci tests, remove debug statements
Signed-off-by: aryan <aryangodara03@gmail.com>
* update golangci version and modify linters used
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix failing tests
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix grpc server for setup tests
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix logging and errors inlined
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix remarks, update grpc setup_test
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix setup_test
Signed-off-by: aryan <aryangodara03@gmail.com>
* update setup_test grpc
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix data race
Signed-off-by: aryan <aryangodara03@gmail.com>
* update setup_test grpc
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix grpc setup down to single simple function
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix linting issues
Signed-off-by: aryan <aryangodara03@gmail.com>
* resolve pr comments
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix tests, handle returned errors, go mod tidy vendor
Signed-off-by: aryan <aryangodara03@gmail.com>
* fix errors from new linters
Signed-off-by: aryan <aryangodara03@gmail.com>
---------
Signed-off-by: aryan <aryangodara03@gmail.com>
2023-04-22 08:14:35 -07:00
|
|
|
rootCmd.PersistentFlags().BoolVarP(&bconf.Log.Quiet, "quiet", "", false, "Suppress messages")
|
2019-08-13 10:56:31 +00:00
|
|
|
|
2019-08-30 14:09:12 +02:00
|
|
|
// Config file
|
|
|
|
rootCmd.PersistentFlags().StringVarP(&confFile, "config", "c", "config.toml", "config file for mqtt-bench")
|
|
|
|
rootCmd.PersistentFlags().StringVarP(&bconf.Mf.ConnFile, "mainflux", "m", "connections.toml", "config file for Mainflux connections")
|
2019-08-27 12:21:39 +00:00
|
|
|
|
2019-08-30 14:09:12 +02:00
|
|
|
if err := rootCmd.Execute(); err != nil {
|
|
|
|
log.Fatal(err)
|
2019-08-27 12:21:39 +00:00
|
|
|
}
|
|
|
|
}
|