Reduce SQL calls in merge request approval specs
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
- [-] Changelog entry
- [-] Documentation (if required)
-
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Tested in all supported browsers - [-] Informed Infrastructure department of a default or new setting change, if applicable per definition of done
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