Skip to content

Conversation

wconti27
Copy link
Contributor

@wconti27 wconti27 commented Oct 8, 2025

What does this PR do?

This PR introduces a simpler, more structured approach to testing for integrations. Our team is looking to provide more structure to integration testing, whereas tests have generally just been written by Engineers with no specific format, cases to test, etc, and instead, just by vibes of whatever the engineer feels important to test. To do this, we are looking to do the following:

  • Each integration is bucketed into a class, such as database client, llm, messaging, web server, http client, ....
  • Each class bucket has a defined set of required and optional operations that the integration can implement
    • ie: database client app MUST implement a query method (and trace it), and optionally may trace a connect method
  • Created test apps are used for:
    • unit tests within the tracer (included abstracted unit tests for the integration class to promote consistency across integrations of a similar class)
      - each class abstraction will have common tests to run for all integrations of that class.
    • newly proposed APM Semantic Tests within System Tests. TLDR, these new tests are similar to parametric tests. System Tests repository will pull in these sample test apps for each integration, and run scenarios, defined per class of integration, and assert that the integrations trace the required operations for their class, and set the correct APM Span Data per class as well.
      • ie: this will assert that database integrations trace a db.query method, and the db.query span contains all expected base and database tags, such as db.name, db.statement, etc.
  • A huge advantage of this approach is consistency, as well as structure. The Integrations team is eventually looking to use AI to implement new integrations, and a key to doing that is a structured approach to choosing which library functionality to wrap, as well as testing. With this approach, the AI agent will simply have to fill out a predefined test app interface for the library of interest, and if needed, write custom test cases for ADDITIONAL functionality that isn't handled by the class specific test cases.

Currently, the PR references some APM semantics files that are not included in the PR, they will be hosted in another repository and can be pulled in.

The PR also creates an integration test helper function that handles all setup for the integration tests. It hides all unnecessary boilerplate, such as the loading of the mock agent, loading of the tracer, the import of the library from the versions folder, and other stuff like cleanup. Integration test files now only contain 100% necessary lines.

Motivation

Plugin Checklist

Additional Notes

Copy link

github-actions bot commented Oct 8, 2025

Overall package size

Self size: 12.66 MB
Deduped: 112.88 MB
No deduping: 113.28 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 10.2.1 | 20.64 MB | 20.65 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.10.0 | 9.91 MB | 10.3 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.4 | 2.95 MB | 5.73 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api | 1.9.0 | 1.22 MB | 1.22 MB | | jsonpath-plus | 10.3.0 | 617.18 kB | 1.08 MB | | import-in-the-middle | 1.14.4 | 123.18 kB | 851.76 kB | | lru-cache | 10.4.3 | 804.3 kB | 804.3 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | source-map | 0.7.6 | 185.63 kB | 185.63 kB | | pprof-format | 2.2.1 | 163.06 kB | 163.06 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 7.0.5 | 63.38 kB | 63.38 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.3 | 23.74 kB | 23.74 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |

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

Copy link

codecov bot commented Oct 8, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.24%. Comparing base (4bb779b) to head (694d69b).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #6628      +/-   ##
==========================================
- Coverage   83.78%   83.24%   -0.55%     
==========================================
  Files         490      485       -5     
  Lines       20632    20568      -64     
==========================================
- Hits        17287    17121     -166     
- Misses       3345     3447     +102     

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

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@pr-commenter
Copy link

pr-commenter bot commented Oct 8, 2025

Benchmarks

Benchmark execution time: 2025-10-08 19:09:29

Comparing candidate commit 694d69b in PR branch conti/abstracted-test-cases with baseline commit 4bb779b in branch master.

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

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

Successfully merging this pull request may close these issues.

1 participant