Optimize factory usage in ci/builds_spec.rb
What does this MR do and why?
Describe in detail what your merge request does and why.
This MR optimizes spec/models/ci/build_spec.rb
by removing most cascading creations of projects and CI pipelines.
Before
Finished in 2 minutes 53.2 seconds (files took 22.89 seconds to load)
633 examples, 0 failures
[TEST PROF INFO] Time spent in factories: 01:49.955 (62.28% of total time)
[TEST PROF INFO] Factories usage
Total: 1667
Total top-level: 617
Total time: 01:49.955 (out of 03:08.648)
Total uniq factories: 35
total top-level total time time per call top-level time name
371 370 72.5365s 0.1955s 72.5160s ci_build
262 21 63.5028s 0.2424s 10.3367s ci_pipeline
254 2 71.9575s 0.2833s 4.3130s project
254 0 18.4050s 0.0725s 0.0000s namespace
249 0 1.0707s 0.0043s 0.0000s ci_stage
125 84 1.6946s 0.0136s 1.0391s ci_job_artifact
31 28 8.6564s 0.2792s 2.4218s environment
24 23 0.6055s 0.0252s 0.5940s ci_runner
15 15 0.1143s 0.0076s 0.1143s ci_job_variable
12 9 17.6342s 1.4695s 8.5912s merge_request
9 9 0.0564s 0.0063s 0.0564s ci_variable
9 9 0.0420s 0.0047s 0.0420s ci_build_need
8 8 7.6398s 0.9550s 7.6398s deployment
6 4 0.5695s 0.0949s 0.4974s user
6 6 0.0443s 0.0074s 0.0443s ci_group_variable
3 3 0.7974s 0.2658s 0.7974s merge_request_diff
3 3 0.0153s 0.0051s 0.0153s merge_request_diff_commit
3 3 0.0197s 0.0066s 0.0197s ci_pipeline_variable
3 3 0.0144s 0.0048s 0.0144s ci_pending_build
2 2 0.0280s 0.0140s 0.0280s integration
2 2 0.0473s 0.0237s 0.0473s ci_instance_variable
2 2 0.0142s 0.0071s 0.0142s deploy_token
2 2 0.1034s 0.0517s 0.1034s project_hook
1 1 0.0076s 0.0076s 0.0076s ci_trigger_request
1 1 0.0254s 0.0254s 0.0254s todo
1 1 0.0329s 0.0329s 0.0329s ci_pipeline_schedule
1 1 0.0126s 0.0126s 0.0126s ci_pipeline_schedule_variable
1 1 0.2954s 0.2954s 0.2954s harbor_integration
1 1 0.1574s 0.1574s 0.1574s apple_app_store_integration
1 0 0.0032s 0.0032s 0.0000s namespace_ci_cd_settings
1 1 0.0923s 0.0923s 0.0923s group
1 0 0.0030s 0.0030s 0.0000s namespace_settings
1 1 0.0067s 0.0067s 0.0067s license
1 1 0.0795s 0.0795s 0.0795s ci_trigger
1 0 0.0582s 0.0582s 0.0000s owner
After
Finished in 1 minute 58.78 seconds (files took 24.21 seconds to load)
633 examples, 0 failures
[TEST PROF INFO] Time spent in factories: 00:50.931 (41.53% of total time)
[TEST PROF INFO] Factories usage
Total: 709
Total top-level: 609
Total time: 00:50.931 (out of 02:14.758)
Total uniq factories: 35
total top-level total time time per call top-level time name
371 370 19.0565s 0.0514s 19.0367s ci_build
125 84 2.3509s 0.0188s 1.6642s ci_job_artifact
31 28 8.5970s 0.2773s 1.9394s environment
26 22 4.5177s 0.1738s 4.0742s ci_pipeline
22 0 0.0968s 0.0044s 0.0000s ci_stage
15 14 0.5020s 0.0335s 0.4930s ci_runner
15 15 0.0730s 0.0049s 0.0730s ci_job_variable
12 9 10.8759s 0.9063s 8.9287s merge_request
11 0 0.8603s 0.0782s 0.0000s namespace
11 2 15.3546s 1.3959s 4.0586s project
9 9 0.0562s 0.0062s 0.0562s ci_variable
9 9 0.0278s 0.0031s 0.0278s ci_build_need
8 8 8.2309s 1.0289s 8.2309s deployment
6 4 0.6138s 0.1023s 0.5084s user
6 6 0.0460s 0.0077s 0.0460s ci_group_variable
3 3 0.8383s 0.2794s 0.8383s merge_request_diff
3 3 0.0138s 0.0046s 0.0138s merge_request_diff_commit
3 3 0.0203s 0.0068s 0.0203s ci_pipeline_variable
3 3 0.0537s 0.0179s 0.0537s ci_pending_build
2 2 0.0122s 0.0061s 0.0122s integration
2 2 0.0352s 0.0176s 0.0352s ci_instance_variable
2 2 0.0137s 0.0069s 0.0137s deploy_token
2 2 0.1069s 0.0534s 0.1069s project_hook
1 1 0.0083s 0.0083s 0.0083s ci_trigger_request
1 1 0.0229s 0.0229s 0.0229s todo
1 1 0.0331s 0.0331s 0.0331s ci_pipeline_schedule
1 1 0.0122s 0.0122s 0.0122s ci_pipeline_schedule_variable
1 1 0.2871s 0.2871s 0.2871s harbor_integration
1 1 0.1522s 0.1522s 0.1522s apple_app_store_integration
1 0 0.0033s 0.0033s 0.0000s namespace_ci_cd_settings
1 1 0.0885s 0.0885s 0.0885s group
1 0 0.0031s 0.0031s 0.0000s namespace_settings
1 1 0.0068s 0.0068s 0.0068s license
1 1 0.0890s 0.0890s 0.0890s ci_trigger
1 0 0.0605s 0.0605s 0.0000s owner
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 Brian Williams