Use let_it_be in repository_spec.rb
What does this MR do and why?
Related issue #374075 (closed)
Improve specs duration for spec/models/repository_spec.rb
The total running time of ./spec/models/repository_spec.rb is 472.42 seconds and it executes 33820 queries. It is likely this can be improved. Please review this suite or example for opportunities to fix slow tests.
Screenshots or screen recordings
Before
Finished in 15 minutes 41 seconds (files took 10.4 seconds to load)
410 examples, 0 failures
[TEST PROF INFO] Time spent in factories: 14:48.500 (94.34% of total time)
[TEST PROF INFO] Factories usage
Total: 876
Total top-level: 479
Total time: 14:48.500 (out of 15:46.798)
Total uniq factories: 10
total top-level total time time per call top-level time name
392 0 30.9307s 0.0789s 0.0000s namespace
390 388 877.6229s 2.2503s 877.2212s project
69 69 4.2629s 0.0618s 4.2629s user
13 13 3.7778s 0.2906s 3.7778s merge_request
3 3 2.2507s 0.7502s 2.2507s personal_snippet
3 0 0.1817s 0.0606s 0.0000s author
2 2 0.5291s 0.2645s 0.5291s project_empty_repo
2 2 0.2652s 0.1326s 0.2652s project_snippet
1 1 0.1851s 0.1851s 0.1851s project_wiki
1 1 0.0082s 0.0082s 0.0082s license
After
Finished in 5 minutes 27 seconds (files took 8.42 seconds to load)
410 examples, 0 failures
[TEST PROF INFO] Time spent in factories: 04:38.798 (85.02% of total time)
[TEST PROF INFO] Factories usage
Total: 314
Total top-level: 164
Total time: 04:38.798 (out of 05:32.218)
Total uniq factories: 10
total top-level total time time per call top-level time name
145 0 10.4980s 0.0724s 0.0000s namespace
143 141 272.1438s 1.9031s 271.7777s project
13 13 3.3295s 0.2561s 3.3295s merge_request
3 0 0.1825s 0.0608s 0.0000s author
3 3 2.5359s 0.8453s 2.5359s personal_snippet
2 2 0.2239s 0.1119s 0.2239s project_snippet
2 2 0.5278s 0.2639s 0.5278s project_empty_repo
1 1 0.1930s 0.1930s 0.1930s project_wiki
1 1 0.2050s 0.2050s 0.2050s user
1 1 0.0060s 0.0060s 0.0060s license
How to set up and validate locally
Numbered steps to set up and validate the change are strongly suggested.
FPROF=1 bundle exec rspec spec/models/repository_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 Alina Mihaila