Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions dashboard/app/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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
}
10 changes: 8 additions & 2 deletions dashboard/dashapi/dashapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
12 changes: 7 additions & 5 deletions pkg/coveragedb/spanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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 {
Expand Down
10 changes: 8 additions & 2 deletions tools/syz-covermerger/syz_covermerger.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ func main() {
Commit: *flagCommit,
},
FileVersProvider: makeProvider(),
StoreDetails: true,
}
var dateFrom, dateTo civil.Date
var err error
Expand Down Expand Up @@ -84,8 +85,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,
Expand All @@ -95,13 +99,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)
Expand Down
Loading