Skip to content

Commit 7a36c80

Browse files
Merge pull request #789 from NativeScript/flaky-time
__time tests seem flaky, add 5 attempts in the test to ensure they won't fail because of GC
2 parents 7344017 + c45f031 commit 7a36c80

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed
Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
11
describe("Runtime exposes", function () {
22
it("__time a low overhead, high resolution, time in ms.", function() {
3-
var dateTimeStart = Date.now();
4-
var timeStart = __time();
5-
var acc = 0;
6-
var s = android.os.SystemClock.elapsedRealtime();
7-
for (var i = 0; i < 1000; i++) {
8-
var c = android.os.SystemClock.elapsedRealtime();
9-
acc += (c - s);
10-
s = c;
3+
// Try to get the times using Date.now and __time and compare the results, expect them to be somewhat "close".
4+
// Sometimes GC hits after Date.now is captured but before __time or the vice-versa and the test fails,
5+
// so we are giving it several attempts.
6+
for(var i = 0; i < 5; i++) {
7+
try {
8+
var dateTimeStart = Date.now();
9+
var timeStart = __time();
10+
var acc = 0;
11+
var s = android.os.SystemClock.elapsedRealtime();
12+
for (var i = 0; i < 1000; i++) {
13+
var c = android.os.SystemClock.elapsedRealtime();
14+
acc += (c - s);
15+
s = c;
16+
}
17+
var dateTimeEnd = Date.now();
18+
var timeEnd = __time();
19+
var dateDelta = dateTimeEnd - dateTimeStart;
20+
var timeDelta = timeEnd - timeStart;
21+
expect(Math.abs(dateDelta - timeDelta) < dateDelta * 0.25).toBe(true);
22+
break;
23+
} catch(e) {
24+
if (i == 4) {
25+
throw e;
26+
}
27+
}
1128
}
12-
var dateTimeEnd = Date.now();
13-
var timeEnd = __time();
14-
var dateDelta = dateTimeEnd - dateTimeStart;
15-
var timeDelta = timeEnd - timeStart;
16-
expect(Math.abs(dateDelta - timeDelta) < dateDelta * 0.25).toBe(true);
1729
});
1830
});

0 commit comments

Comments
 (0)