Skip to content
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

Addon tests aren’t run in debug-mode CI #1854

Closed
addaleax opened this issue Jun 26, 2019 · 10 comments
Closed

Addon tests aren’t run in debug-mode CI #1854

addaleax opened this issue Jun 26, 2019 · 10 comments
Labels

Comments

@addaleax
Copy link
Member

addaleax commented Jun 26, 2019

Continuing from nodejs/node#26754, this seems like an issue that affects only CI:

Addon tests aren’t built and run in the debug-mode CI. That’s bad, because they are precisely the tests that need debug-mode CI runs the most. And more, generally, I’d expect the same tests to be run on all non-fanned CI jobs or at least to have exceptions mentioned in test/README.md in nodejs/node.

@sam-github
Copy link
Contributor

For my own edification, how does one trigger debug-mode CI? I assume its a way of doing ./configure --debug; make test?

@addaleax
Copy link
Member Author

@sam-github Is node-test-pull-request → node-test-commit → node-test-commit-linux-containered → ubuntu1604_sharedlibs_debug_x64 the answer to that question? (And yes, it does basically that)

@rvagg
Copy link
Member

rvagg commented Jun 26, 2019

Ah that would be because we do some manual test running. From https://ci.nodejs.org/view/All/job/node-test-commit-linux-containered/configure:

It gets built with:

PYTHON=python \
 NODE_TEST_DIR=${HOME}/node-tmp \
 CONFIG_FLAGS="$CONFIG_FLAGS --debug" \
 make build-ci -j $JOBS # --output-sync=target

Then after testing that we have a debug executable (by location @ out/Debug/node and by inspection with out/Debug/node -pe process.config.target_defaults.default_configuration) it gets tested with:

python tools/test.py -j $JOBS -p tap --logfile test.tap \
  --mode=debug --flaky-tests=skip \
  async-hooks default known_issues

I don't recall exactly why that's separate, but I suspect it's because of the --mode=debug thing, maybe that's not in Makefile, or maybe it wasn't in Makefile when this was put together. I do remember having lots of difficulty wiring this up so that's probably it.

What we should do is either fix up the Makefile to make it more straightforward to do a run-ci with a "debug" flag of some kind (CONFIG_FLAGS probably isn't it). Or, for now perhaps simply fix up that test.py call.

This is also in the --without-ssl test in the same group, it probably has the same problems because build/config and test are separate processes too. I'm not sure why they're separate in this case, however. It could be because it was important to test that we built the binary right before executing tests (because that was tricky to get right when we first set this up!). This should either be rolled into a single run-ci or the test.py call should be aligned with what it should do, or maybe there's a make that can be called to invoke this?

python tools/test.py -j $JOBS -p tap --logfile test.tap --flaky-tests=skip async-hooks default known_issues

@addaleax
Copy link
Member Author

@sam-github @rvagg So … what’s the best way forward here for somebody who’s invested in making this happen but doesn’t have access to any of the Jenkins stuff?

@sam-github
Copy link
Contributor

@addaleax You could join the working group, then you'd have access to troubleshoot anywhere, or open an issue asking for access to some specific machines, trust will obviously not be an issue.

@rvagg
Copy link
Member

rvagg commented Jul 15, 2019

2 ways forward, not mutually exclusive:

  1. Someone proposes fixes for Makefile for run-ci to handle --mode=debug (somehow) and --without-ssl (somehow). I don't think CONFIG_FLAGS covers it, at least for the debug case because it has to run the tests in debug mode too. Maybe the --without-ssl case can be achieved by CONFIG_FLAGS alone? I'd love for someone with the time to experiment with this.
  2. Someone proposes replacements for the above commands being run in CI and I'll drop them in. If it's an easy fix by amending what we have then we can just do that and kick this can down the road. I'm fine with that too but this will come up again in the future when someone adds something else to run-ci and we don't use that for some of our tests.

I'm fine updating Jenkins, @sam-github can do it too. Just give me what it should be. I don't really have time right now to be spending debugging this to make sure it comes out right. I think I've given everything necessary above to replicate it locally.

@rvagg
Copy link
Member

rvagg commented Jul 18, 2019

These two address Makefile and let us use run-ci: nodejs/node#28747, nodejs/node#28750.
I have a new node-test-commit-linux-containered that's heavily refactored, extracts a script to put into this repo and should be able to add --workers tests too. Still working on it but with those two PRs it's 👍 for master at least.

@github-actions
Copy link

This issue is stale because it has been open many days with no activity. It will be closed soon unless the stale label is removed or a comment is made.

@github-actions github-actions bot added the stale label May 14, 2020
@addaleax addaleax removed the stale label May 14, 2020
@addaleax
Copy link
Member Author

I’ll remove the stale label because this has bitten us once again: nodejs/node#33276

I’ll try to see if I can do something about this myself now that I’m in the build WG but I’m not sure when I’ll have time to get to it.

@github-actions
Copy link

This issue is stale because it has been open many days with no activity. It will be closed soon unless the stale label is removed or a comment is made.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants