Skip to content

Reduce SQL calls in merge request approval specs

Tan Le requested to merge tancnle/reduce-sql-calls-in-approval-specs into master

What does this MR do?

Reduce database calls in approval rules specs

This MR converts let to let_it_be to reduce the number of database calls when setting up test data. All Rubocop violations on touched files are also fixed.

Before: 106 calls
Total time: 00:09.184 of 01:30.064 (10.2%)
Total events: 3661

Top 5 slowest suites (by time):

Merge request...approval rules (./ee/spec/features/merge_request/user_sets_approval_rules_spec.rb:5) – 00:05.249 (1842 / 3) of 01:09.637 (7.54%)
Merge request...approval rules (./ee/spec/features/merge_request/user_edits_approval_rules_mr_spec.rb:5) – 00:03.272 (1500 / 4) of 00:18.978 (17.24%)
ApprovalRules::GroupFinder (./ee/spec/finders/approval_rules/group_finder_spec.rb:5) – 00:00.662 (319 / 2) of 00:01.448 (45.73%)



Finished in 1 minute 38.14 seconds (files took 11.26 seconds to load)
9 examples, 0 failures

Randomized with seed 45252

[TEST PROF INFO] Factories usage

 Total: 106
 Total top-level: 85
 Total time: 9.2746s
 Total uniq factories: 9

   total   top-level     total time      time per call      top-level time               name

      25          25        1.2346s            0.0494s             1.2346s approval_project_rule
      23          23        2.0340s            0.0884s             2.0340s               user
      12          12        0.2546s            0.0212s             0.2546s approval_merge_request_rule
      10           8        4.0262s            0.4026s             3.4265s            project
      10          10        0.7440s            0.0744s             0.7440s              group
      10           0        0.0838s            0.0084s             0.0000s namespace_settings
       9           0        0.7394s            0.0822s             0.0000s          namespace
       4           4        1.5321s            0.3830s             1.5321s      merge_request
       3           3        0.0487s            0.0162s             0.0487s            license
After: 43 calls

Total time: 00:06.755 of 01:23.172 (8.12%)
Total events: 2739

Top 5 slowest suites (by time):

Merge request...approval rules (./ee/spec/features/merge_request/user_sets_approval_rules_spec.rb:5) – 00:03.634 (1491 / 3) of 00:22.629 (16.06%)
Merge request...approval rules (./ee/spec/features/merge_request/user_edits_approval_rules_mr_spec.rb:5) – 00:02.670 (1036 / 4) of 00:59.523 (4.49%)
ApprovalRules::GroupFinder (./ee/spec/finders/approval_rules/group_finder_spec.rb:5) – 00:00.450 (212 / 2) of 00:01.019 (44.19%)



Finished in 1 minute 30.93 seconds (files took 10.86 seconds to load)
9 examples, 0 failures

Randomized with seed 1304

[TEST PROF INFO] Factories usage

 Total: 43
 Total top-level: 33
 Total time: 4.6959s
 Total uniq factories: 9

   total   top-level     total time      time per call      top-level time               name

       9           9        0.9759s            0.1084s             0.9759s               user
       8           8        0.5527s            0.0691s             0.5527s approval_project_rule
       6           0        0.0495s            0.0082s             0.0000s namespace_settings
       6           6        0.4293s            0.0715s             0.4293s              group
       4           3        1.8787s            0.4697s             1.5533s            project
       3           3        0.1309s            0.0436s             0.1309s approval_merge_request_rule
       3           3        0.0340s            0.0113s             0.0340s            license
       3           0        0.2097s            0.0699s             0.0000s          namespace
       1           1        1.0198s            1.0198s             1.0198s      merge_request

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • [-] Label as security and @ mention @gitlab-com/gl-security/appsec
  • [-] The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • [-] Security reports checked/validated by a reviewer from the AppSec team
Edited by Tan Le

Merge request reports