blob: 8406a0e0aeb14cc30594dc9c33e76542e33f64b9 [file] [log] [blame]
package main
import (
"context"
"fmt"
"time"
"github.com/davecgh/go-spew/spew"
swarmingV1 "go.chromium.org/luci/common/api/swarming/swarming/v1"
"go.skia.org/infra/bisection/go/read_values"
"go.skia.org/infra/bisection/go/run_benchmark"
"go.skia.org/infra/go/sklog"
"go.skia.org/infra/go/swarming"
)
// executable for local testing and experimentation
func main() {
ctx := context.Background()
swarmingClient, err := run_benchmark.DialSwarming(ctx)
if err != nil {
sklog.Errorf("swarming client error: %v", err)
}
// based off of commit 1224894 in Pinpoint job:
// https://pinpoint-dot-chromeperf.appspot.com/job/1226ecbef60000
rbe := swarmingV1.SwarmingRpcsCASReference{
CasInstance: "projects/chrome-swarming/instances/default_instance",
Digest: &swarmingV1.SwarmingRpcsDigest{
Hash: "52cfada1f142268bbcb90a827170f9d6f0d46232755f0de83b78cd60763f0aa5",
SizeBytes: 1294,
},
}
job := "3"
req := run_benchmark.RunBenchmarkRequest{
JobID: job,
Build: rbe,
}
for i := 0; i < 10; i++ {
taskID, err := run_benchmark.RunTest(ctx, swarmingClient, req)
if err != nil {
fmt.Printf("error: %v", err)
}
status, err := run_benchmark.GetStatus(ctx, swarmingClient, taskID)
fmt.Printf("task %s status: %s", taskID, status)
}
// minor time delay is necessary to ensure all tasks are enqueued
time.Sleep(10 * time.Second)
tasks, err := run_benchmark.ListPinpointTasks(ctx, swarmingClient, req)
if err != nil {
fmt.Printf("list tasks error: %v", err)
}
fmt.Printf("\nswarming tasks:%v\n\n", tasks)
flag := true
for flag {
flag = false
states, err := run_benchmark.GetStates(ctx, swarmingClient, tasks)
if err != nil {
sklog.Errorf("failed to retrieve swarming tasks %v\n due to error: %s", tasks, err)
return
}
for i, s := range states {
if s == swarming.TASK_STATE_PENDING || s == swarming.TASK_STATE_RUNNING {
fmt.Printf("task [%d]: %s is still %s\n", i, tasks[i], s)
flag = true
}
}
time.Sleep(10 * time.Second)
}
fmt.Printf("\nSwarming tasks completed. Retrieving values.\n")
casOutputs := make([]swarmingV1.SwarmingRpcsCASReference, len(tasks))
states, err := run_benchmark.GetStates(ctx, swarmingClient, tasks)
for i, t := range tasks {
if states[i] == "COMPLETED" {
cas, err := run_benchmark.GetCASOutput(ctx, swarmingClient, t)
if err != nil {
fmt.Printf("error retrieving cas outputs: %s", err)
}
casOutputs[i] = cas
}
}
rbeClient, err := read_values.DialRBECAS(ctx, rbe.CasInstance)
if err != nil {
fmt.Printf("failed to dial rbe client: %s\n", err)
}
// based off of Pinpoint job https://pinpoint-dot-chromeperf.appspot.com/job/1226ecbef60000
values := read_values.ReadValuesByChart(ctx, rbeClient, "blink_perf.bindings", "node-type", casOutputs)
spew.Dump(values)
fmt.Printf("\nfinished\n")
}