Skip to content

test(ffe): validate Ruby agentless EVP delivery and fallback - #8189

Draft
leoromanovsky wants to merge 1 commit into
mainfrom
leo.romanovsky/fflsdk-196-ruby-evp
Draft

leoromanovsky wants to merge 1 commit into
mainfrom
leo.romanovsky/fflsdk-196-ruby-evp

Conversation

@leoromanovsky

Copy link
Copy Markdown
Contributor

Motivation

Ruby's agentless configuration can now deliver exposures and flag evaluations without a compatible local receiver, but system coverage must catch duplicate delivery and credential leakage when a route fails. This implements FFLSDK-196 alongside dd-trace-rb #6574.

Changes

Enable both Ruby signals through a full Agent, serverless-init and direct HTTPS mock intake. Eight fault scenarios target each writer with 404, 405, 403 or connection loss after the receiver reads the complete body: 404/405 replay the same payload once, while 403 and ambiguous failures move only future batches. Assertions cover shared routing, identity headers, credential isolation, evaluation values and duplicate delivery.

The Rails 7.2 shutdown scenario runs Puma as PID 1 and records server closure before the SDK's existing exit flush, allowing the existing strict shutdown contract to run for Ruby. Other SDKs remain gated until their new scenarios are validated.

flowchart LR
  R[Ruby production writers] --> A[Agent or serverless relay]
  R --> F[Local fault receiver]
  A --> M[Mock intake]
  F -. safe replay or future batches .-> D[Direct HTTPS mock intake]
Loading

Validation: 16 selected contracts pass on the gem built from Ruby ff41edc95fd4ea4fa59bd4793a6bfe5c76d923e1: full Agent 7.84.5 (1), serverless-init 1.10.4 (2), direct including shutdown (3), historical RC/Agent (2), and fault cases (8). ./format.sh passes. Gem SHA-256: f851442d689cf158ee481dac8a67fcf6daa2f7c9083f17d3f7c3dd28ca5cb3b0.

These runs use local containers and mock intake; they do not establish production acceptance. Activation depends on the Ruby implementation above; ordinary CI using another Ruby artifact is separate evidence.

Workflow

  1. ⚠️ Create your PR as draft ⚠️
  2. Work on you PR until the CI passes
  3. Mark it as ready for review
    • Tests, manifest, weblog are modified -> you'll need a review from system-tests-reviewers: ask to one of youre co-worker familiar with the tested feature.
    • Framework is modified, or non obvious usage of it -> get a review from system-tests-core (slack)

🚀 Once your PR is reviewed and the CI green, you can merge it!

🛟 #apm-shared-testing 🛟

@linear-code

linear-code Bot commented Oct 27, 2026

Copy link
Copy Markdown

FFLSDK-196

@github-actions

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

tests/ffe/test_evp_fallback.py                                          @DataDog/feature-flagging-and-experimentation-sdk
utils/mocked_backend/_evp.py                                            @DataDog/system-tests-core
.github/workflows/run-end-to-end.yml                                    @DataDog/system-tests-core
manifests/dotnet.yml                                                    @DataDog/system-tests-reviewers
manifests/golang.yml                                                    @DataDog/system-tests-reviewers
manifests/java.yml                                                      @DataDog/system-tests-reviewers
manifests/nodejs.yml                                                    @DataDog/system-tests-reviewers
manifests/python.yml                                                    @DataDog/system-tests-reviewers
manifests/ruby.yml                                                      @DataDog/system-tests-reviewers
utils/_context/_scenarios/__init__.py                                   @DataDog/system-tests-core
utils/_context/_scenarios/agentless_endtoend.py                         @DataDog/system-tests-core
utils/build/docker/ruby/rails72/app.sh                                  @DataDog/system-tests-reviewers
utils/build/docker/ruby/rails72/config/puma.rb                          @DataDog/system-tests-reviewers
utils/mocked_backend/_backend.py                                        @DataDog/system-tests-core

@datadog-official

datadog-official Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Pipelines  Tests

❌ Errors

Your PR has failed checks. Please review the issues below and take necessary action before merging.

🚦 2 Pipeline jobs failed

Testing the test | Test the test — 🔧 Needs a code fix, caused by this PR

View more details · View in GitHub Actions

Testing the test | all-jobs-are-green

View more details · View in GitHub Actions

ℹ️ Info

No other issues found (see more)

🧪 All tests passed
❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 0a2c969 | Docs | View more details | Give us feedback!

This branch has not been deployed

No deployments
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