Speed up specs for pipeline serializer
What does this MR do and why?
This MR improves runtime of pipeline serializer specs by using build_stubbed
and before_all
where needed.
Closes #374498 (closed).
See &8745.
RSpec Profiling
Here's the output from test-prof
when run with FPROF=1
. Note:
-
Total amount
of factories created went down from 1409 to 317🚀 -
Total events
went down from 15905 to 4483 - Queries saved: 11422
Before
Finished in 54.09 seconds (files took 6.19 seconds to load)
16 examples, 0 failures
Randomized with seed 64083
[TEST PROF INFO] Time spent in factories: 00:39.707 (72.53% of total time)
[TEST PROF INFO] Factories usage
Total: 1409
Total top-level: 276
Total time: 00:39.707 (out of 00:58.551)
Total uniq factories: 14
total top-level total time time per call top-level time name
440 0 6.2791s 0.0143s 0.0000s ci_job_artifact
230 230 34.4583s 0.1498s 34.4583s ci_build
220 0 19.4055s 0.0882s 0.0000s ci_trigger_request
220 0 18.4981s 0.0841s 0.0000s ci_trigger
220 0 17.0274s 0.0774s 0.0000s owner
31 29 2.6659s 0.0860s 2.0371s ci_empty_pipeline
14 1 4.0355s 0.2882s 1.0556s project
14 0 1.2740s 0.0910s 0.0000s namespace
10 6 0.8178s 0.0818s 0.7669s ci_pipeline
4 4 0.6418s 0.1605s 0.6418s merge_request
2 2 0.6439s 0.3219s 0.6439s ci_sources_pipeline
2 2 0.0276s 0.0138s 0.0276s environment
1 1 0.0123s 0.0123s 0.0123s license
1 1 0.0645s 0.0645s 0.0645s user
After
Finished in 23.97 seconds (files took 6.53 seconds to load)
16 examples, 0 failures
Randomized with seed 65355
[TEST PROF INFO] Time spent in factories: 00:09.761 (39.63% of total time)
[TEST PROF INFO] Factories usage
Total: 317
Total top-level: 80
Total time: 00:09.761 (out of 00:28.635)
Total uniq factories: 14
total top-level total time time per call top-level time name
88 0 1.2821s 0.0146s 0.0000s ci_job_artifact
54 54 6.1946s 0.1147s 6.1946s ci_build
44 0 3.1312s 0.0712s 0.0000s ci_trigger_request
44 0 2.9824s 0.0678s 0.0000s ci_trigger
44 0 2.7174s 0.0618s 0.0000s owner
14 12 0.8506s 0.0608s 0.3906s ci_empty_pipeline
7 3 0.6370s 0.0910s 0.5358s ci_pipeline
6 1 2.3487s 0.3914s 1.1811s project
6 0 0.7306s 0.1218s 0.0000s namespace
4 4 0.8631s 0.2158s 0.8631s merge_request
2 2 0.4710s 0.2355s 0.4710s ci_sources_pipeline
2 2 0.0414s 0.0207s 0.0414s environment
1 1 0.0152s 0.0152s 0.0152s license
1 1 0.0682s 0.0682s 0.0682s user
How to set up and validate locally
FOSS_ONLY=1 bin/rspec ./spec/serializers/pipeline_serializer_spec.rb
bin/rspec ./spec/serializers/pipeline_serializer_spec.rb
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Peter Leitzen