blob: a0bf45da29a0c47db1e9e1e02cfb8f9d9ec0eedd [file] [log] [blame]
// Copyright 2022 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// perf runs an HTTP server for benchmark analysis.
package main
import (
"context"
"flag"
"log"
"net/http"
"os"
"golang.org/x/build/internal/https"
"golang.org/x/build/perf/app"
"golang.org/x/build/perfdata"
)
var (
perfdataURL = flag.String("perfdata", "https://perfdata.golang.org", "perfdata server base `url`")
influxHost = flag.String("influx-host", os.Getenv("INFLUX_HOST"), "URL of the InfluxDB instance")
influxToken = flag.String("influx-token", os.Getenv("INFLUX_TOKEN"), "Authentication token for the InfluxDB instance")
influxProject = flag.String("influx-project", os.Getenv("INFLUX_PROJECT"), "GCP project ID for the InfluxDB instance. If empty, defaults to the project this service is running as. If -influx-token is not set, the token is fetched from Secret Manager in the project.")
authCronEmail = flag.String("auth-cron-email", "", "If set, requests to /cron/syncinflux must be authenticated as the passed service account.")
)
func main() {
https.RegisterFlags(flag.CommandLine)
flag.Parse()
app := &app.App{
StorageClient: &perfdata.Client{BaseURL: *perfdataURL},
InfluxHost: *influxHost,
InfluxToken: *influxToken,
InfluxProject: *influxProject,
AuthCronEmail: *authCronEmail,
}
mux := http.NewServeMux()
app.RegisterOnMux(mux)
log.Printf("Serving...")
ctx := context.Background()
log.Fatal(https.ListenAndServe(ctx, mux))
}