test: strengthen test-worker-prof#26608
Conversation
test/parallel/test-worker-prof.js
Outdated
There was a problem hiding this comment.
An absolute micronit here but maybe add a comment above this (right below the else line) saying this is the parent process?
|
Looks good to me, but I'd want @addaleax's confirmed sign-off if at all possible first. |
|
I'm not confidant in my expertise to properly review this ¯\(ツ)/¯ |
|
@refack - ack, np; and then I will critically depend on @addaleax's review on this. In case if this explanation helps:
The reason for the test failure in my assessment is due to unexpected interplay between the OS scheduler, thread execution order, and the program logic (tight loop until the The new version attempts to run independent of time scale, instead in more deterministic manner , by shuttling some messages a predefined number of times, to get a right mix of CPU and IO. Scheduling and other environmental things should not affect the logic. thanks! |
test/parallel/test-worker-prof.js
Outdated
There was a problem hiding this comment.
Suggest swapping this line and the one above it so that the signal is checked first as that would be more useful to know if it is not null rather than the null exit code seen in #26401 (comment).
|
just pushed a change to that effect: added debug data in all three assertions + reversed the signal and exit status check order. |
test/parallel/test-worker-prof.js
Outdated
There was a problem hiding this comment.
${spawnResult} will end up displaying [object Object] unfortunately. You might have to do something like ${util.inspect(spawnResult)} if you want something useful.
There was a problem hiding this comment.
thanks. Is there any way to explode the internal arrays as well? with this change I get the primitive fields, but not the Buffers:
assert.strictEqual(spawnResult.status, 0,
`child exited with non-zero status: ${util.inspect(spawnResult, {depth: 3})}`);{ status: 1,
signal: null,
output: [ null, <Buffer >, <Buffer > ],
pid: 72177,
stdout: <Buffer >,
stderr: <Buffer >
}
There was a problem hiding this comment.
How about passing encoding: 'utf8' option to spawnSync so that stdout and stdin are String objects instead of Buffer objects?
There was a problem hiding this comment.
@richardlau - addressed your review comments, ptal.
|
@refack @Trott - do you have any objections on landing this PR? I am asking this is in the light of reported crash in #26401 (comment) . In my opinion it is a container environment related; however, this test being a pure JS code cannot cause a crash in itself, so should be either native code in node, v8 or elsewhere - which is more of a reason this should land so that we can reproduce, investigate and fix at the source? please let me know! |
I don't have any objections. |
|
Is there anything stopping this up from landing at this point? Or should we land it? |
|
I guess it needs a new CI run. |
|
Resume Build CI: https://ci.nodejs.org/job/node-test-pull-request/21825/ |
|
the only failure |
|
Resume Build CI: https://ci.nodejs.org/job/node-test-pull-request/21833/ |
Force main and worker to stay for some deterministic time Add some more validation check around profile file generation Fixes: nodejs#26401 PR-URL: nodejs#26608 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Richard Lau <riclau@uk.ibm.com>
4c7fe07 to
ed849f8
Compare
|
landed as ed849f8 |
Force main and worker to stay for some deterministic time Add some more validation check around profile file generation Fixes: nodejs#26401 PR-URL: nodejs#26608 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Force main and worker to stay for some deterministic time
Add some more validation check around profile file generation
Refs: #26401
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes