Merge branch 'fix-error-reporting-go' into 'master'

Fix error reporting for Go

See merge request gitlab-org/gitlab!72050
This commit is contained in:
Terri Chu 2021-11-09 15:18:53 +00:00
commit 28cf5c88d9
3 changed files with 35 additions and 2 deletions

View file

@ -28,7 +28,18 @@ def execute
private
def event
params[:event]
@event ||= format_event(params[:event])
end
def format_event(event)
# Some SDK send exception payload as Array. For exmple Go lang SDK.
# We need to convert it to hash format we expect.
if event['exception'].is_a?(Array)
exception = event['exception']
event['exception'] = { 'values' => exception }
end
event
end
def exception

File diff suppressed because one or more lines are too long

View file

@ -4,7 +4,8 @@
RSpec.describe ErrorTracking::CollectErrorService do
let_it_be(:project) { create(:project) }
let_it_be(:parsed_event) { Gitlab::Json.parse(fixture_file('error_tracking/parsed_event.json')) }
let_it_be(:parsed_event_file) { 'error_tracking/parsed_event.json' }
let_it_be(:parsed_event) { Gitlab::Json.parse(fixture_file(parsed_event_file)) }
subject { described_class.new(project, nil, event: parsed_event) }
@ -72,5 +73,25 @@
end
end
end
context 'go payload' do
let(:parsed_event) { Gitlab::Json.parse(fixture_file('error_tracking/go_parsed_event.json')) }
it 'has correct values set' do
subject.execute
event = ErrorTracking::ErrorEvent.last
error = event.error
expect(error.name).to eq '*errors.errorString'
expect(error.description).to start_with 'Hello world'
expect(error.platform).to eq 'go'
expect(event.description).to start_with 'Hello world'
expect(event.level).to eq 'error'
expect(event.environment).to eq 'Accumulate'
expect(event.payload).to eq parsed_event
end
end
end
end