Speed up pipeline model specs
What does this MR do?
Improves execution speed of the pipeline model spec by around ~20 seconds, mostly by handling pipeline creation in each context.
We don't need to create an additional pipelines for some specs via a top level let
(which creates a new record for each spec) for instance, in validation specs.
Other specs can take advantage of let_it_be
, let_it_be_with_reload
, build
or build_stubbed
particular to the circumstance.
[TEST PROF INFO] Factories usage
Total: 1346
Total top-level: 1206
Total time: 51.1960s
Total uniq factories: 30
total top-level total time time per call top-level time name
402 402 8.0644s 0.0201s 8.0644s ci_empty_pipeline
239 227 8.1034s 0.0339s 7.8745s ci_pipeline
221 217 8.5415s 0.0386s 8.3380s ci_build
88 22 2.2175s 0.0252s 0.3552s ci_job_artifact
58 57 13.2336s 0.2282s 12.7119s merge_request
58 37 1.2916s 0.0223s 0.3942s ci_sources_pipeline
57 56 8.4317s 0.1479s 8.3229s project
47 26 0.8719s 0.0186s 0.5753s ci_bridge
38 38 0.5926s 0.0156s 0.5926s generic_commit_status
32 32 0.3426s 0.0107s 0.3426s commit_status
29 26 1.7865s 0.0616s 1.6657s user
16 16 0.1605s 0.0100s 0.1605s label
8 8 0.3707s 0.0463s 0.3707s namespace
8 8 0.0408s 0.0051s 0.0408s ci_stage_entity
8 8 0.2193s 0.0274s 0.2193s milestone
7 7 0.2475s 0.0354s 0.2475s project_hook
5 5 0.1809s 0.0362s 0.1809s group
5 0 0.0304s 0.0061s 0.0000s namespace_settings
4 4 0.1729s 0.0432s 0.1729s merge_request_diff
4 4 0.0232s 0.0058s 0.0232s merge_request_diff_commit
3 1 0.4230s 0.1410s 0.3253s cluster
1 1 0.0366s 0.0366s 0.0366s ci_runner
1 1 0.0210s 0.0210s 0.0210s external_pull_request
1 1 0.0811s 0.0811s 0.0811s ci_trigger_request
1 0 0.0659s 0.0659s 0.0000s ci_trigger
1 0 0.0454s 0.0454s 0.0000s owner
1 0 0.0628s 0.0628s 0.0000s cluster_provider_gcp
1 0 0.0646s 0.0646s 0.0000s cluster_platform_kubernetes
1 1 0.0678s 0.0678s 0.0678s pipelines_email_service
1 1 0.0112s 0.0112s 0.0112s license
[TEST PROF INFO] Factories usage
Total: 986
Total top-level: 846
Total time: 34.8263s
Total uniq factories: 30
total top-level total time time per call top-level time name
241 229 6.6360s 0.0275s 6.4176s ci_pipeline
221 217 7.9168s 0.0358s 7.7790s ci_build
91 91 1.4490s 0.0159s 1.4490s ci_empty_pipeline
88 22 1.6949s 0.0193s 0.2685s ci_job_artifact
58 37 0.3929s 0.0068s 0.3004s ci_sources_pipeline
54 53 10.3770s 0.1922s 9.9439s merge_request
47 26 0.6815s 0.0145s 0.4323s ci_bridge
45 44 5.5440s 0.1232s 5.4476s project
38 38 0.4680s 0.0123s 0.4680s generic_commit_status
32 32 0.4395s 0.0137s 0.4395s commit_status
15 12 0.6161s 0.0411s 0.4865s user
8 8 0.0625s 0.0078s 0.0625s ci_stage_entity
8 8 0.3041s 0.0380s 0.3041s namespace
7 7 0.2283s 0.0326s 0.2283s project_hook
5 5 0.1111s 0.0222s 0.1111s group
5 0 0.0184s 0.0037s 0.0000s namespace_settings
4 4 0.0200s 0.0050s 0.0200s merge_request_diff_commit
4 4 0.1037s 0.0259s 0.1037s merge_request_diff
3 1 0.4327s 0.1442s 0.3160s cluster
2 2 0.0416s 0.0208s 0.0416s label
1 1 0.0322s 0.0322s 0.0322s ci_runner
1 1 0.0260s 0.0260s 0.0260s milestone
1 1 0.0167s 0.0167s 0.0167s external_pull_request
1 1 0.0646s 0.0646s 0.0646s ci_trigger_request
1 0 0.0509s 0.0509s 0.0000s ci_trigger
1 0 0.0355s 0.0355s 0.0000s owner
1 0 0.0663s 0.0663s 0.0000s cluster_provider_gcp
1 0 0.0814s 0.0814s 0.0000s cluster_platform_kubernetes
1 1 0.0582s 0.0582s 0.0582s pipelines_email_service
1 1 0.0091s 0.0091s 0.0091s license
Screenshots (strongly suggested)
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 Allison Browne