summaryrefslogtreecommitdiff
path: root/spec/serializers/pipeline_serializer_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/serializers/pipeline_serializer_spec.rb')
-rw-r--r--spec/serializers/pipeline_serializer_spec.rb61
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)