From 4ea1fe6aae47bcfc828797d283ecbc755682e7c9 Mon Sep 17 00:00:00 2001 From: Taras Madan Date: Thu, 12 Dec 2024 15:35:24 +0100 Subject: tools/syz-covermerger: more logs I don't see any visible problems but the records in DB are not created. Let's report the amount of records created at the end of the batch step. +log the names of the managers --- dashboard/app/api.go | 4 ++-- dashboard/dashapi/dashapi.go | 10 ++++++++-- pkg/coveragedb/spanner.go | 12 +++++++----- tools/syz-covermerger/syz_covermerger.go | 9 +++++++-- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/dashboard/app/api.go b/dashboard/app/api.go index bfd3add1b..b70cac882 100644 --- a/dashboard/app/api.go +++ b/dashboard/app/api.go @@ -1906,7 +1906,7 @@ func apiSaveCoverage(c context.Context, r *http.Request, payload []byte) (interf sss = service.List() log.Infof(c, "found %d subsystems for %s namespace", len(sss), coverage.Namespace) } - err := coveragedb.SaveMergeResult( + rowsCreated, err := coveragedb.SaveMergeResult( context.Background(), appengine.AppID(context.Background()), coverage.FileData, @@ -1927,5 +1927,5 @@ func apiSaveCoverage(c context.Context, r *http.Request, payload []byte) (interf log.Infof(c, "updated coverage for ns %s, date %s to %d rows", coverage.Namespace, coverage.DateTo.String(), coverage.TotalRows) } - return nil, err + return &rowsCreated, err } diff --git a/dashboard/dashapi/dashapi.go b/dashboard/dashapi/dashapi.go index 9e1d29d0b..8133d47c5 100644 --- a/dashboard/dashapi/dashapi.go +++ b/dashboard/dashapi/dashapi.go @@ -704,8 +704,14 @@ type SaveCoverageReq struct { Coverage *MergedCoverage } -func (dash *Dashboard) SaveCoverage(req *SaveCoverageReq) error { - return dash.Query("save_coverage", req, nil) +// 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 + } } type TestPatchRequest struct { diff --git a/pkg/coveragedb/spanner.go b/pkg/coveragedb/spanner.go index 5bbe4cbbb..db6d9ac79 100644 --- a/pkg/coveragedb/spanner.go +++ b/pkg/coveragedb/spanner.go @@ -73,12 +73,13 @@ func (c *Coverage) AddLineHitCount(line, hitCount int) { } func SaveMergeResult(ctx context.Context, projectID string, manCovMap ManagersCoverage, - template *HistoryRecord, totalRows int64, sss []*subsystem.Subsystem) error { + template *HistoryRecord, totalRows int64, sss []*subsystem.Subsystem) (int, error) { client, err := NewClient(ctx, projectID) if err != nil { - return fmt.Errorf("spanner.NewClient() failed: %s", err.Error()) + return 0, fmt.Errorf("spanner.NewClient() failed: %s", err.Error()) } defer client.Close() + var rowsCreated int ssMatcher := subsystem.MakePathMatcher(sss) ssCache := make(map[string][]string) @@ -97,17 +98,18 @@ func SaveMergeResult(ctx context.Context, projectID string, manCovMap ManagersCo // We keep the number of records low enough for the number of explicit mutations * 10 does not exceed the limit. if len(mutations) > 1000 { if _, err = client.Apply(ctx, mutations); err != nil { - return fmt.Errorf("failed to spanner.Apply(inserts): %s", err.Error()) + return rowsCreated, fmt.Errorf("failed to spanner.Apply(inserts): %s", err.Error()) } + rowsCreated += len(mutations) mutations = nil } } } mutations = append(mutations, historyMutation(session, template, totalRows)) if _, err = client.Apply(ctx, mutations); err != nil { - return fmt.Errorf("failed to spanner.Apply(inserts): %s", err.Error()) + return rowsCreated, fmt.Errorf("failed to spanner.Apply(inserts): %s", err.Error()) } - return nil + return rowsCreated, nil } type linesCoverage struct { diff --git a/tools/syz-covermerger/syz_covermerger.go b/tools/syz-covermerger/syz_covermerger.go index c0c55f01d..61a25dc1f 100644 --- a/tools/syz-covermerger/syz_covermerger.go +++ b/tools/syz-covermerger/syz_covermerger.go @@ -84,8 +84,11 @@ func main() { } coverage, _, _ := mergeResultsToCoverage(mergeResult) + managers := maps.Keys(coverage) + sort.Strings(managers) + fmt.Printf("merged signals for the following managers: %v\n", managers) if *flagToDashAPI != "" { - if err := saveCoverage(*flagToDashAPI, *flagDashboardClientName, &dashapi.MergedCoverage{ + if rowsCreated, err := saveCoverage(*flagToDashAPI, *flagDashboardClientName, &dashapi.MergedCoverage{ Namespace: *flagNamespace, Repo: *flagRepo, Commit: *flagCommit, @@ -95,13 +98,15 @@ func main() { FileData: coverage, }); err != nil { log.Fatalf("failed to saveCoverage: %v", err) + } else { + fmt.Printf("created %d DB rows\n", rowsCreated) } } printOnlyTotal := *flagToDashAPI != "" printMergeResult(mergeResult, printOnlyTotal) } -func saveCoverage(dashboard, clientName string, d *dashapi.MergedCoverage) error { +func saveCoverage(dashboard, clientName string, d *dashapi.MergedCoverage) (int, error) { dash, err := dashapi.New(clientName, dashboard, "") if err != nil { log.Fatalf("failed dashapi.New(): %v", err) -- cgit mrf-deployment