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
d4cb1ec9
Commit
d4cb1ec9
authored
Aug 18, 2017
by
Mike Greiling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix unnecessarily long gl.utils.backOff test
parent
5a332c59
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
31 additions
and
29 deletions
+31
-29
common_utils.js
app/assets/javascripts/lib/utils/common_utils.js
+4
-4
common_utils_spec.js
spec/javascripts/lib/utils/common_utils_spec.js
+27
-25
No files found.
app/assets/javascripts/lib/utils/common_utils.js
View file @
d4cb1ec9
...
...
@@ -378,15 +378,15 @@
w
.
gl
.
utils
.
backOff
=
(
fn
,
timeout
=
60000
)
=>
{
const
maxInterval
=
32000
;
let
nextInterval
=
2000
;
const
startTime
=
Date
.
now
();
let
timeElapsed
=
0
;
return
new
Promise
((
resolve
,
reject
)
=>
{
const
stop
=
arg
=>
((
arg
instanceof
Error
)
?
reject
(
arg
)
:
resolve
(
arg
));
const
next
=
()
=>
{
if
(
Date
.
now
()
-
startTime
<
timeout
)
{
setTimeout
(
fn
.
bind
(
null
,
next
,
stop
),
nextInterval
);
if
(
timeElapsed
<
timeout
)
{
setTimeout
(()
=>
fn
(
next
,
stop
),
nextInterval
);
timeElapsed
+=
nextInterval
;
nextInterval
=
Math
.
min
(
nextInterval
+
nextInterval
,
maxInterval
);
}
else
{
reject
(
new
Error
(
'BACKOFF_TIMEOUT'
));
...
...
spec/javascripts/lib/utils/common_utils_spec.js
View file @
d4cb1ec9
...
...
@@ -266,6 +266,12 @@ import '~/lib/utils/common_utils';
});
describe
(
'gl.utils.backOff'
,
()
=>
{
beforeEach
(()
=>
{
// shortcut our timeouts otherwise these tests will take a long time to finish
const
origSetTimeout
=
window
.
setTimeout
;
spyOn
(
window
,
'setTimeout'
).
and
.
callFake
(
cb
=>
origSetTimeout
(
cb
,
0
));
});
it
(
'solves the promise from the callback'
,
(
done
)
=>
{
const
expectedResponseValue
=
'Success!'
;
gl
.
utils
.
backOff
((
next
,
stop
)
=>
(
...
...
@@ -299,37 +305,33 @@ import '~/lib/utils/common_utils';
let
numberOfCalls
=
1
;
const
expectedResponseValue
=
'Success!'
;
gl
.
utils
.
backOff
((
next
,
stop
)
=>
(
new
Promise
((
resolve
)
=>
{
resolve
(
expectedResponseValue
);
}).
then
((
resp
)
=>
{
if
(
numberOfCalls
<
3
)
{
numberOfCalls
+=
1
;
next
();
}
else
{
stop
(
resp
);
}
})
Promise
.
resolve
(
expectedResponseValue
)
.
then
((
resp
)
=>
{
if
(
numberOfCalls
<
3
)
{
numberOfCalls
+=
1
;
next
();
}
else
{
stop
(
resp
);
}
})
)).
then
((
respBackoff
)
=>
{
const
timeouts
=
window
.
setTimeout
.
calls
.
allArgs
().
map
(([,
timeout
])
=>
timeout
);
expect
(
timeouts
).
toEqual
([
2000
,
4000
]);
expect
(
respBackoff
).
toBe
(
expectedResponseValue
);
expect
(
numberOfCalls
).
toBe
(
3
);
done
();
});
}
,
10000
);
});
it
(
'rejects the backOff promise after timing out'
,
(
done
)
=>
{
const
expectedResponseValue
=
'Success!'
;
gl
.
utils
.
backOff
(
next
=>
(
new
Promise
((
resolve
)
=>
{
resolve
(
expectedResponseValue
);
}).
then
(()
=>
{
setTimeout
(
next
(),
5000
);
// it will time out
})
),
3000
).
catch
((
errBackoffResp
)
=>
{
expect
(
errBackoffResp
instanceof
Error
).
toBe
(
true
);
expect
(
errBackoffResp
.
message
).
toBe
(
'BACKOFF_TIMEOUT'
);
done
();
});
},
10000
);
gl
.
utils
.
backOff
(
next
=>
next
(),
64000
)
.
catch
((
errBackoffResp
)
=>
{
const
timeouts
=
window
.
setTimeout
.
calls
.
allArgs
().
map
(([,
timeout
])
=>
timeout
);
expect
(
timeouts
).
toEqual
([
2000
,
4000
,
8000
,
16000
,
32000
,
32000
]);
expect
(
errBackoffResp
instanceof
Error
).
toBe
(
true
);
expect
(
errBackoffResp
.
message
).
toBe
(
'BACKOFF_TIMEOUT'
);
done
();
});
});
});
describe
(
'gl.utils.setFavicon'
,
()
=>
{
...
...
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