@@ -91,6 +91,27 @@ def test_job_transformation(pulse_jobs, transformed_pulse_jobs):
91
91
assert transformed_pulse_jobs [idx ] == json .loads (json .dumps (jl .transform (pulse_job )))
92
92
93
93
94
+ def test_job_transformation_extracts_perfherder_data (pulse_jobs ):
95
+ jl = JobLoader ()
96
+ pulse_job = pulse_jobs [0 ]
97
+ links = pulse_job .setdefault ("jobInfo" , {}).setdefault ("links" , [])
98
+ links .append (
99
+ {
100
+ "label" : "artifact uploaded" ,
101
+ "linkText" : "perfherder-data-decision.json" ,
102
+ "url" : "https://example.mozilla.com/perfherder-data-decision.json" ,
103
+ }
104
+ )
105
+ transformed_job = jl .transform (pulse_job )
106
+ assert transformed_job ["job" ]["perfherder_data_references" ] == [
107
+ {
108
+ "name" : "perfherder-data-decision.json" ,
109
+ "url" : "https://example.mozilla.com/perfherder-data-decision.json" ,
110
+ "parse_status" : "pending" ,
111
+ }
112
+ ]
113
+
114
+
94
115
@responses .activate
95
116
def test_new_job_transformation (new_pulse_jobs , new_transformed_jobs , failure_classifications ):
96
117
jl = JobLoader ()
@@ -173,6 +194,27 @@ def test_ingest_pulse_jobs(
173
194
] == logs_expected
174
195
175
196
197
+ def test_ingest_pulse_job_with_perfherder_data (
198
+ pulse_jobs , push_stored , failure_classifications , mock_log_parser
199
+ ):
200
+ jl = JobLoader ()
201
+ pulse_job = copy .deepcopy (pulse_jobs [0 ])
202
+ pulse_job ["origin" ]["revision" ] = push_stored [0 ]["revision" ]
203
+ pulse_job ["jobInfo" ]["links" ] = [
204
+ {
205
+ "label" : "artifact uploaded" ,
206
+ "linkText" : "perfherder-data-decision.json" ,
207
+ "url" : "https://example.mozilla.com/perfherder-data-decision.json" ,
208
+ }
209
+ ]
210
+
211
+ jl .process_job (pulse_job , "https://firefox-ci-tc.services.mozilla.com" )
212
+
213
+ names = list (JobLog .objects .filter (job_id = 1 ).values_list ("name" , flat = True ))
214
+ assert "live_backing_log" in names
215
+ assert any (n .startswith ("perfherder-data" ) for n in names )
216
+
217
+
176
218
def test_ingest_pulse_job_with_long_job_type_name (
177
219
pulse_jobs , test_repository , push_stored , failure_classifications , mock_log_parser
178
220
):
0 commit comments