| package main |
| |
| // android_hashlookup is a test tool to verify in different environments |
| // (locally and on GCE) that looking up skia githashes via the android |
| // build API works. |
| |
| import ( |
| "context" |
| "flag" |
| "os" |
| "time" |
| |
| "go.skia.org/infra/go/androidbuild" |
| androidbuildinternal "go.skia.org/infra/go/androidbuildinternal/v2beta1" |
| "go.skia.org/infra/go/common" |
| "go.skia.org/infra/go/httputils" |
| "go.skia.org/infra/go/sklog" |
| "golang.org/x/oauth2/google" |
| storage "google.golang.org/api/storage/v1" |
| ) |
| |
| // TODO(stephana): Factor to take the target information (builID etc.) |
| // and the secrets files via flags. |
| |
| const ( |
| OAUTH_CACHE_FILEPATH = "oauth-token.cache" |
| CLIENT_SECRET_FILEPATH = "client_secret.json" |
| ) |
| |
| var ( |
| local = flag.Bool("local", false, "Running locally if true, as opposed to running in GCE.") |
| ) |
| |
| func main() { |
| common.Init() |
| |
| args := flag.Args() |
| if len(args) != 3 { |
| sklog.Errorf("Expected arguments: branch target buildID") |
| sklog.Errorf("i.e.: git_master-skia razor-userdebug 1772442") |
| os.Exit(1) |
| } |
| |
| // Set the arguments necessary to lookup the git hash. |
| branch := args[0] |
| target := args[1] |
| buildID := args[2] |
| sklog.Infof("Branch, target, buildID: %s, %s, %s", branch, target, buildID) |
| |
| ts, err := google.DefaultTokenSource(context.Background(), OAUTH_CACHE_FILEPATH, CLIENT_SECRET_FILEPATH, androidbuildinternal.AndroidbuildInternalScope, storage.CloudPlatformScope) |
| if err != nil { |
| sklog.Fatalf("Unable to create installed app oauth token source: %s", err) |
| } |
| // In this case we don't want a backoff transport since the Apiary backend |
| // seems to fail a lot, so we basically want to fall back to polling if a |
| // call fails. |
| client := httputils.DefaultClientConfig().WithoutRetries().WithTokenSource(ts).Client() |
| |
| f, err := androidbuild.New("/tmp/android-gold-ingest", client) |
| if err != nil { |
| sklog.Fatalf("Failed to construct client: %s", err) |
| } |
| for { |
| r, err := f.Get(branch, target, buildID) |
| if err != nil { |
| sklog.Errorf("Failed to get requested info: %s", err) |
| time.Sleep(1 * time.Minute) |
| continue |
| } |
| if r != nil { |
| sklog.Infof("Successfully found: %#v", *r) |
| } |
| |
| time.Sleep(1 * time.Minute) |
| } |
| } |