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  }