pymongo Validation Report (Rust server)¶
Generated 2026-06-15 — SecantusDB 0.5.3b6 vs pymongo f2103a95870a (vendor/pymongo-tests/).
Run uv run python -m invoke validate --server rust to refresh. This is the R8 conformance gate from tasks/rust-server-plan.md: the same unmodified pymongo suite the headline gauge runs, pointed at the Rust server instead of the pure-Python one. The gap between this pass rate and docs/validation-report.md is the Rust server’s remaining to-do list.
Summary by category¶
Category |
Passed |
Failed |
Errored |
Skipped |
Total |
Pass rate |
|---|---|---|---|---|---|---|
|
29 |
0 |
0 |
0 |
29 |
100.0% |
|
31 |
3 |
0 |
4 |
38 |
91.2% |
|
78 |
28 |
0 |
49 |
155 |
73.6% |
|
16 |
0 |
0 |
0 |
16 |
100.0% |
|
75 |
12 |
0 |
4 |
91 |
86.2% |
|
4 |
3 |
0 |
0 |
7 |
57.1% |
|
22 |
0 |
0 |
14 |
36 |
100.0% |
|
30 |
1 |
0 |
7 |
38 |
96.8% |
|
3 |
0 |
0 |
0 |
3 |
100.0% |
|
4 |
0 |
0 |
0 |
4 |
100.0% |
|
286 |
15 |
0 |
185 |
486 |
95.0% |
|
14 |
0 |
0 |
0 |
14 |
100.0% |
|
55 |
12 |
0 |
5 |
72 |
82.1% |
|
46 |
5 |
0 |
0 |
51 |
90.2% |
|
30 |
5 |
0 |
1 |
36 |
85.7% |
|
4 |
0 |
0 |
0 |
4 |
100.0% |
|
12 |
6 |
0 |
2 |
20 |
66.7% |
|
4 |
0 |
0 |
2 |
6 |
100.0% |
|
2 |
0 |
0 |
0 |
2 |
100.0% |
|
13 |
1 |
0 |
0 |
14 |
92.9% |
|
6 |
0 |
0 |
0 |
6 |
100.0% |
|
9 |
0 |
0 |
20 |
29 |
100.0% |
|
5 |
0 |
0 |
0 |
5 |
100.0% |
|
15 |
1 |
0 |
5 |
21 |
93.8% |
|
69 |
26 |
0 |
172 |
267 |
72.6% |
|
4 |
0 |
0 |
0 |
4 |
100.0% |
|
37 |
1 |
0 |
5 |
43 |
97.4% |
|
6 |
0 |
0 |
0 |
6 |
100.0% |
Overall |
909 |
119 |
0 |
475 |
1503 |
88.4% |
Failures (119)¶
First 30 failure node-ids for manual triage:
vendor/pymongo-tests/test/test_bulk.py::TestBulk::test_large_inserts_ordered
vendor/pymongo-tests/test/test_bulk.py::TestBulk::test_large_inserts_unordered
vendor/pymongo-tests/test/test_bulk.py::TestBulk::test_upsert_uuid_standard_subdocuments
vendor/pymongo-tests/test/test_change_stream.py::TestCollectionChangeStream::test_raises_error_on_missing_id_418plus
vendor/pymongo-tests/test/test_change_stream.py::TestCollectionChangeStream::test_read_concern
vendor/pymongo-tests/test/test_change_stream.py::TestCollectionChangeStream::test_resumetoken_uniterated_nonempty_batch_resumeafter
vendor/pymongo-tests/test/test_change_stream.py::TestCollectionChangeStream::test_resumetoken_uniterated_nonempty_batch_startafter
vendor/pymongo-tests/test/test_change_stream.py::TestCollectionChangeStream::test_split_large_change
vendor/pymongo-tests/test/test_change_stream.py::TestCollectionChangeStream::test_start_after
vendor/pymongo-tests/test/test_change_stream.py::TestCollectionChangeStream::test_update_resume_token
vendor/pymongo-tests/test/test_change_stream.py::TestDatabaseChangeStream::test_start_after
vendor/pymongo-tests/test/test_change_stream.py::TestDatabaseChangeStream::test_start_after_resume_process_with_changes
vendor/pymongo-tests/test/test_change_stream.py::TestDatabaseChangeStream::test_start_after_resume_process_without_changes
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreams::test_Change_Stream_should_allow_valid_aggregate_pipeline_stages
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreams::test_Test_modified_structure_in_ns_document_MUST_NOT_err
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreams::test_Test_newField_added_in_response_MUST_NOT_err
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreams::test_Test_new_structure_in_ns_document_MUST_NOT_err
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreams::test_Test_projection_in_change_stream_returns_expected_fields
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreams::test_Test_server_error_on_projecting_out__id
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreams::test_Test_unknown_operationType_MUST_NOT_err
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreamsErrors::test_Change_Stream_should_error_when__id_is_projected_out
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreamsErrors::test_Change_Stream_should_error_when_an_invalid_aggregation_stage_is_passed_in
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreamsPreAndPostImages::test_fullDocument:required_with_changeStreamPreAndPostImages_disabled
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreamsPreAndPostImages::test_fullDocument:whenAvailable_with_changeStreamPreAndPostImages_disabled
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreamsPreAndPostImages::test_fullDocumentBeforeChange:required_with_changeStreamPreAndPostImages_disabled
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreamsShowExpandedEvents::test_when_showExpandedEvents_is_true,_createIndex_events_are_reported
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreamsShowExpandedEvents::test_when_showExpandedEvents_is_true,_create_events_are_reported
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreamsShowExpandedEvents::test_when_showExpandedEvents_is_true,_create_events_on_views_are_reported
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreamsShowExpandedEvents::test_when_showExpandedEvents_is_true,_dropIndexes_events_are_reported
vendor/pymongo-tests/test/test_change_stream.py::TestUnifiedChangeStreamsShowExpandedEvents::test_when_showExpandedEvents_is_true,_modify_events_are_reported
… and 89 more (see raw JSON).
How this is generated¶
pymongo’s tests are run unmodified. The submodule at vendor/pymongo-tests/ is checked out at the pinned upstream tag with zero local edits — git diff HEAD inside the submodule is empty. The integration is entirely external: pymongo_validation/plugin.py starts an embedded Rust server (_secantus_server.RustServer(storage_path=<fresh tempdir>, port=0) — the in-process Rust accept loop over the pure-Rust engines and WiredTiger-backed storage; Python is only the launcher) (real on-disk WiredTiger via tempfile.mkdtemp(prefix='secantus-pymongo-gauge-'), not :memory:) in pytest_configure and writes the bound host/port into DB_IP + DB_PORT — the env vars pymongo’s own helpers_shared.py reads at import time. Pytest then collects and runs the in-scope test paths defined in pymongo_validation/include_paths.py.
Tests gated on replica-set / sharding / auth / TLS / encryption topology self-skip — those skips are honest gaps, not failures. The pass rate above is therefore a meaningful conformance number: those are pymongo’s actual tests, exercising SecantusDB the same way they exercise a real mongod in pymongo’s CI.