Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
3520563f
Commit
3520563f
authored
May 28, 2021
by
Quang-Minh Nguyen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix incompatibilities after gem upgrade
Issue
https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/849
parent
fa3e6a81
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
75 additions
and
62 deletions
+75
-62
spec/lib/gitlab/error_tracking/context_payload_generator_spec.rb
...b/gitlab/error_tracking/context_payload_generator_spec.rb
+1
-1
spec/lib/gitlab/error_tracking/log_formatter_spec.rb
spec/lib/gitlab/error_tracking/log_formatter_spec.rb
+4
-4
spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb
...rror_tracking/processor/context_payload_processor_spec.rb
+9
-9
spec/lib/gitlab/error_tracking/processor/grpc_error_processor_spec.rb
...lab/error_tracking/processor/grpc_error_processor_spec.rb
+10
-9
spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb
...gitlab/error_tracking/processor/sidekiq_processor_spec.rb
+10
-8
spec/lib/gitlab/error_tracking_spec.rb
spec/lib/gitlab/error_tracking_spec.rb
+40
-30
spec/requests/api/helpers_spec.rb
spec/requests/api/helpers_spec.rb
+1
-1
No files found.
spec/lib/gitlab/error_tracking/context_payload_generator_spec.rb
View file @
3520563f
# frozen_string_literal: true
require
'
fast_
spec_helper'
require
'spec_helper'
require
'rspec-parameterized'
RSpec
.
describe
Gitlab
::
ErrorTracking
::
ContextPayloadGenerator
do
...
...
spec/lib/gitlab/error_tracking/log_formatter_spec.rb
View file @
3520563f
...
...
@@ -27,9 +27,9 @@ RSpec.describe Gitlab::ErrorTracking::LogFormatter do
end
before
do
Raven
.
context
.
user
[
:user_flag
]
=
'flag'
Raven
.
context
.
tags
[
:shard
]
=
'catchall'
Raven
.
context
.
extra
[
:some_info
]
=
'info'
Sentry
.
set_user
(
user_flag:
'flag'
)
Sentry
.
set_tags
(
shard:
'catchall'
)
Sentry
.
set_extras
(
some_info:
'info'
)
allow
(
exception
).
to
receive
(
:backtrace
).
and_return
(
[
...
...
@@ -40,7 +40,7 @@ RSpec.describe Gitlab::ErrorTracking::LogFormatter do
end
after
do
::
Raven
::
Context
.
clear!
::
Sentry
.
get_current_scope
.
clear
end
it
'appends error-related log fields and filters sensitive Sidekiq arguments'
do
...
...
spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb
View file @
3520563f
...
...
@@ -4,18 +4,14 @@ require 'spec_helper'
RSpec
.
describe
Gitlab
::
ErrorTracking
::
Processor
::
ContextPayloadProcessor
do
describe
'.call'
do
let
(
:required_options
)
do
{
configuration:
Raven
.
configuration
,
context:
Raven
.
context
,
breadcrumbs:
Raven
.
breadcrumbs
}
end
let
(
:event
)
{
Raven
::
Event
.
new
(
required_options
.
merge
(
payload
))
}
let
(
:exception
)
{
StandardError
.
new
(
'Test exception'
)
}
let
(
:event
)
{
Sentry
.
get_current_client
.
event_from_exception
(
exception
)
}
let
(
:result_hash
)
{
described_class
.
call
(
event
).
to_hash
}
before
do
Sentry
.
get_current_scope
.
update_from_options
(
**
payload
)
Sentry
.
get_current_scope
.
apply_to_event
(
event
)
allow_next_instance_of
(
Gitlab
::
ErrorTracking
::
ContextPayloadGenerator
)
do
|
generator
|
allow
(
generator
).
to
receive
(
:generate
).
and_return
(
user:
{
username:
'root'
},
...
...
@@ -25,6 +21,10 @@ RSpec.describe Gitlab::ErrorTracking::Processor::ContextPayloadProcessor do
end
end
after
do
Sentry
.
get_current_scope
.
clear
end
let
(
:payload
)
do
{
user:
{
ip_address:
'127.0.0.1'
},
...
...
spec/lib/gitlab/error_tracking/processor/grpc_error_processor_spec.rb
View file @
3520563f
...
...
@@ -4,16 +4,17 @@ require 'spec_helper'
RSpec
.
describe
Gitlab
::
ErrorTracking
::
Processor
::
GrpcErrorProcessor
do
describe
'.call'
do
let
(
:
required_options
)
do
{
configuration:
Raven
.
configuration
,
context:
Raven
.
context
,
breadcrumbs:
Raven
.
breadcrumbs
}
let
(
:
event
)
{
Sentry
.
get_current_client
.
event_from_exception
(
exception
)
}
let
(
:result_hash
)
{
described_class
.
call
(
event
).
to_hash
}
before
do
Sentry
.
get_current_scope
.
update_from_options
(
**
data
)
Sentry
.
get_current_scope
.
apply_to_event
(
event
)
end
let
(
:event
)
{
Raven
::
Event
.
from_exception
(
exception
,
required_options
.
merge
(
data
))
}
let
(
:result_hash
)
{
described_class
.
call
(
event
).
to_hash
}
after
do
Sentry
.
get_current_scope
.
clear
end
context
'when there is no GRPC exception'
do
let
(
:exception
)
{
RuntimeError
.
new
}
...
...
@@ -56,7 +57,7 @@ RSpec.describe Gitlab::ErrorTracking::Processor::GrpcErrorProcessor do
end
it
'removes the debug error string and stores it as an extra field'
do
expect
(
result_hash
).
not_to
include
(
:fingerprint
)
expect
(
result_hash
[
:fingerprint
]).
to
be_empty
expect
(
result_hash
[
:exception
][
:values
].
first
)
.
to
include
(
type:
'GRPC::DeadlineExceeded'
,
value:
'4:Deadline Exceeded.'
)
...
...
spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb
View file @
3520563f
...
...
@@ -95,16 +95,18 @@ RSpec.describe Gitlab::ErrorTracking::Processor::SidekiqProcessor do
end
describe
'.call'
do
let
(
:required_options
)
do
{
configuration:
Raven
.
configuration
,
context:
Raven
.
context
,
breadcrumbs:
Raven
.
breadcrumbs
}
let
(
:exception
)
{
StandardError
.
new
(
'Test exception'
)
}
let
(
:event
)
{
Sentry
.
get_current_client
.
event_from_exception
(
exception
)
}
let
(
:result_hash
)
{
described_class
.
call
(
event
).
to_hash
}
before
do
Sentry
.
get_current_scope
.
update_from_options
(
**
wrapped_value
)
Sentry
.
get_current_scope
.
apply_to_event
(
event
)
end
let
(
:event
)
{
Raven
::
Event
.
new
(
required_options
.
merge
(
wrapped_value
))
}
let
(
:result_hash
)
{
described_class
.
call
(
event
).
to_hash
}
after
do
Sentry
.
get_current_scope
.
clear
end
context
'when there is Sidekiq data'
do
let
(
:wrapped_value
)
{
{
extra:
{
sidekiq:
value
}
}
}
...
...
spec/lib/gitlab/error_tracking_spec.rb
View file @
3520563f
...
...
@@ -2,7 +2,7 @@
require
'spec_helper'
require
'
raven/transports/dummy
'
require
'
sentry/transport/dummy_transport
'
RSpec
.
describe
Gitlab
::
ErrorTracking
do
let
(
:exception
)
{
RuntimeError
.
new
(
'boom'
)
}
...
...
@@ -43,7 +43,7 @@ RSpec.describe Gitlab::ErrorTracking do
}
end
let
(
:sentry_event
)
{
Gitlab
::
Json
.
parse
(
Raven
.
client
.
transport
.
events
.
last
[
1
])
}
let
(
:sentry_event
)
{
Sentry
.
get_current_client
.
transport
.
events
.
last
}
before
do
stub_sentry_settings
...
...
@@ -53,7 +53,7 @@ RSpec.describe Gitlab::ErrorTracking do
allow
(
I18n
).
to
receive
(
:locale
).
and_return
(
'en'
)
described_class
.
configure
do
|
config
|
config
.
encoding
=
'json'
config
.
transport
.
transport_class
=
Sentry
::
DummyTransport
end
end
...
...
@@ -63,6 +63,10 @@ RSpec.describe Gitlab::ErrorTracking do
end
end
after
do
::
Sentry
.
get_current_scope
.
clear
end
describe
'.track_and_raise_for_dev_exception'
do
context
'when exceptions for dev should be raised'
do
before
do
...
...
@@ -70,7 +74,7 @@ RSpec.describe Gitlab::ErrorTracking do
end
it
'raises the exception'
do
expect
(
Raven
).
to
receive
(
:capture_exception
).
with
(
exception
,
sentry_payload
)
expect
(
Sentry
).
to
receive
(
:capture_exception
).
with
(
exception
,
sentry_payload
)
expect
do
described_class
.
track_and_raise_for_dev_exception
(
...
...
@@ -88,7 +92,7 @@ RSpec.describe Gitlab::ErrorTracking do
end
it
'logs the exception with all attributes passed'
do
expect
(
Raven
).
to
receive
(
:capture_exception
).
with
(
exception
,
sentry_payload
)
expect
(
Sentry
).
to
receive
(
:capture_exception
).
with
(
exception
,
sentry_payload
)
described_class
.
track_and_raise_for_dev_exception
(
exception
,
...
...
@@ -111,7 +115,7 @@ RSpec.describe Gitlab::ErrorTracking do
describe
'.track_and_raise_exception'
do
it
'always raises the exception'
do
expect
(
Raven
).
to
receive
(
:capture_exception
).
with
(
exception
,
sentry_payload
)
expect
(
Sentry
).
to
receive
(
:capture_exception
).
with
(
exception
,
sentry_payload
)
expect
do
described_class
.
track_and_raise_for_dev_exception
(
...
...
@@ -139,14 +143,14 @@ RSpec.describe Gitlab::ErrorTracking do
subject
(
:track_exception
)
{
described_class
.
track_exception
(
exception
,
extra
)
}
before
do
allow
(
Raven
).
to
receive
(
:capture_exception
).
and_call_original
allow
(
Sentry
).
to
receive
(
:capture_exception
).
and_call_original
allow
(
Gitlab
::
ErrorTracking
::
Logger
).
to
receive
(
:error
)
end
it
'calls
Raven
.capture_exception'
do
it
'calls
Sentry
.capture_exception'
do
track_exception
expect
(
Raven
).
to
have_received
(
:capture_exception
).
with
(
expect
(
Sentry
).
to
have_received
(
:capture_exception
).
with
(
exception
,
sentry_payload
)
...
...
@@ -172,25 +176,31 @@ RSpec.describe Gitlab::ErrorTracking do
context
'the exception implements :sentry_extra_data'
do
let
(
:extra_info
)
{
{
event:
'explosion'
,
size: :massive
}
}
let
(
:exception
)
{
double
(
message:
'bang!'
,
sentry_extra_data:
extra_info
,
backtrace:
caller
,
cause:
nil
)
}
before
do
allow
(
exception
).
to
receive
(
:sentry_extra_data
).
and_return
(
extra_info
)
end
it
'includes the extra data from the exception in the tracking information'
do
track_exception
expect
(
Raven
).
to
have_received
(
:capture_exception
).
with
(
expect
(
Sentry
).
to
have_received
(
:capture_exception
).
with
(
exception
,
a_hash_including
(
extra:
a_hash_including
(
extra_info
))
)
end
end
context
'the exception implements :sentry_extra_data, which returns nil'
do
let
(
:exception
)
{
double
(
message:
'bang!'
,
sentry_extra_data:
nil
,
backtrace:
caller
,
cause:
nil
)
}
let
(
:extra
)
{
{
issue_url:
issue_url
}
}
before
do
allow
(
exception
).
to
receive
(
:sentry_extra_data
).
and_return
(
nil
)
end
it
'just includes the other extra info'
do
track_exception
expect
(
Raven
).
to
have_received
(
:capture_exception
).
with
(
expect
(
Sentry
).
to
have_received
(
:capture_exception
).
with
(
exception
,
a_hash_including
(
extra:
a_hash_including
(
extra
))
)
end
...
...
@@ -202,7 +212,7 @@ RSpec.describe Gitlab::ErrorTracking do
it
'injects the normalized sql query into extra'
do
track_exception
expect
(
sentry_event
.
dig
(
'extra'
,
'sql'
)
).
to
eq
(
'SELECT "users".* FROM "users" WHERE "users"."id" = $2 AND "users"."foo" = $1'
)
expect
(
sentry_event
.
extra
[
:sql
]
).
to
eq
(
'SELECT "users".* FROM "users" WHERE "users"."id" = $2 AND "users"."foo" = $1'
)
end
end
...
...
@@ -212,7 +222,7 @@ RSpec.describe Gitlab::ErrorTracking do
track_exception
expect
(
sentry_event
.
dig
(
'extra'
,
'sql'
)
).
to
eq
(
'SELECT "users".* FROM "users" WHERE "users"."id" = $2 AND "users"."foo" = $1'
)
expect
(
sentry_event
.
extra
[
:sql
]
).
to
eq
(
'SELECT "users".* FROM "users" WHERE "users"."id" = $2 AND "users"."foo" = $1'
)
end
end
end
...
...
@@ -221,27 +231,27 @@ RSpec.describe Gitlab::ErrorTracking do
subject
(
:track_exception
)
{
described_class
.
track_exception
(
exception
,
extra
)
}
before
do
allow
(
Raven
).
to
receive
(
:capture_exception
).
and_call_original
allow
(
Sentry
).
to
receive
(
:capture_exception
).
and_call_original
allow
(
Gitlab
::
ErrorTracking
::
Logger
).
to
receive
(
:error
)
end
context
'custom GitLab context when using
Raven
.capture_exception directly'
do
subject
(
:
raven_capture_exception
)
{
Raven
.
capture_exception
(
exception
)
}
context
'custom GitLab context when using
Sentry
.capture_exception directly'
do
subject
(
:
track_exception
)
{
Sentry
.
capture_exception
(
exception
)
}
it
'merges a default set of tags into the existing tags'
do
allow
(
Raven
.
context
).
to
receive
(
:tags
).
and_return
(
foo:
'bar'
)
Sentry
.
set_tags
(
foo:
'bar'
)
raven_capture
_exception
track
_exception
expect
(
sentry_event
[
'tags'
]).
to
include
(
'correlation_id'
,
'feature_category'
,
'foo'
,
'locale'
,
'program'
)
expect
(
sentry_event
.
tags
).
to
include
(
:correlation_id
,
:feature_category
,
:foo
,
:locale
,
:program
)
end
it
'merges the current user information into the existing user information'
do
Raven
.
user_context
(
id:
-
1
)
Sentry
.
set_user
(
id:
-
1
)
raven_capture
_exception
track
_exception
expect
(
sentry_event
[
'user'
]).
to
eq
(
'id'
=>
-
1
,
'username'
=>
user
.
username
)
expect
(
sentry_event
.
user
).
to
eq
(
id:
-
1
,
username:
user
.
username
)
end
end
...
...
@@ -265,7 +275,7 @@ RSpec.describe Gitlab::ErrorTracking do
it
'does not filter parameters when sending to Sentry'
do
track_exception
expect
(
sentry_event
.
dig
(
'extra'
,
'sidekiq'
,
'args'
)
).
to
eq
([
1
,
{
'id'
=>
2
,
'name'
=>
'hello'
},
'some-value'
,
'another-value'
])
expect
(
sentry_event
.
extra
[
:sidekiq
][
'args'
]
).
to
eq
([
1
,
{
'id'
=>
2
,
'name'
=>
'hello'
},
'some-value'
,
'another-value'
])
end
end
...
...
@@ -275,7 +285,7 @@ RSpec.describe Gitlab::ErrorTracking do
it
'filters sensitive arguments before sending and logging'
do
track_exception
expect
(
sentry_event
.
dig
(
'extra'
,
'sidekiq'
,
'args'
)
).
to
eq
([
'[FILTERED]'
,
1
,
2
])
expect
(
sentry_event
.
extra
[
:sidekiq
][
'args'
]
).
to
eq
([
'[FILTERED]'
,
1
,
2
])
expect
(
Gitlab
::
ErrorTracking
::
Logger
).
to
have_received
(
:error
).
with
(
hash_including
(
'extra.sidekiq'
=>
{
...
...
@@ -295,8 +305,8 @@ RSpec.describe Gitlab::ErrorTracking do
it
'sets the GRPC debug error string in the Sentry event and adds a custom fingerprint'
do
track_exception
expect
(
sentry_event
.
dig
(
'extra'
,
'grpc_debug_error_string'
)
).
to
eq
(
'{"hello":1}'
)
expect
(
sentry_event
[
'fingerprint'
]
).
to
eq
([
'GRPC::DeadlineExceeded'
,
'4:unknown cause.'
])
expect
(
sentry_event
.
extra
[
:grpc_debug_error_string
]
).
to
eq
(
'{"hello":1}'
)
expect
(
sentry_event
.
fingerprint
).
to
eq
([
'GRPC::DeadlineExceeded'
,
'4:unknown cause.'
])
end
end
...
...
@@ -306,8 +316,8 @@ RSpec.describe Gitlab::ErrorTracking do
it
'does not do any processing on the event'
do
track_exception
expect
(
sentry_event
[
'extra'
]).
not_to
include
(
'grpc_debug_error_string'
)
expect
(
sentry_event
[
'fingerprint'
]
).
to
eq
([
'GRPC::DeadlineExceeded'
,
'4:unknown cause'
])
expect
(
sentry_event
.
extra
).
not_to
include
(
:grpc_debug_error_string
)
expect
(
sentry_event
.
fingerprint
).
to
eq
([
'GRPC::DeadlineExceeded'
,
'4:unknown cause'
])
end
end
end
...
...
spec/requests/api/helpers_spec.rb
View file @
3520563f
# frozen_string_literal: true
require
'spec_helper'
require
'
raven/transports/dummy
'
require
'
sentry/transport/dummy_transport
'
require_relative
'../../../config/initializers/sentry'
RSpec
.
describe
API
::
Helpers
do
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment