Speed-up API error tracking project settings specs

What does this MR do and why?

Speed-up API error tracking project settings specs

Assign roles only once in a before_all block.

Speed up?

The overall speed up is small but it can be seen that After we are using less SQL queries (Total events: 1435 after vs Total events: 2082 before) because we are using add_X only once in a before_all block at the top.

Before

[TEST PROF INFO] RSpecDissect report

Total time: 00:08.676

Total `let` time: 00:00.244
Total `before(:each)` time: 00:02.423

Top 5 slowest suites (by `let` time):

API::ErrorTra...rojectSettings (./spec/requests/api/error_tracking/project_settings_spec.rb:5) – 00:00.244 of 00:08.676 (27)
 ↳ project – 49
 ↳ user – 49
 ↳ setting – 22

Top 5 slowest suites (by `before(:each)` time):

API::ErrorTra...rojectSettings (./spec/requests/api/error_tracking/project_settings_spec.rb:5) – 00:02.423 of 00:08.676 (27)

[TEST PROF INFO] FactoryDoctor says: "Looks good to me!"
[TEST PROF INFO] EventProf results for sql.active_record

Total time: 00:02.543 of 00:10.914 (23.31%)
Total events: 2082

Top 5 slowest suites (by time):

API::ErrorTra...rojectSettings (./spec/requests/api/error_tracking/project_settings_spec.rb:5) – 00:02.543 (2082 / 27) of 00:10.914 (23.31%)


Finished in 17.64 seconds (files took 1.81 seconds to load)
27 examples, 0 failures

Randomized with seed 47652

[TEST PROF INFO] Time spent in factories: 00:02.174 (10.98% of total time)
[TEST PROF INFO] Factories usage

 Total: 34
 Total top-level: 30
 Total time: 00:02.174 (out of 00:20.322)
 Total uniq factories: 6

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

      24          24        0.2471s            0.0103s             0.2471s personal_access_token
       3           2        0.9426s            0.3142s             0.7079s            project
       3           0        0.2584s            0.0861s             0.0000s          namespace
       2           2        0.3030s            0.1515s             0.3030s project_error_tracking_setting
       1           1        0.9093s            0.9093s             0.9093s               user
       1           1        0.0071s            0.0071s             0.0071s            license

After

[TEST PROF INFO] RSpecDissect report

Total time: 00:06.794

Total `let` time: 00:00.001
Total `before(:each)` time: 00:00.457

Top 5 slowest suites (by `let` time):

API::ErrorTra...rojectSettings (./spec/requests/api/error_tracking/project_settings_spec.rb:5) – 00:00.001 of 00:06.794 (27)
 ↳ project – 27
 ↳ user – 27
 ↳ setting – 22

Top 5 slowest suites (by `before(:each)` time):

API::ErrorTra...rojectSettings (./spec/requests/api/error_tracking/project_settings_spec.rb:5) – 00:00.457 of 00:06.794 (27)

[TEST PROF INFO] FactoryDoctor says: "Looks good to me!"
[TEST PROF INFO] EventProf results for sql.active_record

Total time: 00:01.505 of 00:08.330 (18.08%)
Total events: 1435

Top 5 slowest suites (by time):

API::ErrorTra...rojectSettings (./spec/requests/api/error_tracking/project_settings_spec.rb:5) – 00:01.505 (1435 / 27) of 00:08.330 (18.08%)


Finished in 13.99 seconds (files took 2.33 seconds to load)
27 examples, 0 failures

Randomized with seed 47652

[TEST PROF INFO] Time spent in factories: 00:01.266 (7.58% of total time)
[TEST PROF INFO] Factories usage

 Total: 33
 Total top-level: 31
 Total time: 00:01.266 (out of 00:17.112)
 Total uniq factories: 6

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

      24          24        0.2559s            0.0107s             0.2559s personal_access_token
       3           3        0.1542s            0.0514s             0.1542s               user
       2           2        0.8001s            0.4000s             0.8001s            project
       2           0        0.4009s            0.2004s             0.0000s          namespace
       1           1        0.0473s            0.0473s             0.0473s project_error_tracking_setting
       1           1        0.0092s            0.0092s             0.0092s            license

How to set up and validate locally

EVENT_PROF='sql.active_record' FPROF=1 bin/rspec spec/requests/api/error_tracking/project_settings_spec.rb

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Peter Leitzen

Merge request reports

Loading