diff options
Diffstat (limited to 'spec/services/ci/append_build_trace_service_spec.rb')
-rw-r--r-- | spec/services/ci/append_build_trace_service_spec.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/spec/services/ci/append_build_trace_service_spec.rb b/spec/services/ci/append_build_trace_service_spec.rb index 487dbacbe90..20f7967d1f1 100644 --- a/spec/services/ci/append_build_trace_service_spec.rb +++ b/spec/services/ci/append_build_trace_service_spec.rb @@ -76,4 +76,36 @@ RSpec.describe Ci::AppendBuildTraceService do expect(build.failure_reason).to eq 'trace_size_exceeded' end end + + context 'when debug_trace param is provided' do + let(:metadata) { Ci::BuildMetadata.find_by(build_id: build) } + let(:stream_size) { 192.kilobytes } + let(:body_data) { 'x' * stream_size } + let(:content_range) { "#{body_start}-#{stream_size}" } + + context 'when sending the first trace' do + let(:body_start) { 0 } + + it 'updates build metadata debug_trace_enabled' do + described_class + .new(build, content_range: content_range, debug_trace: true) + .execute(body_data) + + expect(metadata.debug_trace_enabled).to be(true) + end + end + + context 'when sending the second trace' do + let(:body_start) { 1 } + + it 'does not update build metadata debug_trace_enabled', :aggregate_failures do + query_recorder = ActiveRecord::QueryRecorder.new do + described_class.new(build, content_range: content_range, debug_trace: true).execute(body_data) + end + + expect(metadata.debug_trace_enabled).to be(false) + expect(query_recorder.log).not_to include(/p_ci_builds_metadata/) + end + end + end end |