Skip to content

Commit

Permalink
Risk Analysis: ensure Test ID is populated
Browse files Browse the repository at this point in the history
At the time that openshift-e2e-tests requests RA, test results haven't
yet been associated with test IDs (we just have junits). So it is
posting a `ProwJobRun` with partial `Test` records to the API, sans IDs.
This PR changes the past-results queries by test name to also return the
test ID, and uses that to populate RA results.
  • Loading branch information
sosiouxme committed Jul 11, 2024
1 parent 4fa6a90 commit 08cb762
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 5 deletions.
10 changes: 9 additions & 1 deletion pkg/api/job_runs.go
Original file line number Diff line number Diff line change
Expand Up @@ -528,9 +528,17 @@ func runTestRunAnalysis(failedTest models.ProwJobRunTest, jobRun *models.ProwJob
return apitype.ProwJobRunTestRiskAnalysis{}, errJobNames
}

// one of our data sources should have the test ID
testID := failedTest.Test.ID
if testID == 0 && testResultsJobNames != nil {
testID = uint(testResultsJobNames.ID)
}
if testID == 0 && testResultsVariants != nil {
testID = uint(testResultsVariants.ID)
}
analysis := apitype.ProwJobRunTestRiskAnalysis{
Name: failedTest.Test.Name,
TestID: failedTest.Test.ID,
TestID: testID,
OpenBugs: failedTest.Test.Bugs,
}
// Watch out for tests that ran in previous period, but not current, no sense comparing to 0 runs:
Expand Down
5 changes: 2 additions & 3 deletions pkg/api/tests.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ func BuildTestsResults(dbc *db.DB, release, period string, collapse, includeOver
// Collapse groups the test results together -- otherwise we return the test results per-variant combo (NURP+)
variantSelect := ""
if collapse {
rawQuery = rawQuery.Select(`name,watchlist,jira_component,jira_component_id,` + query.QueryTestSummer).Group("name,watchlist,jira_component,jira_component_id")
rawQuery = rawQuery.Select(`id,name,watchlist,jira_component,jira_component_id,` + query.QueryTestSummer).Group("id,name,watchlist,jira_component,jira_component_id")
} else {
rawQuery = query.TestsByNURPAndStandardDeviation(dbc, release, table)
variantSelect = "suite_name, variants," +
Expand All @@ -210,9 +210,8 @@ func BuildTestsResults(dbc *db.DB, release, period string, collapse, includeOver
}

testReports := make([]apitype.Test, 0)
// FIXME: Add test id to matview, for now generate with ROW_NUMBER OVER
processedResults := dbc.DB.Table("(?) as results", rawQuery).
Select(`ROW_NUMBER() OVER() as id, watchlist, name, jira_component, jira_component_id,` + variantSelect + query.QueryTestSummarizer).
Select(`id, watchlist, name, jira_component, jira_component_id,` + variantSelect + query.QueryTestSummarizer).
Where("current_runs > 0 or previous_runs > 0")

finalResults := dbc.DB.Table("(?) as final_results", processedResults)
Expand Down
2 changes: 1 addition & 1 deletion pkg/db/query/test_queries.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ const (

QueryTestSummarizer = QueryTestFields + "," + QueryTestPercentages

QueryTestAnalysis = "select current_successes, current_runs, current_successes * 100.0 / NULLIF(current_runs, 0) AS current_pass_percentage from ( select sum(runs) as current_runs, sum(passes) as current_successes from prow_test_analysis_by_job_14d_matview where test_name = '%s' AND job_name in (%s))t"
QueryTestAnalysis = "select test_id as id, current_successes, current_runs, current_successes * 100.0 / NULLIF(current_runs, 0) AS current_pass_percentage from ( select test_id, sum(runs) as current_runs, sum(passes) as current_successes from prow_test_analysis_by_job_14d_matview where test_name = '%s' AND job_name in (%s) GROUP BY test_id)t"
)

// TestReportsByVariant returns a test report for every test in the db matching the given substrings, separated by variant.
Expand Down

0 comments on commit 08cb762

Please sign in to comment.