Skip to content

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.

Edited by Brian Williams

Merge request reports