aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2024-12-21 17:53:34 +0100
committerTaras Madan <tarasmadan@google.com>2024-12-23 08:41:41 +0000
commit444551c40edde85b5e4900ae27d432bd1da7079c (patch)
tree532d25e88f1b6177b198341bcc97a98a04a6c6fc
parente192753bff92af87e94a86660777adf99807dc3e (diff)
dashboard/app: show manager coverage
-rw-r--r--dashboard/app/graphs.go7
-rw-r--r--pkg/cover/heatmap.go28
2 files changed, 20 insertions, 15 deletions
diff --git a/dashboard/app/graphs.go b/dashboard/app/graphs.go
index 5625b919e..54520820f 100644
--- a/dashboard/app/graphs.go
+++ b/dashboard/app/graphs.go
@@ -194,8 +194,8 @@ func handleFoundBugsGraph(c context.Context, w http.ResponseWriter, r *http.Requ
return serveTemplate(w, "graph_histogram.html", data)
}
-type funcStyleBodyJS func(ctx context.Context, projectID, ns, subsystem string, periods []coveragedb.TimePeriod,
-) (template.CSS, template.HTML, template.HTML, error)
+type funcStyleBodyJS func(ctx context.Context, projectID, ns, subsystem, manager string,
+ periods []coveragedb.TimePeriod) (template.CSS, template.HTML, template.HTML, error)
func handleCoverageHeatmap(c context.Context, w http.ResponseWriter, r *http.Request) error {
return handleHeatmap(c, w, r, cover.DoHeatMapStyleBodyJS)
@@ -211,6 +211,7 @@ func handleHeatmap(c context.Context, w http.ResponseWriter, r *http.Request, f
return err
}
ss := r.FormValue("subsystem")
+ manager := r.FormValue("manager")
periodType := r.FormValue("period")
if periodType == "" {
@@ -236,7 +237,7 @@ func handleHeatmap(c context.Context, w http.ResponseWriter, r *http.Request, f
}
var style template.CSS
var body, js template.HTML
- if style, body, js, err = f(c, "syzkaller", hdr.Namespace, ss, periods); err != nil {
+ if style, body, js, err = f(c, "syzkaller", hdr.Namespace, ss, manager, periods); err != nil {
return fmt.Errorf("failed to generate heatmap: %w", err)
}
return serveTemplate(w, "custom_content.html", struct {
diff --git a/pkg/cover/heatmap.go b/pkg/cover/heatmap.go
index ef4f7ffab..903294095 100644
--- a/pkg/cover/heatmap.go
+++ b/pkg/cover/heatmap.go
@@ -155,7 +155,10 @@ func filesCoverageToTemplateData(fCov []*fileCoverageWithDetails) *templateHeatm
return &res
}
-func filesCoverageWithDetailsStmt(ns, subsystem string, timePeriod coveragedb.TimePeriod) spanner.Statement {
+func filesCoverageWithDetailsStmt(ns, subsystem, manager string, timePeriod coveragedb.TimePeriod) spanner.Statement {
+ if manager == "" {
+ manager = "*"
+ }
stmt := spanner.Statement{
SQL: `
select
@@ -170,22 +173,23 @@ from merge_history
join file_subsystems
on merge_history.namespace = file_subsystems.namespace and files.filepath = file_subsystems.filepath
where
- merge_history.namespace=$1 and dateto=$2 and duration=$3 and manager='*'`,
+ merge_history.namespace=$1 and dateto=$2 and duration=$3 and manager=$4`,
Params: map[string]interface{}{
"p1": ns,
"p2": timePeriod.DateTo,
"p3": timePeriod.Days,
+ "p4": manager,
},
}
if subsystem != "" {
- stmt.SQL += " and $4=ANY(subsystems)"
- stmt.Params["p4"] = subsystem
+ stmt.SQL += " and $5=ANY(subsystems)"
+ stmt.Params["p5"] = subsystem
}
return stmt
}
-func filesCoverageWithDetails(ctx context.Context, projectID, ns, subsystem string, timePeriods []coveragedb.TimePeriod,
-) ([]*fileCoverageWithDetails, error) {
+func filesCoverageWithDetails(ctx context.Context, projectID, ns, subsystem, manager string,
+ timePeriods []coveragedb.TimePeriod) ([]*fileCoverageWithDetails, error) {
client, err := spannerclient.NewClient(ctx, projectID)
if err != nil {
return nil, fmt.Errorf("spanner.NewClient() failed: %s", err.Error())
@@ -194,7 +198,7 @@ func filesCoverageWithDetails(ctx context.Context, projectID, ns, subsystem stri
res := []*fileCoverageWithDetails{}
for _, timePeriod := range timePeriods {
- stmt := filesCoverageWithDetailsStmt(ns, subsystem, timePeriod)
+ stmt := filesCoverageWithDetailsStmt(ns, subsystem, manager, timePeriod)
iter := client.Single().Query(ctx, stmt)
defer iter.Stop()
for {
@@ -239,9 +243,9 @@ func stylesBodyJSTemplate(templData *templateHeatmap,
template.HTML(js.Bytes()), nil
}
-func DoHeatMapStyleBodyJS(ctx context.Context, projectID, ns, subsystem string, periods []coveragedb.TimePeriod,
-) (template.CSS, template.HTML, template.HTML, error) {
- covAndDates, err := filesCoverageWithDetails(ctx, projectID, ns, subsystem, periods)
+func DoHeatMapStyleBodyJS(ctx context.Context, projectID, ns, subsystem, manager string,
+ periods []coveragedb.TimePeriod) (template.CSS, template.HTML, template.HTML, error) {
+ covAndDates, err := filesCoverageWithDetails(ctx, projectID, ns, subsystem, manager, periods)
if err != nil {
return "", "", "", fmt.Errorf("failed to filesCoverageWithDetails: %w", err)
}
@@ -249,9 +253,9 @@ func DoHeatMapStyleBodyJS(ctx context.Context, projectID, ns, subsystem string,
return stylesBodyJSTemplate(templData)
}
-func DoSubsystemsHeatMapStyleBodyJS(ctx context.Context, projectID, ns, subsystem string,
+func DoSubsystemsHeatMapStyleBodyJS(ctx context.Context, projectID, ns, subsystem, manager string,
periods []coveragedb.TimePeriod) (template.CSS, template.HTML, template.HTML, error) {
- covWithDetails, err := filesCoverageWithDetails(ctx, projectID, ns, subsystem, periods)
+ covWithDetails, err := filesCoverageWithDetails(ctx, projectID, ns, subsystem, manager, periods)
if err != nil {
panic(err)
}