Skip to content

Use let_it_be in repository_spec.rb

Alina Mihaila requested to merge am-improve-repository-specs into master

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.

Edited by Alina Mihaila

Merge request reports