in pkg/updater/updater.go [1030:1087]
func ConstructGrid(log logrus.FieldLogger, cols []InflatedColumn, issues map[string][]string, failuresToAlert, passesToDisableAlert int, useCommitAsBuildID bool, userProperty string, brokenThreshold float32, columnHeader []*configpb.TestGroup_ColumnHeader) *statepb.Grid {
// Add the columns into a grid message
var grid statepb.Grid
rows := map[string]*statepb.Row{} // For fast target => row lookup
if failuresToAlert > 0 && passesToDisableAlert == 0 {
passesToDisableAlert = 1
}
for _, col := range cols {
if brokenThreshold > 0.0 && col.Column != nil {
col.Column.Stats = columnStats(col.Cells, brokenThreshold)
}
AppendColumn(&grid, rows, col)
}
dropEmptyRows(log, &grid, rows)
for name, row := range rows {
row.Issues = append(row.Issues, issues[name]...)
issueSet := make(map[string]bool, len(row.Issues))
for _, i := range row.Issues {
issueSet[i] = true
}
row.Issues = make([]string, 0, len(issueSet))
for i := range issueSet {
row.Issues = append(row.Issues, i)
}
sort.SliceStable(row.Issues, func(i, j int) bool {
// Largest issues at the front of the list
return !sortorder.NaturalLess(row.Issues[i], row.Issues[j])
})
}
alertRows(grid.Columns, grid.Rows, failuresToAlert, passesToDisableAlert, useCommitAsBuildID, userProperty, columnHeader)
sort.SliceStable(grid.Rows, func(i, j int) bool {
return sortorder.NaturalLess(grid.Rows[i].Name, grid.Rows[j].Name)
})
for _, row := range grid.Rows {
del := true
for _, up := range row.UserProperty {
if up != "" {
del = false
break
}
}
if del {
row.UserProperty = nil
}
sort.SliceStable(row.Metric, func(i, j int) bool {
return sortorder.NaturalLess(row.Metric[i], row.Metric[j])
})
sort.SliceStable(row.Metrics, func(i, j int) bool {
return sortorder.NaturalLess(row.Metrics[i].Name, row.Metrics[j].Name)
})
}
return &grid
}