@@ -249,3 +249,40 @@ func TestAIAssessmentKCSAN(t *testing.T) {
249249 labels = bug .LabelValues (RaceLabel )
250250 require .Len (t , labels , 0 )
251251}
252+
253+ func TestAIJobsFiltering (t * testing.T ) {
254+ c := NewSpannerCtx (t )
255+ defer c .Close ()
256+
257+ build := testBuild (1 )
258+ c .aiClient .UploadBuild (build )
259+
260+ crash := testCrash (build , 1 )
261+ crash .Title = "KCSAN: data-race in foo / bar"
262+ c .aiClient .ReportCrash (crash )
263+ c .aiClient .pollEmailBug ()
264+
265+ pollResp , err := c .aiClient .AIJobPoll (& dashapi.AIJobPollReq {
266+ CodeRevision : prog .GitRevision ,
267+ Workflows : []dashapi.AIWorkflow {
268+ {Type : ai .WorkflowAssessmentKCSAN , Name : string (ai .WorkflowAssessmentKCSAN )},
269+ {Type : ai .WorkflowPatching , Name : "patching" },
270+ },
271+ })
272+ require .NoError (t , err )
273+ require .NotEmpty (t , pollResp .ID )
274+
275+ resp , err := c .GET ("/ains/ai" )
276+ require .NoError (t , err )
277+ require .Contains (t , string (resp ), "KCSAN: data-race" )
278+
279+ // Filter by correct workflow.
280+ resp , err = c .GET ("/ains/ai?workflow=" + string (ai .WorkflowAssessmentKCSAN ))
281+ require .NoError (t , err )
282+ require .Contains (t , string (resp ), "KCSAN: data-race" )
283+
284+ // Filter by usage of another workflow (should hide it).
285+ resp , err = c .GET ("/ains/ai?workflow=patching" )
286+ require .NoError (t , err )
287+ require .NotContains (t , string (resp ), "KCSAN: data-race" )
288+ }
0 commit comments