github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/swarmkit/cmd/swarm-bench/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "errors" 6 "os" 7 "time" 8 9 "github.com/spf13/cobra" 10 ) 11 12 var ( 13 mainCmd = &cobra.Command{ 14 Use: os.Args[0], 15 Short: "Benchmark swarm", 16 RunE: func(cmd *cobra.Command, args []string) error { 17 ctx := context.Background() 18 count, err := cmd.Flags().GetUint64("count") 19 if err != nil { 20 return err 21 } 22 if count == 0 { 23 return errors.New("--count is mandatory") 24 } 25 manager, err := cmd.Flags().GetString("manager") 26 if err != nil { 27 return err 28 } 29 port, err := cmd.Flags().GetInt("port") 30 if err != nil { 31 return err 32 } 33 ip, err := cmd.Flags().GetString("ip") 34 if err != nil { 35 return err 36 } 37 38 b := NewBenchmark(&Config{ 39 Count: count, 40 Manager: manager, 41 IP: ip, 42 Port: port, 43 Unit: time.Second, 44 }) 45 return b.Run(ctx) 46 }, 47 } 48 ) 49 50 func init() { 51 mainCmd.Flags().Int64P("count", "c", 0, "Number of tasks to start for the benchmarking session") 52 mainCmd.Flags().StringP("manager", "m", "localhost:4242", "Specify the manager address") 53 mainCmd.Flags().IntP("port", "p", 2222, "Port used by the benchmark for listening") 54 mainCmd.Flags().StringP("ip", "i", "127.0.0.1", "IP of the benchmarking tool. Tasks will phone home to this address") 55 } 56 57 func main() { 58 if err := mainCmd.Execute(); err != nil { 59 os.Exit(1) 60 } 61 }