Skip to content

Conversation

@christophe-papazian
Copy link
Contributor

@christophe-papazian christophe-papazian commented Aug 12, 2025

  • ensure no endpoint (route, method) is send twice in the same payload
  • add threat test suite support for endpoint discovery and check for resource compatibility between telemetry payload and span attributes
  • minor test improvements

APPSEC-58374

Checklist

  • PR author has checked that all the criteria below are met
  • The PR description includes an overview of the change
  • The PR description articulates the motivation for the change
  • The change includes tests OR the PR description describes a testing strategy
  • The PR description notes risks associated with the change, if any
  • Newly-added code is easy to change
  • The change follows the library release note guidelines
  • The change includes or references documentation updates if necessary
  • Backport labels are set (if applicable)

Reviewer Checklist

  • Reviewer has checked that all the criteria below are met
  • Title is accurate
  • All changes are related to the pull request's stated goal
  • Avoids breaking API changes
  • Testing strategy adequately addresses listed risks
  • Newly-added code is easy to change
  • Release note makes sense to a user of the library
  • If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment
  • Backport labels are set in a manner that is consistent with the release branch maintenance policy

@christophe-papazian christophe-papazian added changelog/no-changelog A changelog entry is not required for this PR. ASM Application Security Monitoring labels Aug 12, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Aug 12, 2025

CODEOWNERS have been resolved as:

ddtrace/contrib/internal/django/patch.py                                @DataDog/apm-core-python @DataDog/apm-idm-python
ddtrace/internal/endpoints.py                                           @DataDog/python-guild @DataDog/asm-python
tests/appsec/contrib_appsec/conftest.py                                 @DataDog/asm-python
tests/appsec/contrib_appsec/django_app/urls.py                          @DataDog/asm-python
tests/appsec/contrib_appsec/utils.py                                    @DataDog/asm-python

@github-actions
Copy link
Contributor

github-actions bot commented Aug 12, 2025

Bootstrap import analysis

Comparison of import times between this PR and base.

Summary

The average import time from this PR is: 263 ± 1 ms.

The average import time from base is: 265 ± 1 ms.

The import time difference between this PR and base is: -1.83 ± 0.06 ms.

Import time breakdown

The following import paths have shrunk:

ddtrace.auto 2.020 ms (0.77%)
ddtrace.bootstrap.sitecustomize 1.324 ms (0.50%)
ddtrace.bootstrap.preload 1.324 ms (0.50%)
ddtrace.internal.remoteconfig.client 0.642 ms (0.24%)
ddtrace 0.696 ms (0.26%)
ddtrace.internal._unpatched 0.051 ms (0.02%)
json 0.029 ms (0.01%)
json.decoder 0.029 ms (0.01%)
re 0.029 ms (0.01%)
enum 0.029 ms (0.01%)
types 0.029 ms (0.01%)
subprocess 0.023 ms (0.01%)
contextlib 0.023 ms (0.01%)

@pr-commenter
Copy link

pr-commenter bot commented Aug 12, 2025

Performance SLOs

Candidate: christophe-papazian/django_endpoint_discovery_improvements (fee9cd7)

🔵 No Baseline Data (24 suites)
🔵 coreapiscenario - 12/12 (2 unstable)

🔵 No baseline data available for this suite

⚠️ context_with_data_listeners

Time: ⚠️ 13.898µs (SLO: <20.000µs 📉 -30.5%)

Memory: ✅ 31.280MB (SLO: <33.500MB -6.6%)


✅ context_with_data_no_listeners

Time: ✅ 3.844µs (SLO: <10.000µs 📉 -61.6%)

Memory: ✅ 31.339MB (SLO: <33.500MB -6.4%)


⚠️ context_with_data_only_all_listeners

Time: ⚠️ 13.882µs (SLO: <20.000µs 📉 -30.6%)

Memory: ✅ 31.320MB (SLO: <33.500MB -6.5%)


✅ get_item_exists

Time: ✅ 0.642µs (SLO: <10.000µs 📉 -93.6%)

Memory: ✅ 31.221MB (SLO: <33.500MB -6.8%)


✅ get_item_missing

Time: ✅ 0.695µs (SLO: <10.000µs 📉 -93.0%)

Memory: ✅ 31.202MB (SLO: <33.500MB -6.9%)


✅ set_item

