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

[ci-visibility] Support parallel mode in cucumber #4260

Merged
merged 9 commits into from
Apr 30, 2024

Conversation

juan-fernandez
Copy link
Collaborator

@juan-fernandez juan-fernandez commented Apr 24, 2024

What does this PR do?

  • Add the necessary hooks to be able to run cucumber in parallel.
  • Rename jest-worker exporter to test-worker.
  • Use test-worker exporter for cucumber as well.

⚠️ ITR and EFD will not work right away with parallel mode. This will be tackled at another PR.

ℹ️ Multiple tests failing because of node22 release. Being fixed in #4267

Motivation

Allow users to use parallel mode with cucumber: https://github.com/cucumber/cucumber-js/blob/main/docs/parallel.md. It used to be incompatible with dd-trace.

Plugin Checklist

  • Unit tests.

@pr-commenter
Copy link

pr-commenter bot commented Apr 24, 2024

Benchmarks

Benchmark execution time: 2024-04-29 13:28:16

Comparing candidate commit 64f71f3 in PR branch juan-fernandez/support-cucumber-parallel with baseline commit 2233a4e in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 258 metrics, 8 unstable metrics.

Copy link

github-actions bot commented Apr 24, 2024

Overall package size

Self size: 6.44 MB
Deduped: 60.93 MB
No deduping: 61.21 MB

Dependency sizes

name version self size total size
@datadog/native-iast-taint-tracking 1.7.0 16.71 MB 16.72 MB
@datadog/native-appsec 7.1.1 14.39 MB 14.4 MB
@datadog/pprof 5.2.0 8.84 MB 9.21 MB
protobufjs 7.2.5 2.77 MB 6.56 MB
@datadog/native-iast-rewriter 2.3.0 2.15 MB 2.24 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
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
pprof-format 2.1.0 111.69 kB 111.69 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

Copy link

codecov bot commented Apr 24, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 80.42%. Comparing base (c11fcfd) to head (bd7e9f9).
Report is 2 commits behind head on master.

❗ Current head bd7e9f9 differs from pull request most recent head 64f71f3. Consider uploading reports for the commit 64f71f3 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #4260      +/-   ##
==========================================
- Coverage   83.11%   80.42%   -2.69%     
==========================================
  Files         244        3     -241     
  Lines       10255      373    -9882     
  Branches       33       33              
==========================================
- Hits         8523      300    -8223     
+ Misses       1732       73    -1659     

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

@juan-fernandez juan-fernandez force-pushed the juan-fernandez/support-cucumber-parallel branch from b89eaac to a1b9251 Compare April 26, 2024 10:30
@juan-fernandez juan-fernandez changed the title [ci-visibility] [do not merge] Support parallel mode in cucumber [ci-visibility] Support parallel mode in cucumber Apr 29, 2024
@@ -123,112 +97,134 @@ versions.forEach(version => {
isAgentless = reportMethod === 'agentless'
envVars = isAgentless ? getCiVisAgentlessConfig(receiver.port) : getCiVisEvpProxyConfig(receiver.port)
})
it('can run and report tests', (done) => {
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

The changes in this file are just for running this test both in serial and parallel mode

}
return acc
}, {})
}
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

ℹ️ getFilteredPickles and getPickleByFile were hoisted but no other changes

name: '@cucumber/cucumber',
versions: ['>=7.3.0'],
file: 'lib/runtime/test_case_runner.js'
}, testCaseHook)
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

ℹ️ these two hooks were just moved

}

return runTestCaseResult
}
}

// From 7.3.0 onwards, runPickle becomes runTestCase
function getWrappedParseWorkerMessage (parseWorkerMessageFunction) {
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

ℹ️ getWrappedParseWorkerMessage is for intercepting messages from the workers and:

  • flush test data coming from the workers (workers now use the interprocess exporter)
  • start / finish test suites

// `getWrappedStart` generates session start and finish events
// `getWrappedGiveWork` generates suite start events and sets pickleResultByFile (used by suite finish events)
// `getWrappedParseWorkerMessage` generates suite finish events
addHook({
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

ℹ️ only new hook for parallel mode

return super.startTestSpan(
testName,
testSuite,
this.testSuiteSpan,
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

ℹ️ now there can be multiple test suite spans active at the same time, that's why we can use this.testSuiteSpan

@@ -0,0 +1,56 @@
'use strict'
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

ℹ️ rename from jest-worker with some small changes for accommodating cucumber

@@ -0,0 +1,83 @@
'use strict'
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

ℹ️ renamed from jest-worker and added tests for cucumber

@juan-fernandez juan-fernandez marked this pull request as ready for review April 29, 2024 09:10
@juan-fernandez juan-fernandez requested review from a team as code owners April 29, 2024 09:10
@juan-fernandez juan-fernandez merged commit ca25754 into master Apr 30, 2024
110 of 111 checks passed
@juan-fernandez juan-fernandez deleted the juan-fernandez/support-cucumber-parallel branch April 30, 2024 19:13
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