Skip to content

[ci-visibility] Early flake detection for mocha #4060

Merged
juan-fernandez merged 5 commits into
masterfrom
juan-fernandez/early-flake-detection-mocha
Feb 19, 2024
Merged

[ci-visibility] Early flake detection for mocha #4060
juan-fernandez merged 5 commits into
masterfrom
juan-fernandez/early-flake-detection-mocha

Conversation

@juan-fernandez

@juan-fernandez juan-fernandez commented Feb 14, 2024

Copy link
Copy Markdown
Collaborator

What does this PR do?

  • Fetch known tests from mocha
  • When tests are about to run in Runner.prototype.runTests, we check which ones are new and duplicate them.
  • If some of the attempts fail, we want not to fail the test process (so long as at least a single attempt is passing):
    • If tests both pass and fail, they will be detected as flaky. The user will still be able to block PRs on flakiness. By not failing the process outright, we give them the option to decide.

ℹ️ Most of the lines changed are because I moved tests around, but the actual tests look almost identical.

Motivation

Implement early flake detection for mocha.

Plugin Checklist

  • Unit tests.

Security

Datadog employees:

  • If this PR touches code that signs or publishes builds or packages, or handles credentials of any kind, I've requested a review from @DataDog/security-design-and-guidance.
  • This PR doesn't touch any of that.

Unsure? Have a question? Request a review!

@github-actions

github-actions Bot commented Feb 14, 2024

Copy link
Copy Markdown
Contributor

Overall package size

Self size: 6.05 MB
Deduped: 61.65 MB
No deduping: 62.4 MB

Dependency sizes

name version self size total size
@datadog/native-iast-taint-tracking 1.6.4 16.43 MB 16.44 MB
@datadog/native-appsec 7.0.0 14.51 MB 14.52 MB
@datadog/pprof 5.0.0 9.59 MB 10.44 MB
protobufjs 7.2.5 2.77 MB 6.56 MB
@datadog/native-iast-rewriter 2.2.3 2.19 MB 2.28 MB
@opentelemetry/core 1.14.0 872.87 kB 1.47 MB
@datadog/native-metrics 2.0.0 898.77 kB 1.3 MB
@opentelemetry/api 1.4.1 780.32 kB 780.32 kB
import-in-the-middle 1.7.3 67.62 kB 731.01 kB
pprof-format 2.0.7 588.12 kB 588.12 kB
msgpack-lite 0.1.26 201.16 kB 281.59 kB
opentracing 0.14.7 194.81 kB 194.81 kB
semver 7.5.4 93.4 kB 123.8 kB
@datadog/sketches-js 2.1.0 109.9 kB 109.9 kB
lodash.sortby 4.7.0 75.76 kB 75.76 kB
lru-cache 7.14.0 74.95 kB 74.95 kB
ipaddr.js 2.1.0 60.23 kB 60.23 kB
ignore 5.2.4 51.22 kB 51.22 kB
int64-buffer 0.1.10 49.18 kB 49.18 kB
shell-quote 1.8.1 44.96 kB 44.96 kB
istanbul-lib-coverage 3.2.0 29.34 kB 29.34 kB
tlhunter-sorted-set 0.1.0 24.94 kB 24.94 kB
limiter 1.1.5 23.17 kB 23.17 kB
dc-polyfill 0.1.4 23.1 kB 23.1 kB
retry 0.13.1 18.85 kB 18.85 kB
node-abort-controller 3.1.1 16.89 kB 16.89 kB
jest-docblock 29.7.0 8.99 kB 12.76 kB
crypto-randomuuid 1.0.0 11.18 kB 11.18 kB
path-to-regexp 0.1.7 6.78 kB 6.78 kB
koalas 1.0.2 6.47 kB 6.47 kB
methods 1.1.2 5.29 kB 5.29 kB
module-details-from-path 1.0.3 4.47 kB 4.47 kB

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@codecov

codecov Bot commented Feb 14, 2024

Copy link
Copy Markdown

Codecov Report

Attention: 81 lines in your changes are missing coverage. Please review.

Comparison is base (6aa4ab2) 85.34% compared to head (dcc1476) 84.87%.
Report is 4 commits behind head on master.

Files Patch % Lines
packages/datadog-instrumentations/src/mocha.js 0.00% 61 Missing ⚠️
packages/datadog-plugin-mocha/src/index.js 0.00% 18 Missing ⚠️
packages/dd-trace/src/plugins/util/test.js 50.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #4060      +/-   ##
==========================================
- Coverage   85.34%   84.87%   -0.48%     
==========================================
  Files         243      243              
  Lines       10576    10636      +60     
  Branches       33       33              
==========================================
+ Hits         9026     9027       +1     
- Misses       1550     1609      +59     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@pr-commenter

pr-commenter Bot commented Feb 14, 2024

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2024-02-15 16:08:08

Comparing candidate commit dcc1476 in PR branch juan-fernandez/early-flake-detection-mocha with baseline commit 6aa4ab2 in branch master.

Found 2 performance improvements and 0 performance regressions! Performance is the same for 260 metrics, 4 unstable metrics.

scenario:plugin-graphql-with-depth-and-collapse-on-18

  • 🟩 max_rss_usage [-118.171MB; -109.825MB] or [-12.431%; -11.553%]

scenario:plugin-graphql-with-depth-off-18

  • 🟩 max_rss_usage [-139.307MB; -77.001MB] or [-14.723%; -8.138%]

@juan-fernandez
juan-fernandez force-pushed the juan-fernandez/early-flake-detection-mocha branch from 26a0ca9 to 5dc304d Compare February 15, 2024 11:06
})
})
})
})

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ these tests were not removed, just moved from running exclusively for jest to run also for mocha. The tests themselves changed very little

// only run for jest tests
if (typeof jest !== 'undefined') {
it.todo('todo will not be retried')
}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ it.todo is not supported in mocha

}

function getFailingNewTests (root) {
let failingTests = []

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: if every attempt fails, we should still fail. It's just if it's flaky that we want non to block

asyncResource.runInAsyncScope(() => {
testStartCh.publish({
name: removeEfdTestName(testName),
name: removeEfdStringFromTestName(testName),

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unrelated improvements in this file

@juan-fernandez
juan-fernandez marked this pull request as ready for review February 15, 2024 16:09
@juan-fernandez
juan-fernandez requested review from a team as code owners February 15, 2024 16:09
@juan-fernandez
juan-fernandez merged commit 00352ae into master Feb 19, 2024
@juan-fernandez
juan-fernandez deleted the juan-fernandez/early-flake-detection-mocha branch February 19, 2024 07:54
@CarlesDD CarlesDD mentioned this pull request Feb 19, 2024
@CarlesDD CarlesDD mentioned this pull request Feb 20, 2024
@CarlesDD CarlesDD mentioned this pull request Feb 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants