in pkg/summarizer/summary.go [846:906]
func failingTestSummaries(rows []*statepb.Row, template *configpb.LinkTemplate, gcsPrefix string, columnHeader []*configpb.TestGroup_ColumnHeader) []*summarypb.FailingTestSummary {
var failures []*summarypb.FailingTestSummary
for _, row := range rows {
if row.AlertInfo == nil {
continue
}
alert := row.AlertInfo
sum := summarypb.FailingTestSummary{
DisplayName: row.Name,
TestName: row.Id,
FailBuildId: alert.FailBuildId,
LatestFailBuildId: alert.LatestFailBuildId,
FailCount: alert.FailCount,
FailureMessage: alert.FailureMessage,
PassBuildId: alert.PassBuildId,
// TODO(fejta): better build info
BuildLink: alert.BuildLink,
BuildLinkText: alert.BuildLinkText,
BuildUrlText: alert.BuildUrlText,
LinkedBugs: row.Issues,
FailTestLink: buildFailLink(alert.FailTestId, row.Id),
LatestFailTestLink: buildFailLink(alert.LatestFailTestId, row.Id),
Properties: alert.Properties,
CustomColumnHeaders: alert.CustomColumnHeaders,
HotlistIds: alert.HotlistIds,
EmailAddresses: alert.EmailAddresses,
}
if alert.PassTime != nil {
sum.PassTimestamp = float64(alert.PassTime.Seconds)
}
if alert.FailTime != nil {
sum.FailTimestamp = float64(alert.FailTime.Seconds)
}
propertyToColumnHeader := make(map[string]string)
for i := 0; i < len(columnHeader); i++ {
if columnHeader[i].Label != "" {
propertyToColumnHeader["<custom-"+strconv.Itoa(i)+">"] = columnHeader[i].Label
} else if columnHeader[i].Property != "" {
propertyToColumnHeader["<custom-"+strconv.Itoa(i)+">"] = columnHeader[i].Property
} else {
propertyToColumnHeader["<custom-"+strconv.Itoa(i)+">"] = columnHeader[i].ConfigurationValue
}
}
// Verify what the links for alerts would be with the new method.
failLink := testResultLink(template, alert.GetProperties(), alert.GetFailTestId(), row.GetId(), alert.GetFailBuildId(), gcsPrefix, propertyToColumnHeader, alert.CustomColumnHeaders)
latestFailLink := testResultLink(template, alert.GetProperties(), alert.GetLatestFailTestId(), row.GetId(), alert.GetLatestFailBuildId(), gcsPrefix, propertyToColumnHeader, alert.CustomColumnHeaders)
log := logrus.WithField("failLink", failLink).WithField("latestFailLink", latestFailLink)
if failLink == "" || latestFailLink == "" {
log.Warning("Failed to create failure link.")
} else if !strings.HasPrefix(failLink, "http") || !strings.HasPrefix(latestFailLink, "http") {
log.Warning("Failure link does not include scheme.")
} else {
log.Info("Created failure links.")
}
failures = append(failures, &sum)
}
return failures
}