package main import ( "context" "flag" "fmt" "log" "os" "os/signal" "syscall" "lingniu-vehicle-ingest/go/vehicle-gateway/internal/loadsim" ) func main() { log.SetFlags(log.LstdFlags | log.Lmicroseconds) flagCfg := loadsim.RegisterFlags(flag.CommandLine) if err := flag.CommandLine.Parse(os.Args[1:]); err != nil { log.Fatal(err) } cfg, err := flagCfg.Build() if err != nil { log.Fatal(err) } ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) defer stop() log.Printf("load simulation started protocol=%s addr=%s connections=%d connect_rate=%d send_interval=%s duration=%s template=%s", cfg.Protocol, cfg.Addr, cfg.Connections, cfg.ConnectRatePerSecond, cfg.SendInterval, cfg.Duration, cfg.Template) stats, err := (loadsim.Runner{}).Run(ctx, cfg) if err != nil { log.Fatal(err) } log.Print(formatStats(stats)) } func formatStats(stats loadsim.Stats) string { return fmt.Sprintf("connections_opened=%d connections_failed=%d frames_written=%d write_errors=%d", stats.ConnectionsOpened, stats.ConnectionsFailed, stats.FramesWritten, stats.WriteErrors, ) }