Beta v0.5.1b24 — past initial proving, but the Python API surface may still shift before 1.0. WiredTiger on-disk format is stable, but there's no migration tool yet — don't put production data here.

Driver gauges widened — 868 integration tests now exercise the wire path

10 May 2026 · Joe Drumgoole · Engineering

Summary: Three driver gauges (Node, Ruby, Java) widened from curated single-file scopes to broader integration suites. 868 tests now exercise SecantusDB's wire path end-to-end (up from 213), surfacing real divergences from mongod for follow-up.

The driver gauges shipped in v0.5.0b1 were intentionally narrow — one file per driver, just enough to prove the runner plumbing worked end-to-end. This widening round flips that: each gauge now covers as much wire-level CRUD surface as terminates within its wall-clock guard, and the failures it surfaces are real divergences from mongod we can iterate on, not noise from skipped pure-unit tests.

Node went from 40 tests in test/integration/crud/crud_api.test.ts to 328 / 37 across the full CRUD directory — aggregation, explain, find, find_and_modify, insert, remove, stats, unicode, server_errors, document_validation, abstract_operation. The runner now passes --timeout 15000 to mocha so a single hung test (tailable getMore polls, change-stream resumes) fails fast at 15s instead of pinning the gauge until the wall-clock budget fires. Server-side, the explain handler now produces the correct aggregate-explain shape — stages: [{$cursor: {queryPlanner, ...}}, ...] — and rejects unknown verbosity values with BadValue. Both were required by the wider gauge.

Ruby went from database_spec.rb only to five spec files (database, collection_ddl, index/view, address, config) — 265 / 29 / 24 pending. Files that exercise SDAM retry loops or tailable change-streams (server_spec, cluster_spec, auth_spec, cursor_spec) are documented as deferred — they hang the gauge against our single-node-as-RS topology and need their own targeted work before they belong in the gauge.

Java went from 60 tests to 172 / 182 by adding ClientMetadataTest, ClusterEventPublishingTest, and the UnifiedCrudTest YAML-driven CRUD spec runner. UnifiedCrudTest brings 111 new passes but also 181 failures — it's the cross-driver CRUD conformance corpus, so each failure is a real wire-shape gap (pipeline-update outcomes, bulk-write result shapes, error-info envelopes) we haven't matched. Honest signal beats a clean number; the failures are now visible and tractable.

pymongo and Go were left as-is — pymongo's gauge has been a real integration suite from the start, and Go's ./internal/integration/... already covers everything the upstream test layout exposes. Total test coverage across all five drivers: 868 + 959 pymongo = 1,827 real wire-level integration tests now run on every CI cycle.

Driver coverage on secantusdb.com