diff options
| author | Taras Madan <tarasmadan@google.com> | 2024-12-16 16:08:49 +0100 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2024-12-17 14:31:15 +0000 |
| commit | a0626d3a05d5e31af100787b6749f0b89416c171 (patch) | |
| tree | 592ff26f4d5c4c757ccda267e8b70fcd71f2d235 /dashboard/dashapi/dashapi.go | |
| parent | c8c15bb214509bafc8fe1a1e3abb8ccf90b3306e (diff) | |
dashboard/app: upload coverage using GCS bucket
Diffstat (limited to 'dashboard/dashapi/dashapi.go')
| -rw-r--r-- | dashboard/dashapi/dashapi.go | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/dashboard/dashapi/dashapi.go b/dashboard/dashapi/dashapi.go index 64361e155..0fc3651cc 100644 --- a/dashboard/dashapi/dashapi.go +++ b/dashboard/dashapi/dashapi.go @@ -8,6 +8,7 @@ package dashapi import ( "bytes" "compress/gzip" + "context" "encoding/json" "fmt" "io" @@ -20,6 +21,7 @@ import ( "cloud.google.com/go/civil" "github.com/google/syzkaller/pkg/auth" "github.com/google/syzkaller/pkg/coveragedb" + "github.com/google/syzkaller/pkg/gcs" ) type Dashboard struct { @@ -706,12 +708,29 @@ type SaveCoverageReq struct { // SaveCoverage returns amount of records created in db. func (dash *Dashboard) SaveCoverage(req *SaveCoverageReq) (int, error) { - resp := new(int) - if err := dash.Query("save_coverage", req, resp); err != nil { - return 0, err - } else { - return *resp, err + uploadURL := new(string) + if err := dash.Query("create_upload_url", req, uploadURL); err != nil { + return 0, fmt.Errorf("create_upload_url: %w", err) } + + gcsClient, err := gcs.NewClient(context.Background()) + if err != nil { + return 0, fmt.Errorf("gcs.NewClient: %w", err) + } + w, err := gcsClient.FileWriter(*uploadURL) + if err != nil { + return 0, fmt.Errorf("gcsClient.FileWriter: %w", err) + } + defer w.Close() + if err := json.NewEncoder(gzip.NewWriter(w)).Encode(req); err != nil { + return 0, fmt.Errorf("json.NewEncoder(gzip.NewWriter(w)).Encode: %w", err) + } + + rowsWritten := new(int) + if err := dash.Query("save_coverage", *uploadURL, rowsWritten); err != nil { + return 0, fmt.Errorf("save_coverage: %w", err) + } + return *rowsWritten, nil } type TestPatchRequest struct { |
