-
Notifications
You must be signed in to change notification settings - Fork 467
Add interface for communication with ddtestpy #15034
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
base: main
Are you sure you want to change the base?
Add interface for communication with ddtestpy #15034
Conversation
|
|
Bootstrap import analysisComparison of import times between this PR and base. SummaryThe average import time from this PR is: 239 ± 4 ms. The average import time from base is: 241 ± 4 ms. The import time difference between this PR and base is: -2.2 ± 0.2 ms. Import time breakdownThe following import paths have shrunk:
|
Performance SLOsComparing candidate vitor-de-araujo/SDTEST-2803/ddtrace-dependency-inversion (33dfc98) with baseline main (cbd2a7d) ❌ Test Failures (1 suite)❌ otelspan - 20/22✅ add-eventTime: ✅ 40.082ms (SLO: <47.150ms 📉 -15.0%) vs baseline: -2.2% Memory: ✅ 43.776MB (SLO: <47.000MB -6.9%) vs baseline: +3.9% ❌ add-metricsTime: ✅ 317.211ms (SLO: <344.800ms -8.0%) vs baseline: +0.3% Memory: ❌ 652.628MB (SLO: <630.000MB +3.6%) vs baseline: 📈 +11.0% ❌ add-tagsTime: ✅ 288.459ms (SLO: <314.000ms -8.1%) vs baseline: ~same Memory: ❌ 652.980MB (SLO: <630.000MB +3.6%) vs baseline: 📈 +10.8% ✅ get-contextTime: ✅ 82.284ms (SLO: <92.350ms 📉 -10.9%) vs baseline: +1.6% Memory: ✅ 39.658MB (SLO: <46.500MB 📉 -14.7%) vs baseline: +4.7% ✅ is-recordingTime: ✅ 37.943ms (SLO: <44.500ms 📉 -14.7%) vs baseline: -1.1% Memory: ✅ 43.178MB (SLO: <47.500MB -9.1%) vs baseline: +3.9% ✅ record-exceptionTime: ✅ 59.351ms (SLO: <67.650ms 📉 -12.3%) vs baseline: +1.8% Memory: ✅ 39.872MB (SLO: <47.000MB 📉 -15.2%) vs baseline: +4.4% ✅ set-statusTime: ✅ 44.188ms (SLO: <50.400ms 📉 -12.3%) vs baseline: ~same Memory: ✅ 43.125MB (SLO: <47.000MB -8.2%) vs baseline: +3.7% ✅ startTime: ✅ 37.222ms (SLO: <43.450ms 📉 -14.3%) vs baseline: -0.6% Memory: ✅ 43.179MB (SLO: <47.000MB -8.1%) vs baseline: +3.8% ✅ start-finishTime: ✅ 81.676ms (SLO: <88.000ms -7.2%) vs baseline: -1.1% Memory: ✅ 34.544MB (SLO: <46.500MB 📉 -25.7%) vs baseline: +4.7% ✅ start-finish-telemetryTime: ✅ 83.205ms (SLO: <89.000ms -6.5%) vs baseline: -1.1% Memory: ✅ 34.583MB (SLO: <46.500MB 📉 -25.6%) vs baseline: +5.0% ✅ update-nameTime: ✅ 38.917ms (SLO: <45.150ms 📉 -13.8%) vs baseline: -0.5% Memory: ✅ 43.412MB (SLO: <47.000MB -7.6%) vs baseline: +3.5% 📈 Performance Regressions (3 suites)📈 iast_aspects - 40/40✅ re_expand_aspectTime: ✅ 32.173µs (SLO: <40.000µs 📉 -19.6%) vs baseline: +1.0% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.8% ✅ re_expand_noaspectTime: ✅ 28.601µs (SLO: <40.000µs 📉 -28.5%) vs baseline: -0.5% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ re_findall_aspectTime: ✅ 2.914µs (SLO: <10.000µs 📉 -70.9%) vs baseline: ~same Memory: ✅ 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.8% ✅ re_findall_noaspectTime: ✅ 1.431µs (SLO: <10.000µs 📉 -85.7%) vs baseline: +1.1% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +4.9% ✅ re_finditer_aspectTime: ✅ 4.435µs (SLO: <10.000µs 📉 -55.6%) vs baseline: +0.6% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ re_finditer_noaspectTime: ✅ 1.406µs (SLO: <10.000µs 📉 -85.9%) vs baseline: -0.2% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.0% ✅ re_fullmatch_aspectTime: ✅ 2.784µs (SLO: <10.000µs 📉 -72.2%) vs baseline: -1.4% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ re_fullmatch_noaspectTime: ✅ 1.289µs (SLO: <10.000µs 📉 -87.1%) vs baseline: -0.8% Memory: ✅ 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.7% ✅ re_group_aspectTime: ✅ 2.944µs (SLO: <10.000µs 📉 -70.6%) vs baseline: +0.3% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ re_group_noaspectTime: ✅ 1.598µs (SLO: <10.000µs 📉 -84.0%) vs baseline: -1.4% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ re_groups_aspectTime: ✅ 3.097µs (SLO: <10.000µs 📉 -69.0%) vs baseline: +1.9% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ re_groups_noaspectTime: ✅ 1.710µs (SLO: <10.000µs 📉 -82.9%) vs baseline: -0.3% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ re_match_aspectTime: ✅ 2.962µs (SLO: <10.000µs 📉 -70.4%) vs baseline: 📈 +10.5% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ re_match_noaspectTime: ✅ 1.287µs (SLO: <10.000µs 📉 -87.1%) vs baseline: -0.7% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ re_search_aspectTime: ✅ 2.565µs (SLO: <10.000µs 📉 -74.4%) vs baseline: -0.4% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ re_search_noaspectTime: ✅ 1.192µs (SLO: <10.000µs 📉 -88.1%) vs baseline: -0.7% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.7% ✅ re_sub_aspectTime: ✅ 3.363µs (SLO: <10.000µs 📉 -66.4%) vs baseline: -2.6% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.2% ✅ re_sub_noaspectTime: ✅ 1.531µs (SLO: <10.000µs 📉 -84.7%) vs baseline: +0.3% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ re_subn_aspectTime: ✅ 3.667µs (SLO: <10.000µs 📉 -63.3%) vs baseline: -0.8% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ re_subn_noaspectTime: ✅ 1.601µs (SLO: <10.000µs 📉 -84.0%) vs baseline: -0.9% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% 📈 span - 26/26✅ add-eventTime: ✅ 19.966ms (SLO: <22.500ms 📉 -11.3%) vs baseline: -2.1% Memory: ✅ 48.756MB (SLO: <53.000MB -8.0%) vs baseline: +2.9% ✅ add-metricsTime: ✅ 90.320ms (SLO: <93.500ms -3.4%) vs baseline: -0.2% Memory: ✅ 735.699MB (SLO: <961.000MB 📉 -23.4%) vs baseline: 📈 +11.8% ✅ add-tagsTime: ✅ 146.754ms (SLO: <155.000ms -5.3%) vs baseline: -0.6% Memory: ✅ 735.907MB (SLO: <962.500MB 📉 -23.5%) vs baseline: 📈 +11.7% ✅ get-contextTime: ✅ 18.406ms (SLO: <20.500ms 📉 -10.2%) vs baseline: -2.9% Memory: ✅ 47.596MB (SLO: <53.000MB 📉 -10.2%) vs baseline: +2.9% ✅ is-recordingTime: ✅ 18.663ms (SLO: <20.500ms -9.0%) vs baseline: -3.1% Memory: ✅ 47.568MB (SLO: <53.000MB 📉 -10.2%) vs baseline: +3.0% ✅ record-exceptionTime: ✅ 37.472ms (SLO: <40.000ms -6.3%) vs baseline: -0.5% Memory: ✅ 42.051MB (SLO: <53.000MB 📉 -20.7%) vs baseline: +4.0% ✅ set-statusTime: ✅ 20.455ms (SLO: <22.000ms -7.0%) vs baseline: -1.5% Memory: ✅ 47.567MB (SLO: <53.000MB 📉 -10.3%) vs baseline: +2.9% ✅ startTime: ✅ 18.364ms (SLO: <20.500ms 📉 -10.4%) vs baseline: -1.2% Memory: ✅ 47.627MB (SLO: <53.000MB 📉 -10.1%) vs baseline: +3.0% ✅ start-finishTime: ✅ 50.542ms (SLO: <52.500ms -3.7%) vs baseline: -1.5% Memory: ✅ 32.126MB (SLO: <34.000MB -5.5%) vs baseline: +5.0% ✅ start-finish-telemetryTime: ✅ 51.862ms (SLO: <54.500ms -4.8%) vs baseline: -1.6% Memory: ✅ 32.224MB (SLO: <34.000MB -5.2%) vs baseline: +4.9% ✅ start-finish-traceid128Time: ✅ 54.554ms (SLO: <56.000ms -2.6%) vs baseline: -0.8% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.8% ✅ start-traceid128Time: ✅ 18.447ms (SLO: <22.500ms 📉 -18.0%) vs baseline: -3.1% Memory: ✅ 47.623MB (SLO: <53.000MB 📉 -10.1%) vs baseline: +3.1% ✅ update-nameTime: ✅ 18.859ms (SLO: <22.000ms 📉 -14.3%) vs baseline: -2.5% Memory: ✅ 48.179MB (SLO: <53.000MB -9.1%) vs baseline: +2.7% 📈 telemetryaddmetric - 30/30✅ 1-count-metric-1-timesTime: ✅ 2.992µs (SLO: <20.000µs 📉 -85.0%) vs baseline: -6.8% Memory: ✅ 32.126MB (SLO: <34.000MB -5.5%) vs baseline: +4.8% ✅ 1-count-metrics-100-timesTime: ✅ 202.073µs (SLO: <250.000µs 📉 -19.2%) vs baseline: -3.3% Memory: ✅ 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +5.2% ✅ 1-distribution-metric-1-timesTime: ✅ 3.614µs (SLO: <20.000µs 📉 -81.9%) vs baseline: 📈 +20.9% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +5.1% ✅ 1-distribution-metrics-100-timesTime: ✅ 214.985µs (SLO: <220.000µs -2.3%) vs baseline: 📈 +11.6% Memory: ✅ 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +5.2% ✅ 1-gauge-metric-1-timesTime: ✅ 2.159µs (SLO: <20.000µs 📉 -89.2%) vs baseline: +3.0% Memory: ✅ 32.185MB (SLO: <34.000MB -5.3%) vs baseline: +5.2% ✅ 1-gauge-metrics-100-timesTime: ✅ 136.440µs (SLO: <150.000µs -9.0%) vs baseline: 📈 +10.6% Memory: ✅ 32.185MB (SLO: <34.000MB -5.3%) vs baseline: +5.1% ✅ 1-rate-metric-1-timesTime: ✅ 3.083µs (SLO: <20.000µs 📉 -84.6%) vs baseline: -3.9% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +5.1% ✅ 1-rate-metrics-100-timesTime: ✅ 215.845µs (SLO: <250.000µs 📉 -13.7%) vs baseline: +3.6% Memory: ✅ 32.244MB (SLO: <34.000MB -5.2%) vs baseline: +5.1% ✅ 100-count-metrics-100-timesTime: ✅ 20.009ms (SLO: <23.500ms 📉 -14.9%) vs baseline: -4.0% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +5.1% ✅ 100-distribution-metrics-100-timesTime: ✅ 2.219ms (SLO: <2.250ms 🟡 -1.4%) vs baseline: 📈 +12.7% Memory: ✅ 32.224MB (SLO: <34.000MB -5.2%) vs baseline: +5.1% ✅ 100-gauge-metrics-100-timesTime: ✅ 1.404ms (SLO: <1.550ms -9.4%) vs baseline: 📈 +10.9% Memory: ✅ 32.145MB (SLO: <34.000MB -5.5%) vs baseline: +4.8% ✅ 100-rate-metrics-100-timesTime: ✅ 2.187ms (SLO: <2.550ms 📉 -14.3%) vs baseline: +2.0% Memory: ✅ 32.126MB (SLO: <34.000MB -5.5%) vs baseline: +5.0% ✅ flush-1-metricTime: ✅ 4.566µs (SLO: <20.000µs 📉 -77.2%) vs baseline: +9.1% Memory: ✅ 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +5.2% ✅ flush-100-metricsTime: ✅ 174.960µs (SLO: <250.000µs 📉 -30.0%) vs baseline: -3.5% Memory: ✅ 32.126MB (SLO: <34.000MB -5.5%) vs baseline: +4.8% ✅ flush-1000-metricsTime: ✅ 2.121ms (SLO: <2.500ms 📉 -15.2%) vs baseline: -2.8% Memory: ✅ 32.971MB (SLO: <34.500MB -4.4%) vs baseline: +5.0% 🟡 Near SLO Breach (4 suites)🟡 djangosimple - 30/30✅ appsecTime: ✅ 20.534ms (SLO: <22.300ms -7.9%) vs baseline: +0.3% Memory: ✅ 65.207MB (SLO: <67.000MB -2.7%) vs baseline: +4.2% ✅ exception-replay-enabledTime: ✅ 1.343ms (SLO: <1.450ms -7.4%) vs baseline: -0.5% Memory: ✅ 64.676MB (SLO: <67.000MB -3.5%) vs baseline: +5.1% ✅ iastTime: ✅ 20.440ms (SLO: <22.250ms -8.1%) vs baseline: -0.3% Memory: ✅ 65.247MB (SLO: <67.000MB -2.6%) vs baseline: +4.4% ✅ profilerTime: ✅ 15.440ms (SLO: <16.550ms -6.7%) vs baseline: +1.6% Memory: ✅ 54.064MB (SLO: <54.500MB 🟡 -0.8%) vs baseline: +4.9% ✅ resource-renamingTime: ✅ 20.549ms (SLO: <21.750ms -5.5%) vs baseline: -0.1% Memory: ✅ 65.313MB (SLO: <67.000MB -2.5%) vs baseline: +4.6% ✅ span-code-originTime: ✅ 25.462ms (SLO: <28.200ms -9.7%) vs baseline: -3.1% Memory: ✅ 67.479MB (SLO: <69.500MB -2.9%) vs baseline: +4.7% ✅ tracerTime: ✅ 20.444ms (SLO: <21.750ms -6.0%) vs baseline: -0.2% Memory: ✅ 65.267MB (SLO: <67.000MB -2.6%) vs baseline: +4.4% ✅ tracer-and-profilerTime: ✅ 22.690ms (SLO: <23.500ms -3.4%) vs baseline: +2.7% Memory: ✅ 66.707MB (SLO: <67.500MB 🟡 -1.2%) vs baseline: +4.5% ✅ tracer-dont-create-db-spansTime: ✅ 19.358ms (SLO: <21.500ms -10.0%) vs baseline: ~same Memory: ✅ 65.274MB (SLO: <66.000MB 🟡 -1.1%) vs baseline: +4.5% ✅ tracer-minimalTime: ✅ 16.667ms (SLO: <17.500ms -4.8%) vs baseline: +0.1% Memory: ✅ 65.181MB (SLO: <66.000MB 🟡 -1.2%) vs baseline: +4.2% ✅ tracer-nativeTime: ✅ 20.494ms (SLO: <21.750ms -5.8%) vs baseline: -0.4% Memory: ✅ 71.408MB (SLO: <72.500MB 🟡 -1.5%) vs baseline: +4.9% ✅ tracer-no-cachesTime: ✅ 18.512ms (SLO: <19.650ms -5.8%) vs baseline: +0.3% Memory: ✅ 65.274MB (SLO: <67.000MB -2.6%) vs baseline: +4.3% ✅ tracer-no-databasesTime: ✅ 18.846ms (SLO: <20.100ms -6.2%) vs baseline: ~same Memory: ✅ 65.274MB (SLO: <67.000MB -2.6%) vs baseline: +4.5% ✅ tracer-no-middlewareTime: ✅ 20.226ms (SLO: <21.500ms -5.9%) vs baseline: -0.1% Memory: ✅ 65.294MB (SLO: <67.000MB -2.5%) vs baseline: +4.5% ✅ tracer-no-templatesTime: ✅ 20.320ms (SLO: <22.000ms -7.6%) vs baseline: -0.2% Memory: ✅ 65.208MB (SLO: <67.000MB -2.7%) vs baseline: +4.3% 🟡 errortrackingdjangosimple - 6/6✅ errortracking-enabled-allTime: ✅ 18.134ms (SLO: <19.850ms -8.6%) vs baseline: +0.3% Memory: ✅ 65.266MB (SLO: <66.500MB 🟡 -1.9%) vs baseline: +4.8% ✅ errortracking-enabled-userTime: ✅ 18.133ms (SLO: <19.400ms -6.5%) vs baseline: +0.2% Memory: ✅ 65.267MB (SLO: <66.500MB 🟡 -1.9%) vs baseline: +4.8% ✅ tracer-enabledTime: ✅ 18.111ms (SLO: <19.450ms -6.9%) vs baseline: -0.1% Memory: ✅ 65.229MB (SLO: <66.500MB 🟡 -1.9%) vs baseline: +4.8% 🟡 flasksimple - 18/18✅ appsec-getTime: ✅ 4.597ms (SLO: <4.750ms -3.2%) vs baseline: +0.4% Memory: ✅ 61.873MB (SLO: <65.000MB -4.8%) vs baseline: +4.8% ✅ appsec-postTime: ✅ 6.634ms (SLO: <6.750ms 🟡 -1.7%) vs baseline: +0.4% Memory: ✅ 61.974MB (SLO: <65.000MB -4.7%) vs baseline: +4.8% ✅ appsec-telemetryTime: ✅ 4.588ms (SLO: <4.750ms -3.4%) vs baseline: +0.1% Memory: ✅ 62.030MB (SLO: <65.000MB -4.6%) vs baseline: +5.0% ✅ debuggerTime: ✅ 1.858ms (SLO: <2.000ms -7.1%) vs baseline: +0.2% Memory: ✅ 45.416MB (SLO: <47.000MB -3.4%) vs baseline: +4.8% ✅ iast-getTime: ✅ 1.855ms (SLO: <2.000ms -7.2%) vs baseline: -0.6% Memory: ✅ 42.408MB (SLO: <49.000MB 📉 -13.5%) vs baseline: +4.8% ✅ profilerTime: ✅ 1.920ms (SLO: <2.100ms -8.6%) vs baseline: ~same Memory: ✅ 46.498MB (SLO: <47.000MB 🟡 -1.1%) vs baseline: +5.1% ✅ resource-renamingTime: ✅ 3.373ms (SLO: <3.650ms -7.6%) vs baseline: -0.2% Memory: ✅ 52.219MB (SLO: <53.500MB -2.4%) vs baseline: +4.8% ✅ tracerTime: ✅ 3.360ms (SLO: <3.650ms -8.0%) vs baseline: -0.4% Memory: ✅ 52.219MB (SLO: <53.500MB -2.4%) vs baseline: +4.8% ✅ tracer-nativeTime: ✅ 3.359ms (SLO: <3.650ms -8.0%) vs baseline: +0.2% Memory: ✅ 58.050MB (SLO: <60.000MB -3.2%) vs baseline: +4.4% 🟡 packagesupdateimporteddependencies - 24/24✅ import_manyTime: ✅ 155.698µs (SLO: <170.000µs -8.4%) vs baseline: -0.1% Memory: ✅ 37.376MB (SLO: <38.500MB -2.9%) vs baseline: +4.6% ✅ import_many_cachedTime: ✅ 121.683µs (SLO: <130.000µs -6.4%) vs baseline: ~same Memory: ✅ 37.137MB (SLO: <38.500MB -3.5%) vs baseline: +4.2% ✅ import_many_stdlibTime: ✅ 1.640ms (SLO: <1.750ms -6.3%) vs baseline: +1.1% Memory: ✅ 37.209MB (SLO: <38.500MB -3.4%) vs baseline: +3.8% ✅ import_many_stdlib_cachedTime: ✅ 0.974ms (SLO: <1.100ms 📉 -11.5%) vs baseline: -0.2% Memory: ✅ 37.203MB (SLO: <38.500MB -3.4%) vs baseline: +3.6% ✅ import_many_unknownTime: ✅ 829.099µs (SLO: <890.000µs -6.8%) vs baseline: ~same Memory: ✅ 37.224MB (SLO: <38.500MB -3.3%) vs baseline: +4.1% ✅ import_many_unknown_cachedTime: ✅ 790.644µs (SLO: <870.000µs -9.1%) vs baseline: -0.5% Memory: ✅ 38.070MB (SLO: <38.500MB 🟡 -1.1%) vs baseline: +6.2% ✅ import_oneTime: ✅ 19.908µs (SLO: <30.000µs 📉 -33.6%) vs baseline: ~same Memory: ✅ 37.436MB (SLO: <39.000MB -4.0%) vs baseline: +5.3% ✅ import_one_cacheTime: ✅ 6.283µs (SLO: <10.000µs 📉 -37.2%) vs baseline: -0.6% Memory: ✅ 36.989MB (SLO: <38.500MB -3.9%) vs baseline: +4.4% ✅ import_one_stdlibTime: ✅ 18.789µs (SLO: <20.000µs -6.1%) vs baseline: +0.5% Memory: ✅ 37.038MB (SLO: <38.500MB -3.8%) vs baseline: +4.6% ✅ import_one_stdlib_cacheTime: ✅ 6.279µs (SLO: <10.000µs 📉 -37.2%) vs baseline: ~same Memory: ✅ 37.042MB (SLO: <38.500MB -3.8%) vs baseline: +3.2% ✅ import_one_unknownTime: ✅ 45.811µs (SLO: <50.000µs -8.4%) vs baseline: +0.9% Memory: ✅ 37.039MB (SLO: <38.500MB -3.8%) vs baseline: +4.2% ✅ import_one_unknown_cacheTime: ✅ 6.317µs (SLO: <10.000µs 📉 -36.8%) vs baseline: +0.6% Memory: ✅ 37.086MB (SLO: <38.500MB -3.7%) vs baseline: +3.6%
|
Description
dd-test-py PR: DataDog/dd-test-py#57
PR DataDog/dd-test-py#57 introduces a tracer interface that ddtrace can implement to provide tracing and code coverage functionality to ddtestpy, such that ddtestpy does not have to know anything about ddtrace internals.
This is an alternative to the approach used in #14889 and DataDog/dd-test-py#55, where ddtestpy would explicitly import modules from ddtrace to have access to those functions.
Testing
Risks
Additional Notes