Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit fdae9ad

Browse filesBrowse files
Flarnadanielleadams
authored andcommitted
test: fix races in test-performance-eventlooputil
Fix two races in test-performance-eventlooputil resulting in a flaky test. elu1 was capture after start time t from spin look. If OS descides to reschedule the process after capturing t but before getting elu for >=50ms the spin loop is actually a nop. elu1 doesn't show this and as a result elut3 = eventLoopUtilization(elu1) results in elu3.active === 0. Moving capturing of t after capturing t, just before the spin look avoids this. Similar if OS decides to shedule a different process between getting the total elu from start and the diff elu showing the spin loop the check to verify that total active time is long then the spin loop fails. Exchanging these statements avoids this race. PR-URL: #36028 Fixes: #35309 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
1 parent 923276c commit fdae9ad
Copy full SHA for fdae9ad

File tree

Expand file treeCollapse file tree

1 file changed

+10
-10
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+10
-10
lines changed
Open diff view settings
Collapse file

‎test/parallel/test-performance-eventlooputil.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-performance-eventlooputil.js
+10-10Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,28 +23,28 @@ if (nodeTiming.loopStart === -1) {
2323
}
2424

2525
setTimeout(mustCall(function r() {
26-
const t = Date.now();
2726
const elu1 = eventLoopUtilization();
2827

2928
// Force idle time to accumulate before allowing test to continue.
3029
if (elu1.idle <= 0)
3130
return setTimeout(mustCall(r), 5);
3231

32+
const t = Date.now();
3333
while (Date.now() - t < SPIN_DUR) { }
3434

35-
const elu2 = eventLoopUtilization();
36-
const elu3 = eventLoopUtilization(elu1);
37-
const elu4 = eventLoopUtilization(elu2, elu1);
35+
const elu2 = eventLoopUtilization(elu1);
36+
const elu3 = eventLoopUtilization();
37+
const elu4 = eventLoopUtilization(elu3, elu1);
3838

39-
assert.strictEqual(elu3.idle, 0);
39+
assert.strictEqual(elu2.idle, 0);
4040
assert.strictEqual(elu4.idle, 0);
41-
assert.strictEqual(elu3.utilization, 1);
41+
assert.strictEqual(elu2.utilization, 1);
4242
assert.strictEqual(elu4.utilization, 1);
43-
assert.strictEqual(elu2.active - elu1.active, elu4.active);
44-
assert.ok(elu3.active > SPIN_DUR - 10, `${elu3.active} <= ${SPIN_DUR - 10}`);
43+
assert.strictEqual(elu3.active - elu1.active, elu4.active);
44+
assert.ok(elu2.active > SPIN_DUR - 10, `${elu2.active} <= ${SPIN_DUR - 10}`);
45+
assert.ok(elu2.active < elu4.active, `${elu2.active} >= ${elu4.active}`);
46+
assert.ok(elu3.active > elu2.active, `${elu3.active} <= ${elu2.active}`);
4547
assert.ok(elu3.active > elu4.active, `${elu3.active} <= ${elu4.active}`);
46-
assert.ok(elu2.active > elu3.active, `${elu2.active} <= ${elu3.active}`);
47-
assert.ok(elu2.active > elu4.active, `${elu2.active} <= ${elu4.active}`);
4848

4949
setTimeout(mustCall(runIdleTimeTest), TIMEOUT);
5050
}), 5);

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.