Skip to content

[ruby] Enable Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation#7112

Draft
p-datadog wants to merge 2 commits into
mainfrom
ddsign/enable-di-inproduct-enablement-ruby
Draft

[ruby] Enable Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation#7112
p-datadog wants to merge 2 commits into
mainfrom
ddsign/enable-di-inproduct-enablement-ruby

Conversation

@p-datadog

@p-datadog p-datadog commented Jun 8, 2026

Copy link
Copy Markdown
Member

Motivation

dd-trace-rb v2.36.0 (DataDog/dd-trace-rb#5525) implements implicit DI enablement for Ruby: an APM_TRACING RC payload with dynamic_instrumentation_enabled: true starts the always-built DI component, false stops it, and null preserves current state.

This system test verifies the full round trip — RC delivery to tracer, tracer-side start!/stop!, and probe install/remove behavior — that already passes for Java, Python, .NET, and Node.js. Ruby has been opted out via missing_feature and should now run.

Changes

manifests/ruby.yml — change Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation from missing_feature to v2.36.0-dev on the three Rails-based weblogs that have a working debugger_controller.rb fixture (rails72, rails80, uds-rails):

tests/debugger/test_debugger_inproduct_enablement.py::Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation:
  - weblog_declaration:
      "*": missing_feature
      rails72: v2.36.0-dev
      rails80: v2.36.0-dev
      uds-rails: v2.36.0-dev

The three sibling tests in the same file stay missing_feature — they are out of scope for the Ruby work:

  • Test_Debugger_InProduct_Enablement_Code_Origin — Code Origin is not implemented in Ruby DI.
  • Test_Debugger_InProduct_Enablement_Code_Origin_Default_On — same; already irrelevant per dotnet rollout comment.
  • Test_Debugger_InProduct_Enablement_Exception_Replay — Exception Replay is not implemented in Ruby DI.

Verification

The probe template targets line 20 of the language's debugger controller. In Ruby that resolves to utils/build/docker/ruby/shared/rails/app/controllers/debugger_controller.rb, which already has def log_probe / render inline: 'Log probe' # This needs to be line 20.

Tracer-side coverage of the same flow lives in dd-trace-rb/spec/datadog/di/integration/implicit_enablement_spec.rb — those tests pass on the enablement branch.

Notes

The -dev suffix tracks the unreleased dd-trace-rb #5525; other tests in this manifest already use -dev versions, so no version bump is required before merge.

The reviewer checklist's "Anything but tests/ or manifests/ is modified" item is satisfied — only manifests/ruby.yml changes.

dd-trace-rb v2.36.0 implements implicit DI enablement: APM_TRACING RC
with dynamic_instrumentation_enabled=true starts the always-built DI
component, =false stops it, and null preserves current state.

Pin to v2.36.0 on the three Rails-based weblogs that have a working
debugger_controller.rb fixture (rails72, rails80, uds-rails). The other
weblogs and the three sibling tests (Code Origin, Code Origin Default On,
Exception Replay) stay missing_feature — they are out of scope for the
Ruby implicit-enablement work (Exception Replay, Code Origin, and
Distributed Debugger are not implemented in Ruby DI).

Tracer change: DataDog/dd-trace-rb#5525
@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

manifests/ruby.yml                                                      @DataDog/ruby-guild @DataDog/asm-ruby

@datadog-official

datadog-official Bot commented Jun 8, 2026

Copy link
Copy Markdown

Pipelines  Tests

Fix all issues with BitsAI

⚠️ Warnings

🚦 4 Pipeline jobs failed

Testing the test | System Tests (ruby, dev) / End-to-end #1 / rails72 1   View in Datadog   GitHub Actions

🧪 1 Test failed

tests.debugger.test_debugger_inproduct_enablement.Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation.test_inproduct_enablement_di[rails72] from system_tests_suite   View in Datadog (Fix with Cursor)
AssertionError: Expected probes to be emitting after enabling dynamic instrumentation
assert False
 +  where False = <tests.debugger.test_debugger_inproduct_enablement.Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation object at 0x7fe649e49610>.di_explicit_enabled

self = <tests.debugger.test_debugger_inproduct_enablement.Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation object at 0x7fe649e49610>

    def test_inproduct_enablement_di(self):
        self.assert_rc_state_not_error()
        self.assert_all_weblog_responses_ok()
    
...

Testing the test | System Tests (ruby, dev) / End-to-end #1 / rails80 1   View in Datadog   GitHub Actions

🧪 1 Test failed

tests.debugger.test_debugger_inproduct_enablement.Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation.test_inproduct_enablement_di[rails80] from system_tests_suite   View in Datadog (Fix with Cursor)
AssertionError: Expected probes to be emitting after enabling dynamic instrumentation
assert False
 +  where False = <tests.debugger.test_debugger_inproduct_enablement.Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation object at 0x7f9dacc1c770>.di_explicit_enabled

self = <tests.debugger.test_debugger_inproduct_enablement.Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation object at 0x7f9dacc1c770>

    def test_inproduct_enablement_di(self):
        self.assert_rc_state_not_error()
        self.assert_all_weblog_responses_ok()
    
...

Testing the test | System Tests (ruby, dev) / End-to-end #1 / uds-rails 1   View in Datadog   GitHub Actions

🧪 1 Test failed

tests.debugger.test_debugger_inproduct_enablement.Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation.test_inproduct_enablement_di[uds-rails] from system_tests_suite   View in Datadog (Fix with Cursor)
AssertionError: Expected probes to be emitting after enabling dynamic instrumentation
assert False
 +  where False = <tests.debugger.test_debugger_inproduct_enablement.Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation object at 0x7f38940fb950>.di_explicit_enabled

self = <tests.debugger.test_debugger_inproduct_enablement.Test_Debugger_InProduct_Enablement_Dynamic_Instrumentation object at 0x7f38940fb950>

    def test_inproduct_enablement_di(self):
        self.assert_rc_state_not_error()
        self.assert_all_weblog_responses_ok()
    
...

View all 4 failed jobs.

ℹ️ 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: 4ebda66 | 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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants