Speed up ProductivityAnalyticsFinder spec using let_it_be
What does this MR do and why?
Describe in detail what your merge request does and why.
This MR speeds up the ProductivityAnalyticsFinder
spec by removing redundant factory initializations
for the projects factory.
This makes the tests complete in ~2 seconds instead of ~40 seconds.
Before
FPROF=1 bundle exec rspec ee/spec/finders/productivity_analytics_finder_spec.rb
[TEST PROF INFO] FactoryProf enabled (simple mode)
warning: parser/current is loading parser/ruby27, which recognizes2.7.6-compliant syntax, but you are running 2.7.5.
Please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
[TEST PROF INFO] FactoryProf enabled (simple mode)
[TEST PROF INFO] No factories detected
Run options: include {:focus=>true}
All examples were filtered out; ignoring {:focus=>true}
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
==> GitLab Workhorse set up in 26.705754 seconds...
[TEST PROF INFO] No factories detected
Test environment set up in 34.42921 seconds
......
Finished in 1 minute 22.17 seconds (files took 41.16 seconds to load)
6 examples, 0 failures
[TEST PROF INFO] Factories usage
Total: 33
Total top-level: 13
Total time: 00:42.303 (out of 01:57.170)
Total uniq factories: 4
total top-level total time time per call top-level time name
12 4 41.5321s 3.4610s 1.4469s project
12 0 1.5526s 0.1294s 0.0000s namespace
8 8 40.8484s 5.1060s 40.8484s merge_request
1 1 0.0084s 0.0084s 0.0084s license
After
FPROF=1 bundle exec rspec ee/spec/finders/productivity_analytics_finder_spec.rb
[TEST PROF INFO] FactoryProf enabled (simple mode)
warning: parser/current is loading parser/ruby27, which recognizes2.7.6-compliant syntax, but you are running 2.7.5.
Please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
Run options: include {:focus=>true}
All examples were filtered out; ignoring {:focus=>true}
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
[TEST PROF INFO] No factories detected
Test environment set up in 7.086739 seconds
......
Finished in 14.83 seconds (files took 15.3 seconds to load)
6 examples, 0 failures
[TEST PROF INFO] Factories usage
Total: 11
Total top-level: 10
Total time: 00:02.672 (out of 00:24.052)
Total uniq factories: 4
total top-level total time time per call top-level time name
8 8 1.7965s 0.2246s 1.7965s merge_request
1 1 0.0064s 0.0064s 0.0064s license
1 1 0.8699s 0.8699s 0.8699s project
1 0 0.2877s 0.2877s 0.0000s namespace
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