Skip to content

Commit 26bc32d

Browse files
committed
Bug 1990742 - Ingest perfherder_data from JSON artifacts instead of parsing logs
1 parent 03400e2 commit 26bc32d

File tree

8 files changed

+301
-3
lines changed

8 files changed

+301
-3
lines changed

tests/etl/test_job_loader.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,27 @@ def test_job_transformation(pulse_jobs, transformed_pulse_jobs):
9191
assert transformed_pulse_jobs[idx] == json.loads(json.dumps(jl.transform(pulse_job)))
9292

9393

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+
94115
@responses.activate
95116
def test_new_job_transformation(new_pulse_jobs, new_transformed_jobs, failure_classifications):
96117
jl = JobLoader()
@@ -173,6 +194,27 @@ def test_ingest_pulse_jobs(
173194
] == logs_expected
174195

175196

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+
176218
def test_ingest_pulse_job_with_long_job_type_name(
177219
pulse_jobs, test_repository, push_stored, failure_classifications, mock_log_parser
178220
):

0 commit comments

Comments
 (0)