Parse junit.xml.gz and calculate the difference between head and base
What does this MR do?
This MR does the following things
- It gives an ability to stream (single/concatenated) Gunzip file.
- It gives an ability to parse JUnit format XML.
- It gives an ability to struct
TestReports
under each pipeline. - It gives an ability to compare two
TestReports
and calculate three type of results - new failures, resolved failures, and existing failures.
Backend TODO:
-
Check multiple SELECT COUNT(*) FROM "ci_job_artifacts" WHERE "ci_job_artifacts"."job_id" = $1 AND "ci_job_artifacts"."file_type" = 4 ..
during collecting test reports -
Performance check with 1000 report. 1. memory usage, 2. timings, 3. executed queries -
Remove test codes from fixtures -
status: 'success/failed', every level, everywhere -
Add expose :status
which is gonna be(success,failed)
-
Asynchronous parsing -
Use ReactiveCache worker (ttl: 1h)
-
-
execution_time
to be in floats -
Merge the base BE MR -
After merged the MR, switch the target branch in !20576 (merged) to master
-
-
Write Unit specs -
Write integration specs - [-] Write feature specs => This will be on top of https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/20972
the end-goal (Each MR is based on the previous MR)
The list of merge requests for- Extend gitlab-ci.yml to request junit.xml test reports
- Parse junit.xml.gz and calculate the difference between head and base
- Frontend code for "JUnit XML Test Summary In MR widget"
Does this MR meet the acceptance criteria?
-
Changelog entry added, if necessary - [-] Documentation created/updated => https://gitlab.com/gitlab-org/gitlab-ce/issues/49867
-
Tests added for this feature/bug - Conforms to the code review guidelines
-
Has been reviewed by a Backend maintainer
-
-
End-to-end tests pass ( package-and-qa
manual pipeline job)
What are the relevant issue numbers?
Related https://gitlab.com/gitlab-org/gitlab-ce/issues/45318
Edited by Kamil Trzciński (Back 2025-01-01)