func main()

in loadgen/cmd/otelbench/main.go [110:172]


func main() {
	testing.Init()
	if err := Init(); err != nil {
		fmt.Fprintln(os.Stderr, err)
		flag.Usage()
		os.Exit(2)
	}
	flag.Parse()

	ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt)
	defer cancel()

	// TODO(carsonip): configurable warm up

	var maxLen int
	for _, concurrency := range Config.ConcurrencyList {
		for _, signal := range getSignals() {
			for _, exporter := range getExporters() {
				maxLen = max(maxLen, len(fullBenchmarkName(signal, exporter, concurrency)))
			}
		}
	}

	fetcher, ignore, err := newElasticsearchStatsFetcher(elasticsearchTelemetryConfig(Config.Telemetry))
	if err != nil {
		fmt.Fprintln(os.Stderr, err)
		if !ignore {
			os.Exit(2)
		}
	}

	for _, concurrency := range Config.ConcurrencyList {
		for _, signal := range getSignals() {
			for _, exporter := range getExporters() {
				benchName := fullBenchmarkName(signal, exporter, concurrency)
				t := time.Now().UTC()
				result := runBench(ctx, signal, exporter, concurrency, func(b *testing.B) {
					if fetcher == nil {
						return
					}
					// after each run wait a bit to capture late metric arrivals
					time.Sleep(10 * time.Second)
					stats, err := fetcher.FetchStats(ctx, t, time.Now().UTC())
					if err != nil {
						fmt.Fprintf(os.Stderr, "error while fetching remote stats %s", err)
						return
					}
					for unit, n := range stats {
						b.ReportMetric(n, unit)
					}
				})
				// write benchmark result to stdout, as stderr may be cluttered with collector logs
				fmt.Printf("%-*s\t%s\n", maxLen, benchName, result.String())
				// break early if context was canceled
				select {
				case <-ctx.Done():
					return
				default:
				}
			}
		}
	}
}