BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
af6e3e57
Unverified
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
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
115 additions
and
0 deletions
+115
-0
raven_config.js
app/assets/javascripts/raven/raven_config.js
+53
-0
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