Time: ✅ 24.721µs (SLO: <30.000µs 📉 -17.6%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


🔵 djangosimple - 22/22

🔵 No baseline data available for this suite

✅ appsec

Time: ✅ 21.236ms (SLO: <22.300ms -4.8%)

Memory: ✅ 63.928MB (SLO: <66.000MB -3.1%)


✅ exception-replay-enabled

Time: ✅ 1.371ms (SLO: <1.450ms -5.4%)

Memory: ✅ 63.288MB (SLO: <66.000MB -4.1%)


✅ iast

Time: ✅ 21.279ms (SLO: <22.250ms -4.4%)

Memory: ✅ 63.854MB (SLO: <66.000MB -3.3%)


✅ profiler

Time: ✅ 15.216ms (SLO: <16.550ms -8.1%)

Memory: ✅ 51.642MB (SLO: <53.500MB -3.5%)


✅ span-code-origin

Time: ✅ 26.938ms (SLO: <28.200ms -4.5%)

Memory: ✅ 65.956MB (SLO: <68.500MB -3.7%)


✅ tracer

Time: ✅ 21.262ms (SLO: <22.700ms -6.3%)

Memory: ✅ 63.890MB (SLO: <66.000MB -3.2%)


✅ tracer-and-profiler

Time: ✅ 22.883ms (SLO: <24.900ms -8.1%)

Memory: ✅ 65.258MB (SLO: <67.000MB -2.6%)


✅ tracer-no-caches

Time: ✅ 18.858ms (SLO: <19.650ms -4.0%)

Memory: ✅ 63.870MB (SLO: <66.000MB -3.2%)


✅ tracer-no-databases

Time: ✅ 19.193ms (SLO: <20.100ms -4.5%)

Memory: ✅ 63.908MB (SLO: <66.000MB -3.2%)


✅ tracer-no-middleware

Time: ✅ 21.086ms (SLO: <22.500ms -6.3%)

Memory: ✅ 63.852MB (SLO: <66.000MB -3.3%)


✅ tracer-no-templates

Time: ✅ 21.030ms (SLO: <22.250ms -5.5%)

Memory: ✅ 63.968MB (SLO: <66.000MB -3.1%)


🔵 errortrackingdjangosimple - 6/6

🔵 No baseline data available for this suite

✅ errortracking-enabled-all

Time: ✅ 18.533ms (SLO: <19.850ms -6.6%)

Memory: ✅ 63.852MB (SLO: <65.500MB -2.5%)


✅ errortracking-enabled-user

Time: ✅ 18.594ms (SLO: <19.400ms -4.2%)

Memory: ✅ 63.849MB (SLO: <65.500MB -2.5%)


✅ tracer-enabled

Time: ✅ 18.864ms (SLO: <19.450ms -3.0%)

Memory: ✅ 63.950MB (SLO: <65.500MB -2.4%)


🔵 errortrackingflasksqli - 6/6

🔵 No baseline data available for this suite

✅ errortracking-enabled-all

Time: ✅ 2.120ms (SLO: <2.300ms -7.8%)

Memory: ✅ 50.943MB (SLO: <53.500MB -4.8%)


✅ errortracking-enabled-user

Time: ✅ 2.148ms (SLO: <2.250ms -4.5%)

Memory: ✅ 51.022MB (SLO: <53.500MB -4.6%)


✅ tracer-enabled

Time: ✅ 2.124ms (SLO: <2.300ms -7.7%)

Memory: ✅ 50.940MB (SLO: <53.500MB -4.8%)


🔵 flasksimple - 15/15

🔵 No baseline data available for this suite

✅ appsec-get

Time: ✅ 4.614ms (SLO: <4.750ms -2.9%)

Memory: ✅ 61.735MB (SLO: <64.500MB -4.3%)


✅ appsec-post

Time: ✅ 6.660ms (SLO: <6.750ms 🟡 -1.3%)

Memory: ✅ 62.089MB (SLO: <64.500MB -3.7%)


✅ appsec-telemetry

Time: ✅ 4.618ms (SLO: <4.750ms -2.8%)

Memory: ✅ 61.715MB (SLO: <64.500MB -4.3%)


✅ debugger

Time: ✅ 1.859ms (SLO: <2.000ms -7.1%)

Memory: ✅ 44.350MB (SLO: <45.000MB 🟡 -1.4%)


✅ iast-get

Time: ✅ 1.859ms (SLO: <2.000ms -7.1%)

Memory: ✅ 47.028MB (SLO: <49.000MB -4.0%)


✅ profiler

Time: ✅ 1.913ms (SLO: <2.100ms -8.9%)

Memory: ✅ 44.134MB (SLO: <46.500MB -5.1%)


✅ tracer

Time: ✅ 3.396ms (SLO: <3.650ms -7.0%)

Memory: ✅ 51.016MB (SLO: <53.500MB -4.6%)


🔵 flasksqli - 6/6

🔵 No baseline data available for this suite

✅ appsec-enabled

Time: ✅ 3.991ms (SLO: <4.200ms -5.0%)

Memory: ✅ 61.990MB (SLO: <66.000MB -6.1%)


✅ iast-enabled

Time: ✅ 2.581ms (SLO: <2.800ms -7.8%)

Memory: ✅ 57.548MB (SLO: <59.000MB -2.5%)


✅ tracer-enabled

Time: ✅ 2.107ms (SLO: <2.250ms -6.4%)

Memory: ✅ 51.079MB (SLO: <53.500MB -4.5%)


🔵 httppropagationextract - 60/60

🔵 No baseline data available for this suite

✅ all_styles_all_headers

Time: ✅ 83.934µs (SLO: <100.000µs 📉 -16.1%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ b3_headers

Time: ✅ 14.473µs (SLO: <20.000µs 📉 -27.6%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ b3_single_headers

Time: ✅ 13.442µs (SLO: <20.000µs 📉 -32.8%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ datadog_tracecontext_tracestate_not_propagated_on_trace_id_no_match

Time: ✅ 67.136µs (SLO: <80.000µs 📉 -16.1%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ datadog_tracecontext_tracestate_propagated_on_trace_id_match

Time: ✅ 67.979µs (SLO: <80.000µs 📉 -15.0%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ empty_headers

Time: ✅ 1.597µs (SLO: <10.000µs 📉 -84.0%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ full_t_id_datadog_headers

Time: ✅ 23.956µs (SLO: <30.000µs 📉 -20.1%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ invalid_priority_header

Time: ✅ 6.616µs (SLO: <10.000µs 📉 -33.8%)

Memory: ✅ 31.457MB (SLO: <33.500MB -6.1%)


✅ invalid_span_id_header

Time: ✅ 6.552µs (SLO: <10.000µs 📉 -34.5%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ invalid_tags_header

Time: ✅ 6.539µs (SLO: <10.000µs 📉 -34.6%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ invalid_trace_id_header

Time: ✅ 6.566µs (SLO: <10.000µs 📉 -34.3%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ large_header_no_matches

Time: ✅ 27.784µs (SLO: <30.000µs -7.4%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ large_valid_headers_all

Time: ✅ 28.842µs (SLO: <40.000µs 📉 -27.9%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ medium_header_no_matches

Time: ✅ 9.860µs (SLO: <20.000µs 📉 -50.7%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ medium_valid_headers_all

Time: ✅ 11.263µs (SLO: <20.000µs 📉 -43.7%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ none_propagation_style

Time: ✅ 1.699µs (SLO: <10.000µs 📉 -83.0%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ tracecontext_headers

Time: ✅ 34.549µs (SLO: <40.000µs 📉 -13.6%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ valid_headers_all

Time: ✅ 6.644µs (SLO: <10.000µs 📉 -33.6%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ valid_headers_basic

Time: ✅ 6.110µs (SLO: <10.000µs 📉 -38.9%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ wsgi_empty_headers

Time: ✅ 1.607µs (SLO: <10.000µs 📉 -83.9%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ wsgi_invalid_priority_header

Time: ✅ 6.630µs (SLO: <10.000µs 📉 -33.7%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ wsgi_invalid_span_id_header

Time: ✅ 1.600µs (SLO: <10.000µs 📉 -84.0%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ wsgi_invalid_tags_header

Time: ✅ 6.606µs (SLO: <10.000µs 📉 -33.9%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ wsgi_invalid_trace_id_header

Time: ✅ 6.614µs (SLO: <10.000µs 📉 -33.9%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ wsgi_large_header_no_matches

Time: ✅ 28.833µs (SLO: <40.000µs 📉 -27.9%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ wsgi_large_valid_headers_all

Time: ✅ 29.967µs (SLO: <40.000µs 📉 -25.1%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ wsgi_medium_header_no_matches

Time: ✅ 10.266µs (SLO: <20.000µs 📉 -48.7%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ wsgi_medium_valid_headers_all

Time: ✅ 11.637µs (SLO: <20.000µs 📉 -41.8%)

Memory: ✅ 31.320MB (SLO: <33.500MB -6.5%)


✅ wsgi_valid_headers_all

Time: ✅ 6.624µs (SLO: <10.000µs 📉 -33.8%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ wsgi_valid_headers_basic

Time: ✅ 6.151µs (SLO: <10.000µs 📉 -38.5%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


🔵 httppropagationinject - 16/16

🔵 No baseline data available for this suite

✅ ids_only

Time: ✅ 22.045µs (SLO: <30.000µs 📉 -26.5%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ with_all

Time: ✅ 34.257µs (SLO: <40.000µs 📉 -14.4%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ with_dd_origin

Time: ✅ 28.716µs (SLO: <30.000µs -4.3%)

Memory: ✅ 31.320MB (SLO: <33.500MB -6.5%)


✅ with_priority_and_origin

Time: ✅ 28.010µs (SLO: <40.000µs 📉 -30.0%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ with_sampling_priority

Time: ✅ 22.744µs (SLO: <30.000µs 📉 -24.2%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ with_tags

Time: ✅ 30.468µs (SLO: <40.000µs 📉 -23.8%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ with_tags_invalid

Time: ✅ 33.898µs (SLO: <40.000µs 📉 -15.3%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ with_tags_max_size

Time: ✅ 31.221µs (SLO: <40.000µs 📉 -21.9%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


🔵 iast_aspects - 40/40

🔵 No baseline data available for this suite

✅ re_expand_aspect

Time: ✅ 32.889µs (SLO: <40.000µs 📉 -17.8%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ re_expand_noaspect

Time: ✅ 28.507µs (SLO: <40.000µs 📉 -28.7%)

Memory: ✅ 36.726MB (SLO: <39.000MB -5.8%)


✅ re_findall_aspect

Time: ✅ 3.703µs (SLO: <10.000µs 📉 -63.0%)

Memory: ✅ 36.746MB (SLO: <39.000MB -5.8%)


✅ re_findall_noaspect

Time: ✅ 1.417µs (SLO: <10.000µs 📉 -85.8%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ re_finditer_aspect

Time: ✅ 5.141µs (SLO: <10.000µs 📉 -48.6%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ re_finditer_noaspect

Time: ✅ 1.421µs (SLO: <10.000µs 📉 -85.8%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ re_fullmatch_aspect

Time: ✅ 3.389µs (SLO: <10.000µs 📉 -66.1%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ re_fullmatch_noaspect

Time: ✅ 1.278µs (SLO: <10.000µs 📉 -87.2%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ re_group_aspect

Time: ✅ 3.432µs (SLO: <10.000µs 📉 -65.7%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ re_group_noaspect

Time: ✅ 1.593µs (SLO: <10.000µs 📉 -84.1%)

Memory: ✅ 36.726MB (SLO: <39.000MB -5.8%)


✅ re_groups_aspect

Time: ✅ 3.583µs (SLO: <10.000µs 📉 -64.2%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ re_groups_noaspect

Time: ✅ 1.695µs (SLO: <10.000µs 📉 -83.0%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ re_match_aspect

Time: ✅ 3.399µs (SLO: <10.000µs 📉 -66.0%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ re_match_noaspect

Time: ✅ 1.311µs (SLO: <10.000µs 📉 -86.9%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ re_search_aspect

Time: ✅ 3.307µs (SLO: <10.000µs 📉 -66.9%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ re_search_noaspect

Time: ✅ 1.201µs (SLO: <10.000µs 📉 -88.0%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ re_sub_aspect

Time: ✅ 4.700µs (SLO: <10.000µs 📉 -53.0%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ re_sub_noaspect

Time: ✅ 1.529µs (SLO: <10.000µs 📉 -84.7%)

Memory: ✅ 36.746MB (SLO: <39.000MB -5.8%)


✅ re_subn_aspect

Time: ✅ 4.911µs (SLO: <10.000µs 📉 -50.9%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ re_subn_noaspect

Time: ✅ 1.632µs (SLO: <10.000µs 📉 -83.7%)

Memory: ✅ 36.726MB (SLO: <39.000MB -5.8%)


🔵 iastaspects - 118/118

🔵 No baseline data available for this suite

✅ add_aspect

Time: ✅ 0.327µs (SLO: <10.000µs 📉 -96.7%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ add_inplace_aspect

Time: ✅ 0.332µs (SLO: <10.000µs 📉 -96.7%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ add_inplace_noaspect

Time: ✅ 0.320µs (SLO: <10.000µs 📉 -96.8%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ add_noaspect

Time: ✅ 0.283µs (SLO: <10.000µs 📉 -97.2%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ bytearray_aspect

Time: ✅ 1.864µs (SLO: <10.000µs 📉 -81.4%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ bytearray_extend_aspect

Time: ✅ 1.371µs (SLO: <10.000µs 📉 -86.3%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ bytearray_extend_noaspect

Time: ✅ 0.619µs (SLO: <10.000µs 📉 -93.8%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ bytearray_noaspect

Time: ✅ 0.482µs (SLO: <10.000µs 📉 -95.2%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ bytes_aspect

Time: ✅ 1.879µs (SLO: <10.000µs 📉 -81.2%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ bytes_noaspect

Time: ✅ 0.496µs (SLO: <10.000µs 📉 -95.0%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ bytesio_aspect

Time: ✅ 1.893µs (SLO: <10.000µs 📉 -81.1%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ bytesio_noaspect

Time: ✅ 0.497µs (SLO: <10.000µs 📉 -95.0%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ capitalize_aspect

Time: ✅ 0.743µs (SLO: <10.000µs 📉 -92.6%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ capitalize_noaspect

Time: ✅ 0.442µs (SLO: <10.000µs 📉 -95.6%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ casefold_aspect

Time: ✅ 0.739µs (SLO: <10.000µs 📉 -92.6%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ casefold_noaspect

Time: ✅ 0.377µs (SLO: <10.000µs 📉 -96.2%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ decode_aspect

Time: ✅ 0.733µs (SLO: <10.000µs 📉 -92.7%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ decode_noaspect

Time: ✅ 0.426µs (SLO: <10.000µs 📉 -95.7%)

Memory: ✅ 36.746MB (SLO: <39.000MB -5.8%)


✅ encode_aspect

Time: ✅ 0.718µs (SLO: <10.000µs 📉 -92.8%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ encode_noaspect

Time: ✅ 0.412µs (SLO: <10.000µs 📉 -95.9%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ format_aspect

Time: ✅ 3.516µs (SLO: <10.000µs 📉 -64.8%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ format_map_aspect

Time: ✅ 3.300µs (SLO: <10.000µs 📉 -67.0%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ format_map_noaspect

Time: ✅ 0.787µs (SLO: <10.000µs 📉 -92.1%)

Memory: ✅ 36.746MB (SLO: <39.000MB -5.8%)


✅ format_noaspect

Time: ✅ 0.600µs (SLO: <10.000µs 📉 -94.0%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ index_aspect

Time: ✅ 0.342µs (SLO: <10.000µs 📉 -96.6%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ index_noaspect

Time: ✅ 0.282µs (SLO: <10.000µs 📉 -97.2%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ join_aspect

Time: ✅ 1.236µs (SLO: <10.000µs 📉 -87.6%)

Memory: ✅ 36.746MB (SLO: <39.000MB -5.8%)


✅ join_noaspect

Time: ✅ 0.496µs (SLO: <10.000µs 📉 -95.0%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ ljust_aspect

Time: ✅ 10.623µs (SLO: <20.000µs 📉 -46.9%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ ljust_noaspect

Time: ✅ 0.410µs (SLO: <10.000µs 📉 -95.9%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ lower_aspect

Time: ✅ 2.227µs (SLO: <10.000µs 📉 -77.7%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ lower_noaspect

Time: ✅ 0.373µs (SLO: <10.000µs 📉 -96.3%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ lstrip_aspect

Time: ✅ 11.024µs (SLO: <20.000µs 📉 -44.9%)

Memory: ✅ 36.962MB (SLO: <39.000MB -5.2%)


✅ lstrip_noaspect

Time: ✅ 0.385µs (SLO: <10.000µs 📉 -96.1%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ modulo_aspect

Time: ✅ 0.583µs (SLO: <10.000µs 📉 -94.2%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ modulo_aspect_for_bytearray_bytearray

Time: ✅ 1.264µs (SLO: <10.000µs 📉 -87.4%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ modulo_aspect_for_bytes

Time: ✅ 0.757µs (SLO: <10.000µs 📉 -92.4%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ modulo_aspect_for_bytes_bytearray

Time: ✅ 0.977µs (SLO: <10.000µs 📉 -90.2%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ modulo_noaspect

Time: ✅ 0.633µs (SLO: <10.000µs 📉 -93.7%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ replace_aspect

Time: ✅ 5.328µs (SLO: <10.000µs 📉 -46.7%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ replace_noaspect

Time: ✅ 0.468µs (SLO: <10.000µs 📉 -95.3%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ repr_aspect

Time: ✅ 0.906µs (SLO: <10.000µs 📉 -90.9%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ repr_noaspect

Time: ✅ 0.422µs (SLO: <10.000µs 📉 -95.8%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ rstrip_aspect

Time: ✅ 10.889µs (SLO: <20.000µs 📉 -45.6%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ rstrip_noaspect

Time: ✅ 0.388µs (SLO: <10.000µs 📉 -96.1%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ slice_aspect

Time: ✅ 0.484µs (SLO: <10.000µs 📉 -95.2%)

Memory: ✅ 36.707MB (SLO: <39.000MB -5.9%)


✅ slice_noaspect

Time: ✅ 0.453µs (SLO: <10.000µs 📉 -95.5%)

Memory: ✅ 36.746MB (SLO: <39.000MB -5.8%)


✅ stringio_aspect

Time: ✅ 2.242µs (SLO: <10.000µs 📉 -77.6%)

Memory: ✅ 36.746MB (SLO: <39.000MB -5.8%)


✅ stringio_noaspect

Time: ✅ 0.713µs (SLO: <10.000µs 📉 -92.9%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ strip_aspect

Time: ✅ 10.327µs (SLO: <20.000µs 📉 -48.4%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ strip_noaspect

Time: ✅ 0.387µs (SLO: <10.000µs 📉 -96.1%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ swapcase_aspect

Time: ✅ 2.426µs (SLO: <10.000µs 📉 -75.7%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ swapcase_noaspect

Time: ✅ 0.539µs (SLO: <10.000µs 📉 -94.6%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ title_aspect

Time: ✅ 2.383µs (SLO: <10.000µs 📉 -76.2%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ title_noaspect

Time: ✅ 0.507µs (SLO: <10.000µs 📉 -94.9%)

Memory: ✅ 36.726MB (SLO: <39.000MB -5.8%)


✅ translate_aspect

Time: ✅ 3.359µs (SLO: <10.000µs 📉 -66.4%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ translate_noaspect

Time: ✅ 1.046µs (SLO: <10.000µs 📉 -89.5%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ upper_aspect

Time: ✅ 2.233µs (SLO: <10.000µs 📉 -77.7%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ upper_noaspect

Time: ✅ 0.374µs (SLO: <10.000µs 📉 -96.3%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


🔵 iastaspectsospath - 24/24

🔵 No baseline data available for this suite

✅ ospathbasename_aspect

Time: ✅ 4.212µs (SLO: <10.000µs 📉 -57.9%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ ospathbasename_noaspect

Time: ✅ 1.077µs (SLO: <10.000µs 📉 -89.2%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ ospathjoin_aspect

Time: ✅ 6.056µs (SLO: <10.000µs 📉 -39.4%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ ospathjoin_noaspect

Time: ✅ 2.302µs (SLO: <10.000µs 📉 -77.0%)

Memory: ✅ 36.746MB (SLO: <39.000MB -5.8%)


✅ ospathnormcase_aspect

Time: ✅ 3.888µs (SLO: <10.000µs 📉 -61.1%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ ospathnormcase_noaspect

Time: ✅ 0.569µs (SLO: <10.000µs 📉 -94.3%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ ospathsplit_aspect

Time: ✅ 4.788µs (SLO: <10.000µs 📉 -52.1%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ ospathsplit_noaspect

Time: ✅ 1.607µs (SLO: <10.000µs 📉 -83.9%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ ospathsplitdrive_aspect

Time: ✅ 3.640µs (SLO: <10.000µs 📉 -63.6%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ ospathsplitdrive_noaspect

Time: ✅ 0.701µs (SLO: <10.000µs 📉 -93.0%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ ospathsplitext_aspect

Time: ✅ 4.604µs (SLO: <10.000µs 📉 -54.0%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ ospathsplitext_noaspect

Time: ✅ 1.388µs (SLO: <10.000µs 📉 -86.1%)

Memory: ✅ 36.726MB (SLO: <39.000MB -5.8%)


🔵 iastaspectssplit - 12/12

🔵 No baseline data available for this suite

✅ rsplit_aspect

Time: ✅ 1.480µs (SLO: <10.000µs 📉 -85.2%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ rsplit_noaspect

Time: ✅ 0.584µs (SLO: <10.000µs 📉 -94.2%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ split_aspect

Time: ✅ 1.425µs (SLO: <10.000µs 📉 -85.8%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ split_noaspect

Time: ✅ 0.582µs (SLO: <10.000µs 📉 -94.2%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ splitlines_aspect

Time: ✅ 1.428µs (SLO: <10.000µs 📉 -85.7%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ splitlines_noaspect

Time: ✅ 0.596µs (SLO: <10.000µs 📉 -94.0%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


🔵 iastpropagation - 8/8

🔵 No baseline data available for this suite

✅ no-propagation

Time: ✅ 49.263µs (SLO: <60.000µs 📉 -17.9%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ propagation_enabled

Time: ✅ 145.745µs (SLO: <160.000µs -8.9%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ propagation_enabled_100

Time: ✅ 1.588ms (SLO: <1.800ms 📉 -11.8%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ propagation_enabled_1000

Time: ✅ 29.127ms (SLO: <30.550ms -4.7%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


🔵 otelsdkspan - 24/24

🔵 No baseline data available for this suite

✅ add-event

Time: ✅ 40.239ms (SLO: <42.000ms -4.2%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


✅ add-link

Time: ✅ 36.331ms (SLO: <38.550ms -5.8%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


✅ add-metrics

Time: ✅ 219.613ms (SLO: <232.000ms -5.3%)

Memory: ✅ 34.151MB (SLO: <39.000MB 📉 -12.4%)


✅ add-tags

Time: ✅ 211.922ms (SLO: <221.600ms -4.4%)

Memory: ✅ 34.151MB (SLO: <39.000MB 📉 -12.4%)


✅ get-context

Time: ✅ 29.191ms (SLO: <31.300ms -6.7%)

Memory: ✅ 34.131MB (SLO: <39.000MB 📉 -12.5%)


✅ is-recording

Time: ✅ 29.029ms (SLO: <31.000ms -6.4%)

Memory: ✅ 34.151MB (SLO: <39.000MB 📉 -12.4%)


✅ record-exception

Time: ✅ 63.385ms (SLO: <65.850ms -3.7%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


✅ set-status

Time: ✅ 31.952ms (SLO: <34.150ms -6.4%)

Memory: ✅ 34.111MB (SLO: <39.000MB 📉 -12.5%)


✅ start

Time: ✅ 28.936ms (SLO: <30.150ms -4.0%)

Memory: ✅ 34.151MB (SLO: <39.000MB 📉 -12.4%)


✅ start-finish

Time: ✅ 34.272ms (SLO: <35.350ms -3.1%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


✅ start-finish-telemetry

Time: ✅ 34.061ms (SLO: <35.450ms -3.9%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


✅ update-name

Time: ✅ 31.177ms (SLO: <33.400ms -6.7%)

Memory: ✅ 34.131MB (SLO: <39.000MB 📉 -12.5%)


🔵 otelspan - 22/22

🔵 No baseline data available for this suite

✅ add-event

Time: ✅ 45.026ms (SLO: <47.150ms -4.5%)

Memory: ✅ 44.393MB (SLO: <46.500MB -4.5%)


✅ add-metrics

Time: ✅ 321.234ms (SLO: <344.800ms -6.8%)

Memory: ✅ 558.469MB (SLO: <562.000MB 🟡 -0.6%)


✅ add-tags

Time: ✅ 292.483ms (SLO: <314.000ms -6.9%)

Memory: ✅ 560.681MB (SLO: <563.500MB 🟡 -0.5%)


✅ get-context

Time: ✅ 87.013ms (SLO: <92.350ms -5.8%)

Memory: ✅ 39.423MB (SLO: <46.500MB 📉 -15.2%)


✅ is-recording

Time: ✅ 42.574ms (SLO: <44.500ms -4.3%)

Memory: ✅ 43.719MB (SLO: <46.500MB -6.0%)


✅ record-exception

Time: ✅ 61.656ms (SLO: <67.650ms -8.9%)

Memory: ✅ 39.768MB (SLO: <46.500MB 📉 -14.5%)


✅ set-status

Time: ✅ 48.463ms (SLO: <50.400ms -3.8%)

Memory: ✅ 43.729MB (SLO: <46.500MB -6.0%)


✅ start

Time: ✅ 42.004ms (SLO: <43.450ms -3.3%)

Memory: ✅ 43.749MB (SLO: <46.500MB -5.9%)


✅ start-finish

Time: ✅ 85.155ms (SLO: <88.000ms -3.2%)

Memory: ✅ 33.817MB (SLO: <46.500MB 📉 -27.3%)


✅ start-finish-telemetry

Time: ✅ 87.145ms (SLO: <89.000ms -2.1%)

Memory: ✅ 33.777MB (SLO: <46.500MB 📉 -27.4%)


✅ update-name

Time: ✅ 44.622ms (SLO: <45.150ms 🟡 -1.2%)

Memory: ✅ 43.980MB (SLO: <46.500MB -5.4%)


🔵 packagespackageforrootmodulemapping - 4/4

🔵 No baseline data available for this suite

✅ cache_off

Time: ✅ 340.460ms (SLO: <354.300ms -3.9%)

Memory: ✅ 37.382MB (SLO: <40.000MB -6.5%)


✅ cache_on

Time: ✅ 0.385µs (SLO: <10.000µs 📉 -96.2%)

Memory: ✅ 36.867MB (SLO: <39.000MB -5.5%)


🔵 packagesupdateimporteddependencies - 24/24

🔵 No baseline data available for this suite

✅ import_many

Time: ✅ 154.886µs (SLO: <170.000µs -8.9%)

Memory: ✅ 36.276MB (SLO: <38.500MB -5.8%)


✅ import_many_cached

Time: ✅ 121.088µs (SLO: <130.000µs -6.9%)

Memory: ✅ 36.307MB (SLO: <38.500MB -5.7%)


✅ import_many_stdlib

Time: ✅ 1.608ms (SLO: <1.750ms -8.1%)

Memory: ✅ 35.979MB (SLO: <38.500MB -6.5%)


✅ import_many_stdlib_cached

Time: ✅ 0.965ms (SLO: <1.100ms 📉 -12.2%)

Memory: ✅ 35.995MB (SLO: <38.500MB -6.5%)


✅ import_many_unknown

Time: ✅ 830.354µs (SLO: <890.000µs -6.7%)

Memory: ✅ 36.336MB (SLO: <38.500MB -5.6%)


✅ import_many_unknown_cached

Time: ✅ 791.157µs (SLO: <870.000µs -9.1%)

Memory: ✅ 36.416MB (SLO: <38.500MB -5.4%)


✅ import_one

Time: ✅ 19.929µs (SLO: <30.000µs 📉 -33.6%)

Memory: ✅ 35.814MB (SLO: <39.000MB -8.2%)


✅ import_one_cache

Time: ✅ 6.306µs (SLO: <10.000µs 📉 -36.9%)

Memory: ✅ 36.075MB (SLO: <38.500MB -6.3%)


✅ import_one_stdlib

Time: ✅ 18.595µs (SLO: <20.000µs -7.0%)

Memory: ✅ 36.078MB (SLO: <38.500MB -6.3%)


✅ import_one_stdlib_cache

Time: ✅ 6.277µs (SLO: <10.000µs 📉 -37.2%)

Memory: ✅ 35.915MB (SLO: <38.500MB -6.7%)


✅ import_one_unknown

Time: ✅ 45.282µs (SLO: <50.000µs -9.4%)

Memory: ✅ 36.041MB (SLO: <38.500MB -6.4%)


✅ import_one_unknown_cache

Time: ✅ 6.261µs (SLO: <10.000µs 📉 -37.4%)

Memory: ✅ 35.921MB (SLO: <38.500MB -6.7%)


🔵 ratelimiter - 12/12

🔵 No baseline data available for this suite

✅ defaults

Time: ✅ 2.353µs (SLO: <10.000µs 📉 -76.5%)

Memory: ✅ 30.946MB (SLO: <34.000MB -9.0%)


✅ high_rate_limit

Time: ✅ 2.403µs (SLO: <10.000µs 📉 -76.0%)

Memory: ✅ 30.946MB (SLO: <34.000MB -9.0%)


✅ long_window

Time: ✅ 2.364µs (SLO: <10.000µs 📉 -76.4%)

Memory: ✅ 30.926MB (SLO: <34.000MB -9.0%)


✅ low_rate_limit

Time: ✅ 2.354µs (SLO: <10.000µs 📉 -76.5%)

Memory: ✅ 30.985MB (SLO: <34.000MB -8.9%)


✅ no_rate_limit

Time: ✅ 0.829µs (SLO: <10.000µs 📉 -91.7%)

Memory: ✅ 30.887MB (SLO: <34.000MB -9.2%)


✅ short_window

Time: ✅ 2.499µs (SLO: <10.000µs 📉 -75.0%)

Memory: ✅ 30.966MB (SLO: <34.000MB -8.9%)


🔵 recursivecomputation - 8/8

🔵 No baseline data available for this suite

✅ deep

Time: ✅ 308.831ms (SLO: <320.950ms -3.8%)

Memory: ✅ 32.381MB (SLO: <34.500MB -6.1%)


✅ deep-profiled

Time: ✅ 327.319ms (SLO: <359.150ms -8.9%)

Memory: ✅ 35.055MB (SLO: <39.000MB 📉 -10.1%)


✅ medium

Time: ✅ 7.049ms (SLO: <7.400ms -4.7%)

Memory: ✅ 31.261MB (SLO: <34.000MB -8.1%)


✅ shallow

Time: ✅ 0.956ms (SLO: <1.050ms -9.0%)

Memory: ✅ 31.280MB (SLO: <34.000MB -8.0%)


🔵 samplingrules - 8/8

🔵 No baseline data available for this suite

✅ average_match

Time: ✅ 276.196µs (SLO: <290.000µs -4.8%)

Memory: ✅ 31.241MB (SLO: <34.000MB -8.1%)


✅ high_match

Time: ✅ 446.911µs (SLO: <480.000µs -6.9%)

Memory: ✅ 31.202MB (SLO: <34.000MB -8.2%)


✅ low_match

Time: ✅ 112.139µs (SLO: <120.000µs -6.6%)

Memory: ✅ 433.914MB (SLO: <450.000MB -3.6%)


✅ very_low_match

Time: ✅ 7.703ms (SLO: <8.500ms -9.4%)

Memory: ✅ 57.129MB (SLO: <60.000MB -4.8%)


🔵 sethttpmeta - 32/32

🔵 No baseline data available for this suite

✅ all-disabled

Time: ✅ 12.261µs (SLO: <20.000µs 📉 -38.7%)

Memory: ✅ 31.792MB (SLO: <34.000MB -6.5%)


✅ all-enabled

Time: ✅ 41.930µs (SLO: <50.000µs 📉 -16.1%)

Memory: ✅ 31.792MB (SLO: <34.000MB -6.5%)


✅ collectipvariant_exists

Time: ✅ 42.719µs (SLO: <50.000µs 📉 -14.6%)

Memory: ✅ 31.772MB (SLO: <34.000MB -6.6%)


✅ no-collectipvariant

Time: ✅ 42.413µs (SLO: <50.000µs 📉 -15.2%)

Memory: ✅ 31.811MB (SLO: <34.000MB -6.4%)


✅ no-useragentvariant

Time: ✅ 40.759µs (SLO: <50.000µs 📉 -18.5%)

Memory: ✅ 31.792MB (SLO: <34.000MB -6.5%)


✅ obfuscation-no-query

Time: ✅ 42.329µs (SLO: <50.000µs 📉 -15.3%)

Memory: ✅ 31.811MB (SLO: <34.000MB -6.4%)


✅ obfuscation-regular-case-explicit-query

Time: ✅ 79.186µs (SLO: <90.000µs 📉 -12.0%)

Memory: ✅ 32.185MB (SLO: <34.000MB -5.3%)


✅ obfuscation-regular-case-implicit-query

Time: ✅ 79.612µs (SLO: <90.000µs 📉 -11.5%)

Memory: ✅ 32.224MB (SLO: <34.000MB -5.2%)


✅ obfuscation-send-querystring-disabled

Time: ✅ 157.380µs (SLO: <170.000µs -7.4%)

Memory: ✅ 32.204MB (SLO: <34.500MB -6.7%)


✅ obfuscation-worst-case-explicit-query

Time: ✅ 151.433µs (SLO: <160.000µs -5.4%)

Memory: ✅ 32.145MB (SLO: <34.500MB -6.8%)


✅ obfuscation-worst-case-implicit-query

Time: ✅ 157.606µs (SLO: <170.000µs -7.3%)

Memory: ✅ 32.145MB (SLO: <34.500MB -6.8%)


✅ useragentvariant_exists_1

Time: ✅ 41.316µs (SLO: <50.000µs 📉 -17.4%)

Memory: ✅ 31.772MB (SLO: <34.000MB -6.6%)


✅ useragentvariant_exists_2

Time: ✅ 42.535µs (SLO: <50.000µs 📉 -14.9%)

Memory: ✅ 31.811MB (SLO: <34.000MB -6.4%)


✅ useragentvariant_exists_3

Time: ✅ 42.013µs (SLO: <50.000µs 📉 -16.0%)

Memory: ✅ 31.811MB (SLO: <34.000MB -6.4%)


✅ useragentvariant_not_exists_1

Time: ✅ 41.459µs (SLO: <50.000µs 📉 -17.1%)

Memory: ✅ 31.752MB (SLO: <34.000MB -6.6%)


✅ useragentvariant_not_exists_2

Time: ✅ 41.483µs (SLO: <50.000µs 📉 -17.0%)

Memory: ✅ 31.792MB (SLO: <34.000MB -6.5%)


🔵 span - 26/26

🔵 No baseline data available for this suite

✅ add-event

Time: ✅ 24.033ms (SLO: <26.200ms -8.3%)

Memory: ✅ 50.685MB (SLO: <53.000MB -4.4%)


✅ add-metrics

Time: ✅ 91.616ms (SLO: <98.350ms -6.8%)

Memory: ✅ 615.065MB (SLO: <961.000MB 📉 -36.0%)


✅ add-tags

Time: ✅ 150.274ms (SLO: <168.550ms 📉 -10.8%)

Memory: ✅ 615.819MB (SLO: <962.500MB 📉 -36.0%)


✅ get-context

Time: ✅ 22.386ms (SLO: <23.700ms -5.5%)

Memory: ✅ 49.450MB (SLO: <53.000MB -6.7%)


✅ is-recording

Time: ✅ 22.491ms (SLO: <23.900ms -5.9%)

Memory: ✅ 49.460MB (SLO: <53.000MB -6.7%)


✅ record-exception

Time: ✅ 42.199ms (SLO: <44.500ms -5.2%)

Memory: ✅ 42.532MB (SLO: <53.000MB 📉 -19.8%)


✅ set-status

Time: ✅ 24.241ms (SLO: <26.000ms -6.8%)

Memory: ✅ 49.527MB (SLO: <53.000MB -6.6%)


✅ start

Time: ✅ 21.992ms (SLO: <23.500ms -6.4%)

Memory: ✅ 49.496MB (SLO: <53.000MB -6.6%)


✅ start-finish

Time: ✅ 54.110ms (SLO: <55.500ms -2.5%)

Memory: ✅ 31.339MB (SLO: <34.000MB -7.8%)


✅ start-finish-telemetry

Time: ✅ 55.992ms (SLO: <58.300ms -4.0%)

Memory: ✅ 31.320MB (SLO: <34.000MB -7.9%)


✅ start-finish-traceid128

Time: ✅ 57.507ms (SLO: <60.050ms -4.2%)

Memory: ✅ 31.261MB (SLO: <34.000MB -8.1%)


✅ start-traceid128

Time: ✅ 22.441ms (SLO: <24.600ms -8.8%)

Memory: ✅ 49.414MB (SLO: <53.000MB -6.8%)


✅ update-name

Time: ✅ 23.127ms (SLO: <24.100ms -4.0%)

Memory: ✅ 50.009MB (SLO: <53.000MB -5.6%)


🔵 telemetryaddmetric - 30/30

🔵 No baseline data available for this suite

✅ 1-count-metric-1-times

Time: ✅ 3.146µs (SLO: <10.000µs 📉 -68.5%)

Memory: ✅ 31.300MB (SLO: <34.000MB -7.9%)


✅ 1-count-metrics-100-times

Time: ✅ 222.637µs (SLO: <240.000µs -7.2%)

Memory: ✅ 31.202MB (SLO: <34.000MB -8.2%)


✅ 1-distribution-metric-1-times

Time: ✅ 3.373µs (SLO: <10.000µs 📉 -66.3%)

Memory: ✅ 31.202MB (SLO: <34.000MB -8.2%)


✅ 1-distribution-metrics-100-times

Time: ✅ 198.895µs (SLO: <210.000µs -5.3%)

Memory: ✅ 31.280MB (SLO: <34.000MB -8.0%)


✅ 1-gauge-metric-1-times

Time: ✅ 2.143µs (SLO: <10.000µs 📉 -78.6%)

Memory: ✅ 31.300MB (SLO: <34.000MB -7.9%)


✅ 1-gauge-metrics-100-times

Time: ✅ 124.496µs (SLO: <140.000µs 📉 -11.1%)

Memory: ✅ 31.261MB (SLO: <34.000MB -8.1%)


✅ 1-rate-metric-1-times

Time: ✅ 3.506µs (SLO: <10.000µs 📉 -64.9%)

Memory: ✅ 31.261MB (SLO: <34.000MB -8.1%)


✅ 1-rate-metrics-100-times

Time: ✅ 219.826µs (SLO: <230.000µs -4.4%)

Memory: ✅ 31.280MB (SLO: <34.000MB -8.0%)


✅ 100-count-metrics-100-times

Time: ✅ 21.752ms (SLO: <22.500ms -3.3%)

Memory: ✅ 31.241MB (SLO: <34.000MB -8.1%)


✅ 100-distribution-metrics-100-times

Time: ✅ 2.039ms (SLO: <2.100ms -2.9%)

Memory: ✅ 31.359MB (SLO: <34.000MB -7.8%)


✅ 100-gauge-metrics-100-times

Time: ✅ 1.272ms (SLO: <1.400ms -9.1%)

Memory: ✅ 31.261MB (SLO: <34.000MB -8.1%)


✅ 100-rate-metrics-100-times

Time: ✅ 2.254ms (SLO: <2.400ms -6.1%)

Memory: ✅ 31.241MB (SLO: <34.000MB -8.1%)


✅ flush-1-metric

Time: ✅ 4.236µs (SLO: <10.000µs 📉 -57.6%)

Memory: ✅ 31.261MB (SLO: <34.000MB -8.1%)


✅ flush-100-metrics

Time: ✅ 183.759µs (SLO: <200.000µs -8.1%)

Memory: ✅ 31.280MB (SLO: <34.000MB -8.0%)


✅ flush-1000-metrics

Time: ✅ 2.225ms (SLO: <2.350ms -5.3%)

Memory: ✅ 32.421MB (SLO: <34.500MB -6.0%)


🔵 tracer - 6/6

🔵 No baseline data available for this suite

✅ large

Time: ✅ 30.128ms (SLO: <32.950ms -8.6%)

Memory: ✅ 32.401MB (SLO: <34.500MB -6.1%)


✅ medium

Time: ✅ 2.933ms (SLO: <3.200ms -8.3%)

Memory: ✅ 31.221MB (SLO: <34.000MB -8.2%)


✅ small

Time: ✅ 335.073µs (SLO: <370.000µs -9.4%)

Memory: ✅ 31.320MB (SLO: <34.000MB -7.9%)

@christophe-papazian christophe-papazian marked this pull request as ready for review August 12, 2025 15:31
@christophe-papazian christophe-papazian requested review from a team as code owners August 12, 2025 15:31
@christophe-papazian christophe-papazian enabled auto-merge (squash) August 13, 2025 09:07
Copy link
Member

@brettlangdon brettlangdon left a comment

Choose a reason for hiding this comment

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

looks ok, I think having the dataclass for HttpEndPoint generate a hash function, or implementing one to compare method/path so we can use a set would be fewer changes/cleaner, but there isn't anything wrong with using a dict as you have it (not a blocker, feel free to disagree)

…nts' of github.com:DataDog/dd-trace-py into christophe-papazian/django_endpoint_discovery_improvements
@christophe-papazian christophe-papazian merged commit 6394bb9 into main Aug 13, 2025
463 checks passed
@christophe-papazian christophe-papazian deleted the christophe-papazian/django_endpoint_discovery_improvements branch August 13, 2025 15:02
taegyunkim pushed a commit that referenced this pull request Sep 3, 2025
- ensure no endpoint (route, method) is send twice in the same payload
- add threat test suite support for endpoint discovery and check for
resource compatibility between telemetry payload and span attributes
- minor test improvements

APPSEC-58374

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [x] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
taegyunkim pushed a commit that referenced this pull request Sep 3, 2025
- ensure no endpoint (route, method) is send twice in the same payload
- add threat test suite support for endpoint discovery and check for
resource compatibility between telemetry payload and span attributes
- minor test improvements

APPSEC-58374

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [x] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
erikayasuda pushed a commit that referenced this pull request Sep 3, 2025
- ensure no endpoint (route, method) is send twice in the same payload
- add threat test suite support for endpoint discovery and check for
resource compatibility between telemetry payload and span attributes
- minor test improvements

APPSEC-58374

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [x] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ASM Application Security Monitoring changelog/no-changelog A changelog entry is not required for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants