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

CITGM is in deep trouble #1067

Open
targos opened this issue Jul 18, 2024 · 10 comments
Open

CITGM is in deep trouble #1067

targos opened this issue Jul 18, 2024 · 10 comments

Comments

@targos
Copy link
Member

targos commented Jul 18, 2024

We got a regression in the latest v22.5.0 that affects at least yarn and npm: nodejs/node#53902

It seems that citgm would have caught it, but for jobs end up green even when they have lots of failures.

From https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3457/nodes=debian12-x64/

22:06:57 warn: @nearform/bubbleprof npm-install:| npm error Exit handler never called!
22:06:57 warn: @nearform/bubbleprof npm-install:| npm error This is an error with npm itself. Please report this error at:                                                                                                
22:06:57 warn:                                  | npm error   <https://github.com/npm/cli/issues>                                                                                                                         
22:06:57 warn:                                  | npm error A complete log of this run can be found in: /home/iojs/tmp/citgm_tmp/bf0d267e-49e6-467a-bf5b-dcf938d40bcc/home/.npm/_logs/2024-07-16T20_05_57_634Z-debug-0.log
22:06:58 error: failure             | The canary is dead: 
22:07:03 error: @nearform/bubbleprof done| done - the test suite for @nearform/bubbleprof version 7.0.1 failed
22:07:03 (node:783693) [DEP0174] DeprecationWarning: Calling promisify on a function that returns a Promise is likely a mistake.
22:07:03 (node:783693) [DEP0174] DeprecationWarning: Calling promisify on a function that returns a Promise is likely a mistake.
22:08:09 warn: @nearform/doctor npm-install:| npm error Exit handler never called!
22:08:09 warn: @nearform/doctor npm-install:| npm error This is an error with npm itself. Please report this error at:                                                                                                
22:08:09 warn:                              | npm error   <https://github.com/npm/cli/issues>                                                                                                                         
22:08:09 warn:                              | npm error A complete log of this run can be found in: /home/iojs/tmp/citgm_tmp/50a9288d-b4f4-4ba6-88c9-df6e8ba9bca3/home/.npm/_logs/2024-07-16T20_07_07_903Z-debug-0.log
22:08:10 error: failure             | The canary is dead: 
22:08:16 error: @nearform/doctor done| done - the test suite for @nearform/doctor version 8.1.0 failed
@ljharb
Copy link
Member

ljharb commented Jul 18, 2024

This is also filed as npm/cli#7657, and nodejs/node#53462 was pointed to me as a possible cause.

@targos
Copy link
Member Author

targos commented Jul 18, 2024

I think the cause is nodejs/node#53627, but this issue is not about the regression itself. It's about the fact that CITGM somehow reported successful runs instead of failures.

@targos
Copy link
Member Author

targos commented Jul 18, 2024

@nodejs/build-infra I believe this is an issue with the Jenkins job. If I run node bin/citgm-all.js --includeTags binary-split, I can reproduce the regression and it correctly exits with code 1.

@richardlau
Copy link
Member

Possibilities:

  • The job runs citgm via eval:
# Using eval so we can use a complicated CITGM_COMMAND such as 'NODE_OPTIONS=--xzy citgm-all'
eval $CITGM_COMMAND "--nodedir=$npm_config_nodedir -v $CITGM_LOGLEVEL -x $PWD/report.xml -q $NPM_LOGLEVEL --tmpDir $temp"
  • We have Do not fail the build on empty test results turned on
    image

I'll turn off Do not fail the build on empty test results.

@richardlau
Copy link
Member

@richardlau
Copy link
Member

Rerunning https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3457/nodes=debian12-x64/ with Do not fail the build on empty test results disabled: https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3459/nodes=debian12-x64/console

With Do not fail the build on empty test results disabled, the CITGM run for 22.5.0 now fails due to having no test results.

@targos
Copy link
Member Author

targos commented Jul 18, 2024

That's better, thanks ! Now do we need to investigate why it "thinks" there are no results ?

@richardlau
Copy link
Member

richardlau commented Jul 18, 2024

https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3459/nodes=debian12-x64/console

13:55:12 Recording test results
13:55:12 ERROR: Step ‘Publish JUnit test result report’ failed: No test report files were found. Configuration error?

which likely means smoker/report.xml wasn't generated:
image

we use -x to specify outputting to report.xml.

# Using eval so we can use a complicated CITGM_COMMAND such as 'NODE_OPTIONS=--xzy citgm-all'
eval $CITGM_COMMAND "--nodedir=$npm_config_nodedir -v $CITGM_LOGLEVEL -x $PWD/report.xml -q $NPM_LOGLEVEL --tmpDir $temp"

@targos
Copy link
Member Author

targos commented Jul 20, 2024

Here's the report.xml I get with Node.js 22.5.0 using the following command: node bin/citgm-all.js --includeTags binary-split -x $PWD/report.xml

<testsuite name="citgm">
  <testcase name="binary-split-v1.0.5" time="12.196">
    <system-out><![CDATA[ > binary-split@1.0.5 test
 > standard --verbose && node test.js
 npm error Exit handler never called!
 npm error This is an error with npm itself. Please report this error at:
 npm error   <https://github.com/npm/cli/issues>
 npm error A complete log of this run can be found in: /var/folders/9n/05y6s4ls78515vmnbd86hktm0000gn/T/9987debd-ab8e-402c-a690-08daa9c9d7de/home/.npm/_logs/2024-07-20T09_32_11_815Z-debug-0.log
 sh: standard: command not found]]></system-out>
    <failure message="module test suite failed">Error: The canary is dead: </failure>
  </testcase>
  <testcase name="clinic" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="debug" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="ember-cli" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="eslint" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="glob" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="got" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="gulp" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="jest" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="q" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="underscore" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="watchify" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="yeoman-generator" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
</testsuite>

And with Node.js 22.5.1:

<testsuite name="citgm">
  <testcase name="binary-split-v1.0.5" time="9.769">
    <system-out><![CDATA[ added 267 packages in 7s
 > binary-split@1.0.5 test
 > standard --verbose && node test.js
 TAP version 13
 # ldjson file
 ok 1 should be equal
 # custom matcher
 ok 2 should be equal
 ok 3 should be equal
 # long matcher
 ok 4 should be equal
 ok 5 should be equal
 ok 6 should be equal
 # matcher at index 0 check
 ok 7 should be equal
 ok 8 should be equal
 ok 9 should be equal
 # chunked input
 ok 10 should be equal
 # chunked input with long matcher
 ok 11 should be equal
 ok 12 should be equal
 # lookbehind in multi character matcher
 ok 13 should be equal
 ok 14 should be equal
 ok 15 should be equal
 1..15
 # tests 15
 # pass  15
 # ok]]></system-out>
  </testcase>
  <testcase name="clinic" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="debug" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="ember-cli" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="eslint" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="glob" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="got" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="gulp" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="jest" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="q" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="underscore" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="watchify" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
  <testcase name="yeoman-generator" time="NaN">
    <system-out/>
    <skipped/>
  </testcase>
</testsuite>

@RedYetiDev
Copy link
Member

RedYetiDev commented Aug 23, 2024

FWIW another fast api regression made it through CITGM: nodejs/node#54518

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

No branches or pull requests

4 participants