зеркало из https://github.com/golang/build.git
67 строки
1.5 KiB
Go
67 строки
1.5 KiB
Go
// Copyright 2016 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.
|
|
|
|
// The buildstats command syncs build logs from Datastore to Bigquery.
|
|
//
|
|
// It will eventually also do more stats.
|
|
package main // import "golang.org/x/build/cmd/buildstats"
|
|
|
|
import (
|
|
"context"
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
|
|
"golang.org/x/build/buildenv"
|
|
"golang.org/x/build/internal/buildstats"
|
|
)
|
|
|
|
var (
|
|
mode = flag.String("mode", "", "one of 'sync', 'testspeed'")
|
|
verbose = flag.Bool("v", false, "verbose")
|
|
)
|
|
|
|
var env *buildenv.Environment
|
|
|
|
func main() {
|
|
buildenv.RegisterFlags()
|
|
flag.Parse()
|
|
buildstats.Verbose = *verbose
|
|
if *mode == "" {
|
|
log.Printf("missing required --mode")
|
|
flag.Usage()
|
|
}
|
|
|
|
env = buildenv.FromFlags()
|
|
|
|
ctx := context.Background()
|
|
switch *mode {
|
|
case "sync":
|
|
if err := buildstats.SyncBuilds(ctx, env); err != nil {
|
|
log.Fatalf("SyncBuilds: %v", err)
|
|
}
|
|
if err := buildstats.SyncSpans(ctx, env); err != nil {
|
|
log.Fatalf("SyncSpans: %v", err)
|
|
}
|
|
case "testspeed":
|
|
ts, err := buildstats.QueryTestStats(ctx, env)
|
|
if err != nil {
|
|
log.Fatalf("QueryTestStats: %v", err)
|
|
}
|
|
for _, builder := range ts.Builders() {
|
|
bs := ts.BuilderTestStats[builder]
|
|
for _, test := range bs.Tests() {
|
|
fmt.Printf("%s\t%s\t%.1f\t%d\n",
|
|
builder,
|
|
test,
|
|
bs.MedianDuration[test].Seconds(),
|
|
bs.Runs[test])
|
|
}
|
|
}
|
|
default:
|
|
log.Fatalf("unknown --mode=%s", *mode)
|
|
}
|
|
|
|
}
|