-
Notifications
You must be signed in to change notification settings - Fork 30k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test: skip cpu-intensive tests on slow hosts #8652
Conversation
dc32267
to
314ee1b
Compare
Since it's looking good to me (only skipping the test on the Raspberry Pi 1 devices, running fine everywhere else), and since this is causing a loooooong streak of red in CI, and since the change is pretty small/manageable, I'd kind of like to land this more quickly than the usual 48 hours. /cc @matthewloring @indutny @nodejs/testing @nodejs/build |
314ee1b
to
dbdb5dc
Compare
// the full 64 bits and the result is that it does not process the | ||
// addresses correctly and runs out of memory | ||
// Disabling until we get a fix upstreamed into V8 | ||
if (common.isAix) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, I think I missed a refactoring CL in here. Why is this check no longer necessary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's unnecessary in this test because there's a second common.isAix
check that exits as well several lines below.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The check still exists in test-tick-processor-unknown.js
which is where it matters.
Oh, wait, it was timing out before. I have to get my story straight. OK, so we're back to just the mystery of "why is the checking-cpus-and-skipping code only working in one of the three tests? how is that even possible?" |
If you look at https://ci.nodejs.org/job/node-test-binary-arm/3841/RUN_SUBSET=2,label=pi1-raspbian-wheezy/tapTestReport/ you will see that the duration of the test was 0.18 sec. How could it fail with a timeout ? |
0ef3081
to
71eddef
Compare
50d646b
to
ab2e147
Compare
9983dc1
to
21635c7
Compare
CI for the current version of this test looks good: https://ci.nodejs.org/job/node-test-commit/5270/ Test is skipped on Pi 1 devices but is run on Pi 2 and Pi 3. [EDIT: But of course now one of the tests fails on one of the Pi 2 devices...] It's possible this code change will help (or can help with some modification) out on #8725 as well. The ultimate question is: Are we comfortable deciding that the V8 tick processor tests (at least as currently formulated) should not be expected to complete in a timely fashion on slow single-processor machines? Or is that test smell? /cc @matthewloring @indutny @geek |
Tried moving from parallel to sequential. Why not? CI: https://ci.nodejs.org/job/node-test-pull-request/4244/ Just about done and looks green except for the perma-yellow unrelated AIX failure. |
Move to sequential (probably) had nothing to do with the success because stress test (on SmartOS 14 32-bit) is still failing frequently. Anyway, that's the least important part of this to discuss, so I'll undo it and we can hopefully focus on "Is this a valid approach or should the test really be workable on Pi 1?" In other words: "Is the test CPU constrained and if so, is it OK to skip it in slow CPU situations?" |
The `test-tick-processor-*` tests are now passing everywhere except for the single-processor 700MHz Raspberry Pi 1 devices. The tests are CPU-intensive. Skip the tests if there is only one CPU and it runs at a speed not more than 700 MHz.
cbe199c
to
096ba37
Compare
This test is CPU constrained. Originally, the test ran a piece of code for a fixed duration (2 seconds) and then checked the generated profile. This guaranteed that the test wouldn't time out but made it more likely to fail in CPU constrained situations where fewer iterations of the function were executed. #8542 removed this timeout inside the test causing it to rerun when the desired symbols were not seen in the profile. While reducing the flakiness, this introduces the possibility that the test will hit a global timeout on CPU constrained devices. Both flaky fails and timeouts could be avoided by increasing the timeout on slow machines. If this isn't desired, it should be fine to skip this test on slow CPU machines as long as we still have good platform coverage. |
@matthewloring Thanks for the detailed, thorough, and clear explanation. |
Given @matthewloring's explanation above and what @indutny has written elsewhere, I'm inclined to think this is an acceptable approach: Skip these tests on machines with slow CPU and rely on coverage in the rest of the test infrastructure. While not a fix for all flakiness in these tests, it at least gets us past the pretty reliable failures on the armv6 Raspberry Pi devices. However, it can't land without an LGTM from a Collaborator. (Hint, hint?) |
LGTM. |
The `test-tick-processor-*` tests are now passing everywhere except for the single-processor 700MHz Raspberry Pi 1 devices. The tests are CPU-intensive. Skip the tests if there is only one CPU and it runs at a speed not more than 700 MHz. PR-URL: nodejs#8652 Reviewed-By: Matthew Loring <mattloring@google.com>
Landed in d196c5d |
The `test-tick-processor-*` tests are now passing everywhere except for the single-processor 700MHz Raspberry Pi 1 devices. The tests are CPU-intensive. Skip the tests if there is only one CPU and it runs at a speed not more than 700 MHz. PR-URL: #8652 Reviewed-By: Matthew Loring <mattloring@google.com>
The `test-tick-processor-*` tests are now passing everywhere except for the single-processor 700MHz Raspberry Pi 1 devices. The tests are CPU-intensive. Skip the tests if there is only one CPU and it runs at a speed not more than 700 MHz. PR-URL: nodejs#8652 Reviewed-By: Matthew Loring <mattloring@google.com>
@Trott should this be backported? |
The `test-tick-processor-*` tests are now passing everywhere except for the single-processor 700MHz Raspberry Pi 1 devices. The tests are CPU-intensive. Skip the tests if there is only one CPU and it runs at a speed not more than 700 MHz. PR-URL: #8652 Reviewed-By: Matthew Loring <mattloring@google.com>
Checklist
make -j4 test
(UNIX), orvcbuild test nosign
(Windows) passesAffected core subsystem(s)
test arm V8
Description of change
The
test-tick-processor-*
tests are now passing everywhere except forthe single-processor 700MHz Raspberry Pi 1 devices.
The tests are CPU-intensive. Skip the tests if there is only one CPU and
it runs at a speed not more than 700 MHz.