Skip to content

RUBY-3800 Add test variant for the Atlas Secure Frontend Processor (SFP)#3080

Draft
comandeo-mongo wants to merge 3 commits into
mongodb:masterfrom
comandeo-mongo:RUBY-3800-sfp-testing
Draft

RUBY-3800 Add test variant for the Atlas Secure Frontend Processor (SFP)#3080
comandeo-mongo wants to merge 3 commits into
mongodb:masterfrom
comandeo-mongo:RUBY-3800-sfp-testing

Conversation

@comandeo-mongo

Copy link
Copy Markdown
Contributor

Description

Adds connectivity tests for the Atlas Secure Frontend Processor (SFP, aka monguard), a proxy that sits in front of Atlas clusters. Test-only; no driver source changes. Implements the atlas-sfp-testing specification, mirroring the C driver reference (mongodb/mongo-c-driver#2330).

The suite runs against a preconfigured Atlas SFP cluster and is driven by SFP_ATLAS_* environment variables. It covers:

  • Unauthenticated: ping + connectionStatus (asserts no authenticated users)
  • SCRAM-SHA-256 and X.509, each under baseline / compression / Server API v1 variations: ping + connectionStatus + CRUD

Each run uses a unique sfp_test_<ObjectId> collection that is dropped afterward.

Files

Tests:

  • spec/sfp/sfp_spec.rb — the SFP test matrix (self-skips unless SFP_TESTING is set)

Evergreen:

  • .evergreen/run-tests-sfp.sh — runner; sources secrets-export.sh from the drivers/sfp vault
  • .evergreen/config/common.yml.erbexport SFP credentials and run SFP tests functions, test-sfp task
  • .evergreen/config/standard.yml.erbsfp build-variant matrix
  • .evergreen/config.yml — regenerated via rake eg

Test plan

  • bundle exec rubocop spec/sfp/sfp_spec.rb — no offenses
  • bundle exec rspec spec/sfp against the local cluster — 20 examples, 0 failures, 20 pending (correctly skipped without a live SFP cluster)
  • rake eg regenerates config.yml; verified the test-sfp task, both functions, and the sfp variant are present
  • Green run of the sfp Evergreen variant against the live cluster (requires the drivers/sfp credentials in CI)

Jira

https://jira.mongodb.org/browse/RUBY-3800

Add SFP (monguard) connectivity tests that run against a preconfigured
Atlas cluster proxied by a Secure Frontend Processor. The tests cover
unauthenticated, SCRAM-SHA-256, and X.509 access, each authenticated
case under baseline, compression, and Server API v1 variations, per the
atlas-sfp-testing specification.

Add a dedicated Evergreen "sfp" build variant with a test-sfp task that
fetches credentials from the drivers/sfp secrets vault and runs the new
spec/sfp suite.
@comandeo-mongo comandeo-mongo added the tracked-in-jira Ticket filed in Mongo's Jira system label Jul 9, 2026
The SFP proxy closes certless TLS handshakes on SFP_ATLAS_URI with
"SSL_read: unexpected eof", while X.509 connections (which present a
client certificate) succeed. Present the certificate at the TLS layer
for the unauthenticated and SCRAM connections too, with the auth
mechanism unchanged, to confirm whether the proxy requires mutual TLS
for all connections. This is a diagnostic, not a final fix.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tracked-in-jira Ticket filed in Mongo's Jira system

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant