-
Notifications
You must be signed in to change notification settings - Fork 29.1k
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 test-worker-prof in debug builds #32596
base: main
Are you sure you want to change the base?
test: skip test-worker-prof in debug builds #32596
Conversation
I prefer the solution in #32589 where the test is marked |
@richardlau, can you tell the reason why you prefer that solution? |
Because with that solution the decision as to whether to run the test or not is up to the actor running the test (e.g. either the user directly runs the test or runs the test through the test runner without |
The knowledge about whether this test is runnable in debug build or not, is known only to the test. Keeping such a test in the status file can confuse people - it might lead to a doubt that this is an issue which needs fixing. In this case, the proposed permanent solution is to skip it for debug builds. As per the investigation description, the test runs between tight tradeoffs, and the debug built is not fit to balance those. |
I respectfully disagree. #26401 (comment) suggests plausible reasons why the test is unreliable in debug mode on the CI but not that the test doesn't work at all. For example it passed in https://ci.nodejs.org/job/node-test-commit-linux-containered/19131/nodes=ubuntu1804_sharedlibs_debug_x64/testReport/junit/(root)/test/sequential_test_worker_prof/. So whether the test works in debug mode or not likely depends on a number of factors (it may for example pass more frequently in a different configuration of CPU/memory). On the CI we have a fixed configuration that the debug builds are run under (the shared debug containers) but developers are likely to have other configurations so we should not make it harder for them to run a test that could work on their system should they wish to do so. |
@richardlau, so keeping the test as SLOW in test/root.status: when this status will change, and what will cause entry of this test to be removed from root.status? |
The status would only change in the status file if the test was either removed completely from source control (e.g. it becomes obsolete) or if it was changed substantially to allow it to pass consistently on debug builds. It might never change from |
@richardlau , does this mean that no tests should be skipped at the source, but controlled at the command line, by the actor? how do you classify tests that are skipped in source versus marked in the status file?
wont it make the test less reliable, forever? |
Tests skipped at source (via
Tests marked in the status file are tests that are flaky, i.e. they might pass but sometimes fail. In this case putting them in the status file means they can be run should the actor wish to do so without modifying any source.
I don't follow. The test is already unreliable so adding it to the status file does not make it less reliable. |
Based on what you say, how will you explain these APIs, that used to skip tests at source level?
this means, the chance of this test getting run faster enough to meet the test runner's expectation while meeting the test's own constraints (volume / worklaod nature) looks impossible to me. |
For those API's there's no chance of the test passing if the condition being tested fails (e.g. if the inspector is disabled the inspector tests will always fail regardless of how fast/slow your system is). Also apart from As I said earlier the difference with this test is that it might pass in debug mode, which is not the same as always failing.
Um, you've just demonstrated that the test passed for you in debug mode (with |
The test passed for me because I ran it directly (no python harness, so no timeout). If you allow it to run that way, it will always pass. |
It still passed in the CI link I posted. It also passes for me on a very fast Linux system with the Python test harness in debug mode. |
What's the status here? |
I still think disabling in the source is the right way, due to: |
8ae28ff
to
2935f72
Compare
@@ -1,5 +1,9 @@ | |||
'use strict'; | |||
const common = require('../common'); | |||
|
|||
if (process.features.debug) | |||
common.skip('cannot reliably test this in debug builds'); |
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.
⚙️
common.skip('cannot reliably test this in debug builds'); | |
common.skip('In debug builds, it is not possible to conduct a reliable test.'); |
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.
Although the skip is a possible way to go, it seems like this PR is outdated and can be closed since this test is already marked as slow, see: #32589 (comment)
📝
Line 159 in f4e5beb
sequential/test-worker-prof: SLOW |
Refs: #26401 (comment)
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passes