Skip to content

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

Merge request reports