Improve performance of blob policy spec
What does this MR do and why?
This MR improves performance for blob policy spec by using let_it_be_with_reload
combined with update!
to avoid repetitive project factory creations.
RSpec Profiling
Here's the output from test-prof
when run with FPROF=1
. Note:
-
Total amount
of factories created went down from 119 to 37🚀 -
Total events
went down from 5383 to 2511 - Queries saved: 2872
Before
[TEST PROF INFO] EventProf results for sql.active_record
Total time: 00:13.777 of 00:34.404 (40.05%)
Total events: 5383
Top 5 slowest suites (by time):
BlobPolicy (./spec/policies/blob_policy_spec.rb:5) – 00:13.777 (5383 / 42) of 00:34.404 (40.05%)
Finished in 46.38 seconds (files took 16.1 seconds to load)
42 examples, 0 failures
[TEST PROF INFO] Factories usage
Total: 119
Total top-level: 77
Total time: 00:28.657 (out of 00:58.535)
Total uniq factories: 4
total top-level total time time per call top-level time name
42 42 24.4834s 0.5829s 24.4834s project
42 0 6.9447s 0.1653s 0.0000s namespace
34 34 4.1659s 0.1225s 4.1659s user
1 1 0.0082s 0.0082s 0.0082s license
After
[TEST PROF INFO] EventProf results for sql.active_record
Total time: 00:06.227 of 00:19.857 (31.36%)
Total events: 2511
Top 5 slowest suites (by time):
BlobPolicy (./spec/policies/blob_policy_spec.rb:5) – 00:06.227 (2511 / 42) of 00:19.857 (31.36%)
Finished in 31.18 seconds (files took 15.81 seconds to load)
42 examples, 0 failures
[TEST PROF INFO] Factories usage
Total: 37
Total top-level: 36
Total time: 00:10.541 (out of 00:43.007)
Total uniq factories: 4
total top-level total time time per call top-level time name
34 34 4.6442s 0.1366s 4.6442s user
1 1 0.0143s 0.0143s 0.0143s license
1 1 5.8826s 5.8826s 5.8826s project
1 0 0.3638s 0.3638s 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 Peter Leitzen