Reduce some user creation calls in notification_service_spec
What does this MR do?
Related issue: #241148
Queries saved: 10731
Before:
$ FPROF=1 EVENT_PROF='sql.active_record' ss spec/services/notification_service_spec.rb
Running via Spring preloader in process 61364
[TEST PROF INFO] Activating EVENT_PROF with `Spring.after_fork`
[TEST PROF INFO] Activating FPROF with `Spring.after_fork`
[TEST PROF INFO] FactoryProf enabled (simple mode)
Run options: include {:focus=>true}
All examples were filtered out; ignoring {:focus=>true}
[TEST PROF INFO] EventProf enabled (sql.active_record)
..................................................................................................................................................................................................................................................................................................................................[TEST PROF INFO] EventProf results for sql.active_record
Total time: 02:19.775 of 05:52.035 (39.7%)
Total events: 125673
Top 5 slowest suites (by time):
NotificationService (./spec/services/notification_service_spec.rb:5) – 02:19.775 (125673 / 322) of 05:52.035 (39.7%)
Finished in 5 minutes 56 seconds (files took 5.9 seconds to load)
322 examples, 0 failures
[TEST PROF INFO] Factories usage
Total: 1774
Total top-level: 1566
Total time: 97.9512s
Total uniq factories: 34
total top-level total time time per call top-level time name
1092 1046 39.1461s 0.0358s 37.5547s user
119 117 10.1498s 0.0853s 9.9700s issue
107 74 19.1946s 0.1794s 15.0977s project
96 96 23.3384s 0.2431s 23.3384s merge_request
86 3 3.2768s 0.0381s 0.0875s namespace
78 78 4.7081s 0.0604s 4.7081s group
53 53 1.8579s 0.0351s 1.8579s note_on_issue
28 28 0.7197s 0.0257s 0.7197s ci_pipeline
24 4 0.3624s 0.0151s 0.1769s label
22 2 0.1975s 0.0090s 0.0296s group_label
7 7 0.2325s 0.0332s 0.2325s milestone
6 6 0.1608s 0.0268s 0.1608s admin
6 6 0.2214s 0.0369s 0.2214s note_on_personal_snippet
6 6 0.7109s 0.1185s 0.7109s diff_note_on_merge_request
5 5 0.2928s 0.0586s 0.2928s note
5 5 0.3277s 0.0655s 0.3277s note_on_commit
4 4 0.3967s 0.0992s 0.3967s project_member
3 3 0.0222s 0.0074s 0.0222s review
3 3 0.0292s 0.0097s 0.0292s email
3 3 0.0187s 0.0062s 0.0187s notification_setting
3 0 0.4639s 0.1546s 0.0000s project_auto_devops
3 3 0.0662s 0.0221s 0.0662s remote_mirror
3 3 0.1722s 0.0574s 0.1722s prometheus_alert
2 2 0.5861s 0.2931s 0.5861s gpg_key
1 1 0.0865s 0.0865s 0.0865s project_snippet
1 1 0.1251s 0.1251s 0.1251s personal_key
1 1 0.0454s 0.0454s 0.0454s pages_domain
1 1 0.0156s 0.0156s 0.0156s license
1 1 0.3113s 0.3113s 0.3113s design
1 1 0.3280s 0.3280s 0.3280s diff_note_on_design
1 1 0.1810s 0.1810s 0.1810s release
1 0 0.0280s 0.0280s 0.0000s author
1 1 0.0450s 0.0450s 0.0450s note_on_project_snippet
1 1 0.0352s 0.0352s 0.0352s personal_snippet
Thong Kuah 21:27
$ FPROF=1 EVENT_PROF='sql.active_record' ss spec/services/notification_service_spec.rb
Running via Spring preloader in process 63645
[TEST PROF INFO] Activating EVENT_PROF with `Spring.after_fork`
[TEST PROF INFO] Activating FPROF with `Spring.after_fork`
[TEST PROF INFO] FactoryProf enabled (simple mode)
Run options: include {:focus=>true}
All examples were filtered out; ignoring {:focus=>true}
[TEST PROF INFO] EventProf enabled (sql.active_record)
..................................................................................................................................................................................................................................................................................................................................[TEST PROF INFO] EventProf results for sql.active_record
Total time: 02:31.983 of 06:20.110 (39.98%)
Total events: 136404
Top 5 slowest suites (by time):
NotificationService (./spec/services/notification_service_spec.rb:5) – 02:31.983 (136404 / 322) of 06:20.110 (39.98%)
Finished in 6 minutes 24 seconds (files took 4.8 seconds to load)
322 examples, 0 failures
[TEST PROF INFO] Factories usage
Total: 2045
Total top-level: 1837
Total time: 109.2719s
Total uniq factories: 34
total top-level total time time per call top-level time name
1363 1317 51.7597s 0.0380s 50.2239s user
119 117 10.1410s 0.0852s 9.9485s issue
107 74 19.8085s 0.1851s 15.1901s project
96 96 23.3012s 0.2427s 23.3012s merge_request
86 3 3.3628s 0.0391s 0.0906s namespace
78 78 3.5539s 0.0456s 3.5539s group
53 53 2.3466s 0.0443s 2.3466s note_on_issue
28 28 0.6043s 0.0216s 0.6043s ci_pipeline
24 4 0.2590s 0.0108s 0.0751s label
22 2 0.2028s 0.0092s 0.0273s group_label
7 7 0.2848s 0.0407s 0.2848s milestone
6 6 0.1615s 0.0269s 0.1615s admin
6 6 0.1205s 0.0201s 0.1205s note_on_personal_snippet
6 6 0.7357s 0.1226s 0.7357s diff_note_on_merge_request
5 5 0.1747s 0.0349s 0.1747s note
5 5 0.2215s 0.0443s 0.2215s note_on_commit
4 4 0.2833s 0.0708s 0.2833s project_member
3 3 0.0232s 0.0077s 0.0232s review
3 3 0.0292s 0.0097s 0.0292s email
3 3 0.0195s 0.0065s 0.0195s notification_setting
3 0 0.5934s 0.1978s 0.0000s project_auto_devops
3 3 0.0610s 0.0203s 0.0610s remote_mirror
3 3 0.1724s 0.0575s 0.1724s prometheus_alert
2 2 0.5637s 0.2818s 0.5637s gpg_key
1 1 0.0811s 0.0811s 0.0811s project_snippet
1 1 0.1092s 0.1092s 0.1092s personal_key
1 1 0.0447s 0.0447s 0.0447s pages_domain
1 1 0.0159s 0.0159s 0.0159s license
1 1 0.3230s 0.3230s 0.3230s design
1 1 0.2211s 0.2211s 0.2211s diff_note_on_design
1 1 0.1846s 0.1846s 0.1846s release
1 0 0.0278s 0.0278s 0.0000s author
1 1 0.0434s 0.0434s 0.0434s note_on_project_snippet
1 1 0.0364s 0.0364s 0.0364s personal_snippet
After:
Running via Spring preloader in process 61364
[TEST PROF INFO] Activating EVENT_PROF with `Spring.after_fork`
[TEST PROF INFO] Activating FPROF with `Spring.after_fork`
[TEST PROF INFO] FactoryProf enabled (simple mode)
Run options: include {:focus=>true}
All examples were filtered out; ignoring {:focus=>true}
[TEST PROF INFO] EventProf enabled (sql.active_record)
..................................................................................................................................................................................................................................................................................................................................[TEST PROF INFO] EventProf results for sql.active_record
Total time: 02:19.775 of 05:52.035 (39.7%)
Total events: 125673
Top 5 slowest suites (by time):
NotificationService (./spec/services/notification_service_spec.rb:5) – 02:19.775 (125673 / 322) of 05:52.035 (39.7%)
Finished in 5 minutes 56 seconds (files took 5.9 seconds to load)
322 examples, 0 failures
[TEST PROF INFO] Factories usage
Total: 1774
Total top-level: 1566
Total time: 97.9512s
Total uniq factories: 34
total top-level total time time per call top-level time name
1092 1046 39.1461s 0.0358s 37.5547s user
119 117 10.1498s 0.0853s 9.9700s issue
107 74 19.1946s 0.1794s 15.0977s project
96 96 23.3384s 0.2431s 23.3384s merge_request
86 3 3.2768s 0.0381s 0.0875s namespace
78 78 4.7081s 0.0604s 4.7081s group
53 53 1.8579s 0.0351s 1.8579s note_on_issue
28 28 0.7197s 0.0257s 0.7197s ci_pipeline
24 4 0.3624s 0.0151s 0.1769s label
22 2 0.1975s 0.0090s 0.0296s group_label
7 7 0.2325s 0.0332s 0.2325s milestone
6 6 0.1608s 0.0268s 0.1608s admin
6 6 0.2214s 0.0369s 0.2214s note_on_personal_snippet
6 6 0.7109s 0.1185s 0.7109s diff_note_on_merge_request
5 5 0.2928s 0.0586s 0.2928s note
5 5 0.3277s 0.0655s 0.3277s note_on_commit
4 4 0.3967s 0.0992s 0.3967s project_member
3 3 0.0222s 0.0074s 0.0222s review
3 3 0.0292s 0.0097s 0.0292s email
3 3 0.0187s 0.0062s 0.0187s notification_setting
3 0 0.4639s 0.1546s 0.0000s project_auto_devops
3 3 0.0662s 0.0221s 0.0662s remote_mirror
3 3 0.1722s 0.0574s 0.1722s prometheus_alert
2 2 0.5861s 0.2931s 0.5861s gpg_key
1 1 0.0865s 0.0865s 0.0865s project_snippet
1 1 0.1251s 0.1251s 0.1251s personal_key
1 1 0.0454s 0.0454s 0.0454s pages_domain
1 1 0.0156s 0.0156s 0.0156s license
1 1 0.3113s 0.3113s 0.3113s design
1 1 0.3280s 0.3280s 0.3280s diff_note_on_design
1 1 0.1810s 0.1810s 0.1810s release
1 0 0.0280s 0.0280s 0.0000s author
1 1 0.0450s 0.0450s 0.0450s note_on_project_snippet
1 1 0.0352s 0.0352s 0.0352s personal_snippet```
Edited by Thong Kuah