Skip to content

Commit 444551c

Browse files
committed
dashboard/app: show manager coverage
1 parent e192753 commit 444551c

File tree

2 files changed

+20
-15
lines changed

2 files changed

+20
-15
lines changed

dashboard/app/graphs.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,8 @@ func handleFoundBugsGraph(c context.Context, w http.ResponseWriter, r *http.Requ
194194
return serveTemplate(w, "graph_histogram.html", data)
195195
}
196196

197-
type funcStyleBodyJS func(ctx context.Context, projectID, ns, subsystem string, periods []coveragedb.TimePeriod,
198-
) (template.CSS, template.HTML, template.HTML, error)
197+
type funcStyleBodyJS func(ctx context.Context, projectID, ns, subsystem, manager string,
198+
periods []coveragedb.TimePeriod) (template.CSS, template.HTML, template.HTML, error)
199199

200200
func handleCoverageHeatmap(c context.Context, w http.ResponseWriter, r *http.Request) error {
201201
return handleHeatmap(c, w, r, cover.DoHeatMapStyleBodyJS)
@@ -211,6 +211,7 @@ func handleHeatmap(c context.Context, w http.ResponseWriter, r *http.Request, f
211211
return err
212212
}
213213
ss := r.FormValue("subsystem")
214+
manager := r.FormValue("manager")
214215

215216
periodType := r.FormValue("period")
216217
if periodType == "" {
@@ -236,7 +237,7 @@ func handleHeatmap(c context.Context, w http.ResponseWriter, r *http.Request, f
236237
}
237238
var style template.CSS
238239
var body, js template.HTML
239-
if style, body, js, err = f(c, "syzkaller", hdr.Namespace, ss, periods); err != nil {
240+
if style, body, js, err = f(c, "syzkaller", hdr.Namespace, ss, manager, periods); err != nil {
240241
return fmt.Errorf("failed to generate heatmap: %w", err)
241242
}
242243
return serveTemplate(w, "custom_content.html", struct {

pkg/cover/heatmap.go

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,10 @@ func filesCoverageToTemplateData(fCov []*fileCoverageWithDetails) *templateHeatm
155155
return &res
156156
}
157157

158-
func filesCoverageWithDetailsStmt(ns, subsystem string, timePeriod coveragedb.TimePeriod) spanner.Statement {
158+
func filesCoverageWithDetailsStmt(ns, subsystem, manager string, timePeriod coveragedb.TimePeriod) spanner.Statement {
159+
if manager == "" {
160+
manager = "*"
161+
}
159162
stmt := spanner.Statement{
160163
SQL: `
161164
select
@@ -170,22 +173,23 @@ from merge_history
170173
join file_subsystems
171174
on merge_history.namespace = file_subsystems.namespace and files.filepath = file_subsystems.filepath
172175
where
173-
merge_history.namespace=$1 and dateto=$2 and duration=$3 and manager='*'`,
176+
merge_history.namespace=$1 and dateto=$2 and duration=$3 and manager=$4`,
174177
Params: map[string]interface{}{
175178
"p1": ns,
176179
"p2": timePeriod.DateTo,
177180
"p3": timePeriod.Days,
181+
"p4": manager,
178182
},
179183
}
180184
if subsystem != "" {
181-
stmt.SQL += " and $4=ANY(subsystems)"
182-
stmt.Params["p4"] = subsystem
185+
stmt.SQL += " and $5=ANY(subsystems)"
186+
stmt.Params["p5"] = subsystem
183187
}
184188
return stmt
185189
}
186190

187-
func filesCoverageWithDetails(ctx context.Context, projectID, ns, subsystem string, timePeriods []coveragedb.TimePeriod,
188-
) ([]*fileCoverageWithDetails, error) {
191+
func filesCoverageWithDetails(ctx context.Context, projectID, ns, subsystem, manager string,
192+
timePeriods []coveragedb.TimePeriod) ([]*fileCoverageWithDetails, error) {
189193
client, err := spannerclient.NewClient(ctx, projectID)
190194
if err != nil {
191195
return nil, fmt.Errorf("spanner.NewClient() failed: %s", err.Error())
@@ -194,7 +198,7 @@ func filesCoverageWithDetails(ctx context.Context, projectID, ns, subsystem stri
194198

195199
res := []*fileCoverageWithDetails{}
196200
for _, timePeriod := range timePeriods {
197-
stmt := filesCoverageWithDetailsStmt(ns, subsystem, timePeriod)
201+
stmt := filesCoverageWithDetailsStmt(ns, subsystem, manager, timePeriod)
198202
iter := client.Single().Query(ctx, stmt)
199203
defer iter.Stop()
200204
for {
@@ -239,19 +243,19 @@ func stylesBodyJSTemplate(templData *templateHeatmap,
239243
template.HTML(js.Bytes()), nil
240244
}
241245

242-
func DoHeatMapStyleBodyJS(ctx context.Context, projectID, ns, subsystem string, periods []coveragedb.TimePeriod,
243-
) (template.CSS, template.HTML, template.HTML, error) {
244-
covAndDates, err := filesCoverageWithDetails(ctx, projectID, ns, subsystem, periods)
246+
func DoHeatMapStyleBodyJS(ctx context.Context, projectID, ns, subsystem, manager string,
247+
periods []coveragedb.TimePeriod) (template.CSS, template.HTML, template.HTML, error) {
248+
covAndDates, err := filesCoverageWithDetails(ctx, projectID, ns, subsystem, manager, periods)
245249
if err != nil {
246250
return "", "", "", fmt.Errorf("failed to filesCoverageWithDetails: %w", err)
247251
}
248252
templData := filesCoverageToTemplateData(covAndDates)
249253
return stylesBodyJSTemplate(templData)
250254
}
251255

252-
func DoSubsystemsHeatMapStyleBodyJS(ctx context.Context, projectID, ns, subsystem string,
256+
func DoSubsystemsHeatMapStyleBodyJS(ctx context.Context, projectID, ns, subsystem, manager string,
253257
periods []coveragedb.TimePeriod) (template.CSS, template.HTML, template.HTML, error) {
254-
covWithDetails, err := filesCoverageWithDetails(ctx, projectID, ns, subsystem, periods)
258+
covWithDetails, err := filesCoverageWithDetails(ctx, projectID, ns, subsystem, manager, periods)
255259
if err != nil {
256260
panic(err)
257261
}

0 commit comments

Comments
 (0)