diff options
Diffstat (limited to 'spec/serializers/pipeline_serializer_spec.rb')
-rw-r--r-- | spec/serializers/pipeline_serializer_spec.rb | 61 |
1 files changed, 58 insertions, 3 deletions
diff --git a/spec/serializers/pipeline_serializer_spec.rb b/spec/serializers/pipeline_serializer_spec.rb index c8f25423f85..c1386ac4eb2 100644 --- a/spec/serializers/pipeline_serializer_spec.rb +++ b/spec/serializers/pipeline_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe PipelineSerializer do +RSpec.describe PipelineSerializer do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:user) } @@ -155,11 +155,25 @@ describe PipelineSerializer do it 'verifies number of queries', :request_store do recorded = ActiveRecord::QueryRecorder.new { subject } - expected_queries = Gitlab.ee? ? 43 : 40 + expected_queries = Gitlab.ee? ? 46 : 43 expect(recorded.count).to be_within(2).of(expected_queries) expect(recorded.cached_count).to eq(0) end + + context 'with the :build_report_summary flag turned off' do + before do + stub_feature_flags(build_report_summary: false) + end + + it 'verifies number of queries', :request_store do + recorded = ActiveRecord::QueryRecorder.new { subject } + expected_queries = Gitlab.ee? ? 43 : 40 + + expect(recorded.count).to be_within(2).of(expected_queries) + expect(recorded.cached_count).to eq(0) + end + end end context 'with different refs' do @@ -176,7 +190,48 @@ describe PipelineSerializer do # pipeline. With the same ref this check is cached but if refs are # different then there is an extra query per ref # https://gitlab.com/gitlab-org/gitlab-foss/issues/46368 - expected_queries = Gitlab.ee? ? 46 : 43 + expected_queries = Gitlab.ee? ? 49 : 46 + + expect(recorded.count).to be_within(2).of(expected_queries) + expect(recorded.cached_count).to eq(0) + end + + context 'with the :build_report_summary flag turned off' do + before do + stub_feature_flags(build_report_summary: false) + end + + it 'verifies number of queries', :request_store do + recorded = ActiveRecord::QueryRecorder.new { subject } + expected_queries = Gitlab.ee? ? 46 : 43 + + expect(recorded.count).to be_within(2).of(expected_queries) + expect(recorded.cached_count).to eq(0) + end + end + end + + context 'with triggered pipelines' do + let(:ref) { 'feature' } + + before do + pipeline_1 = create(:ci_pipeline) + build_1 = create(:ci_build, pipeline: pipeline_1) + create(:ci_sources_pipeline, source_job: build_1) + + pipeline_2 = create(:ci_pipeline) + build_2 = create(:ci_build, pipeline: pipeline_2) + create(:ci_sources_pipeline, source_job: build_2) + end + + it 'verifies number of queries', :request_store do + recorded = ActiveRecord::QueryRecorder.new { subject } + + # 99 queries by default + 2 related to preloading + # :source_pipeline and :source_job + # Existing numbers are high and require performance optimization + # https://gitlab.com/gitlab-org/gitlab/-/issues/225156 + expected_queries = Gitlab.ee? ? 101 : 92 expect(recorded.count).to be_within(2).of(expected_queries) expect(recorded.cached_count).to eq(0) |