Skip to content

[dotnet@maximo/otlp-runtime-metrics] Add OTLP runtime metrics system test#6715

Draft
link04 wants to merge 9 commits intomainfrom
maximo/otlp-runtime-metrics-test
Draft

[dotnet@maximo/otlp-runtime-metrics] Add OTLP runtime metrics system test#6715
link04 wants to merge 9 commits intomainfrom
maximo/otlp-runtime-metrics-test

Conversation

@link04
Copy link
Copy Markdown
Contributor

@link04 link04 commented Apr 9, 2026

Do not review — depends on POC PRs being merged first.

Adds OTLP_RUNTIME_METRICS scenario. All languages marked missing_feature.

Related: DataDog/dd-trace-dotnet#8299 | DataDog/dd-trace-go#4611 | DataDog/dd-trace-js#7869 | DataDog/dd-trace-java#10985

🤖 Generated with Claude Code

New scenario OTLP_RUNTIME_METRICS that sets DD_METRICS_OTEL_ENABLED=true
alongside DD_RUNTIME_METRICS_ENABLED=true. Tests verify OTel-native metric
names (dotnet.*, jvm.*, go.*, v8js.*) appear in OTLP payloads and that
DD-proprietary names (runtime.dotnet.*, runtime.go.*) do not.

All languages marked as missing_feature in manifests until POC PRs are merged:
- .NET: DataDog/dd-trace-dotnet#8299
- Go: DataDog/dd-trace-go#4611
- Node.js: DataDog/dd-trace-js#7869
- Java: DataDog/dd-trace-java#10985

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 9, 2026

CODEOWNERS have been resolved as:

tests/test_otlp_runtime_metrics.py                                      @DataDog/system-tests-core
.github/workflows/run-end-to-end.yml                                    @DataDog/system-tests-core
manifests/cpp.yml                                                       @DataDog/dd-trace-cpp
manifests/dotnet.yml                                                    @DataDog/apm-dotnet @DataDog/asm-dotnet
manifests/golang.yml                                                    @DataDog/dd-trace-go-guild
manifests/java.yml                                                      @DataDog/asm-java @DataDog/apm-java
manifests/nodejs.yml                                                    @DataDog/dd-trace-js
manifests/php.yml                                                       @DataDog/apm-php @DataDog/asm-php
manifests/python.yml                                                    @DataDog/apm-python @DataDog/asm-python
manifests/ruby.yml                                                      @DataDog/ruby-guild @DataDog/asm-ruby
utils/_context/_scenarios/__init__.py                                   @DataDog/system-tests-core
utils/scripts/ci_orchestrators/workflow_data.py                         @DataDog/system-tests-core

link04 and others added 3 commits April 9, 2026 13:12
- Remove DD_DOGSTATSD_START_DELAY (not using StatsD)
- Add OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
- Route OTLP metrics to proxy for capture via
  OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://proxy:8127/v1/metrics
- Keep runtime_metrics_enabled=True (sets DD_RUNTIME_METRICS_ENABLED=true)
- DD_METRICS_OTEL_ENABLED=true enables the OTLP path in the tracer

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Expand EXPECTED_METRICS from a spot-check subset to the complete
instrument lists from each tracer's implementation: 19 dotnet.*, 8 go.*,
13 nodejs/v8js/process.*, 18 jvm.*.

Made-with: Cursor
…xy routing

- Route OTLP metrics through agent via dd-otlp-path=agent header (matches otel_integrations pattern)
- Read metrics from interfaces.agent.get_metrics() (matches existing RUNTIME_METRICS_ENABLED test)
- Merge positive/negative test into single class
- Enable for dotnet v3.42.0

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@link04 link04 changed the title Add OTLP runtime metrics system test [dotnet@maximo/otlp-runtime-metrics] Add OTLP runtime metrics system test Apr 15, 2026
@link04 link04 added dotnet Pull requests that update .NET code ai-generated The pull request includes a significant amount of AI-generated code labels Apr 15, 2026
link04 and others added 3 commits April 15, 2026 15:07
- Remove Test_OtlpRuntimeMetrics_NoDD_Names from all manifests (merged into single test)
- Move test_otlp_runtime_metrics entries to correct alphabetical position
- Apply ruff formatting from format.sh

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Register the new scenario in the GitHub Actions end-to-end workflow
and the CI orchestrator scenario list.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@datadog-prod-us1-5
Copy link
Copy Markdown

datadog-prod-us1-5 bot commented Apr 20, 2026

Tests

Fix all issues with BitsAI or with Cursor

⚠️ Warnings

🧪 20 Tests failed

tests.parametric.test_otel_metrics.Test_Otel_Metrics_Api_Instrument.test_otel_asynchronous_counter_constant_callback_value[library_env0, parametric-dotnet] from system_tests_suite   View in Datadog   (Fix with Cursor)
AssertionError: assert 'System.Runtime' == 'parametric-api'
  - parametric-api
  + System.Runtime

self = <tests.parametric.test_otel_metrics.Test_Otel_Metrics_Api_Instrument object at 0x7fc07fd45d60>
test_agent = <utils.docker_fixtures._test_agent.TestAgentAPI object at 0x7fc04da19bb0>
test_library = <utils.docker_fixtures._test_clients._test_client_parametric.ParametricTestClientApi object at 0x7fc04d547bc0>

    @pytest.mark.parametrize("library_env", [{**DEFAULT_ENVVARS}])
    def test_otel_asynchronous_counter_constant_callback_value(
...
tests.parametric.test_otel_metrics.Test_Otel_Metrics_Api_Instrument.test_otel_asynchronous_gauge_constant_callback_value[library_env0, parametric-dotnet] from system_tests_suite   View in Datadog   (Fix with Cursor)
AssertionError: assert 'System.Runtime' == 'parametric-api'
  - parametric-api
  + System.Runtime

self = <tests.parametric.test_otel_metrics.Test_Otel_Metrics_Api_Instrument object at 0x7fe21253cb60>
test_agent = <utils.docker_fixtures._test_agent.TestAgentAPI object at 0x7fe1dfb5ecc0>
test_library = <utils.docker_fixtures._test_clients._test_client_parametric.ParametricTestClientApi object at 0x7fe1dfd47a40>

    @pytest.mark.parametrize("library_env", [{**DEFAULT_ENVVARS}])
    def test_otel_asynchronous_gauge_constant_callback_value(self, test_agent: TestAgentAPI, test_library: APMLibrary):
...
tests.parametric.test_otel_metrics.Test_Otel_Metrics_Api_Instrument.test_otel_asynchronous_updowncounter_constant_callback_value[library_env0, parametric-dotnet] from system_tests_suite   View in Datadog   (Fix with Cursor)
AssertionError: assert 'System.Runtime' == 'parametric-api'
  - parametric-api
  + System.Runtime

self = <tests.parametric.test_otel_metrics.Test_Otel_Metrics_Api_Instrument object at 0x7f1ac4d7b5c0>
test_agent = <utils.docker_fixtures._test_agent.TestAgentAPI object at 0x7f1a92da1730>
test_library = <utils.docker_fixtures._test_clients._test_client_parametric.ParametricTestClientApi object at 0x7f1a92ba38f0>

    @pytest.mark.parametrize("library_env", [{**DEFAULT_ENVVARS}])
    def test_otel_asynchronous_updowncounter_constant_callback_value(
...
View all

ℹ️ Info

No other issues found (see more)

❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: e44ad35 | Docs | Datadog PR Page | Give us feedback!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-generated The pull request includes a significant amount of AI-generated code dotnet Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant