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
0
Merge Requests
0
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
Léo-Paul Géneau
gitlab-ce
Commits
af6e3e57
Commit
af6e3e57
authored
Apr 18, 2017
by
Luke "Jared" Bennett
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added sampling function and blacklisted common urls and error messages
parent
86b4f49c
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
115 additions
and
0 deletions
+115
-0
app/assets/javascripts/raven/raven_config.js
app/assets/javascripts/raven/raven_config.js
+53
-0
spec/javascripts/raven/raven_config_spec.js
spec/javascripts/raven/raven_config_spec.js
+62
-0
No files found.
app/assets/javascripts/raven/raven_config.js
View file @
af6e3e57
import
Raven
from
'
raven-js
'
;
const
IGNORE_ERRORS
=
[
// Random plugins/extensions
'
top.GLOBALS
'
,
// See: http://blog.errorception.com/2012/03/tale-of-unfindable-js-error. html
'
originalCreateNotification
'
,
'
canvas.contentDocument
'
,
'
MyApp_RemoveAllHighlights
'
,
'
http://tt.epicplay.com
'
,
'
Can
\'
t find variable: ZiteReader
'
,
'
jigsaw is not defined
'
,
'
ComboSearch is not defined
'
,
'
http://loading.retry.widdit.com/
'
,
'
atomicFindClose
'
,
// Facebook borked
'
fb_xd_fragment
'
,
// ISP "optimizing" proxy - `Cache-Control: no-transform` seems to
// reduce this. (thanks @acdha)
// See http://stackoverflow.com/questions/4113268
'
bmi_SafeAddOnload
'
,
'
EBCallBackMessageReceived
'
,
// See http://toolbar.conduit.com/Developer/HtmlAndGadget/Methods/JSInjection.aspx
'
conduitPage
'
,
];
const
IGNORE_URLS
=
[
// Facebook flakiness
/graph
\.
facebook
\.
com/i
,
// Facebook blocked
/connect
\.
facebook
\.
net
\/
en_US
\/
all
\.
js/i
,
// Woopra flakiness
/eatdifferent
\.
com
\.
woopra-ns
\.
com/i
,
/static
\.
woopra
\.
com
\/
js
\/
woopra
\.
js/i
,
// Chrome extensions
/extensions
\/
/i
,
/^chrome:
\/\/
/i
,
// Other plugins
/127
\.
0
\.
0
\.
1:4001
\/
isrunning/i
,
// Cacaoweb
/webappstoolbarba
\.
texthelp
\.
com
\/
/i
,
/metrics
\.
itunes
\.
apple
\.
com
\.
edgesuite
\.
net
\/
/i
,
];
const
SAMPLE_RATE
=
95
;
const
RavenConfig
=
{
IGNORE_ERRORS
,
IGNORE_URLS
,
SAMPLE_RATE
,
init
(
options
=
{})
{
this
.
options
=
options
;
...
...
@@ -13,6 +59,9 @@ const RavenConfig = {
Raven
.
config
(
this
.
options
.
sentryDsn
,
{
whitelistUrls
:
this
.
options
.
whitelistUrls
,
environment
:
this
.
options
.
isProduction
?
'
production
'
:
'
development
'
,
ignoreErrors
:
this
.
IGNORE_ERRORS
,
ignoreUrls
:
this
.
IGNORE_URLS
,
shouldSendCallback
:
this
.
shouldSendSample
,
}).
install
();
},
...
...
@@ -42,6 +91,10 @@ const RavenConfig = {
},
});
},
shouldSendSample
()
{
return
Math
.
random
()
*
100
<=
this
.
SAMPLE_RATE
;
},
};
export
default
RavenConfig
;
spec/javascripts/raven/raven_config_spec.js
View file @
af6e3e57
...
...
@@ -2,6 +2,28 @@ import Raven from 'raven-js';
import
RavenConfig
from
'
~/raven/raven_config
'
;
describe
(
'
RavenConfig
'
,
()
=>
{
describe
(
'
IGNORE_ERRORS
'
,
()
=>
{
it
(
'
should be an array of strings
'
,
()
=>
{
const
areStrings
=
RavenConfig
.
IGNORE_ERRORS
.
every
(
error
=>
typeof
error
===
'
string
'
);
expect
(
areStrings
).
toBe
(
true
);
});
});
describe
(
'
IGNORE_URLS
'
,
()
=>
{
it
(
'
should be an array of regexps
'
,
()
=>
{
const
areRegExps
=
RavenConfig
.
IGNORE_URLS
.
every
(
url
=>
url
instanceof
RegExp
);
expect
(
areRegExps
).
toBe
(
true
);
});
});
describe
(
'
SAMPLE_RATE
'
,
()
=>
{
it
(
'
should be a finite number
'
,
()
=>
{
expect
(
typeof
RavenConfig
.
SAMPLE_RATE
).
toEqual
(
'
number
'
);
});
});
describe
(
'
init
'
,
()
=>
{
let
options
;
...
...
@@ -76,6 +98,9 @@ describe('RavenConfig', () => {
expect
(
Raven
.
config
).
toHaveBeenCalledWith
(
options
.
sentryDsn
,
{
whitelistUrls
:
options
.
whitelistUrls
,
environment
:
'
production
'
,
ignoreErrors
:
Raven
.
IGNORE_ERRORS
,
ignoreUrls
:
Raven
.
IGNORE_URLS
,
shouldSendCallback
:
Raven
.
shouldSendSample
,
});
});
...
...
@@ -93,6 +118,9 @@ describe('RavenConfig', () => {
expect
(
Raven
.
config
).
toHaveBeenCalledWith
(
options
.
sentryDsn
,
{
whitelistUrls
:
options
.
whitelistUrls
,
environment
:
'
development
'
,
ignoreErrors
:
Raven
.
IGNORE_ERRORS
,
ignoreUrls
:
Raven
.
IGNORE_URLS
,
shouldSendCallback
:
Raven
.
shouldSendSample
,
});
});
});
...
...
@@ -213,4 +241,38 @@ describe('RavenConfig', () => {
});
});
});
describe
(
'
shouldSendSample
'
,
()
=>
{
let
randomNumber
;
beforeEach
(()
=>
{
RavenConfig
.
SAMPLE_RATE
=
50
;
spyOn
(
Math
,
'
random
'
).
and
.
callFake
(()
=>
randomNumber
);
});
it
(
'
should call Math.random
'
,
()
=>
{
RavenConfig
.
shouldSendSample
();
expect
(
Math
.
random
).
toHaveBeenCalled
();
});
it
(
'
should return true if the sample rate is greater than the random number * 100
'
,
()
=>
{
randomNumber
=
0.1
;
expect
(
RavenConfig
.
shouldSendSample
()).
toBe
(
true
);
});
it
(
'
should return false if the sample rate is less than the random number * 100
'
,
()
=>
{
randomNumber
=
0.9
;
expect
(
RavenConfig
.
shouldSendSample
()).
toBe
(
false
);
});
it
(
'
should return true if the sample rate is equal to the random number * 100
'
,
()
=>
{
randomNumber
=
0.5
;
expect
(
RavenConfig
.
shouldSendSample
()).
toBe
(
true
);
});
});
});
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