M1: doc-level free list, sessions, and a spec runner that no longer overstates #1

Merged
dev merged 37 commits from m1-cursors into main 2026-08-09 16:15:34 +00:00
2 changed files with 110 additions and 22 deletions
Showing only changes of commit 97e3e3a556 - Show all commits

View File

@@ -606,6 +606,59 @@ async function buildEntities(url, createEntities, clients, events) {
return { map, clients, events }; return { map, clients, events };
} }
// Two rules decide how much of the corpus this assertion can reach, and both
// come from the spec rather than from taste:
//
// - `command` and `reply` are matched as *root* documents
// (unified-test-format.md:1020-1022 and :1037-1039). The driver puts
// `lsid`, `$db` and `$readPreference` on nearly everything it sends;
// matched as nested documents, almost every case in the corpus would fail
// on keys its expectation was never written to mention.
// - the event list is exact in number and order, not a prefix
// (unified-test-format.md:3088-3091). 23 cases here expect an empty list,
// and a prefix rule would pass every one of them without looking.
function verifyEvents(expectEvents, entities) {
if (!expectEvents) return;
for (const spec of expectEvents) {
const type = spec.eventType || 'command';
if (type !== 'command') throw new Unsupported(`${type} events`);
if (spec.ignoreExtraEvents) throw new Unsupported('ignoreExtraEvents');
const buf = entities.events.get(spec.client);
// Not treated as an empty list: a client that never subscribed and a
// client that saw nothing are the same thing to a comparison and very
// different things to a runner, and the second one is a runner bug
// that would quietly pass the 23 empty-list cases.
if (!buf) fail(`events ${spec.client}`, 'the client entity is not observing command events');
const expected = spec.events || [];
if (expected.length !== buf.length) {
fail(`events ${spec.client}`, `expected ${expected.length} events, observed ${buf.length}` +
` [${buf.map((e) => `${e.kind}:${e.ev.commandName}`).join(', ')}]`);
}
expected.forEach((e, i) => matchEvent(e, buf[i], entities, `events ${spec.client}[${i}]`));
}
}
function matchEvent(expected, actual, entities, pathStr) {
const [name, body] = Object.entries(expected)[0];
if (!(name in COMMAND_EVENTS)) throw new Unsupported(`event ${name}`);
const kind = name.replace(/Event$/, '');
if (actual.kind !== kind) fail(pathStr, `expected ${kind}, got ${actual.kind} of ${actual.ev.commandName}`);
for (const [k, v] of Object.entries(body || {})) {
switch (k) {
case 'command':
case 'reply':
match(v, actual.ev[k], entities, `${pathStr}.${k}`, true);
break;
case 'commandName':
case 'databaseName':
match(v, actual.ev[k], entities, `${pathStr}.${k}`, false);
break;
default:
throw new Unsupported(`event assertion ${name}.${k}`);
}
}
}
async function verifyOutcome(outcome, entities) { async function verifyOutcome(outcome, entities) {
if (!outcome) return; if (!outcome) return;
for (const spec of outcome) { for (const spec of outcome) {
@@ -649,6 +702,7 @@ async function runFile(file, url, server) {
const entities = await buildEntities(url, doc.createEntities, clients, events); const entities = await buildEntities(url, doc.createEntities, clients, events);
for (const op of test.operations) await runOne(op, entities); for (const op of test.operations) await runOne(op, entities);
disableEvents(events); disableEvents(events);
verifyEvents(test.expectEvents, entities);
await verifyOutcome(test.outcome, entities); await verifyOutcome(test.outcome, entities);
}, CASE_TIMEOUT_MS, `case exceeded ${CASE_TIMEOUT_MS} ms`); }, CASE_TIMEOUT_MS, `case exceeded ${CASE_TIMEOUT_MS} ms`);
out.pass++; out.pass++;

View File

@@ -13,7 +13,7 @@
# semantics; ignoring them makes some cases pass that a full runner would # semantics; ignoring them makes some cases pass that a full runner would
# fail, so treat `pass` as an upper bound until M1 wires events up. # fail, so treat `pass` as an upper bound until M1 wires events up.
total 193 pass 99 fail 195 skip 175 files 0 errored total 159 pass 133 fail 195 skip 175 files 0 errored
# per-file: name pass fail skip # per-file: name pass fail skip
aggregate-allowdiskuse.json 3 0 0 aggregate-allowdiskuse.json 3 0 0
@@ -25,40 +25,40 @@ aggregate-out-readConcern.json 0 0 4
aggregate-out.json 0 2 0 aggregate-out.json 0 2 0
aggregate-rawdata.json 1 0 1 aggregate-rawdata.json 1 0 1
aggregate-write-readPreference.json 0 0 4 aggregate-write-readPreference.json 0 0 4
aggregate.json 5 0 2 aggregate.json 4 1 2
bulkWrite-arrayFilters.json 0 3 0 bulkWrite-arrayFilters.json 0 3 0
bulkWrite-collation.json 0 2 0 bulkWrite-collation.json 0 2 0
bulkWrite-comment.json 2 0 1 bulkWrite-comment.json 2 0 1
bulkWrite-delete-hint-serverError.json 0 0 2 bulkWrite-delete-hint-serverError.json 0 0 2
bulkWrite-delete-hint.json 2 0 0 bulkWrite-delete-hint.json 2 0 0
bulkWrite-deleteMany-hint-unacknowledged.json 2 0 2 bulkWrite-deleteMany-hint-unacknowledged.json 0 2 2
bulkWrite-deleteMany-let.json 0 1 1 bulkWrite-deleteMany-let.json 0 1 1
bulkWrite-deleteMany-rawdata.json 1 0 1 bulkWrite-deleteMany-rawdata.json 1 0 1
bulkWrite-deleteOne-hint-unacknowledged.json 2 0 2 bulkWrite-deleteOne-hint-unacknowledged.json 0 2 2
bulkWrite-deleteOne-let.json 0 1 1 bulkWrite-deleteOne-let.json 0 1 1
bulkWrite-deleteOne-rawdata.json 1 0 1 bulkWrite-deleteOne-rawdata.json 1 0 1
bulkWrite-errorResponse.json 0 0 1 bulkWrite-errorResponse.json 0 0 1
bulkWrite-insertOne-dots_and_dollars.json 3 1 1 bulkWrite-insertOne-dots_and_dollars.json 3 1 1
bulkWrite-replaceOne-dots_and_dollars.json 2 1 1 bulkWrite-replaceOne-dots_and_dollars.json 2 1 1
bulkWrite-replaceOne-hint-unacknowledged.json 2 0 0 bulkWrite-replaceOne-hint-unacknowledged.json 0 2 0
bulkWrite-replaceOne-let.json 0 1 1 bulkWrite-replaceOne-let.json 0 1 1
bulkWrite-replaceOne-rawdata.json 1 0 1 bulkWrite-replaceOne-rawdata.json 1 0 1
bulkWrite-replaceOne-sort.json 1 0 1 bulkWrite-replaceOne-sort.json 0 1 1
bulkWrite-update-hint.json 3 0 0 bulkWrite-update-hint.json 3 0 0
bulkWrite-update-validation.json 3 0 0 bulkWrite-update-validation.json 3 0 0
bulkWrite-updateMany-dots_and_dollars.json 0 0 4 bulkWrite-updateMany-dots_and_dollars.json 0 0 4
bulkWrite-updateMany-hint-unacknowledged.json 2 0 0 bulkWrite-updateMany-hint-unacknowledged.json 0 2 0
bulkWrite-updateMany-let.json 0 1 1 bulkWrite-updateMany-let.json 0 1 1
bulkWrite-updateMany-pipeline.json 0 1 0 bulkWrite-updateMany-pipeline.json 0 1 0
bulkWrite-updateMany-rawdata.json 0 1 1 bulkWrite-updateMany-rawdata.json 0 1 1
bulkWrite-updateOne-dots_and_dollars.json 0 0 4 bulkWrite-updateOne-dots_and_dollars.json 0 0 4
bulkWrite-updateOne-hint-unacknowledged.json 2 0 0 bulkWrite-updateOne-hint-unacknowledged.json 0 2 0
bulkWrite-updateOne-let.json 0 1 1 bulkWrite-updateOne-let.json 0 1 1
bulkWrite-updateOne-pipeline.json 0 1 0 bulkWrite-updateOne-pipeline.json 0 1 0
bulkWrite-updateOne-rawdata.json 0 1 1 bulkWrite-updateOne-rawdata.json 0 1 1
bulkWrite-updateOne-sort.json 1 0 1 bulkWrite-updateOne-sort.json 0 1 1
bulkWrite.json 10 0 0 bulkWrite.json 10 0 0
bypassDocumentValidation.json 8 1 0 bypassDocumentValidation.json 4 5 0
client-bulkWrite-delete-options.json 0 0 2 client-bulkWrite-delete-options.json 0 0 2
client-bulkWrite-delete-rawdata.json 0 0 2 client-bulkWrite-delete-rawdata.json 0 0 2
client-bulkWrite-errorResponse.json 0 0 1 client-bulkWrite-errorResponse.json 0 0 1
@@ -88,7 +88,7 @@ db-aggregate.json 0 2 0
deleteMany-collation.json 0 1 0 deleteMany-collation.json 0 1 0
deleteMany-comment.json 2 0 1 deleteMany-comment.json 2 0 1
deleteMany-hint-serverError.json 0 0 2 deleteMany-hint-serverError.json 0 0 2
deleteMany-hint-unacknowledged.json 2 0 2 deleteMany-hint-unacknowledged.json 0 2 2
deleteMany-hint.json 2 0 0 deleteMany-hint.json 2 0 0
deleteMany-let.json 0 1 1 deleteMany-let.json 0 1 1
deleteMany-rawdata.json 1 0 1 deleteMany-rawdata.json 1 0 1
@@ -97,7 +97,7 @@ deleteOne-collation.json 0 1 0
deleteOne-comment.json 2 0 1 deleteOne-comment.json 2 0 1
deleteOne-errorResponse.json 0 0 1 deleteOne-errorResponse.json 0 0 1
deleteOne-hint-serverError.json 0 0 2 deleteOne-hint-serverError.json 0 0 2
deleteOne-hint-unacknowledged.json 2 0 2 deleteOne-hint-unacknowledged.json 0 2 2
deleteOne-hint.json 2 0 0 deleteOne-hint.json 2 0 0
deleteOne-let.json 0 1 1 deleteOne-let.json 0 1 1
deleteOne-rawdata.json 1 0 1 deleteOne-rawdata.json 1 0 1
@@ -109,15 +109,15 @@ distinct-rawdata.json 0 1 1
distinct.json 0 2 0 distinct.json 0 2 0
estimatedDocumentCount-comment.json 1 1 1 estimatedDocumentCount-comment.json 1 1 1
estimatedDocumentCount-rawdata.json 1 0 1 estimatedDocumentCount-rawdata.json 1 0 1
estimatedDocumentCount.json 3 1 2 estimatedDocumentCount.json 2 2 2
find-allowdiskuse-serverError.json 0 0 2 find-allowdiskuse-serverError.json 0 0 2
find-allowdiskuse.json 3 0 0 find-allowdiskuse.json 3 0 0
find-collation.json 0 1 0 find-collation.json 0 1 0
find-comment.json 1 2 2 find-comment.json 0 3 2
find-let.json 0 1 1 find-let.json 0 1 1
find-rawdata.json 1 0 1 find-rawdata.json 1 0 1
find.json 5 0 0 find.json 5 0 0
findOne.json 2 0 0 findOne.json 1 1 0
findOneAndDelete-collation.json 0 1 0 findOneAndDelete-collation.json 0 1 0
findOneAndDelete-comment.json 2 0 1 findOneAndDelete-comment.json 2 0 1
findOneAndDelete-hint-serverError.json 0 0 2 findOneAndDelete-hint-serverError.json 0 0 2
@@ -153,25 +153,25 @@ insertMany-dots_and_dollars.json 3 1 1
insertMany-rawdata.json 1 0 1 insertMany-rawdata.json 1 0 1
insertMany.json 3 0 0 insertMany.json 3 0 0
insertOne-comment.json 2 0 1 insertOne-comment.json 2 0 1
insertOne-dots_and_dollars.json 6 2 1 insertOne-dots_and_dollars.json 5 3 1
insertOne-errorResponse.json 0 0 1 insertOne-errorResponse.json 0 0 1
insertOne-rawdata.json 1 0 1 insertOne-rawdata.json 1 0 1
insertOne.json 1 0 0 insertOne.json 1 0 0
replaceOne-collation.json 0 1 0 replaceOne-collation.json 0 1 0
replaceOne-comment.json 2 0 1 replaceOne-comment.json 2 0 1
replaceOne-dots_and_dollars.json 3 1 1 replaceOne-dots_and_dollars.json 2 2 1
replaceOne-hint-unacknowledged.json 2 0 0 replaceOne-hint-unacknowledged.json 0 2 0
replaceOne-hint.json 2 0 0 replaceOne-hint.json 2 0 0
replaceOne-let.json 0 1 1 replaceOne-let.json 0 1 1
replaceOne-rawdata.json 1 0 1 replaceOne-rawdata.json 1 0 1
replaceOne-sort.json 1 0 1 replaceOne-sort.json 0 1 1
replaceOne-validation.json 1 0 0 replaceOne-validation.json 1 0 0
replaceOne.json 5 0 0 replaceOne.json 5 0 0
updateMany-arrayFilters.json 0 3 0 updateMany-arrayFilters.json 0 3 0
updateMany-collation.json 0 1 0 updateMany-collation.json 0 1 0
updateMany-comment.json 2 0 1 updateMany-comment.json 2 0 1
updateMany-dots_and_dollars.json 0 0 4 updateMany-dots_and_dollars.json 0 0 4
updateMany-hint-unacknowledged.json 2 0 0 updateMany-hint-unacknowledged.json 0 2 0
updateMany-hint.json 2 0 0 updateMany-hint.json 2 0 0
updateMany-let.json 0 1 1 updateMany-let.json 0 1 1
updateMany-pipeline.json 0 1 0 updateMany-pipeline.json 0 1 0
@@ -183,12 +183,12 @@ updateOne-collation.json 0 1 0
updateOne-comment.json 2 0 1 updateOne-comment.json 2 0 1
updateOne-dots_and_dollars.json 0 0 4 updateOne-dots_and_dollars.json 0 0 4
updateOne-errorResponse.json 0 0 1 updateOne-errorResponse.json 0 0 1
updateOne-hint-unacknowledged.json 2 0 0 updateOne-hint-unacknowledged.json 0 2 0
updateOne-hint.json 2 0 0 updateOne-hint.json 2 0 0
updateOne-let.json 0 1 1 updateOne-let.json 0 1 1
updateOne-pipeline.json 0 1 0 updateOne-pipeline.json 0 1 0
updateOne-rawdata.json 1 0 1 updateOne-rawdata.json 1 0 1
updateOne-sort.json 1 0 1 updateOne-sort.json 0 1 1
updateOne-validation.json 1 0 0 updateOne-validation.json 1 0 0
updateOne.json 4 0 0 updateOne.json 4 0 0
@@ -210,6 +210,7 @@ aggregate-out.json FAIL Aggregate with $out and batch size of 0 MongoServerError
aggregate-rawdata.json SKIP Aggregate with rawData option needs server >= 8.2.0 aggregate-rawdata.json SKIP Aggregate with rawData option needs server >= 8.2.0
aggregate-write-readPreference.json SKIP * needs topology replicaset/sharded/load-balanced aggregate-write-readPreference.json SKIP * needs topology replicaset/sharded/load-balanced
aggregate.json SKIP aggregate with a document comment - pre 4.4 needs server <= 4.2.99 aggregate.json SKIP aggregate with a document comment - pre 4.4 needs server <= 4.2.99
aggregate.json FAIL aggregate with comment sets comment on getMore events client0[1].command.comment: missing from actual
aggregate.json SKIP aggregate with comment does not set comment on getMore - pre 4.4 needs server <= 4.3.99 aggregate.json SKIP aggregate with comment does not set comment on getMore - pre 4.4 needs server <= 4.3.99
bulkWrite-arrayFilters.json FAIL BulkWrite updateOne with arrayFilters outcome crud-tests.test[0].y: expected an array, got {"$[i]":{"b":2}} bulkWrite-arrayFilters.json FAIL BulkWrite updateOne with arrayFilters outcome crud-tests.test[0].y: expected an array, got {"$[i]":{"b":2}}
bulkWrite-arrayFilters.json FAIL BulkWrite updateMany with arrayFilters outcome crud-tests.test[0].y: expected an array, got {"$[i]":{"b":2}} bulkWrite-arrayFilters.json FAIL BulkWrite updateMany with arrayFilters outcome crud-tests.test[0].y: expected an array, got {"$[i]":{"b":2}}
@@ -220,11 +221,15 @@ bulkWrite-comment.json SKIP BulkWrite with comment - pre 4.4 needs server <= 4.2
bulkWrite-delete-hint-serverError.json SKIP * needs server <= 4.3.3 bulkWrite-delete-hint-serverError.json SKIP * needs server <= 4.3.3
bulkWrite-deleteMany-hint-unacknowledged.json SKIP Unacknowledged deleteMany with hint string fails with client-side error on pre-4.4 server needs server <= 4.2.99 bulkWrite-deleteMany-hint-unacknowledged.json SKIP Unacknowledged deleteMany with hint string fails with client-side error on pre-4.4 server needs server <= 4.2.99
bulkWrite-deleteMany-hint-unacknowledged.json SKIP Unacknowledged deleteMany with hint document fails with client-side error on pre-4.4 server needs server <= 4.2.99 bulkWrite-deleteMany-hint-unacknowledged.json SKIP Unacknowledged deleteMany with hint document fails with client-side error on pre-4.4 server needs server <= 4.2.99
bulkWrite-deleteMany-hint-unacknowledged.json FAIL Unacknowledged deleteMany with hint string on 4.4+ server events client0[0].command.writeConcern: missing from actual
bulkWrite-deleteMany-hint-unacknowledged.json FAIL Unacknowledged deleteMany with hint document on 4.4+ server events client0[0].command.writeConcern: missing from actual
bulkWrite-deleteMany-let.json SKIP BulkWrite deleteMany with let option needs server >= 5.0 bulkWrite-deleteMany-let.json SKIP BulkWrite deleteMany with let option needs server >= 5.0
bulkWrite-deleteMany-let.json FAIL BulkWrite deleteMany with let option unsupported (server-side error) bulkWrite: expected an error, the operation succeeded bulkWrite-deleteMany-let.json FAIL BulkWrite deleteMany with let option unsupported (server-side error) bulkWrite: expected an error, the operation succeeded
bulkWrite-deleteMany-rawdata.json SKIP BulkWrite deleteMany with rawData option needs server >= 8.2.0 bulkWrite-deleteMany-rawdata.json SKIP BulkWrite deleteMany with rawData option needs server >= 8.2.0
bulkWrite-deleteOne-hint-unacknowledged.json SKIP Unacknowledged deleteOne with hint string fails with client-side error on pre-4.4 server needs server <= 4.2.99 bulkWrite-deleteOne-hint-unacknowledged.json SKIP Unacknowledged deleteOne with hint string fails with client-side error on pre-4.4 server needs server <= 4.2.99
bulkWrite-deleteOne-hint-unacknowledged.json SKIP Unacknowledged deleteOne with hint document fails with client-side error on pre-4.4 server needs server <= 4.2.99 bulkWrite-deleteOne-hint-unacknowledged.json SKIP Unacknowledged deleteOne with hint document fails with client-side error on pre-4.4 server needs server <= 4.2.99
bulkWrite-deleteOne-hint-unacknowledged.json FAIL Unacknowledged deleteOne with hint string on 4.4+ server events client0[0].command.writeConcern: missing from actual
bulkWrite-deleteOne-hint-unacknowledged.json FAIL Unacknowledged deleteOne with hint document on 4.4+ server events client0[0].command.writeConcern: missing from actual
bulkWrite-deleteOne-let.json SKIP BulkWrite deleteOne with let option needs server >= 5.0 bulkWrite-deleteOne-let.json SKIP BulkWrite deleteOne with let option needs server >= 5.0
bulkWrite-deleteOne-let.json FAIL BulkWrite deleteOne with let option unsupported (server-side error) bulkWrite: expected an error, the operation succeeded bulkWrite-deleteOne-let.json FAIL BulkWrite deleteOne with let option unsupported (server-side error) bulkWrite: expected an error, the operation succeeded
bulkWrite-deleteOne-rawdata.json SKIP BulkWrite deleteOne with rawData option needs server >= 8.2.0 bulkWrite-deleteOne-rawdata.json SKIP BulkWrite deleteOne with rawData option needs server >= 8.2.0
@@ -233,14 +238,19 @@ bulkWrite-insertOne-dots_and_dollars.json SKIP Inserting document with top-level
bulkWrite-insertOne-dots_and_dollars.json FAIL Inserting document with top-level dollar-prefixed key on pre-5.0 server yields server-side error bulkWrite: expected an error, the operation succeeded bulkWrite-insertOne-dots_and_dollars.json FAIL Inserting document with top-level dollar-prefixed key on pre-5.0 server yields server-side error bulkWrite: expected an error, the operation succeeded
bulkWrite-replaceOne-dots_and_dollars.json SKIP Replacing document with dollar-prefixed key in embedded doc on 5.0+ server needs server >= 5.0 bulkWrite-replaceOne-dots_and_dollars.json SKIP Replacing document with dollar-prefixed key in embedded doc on 5.0+ server needs server >= 5.0
bulkWrite-replaceOne-dots_and_dollars.json FAIL Replacing document with dollar-prefixed key in embedded doc on pre-5.0 server yields server-side error bulkWrite: expected an error, the operation succeeded bulkWrite-replaceOne-dots_and_dollars.json FAIL Replacing document with dollar-prefixed key in embedded doc on pre-5.0 server yields server-side error bulkWrite: expected an error, the operation succeeded
bulkWrite-replaceOne-hint-unacknowledged.json FAIL Unacknowledged replaceOne with hint string on 4.2+ server events client0[0].command.writeConcern: missing from actual
bulkWrite-replaceOne-hint-unacknowledged.json FAIL Unacknowledged replaceOne with hint document on 4.2+ server events client0[0].command.writeConcern: missing from actual
bulkWrite-replaceOne-let.json SKIP BulkWrite replaceOne with let option needs server >= 5.0 bulkWrite-replaceOne-let.json SKIP BulkWrite replaceOne with let option needs server >= 5.0
bulkWrite-replaceOne-let.json FAIL BulkWrite replaceOne with let option unsupported (server-side error) bulkWrite: expected an error, the operation succeeded bulkWrite-replaceOne-let.json FAIL BulkWrite replaceOne with let option unsupported (server-side error) bulkWrite: expected an error, the operation succeeded
bulkWrite-replaceOne-rawdata.json SKIP BulkWrite replaceOne with rawData option needs server >= 8.2.0 bulkWrite-replaceOne-rawdata.json SKIP BulkWrite replaceOne with rawData option needs server >= 8.2.0
bulkWrite-replaceOne-sort.json SKIP BulkWrite replaceOne with sort option needs server >= 8.0 bulkWrite-replaceOne-sort.json SKIP BulkWrite replaceOne with sort option needs server >= 8.0
bulkWrite-replaceOne-sort.json FAIL BulkWrite replaceOne with sort option unsupported (server-side error) events client0[0].command.updates[0].sort._id: missing from actual
bulkWrite-updateMany-dots_and_dollars.json SKIP Updating document to set top-level dollar-prefixed key on 5.0+ server needs server >= 5.0 bulkWrite-updateMany-dots_and_dollars.json SKIP Updating document to set top-level dollar-prefixed key on 5.0+ server needs server >= 5.0
bulkWrite-updateMany-dots_and_dollars.json SKIP Updating document to set top-level dotted key on 5.0+ server needs server >= 5.0 bulkWrite-updateMany-dots_and_dollars.json SKIP Updating document to set top-level dotted key on 5.0+ server needs server >= 5.0
bulkWrite-updateMany-dots_and_dollars.json SKIP Updating document to set dollar-prefixed key in embedded doc on 5.0+ server needs server >= 5.0 bulkWrite-updateMany-dots_and_dollars.json SKIP Updating document to set dollar-prefixed key in embedded doc on 5.0+ server needs server >= 5.0
bulkWrite-updateMany-dots_and_dollars.json SKIP Updating document to set dotted key in embedded doc on 5.0+ server needs server >= 5.0 bulkWrite-updateMany-dots_and_dollars.json SKIP Updating document to set dotted key in embedded doc on 5.0+ server needs server >= 5.0
bulkWrite-updateMany-hint-unacknowledged.json FAIL Unacknowledged updateMany with hint string on 4.2+ server events client0[0].command.writeConcern: missing from actual
bulkWrite-updateMany-hint-unacknowledged.json FAIL Unacknowledged updateMany with hint document on 4.2+ server events client0[0].command.writeConcern: missing from actual
bulkWrite-updateMany-let.json SKIP BulkWrite updateMany with let option needs server >= 5.0 bulkWrite-updateMany-let.json SKIP BulkWrite updateMany with let option needs server >= 5.0
bulkWrite-updateMany-let.json FAIL BulkWrite updateMany with let option unsupported (server-side error) bulkWrite: error message "update spec requires u" does not contain "'update.let' is an unknown field" bulkWrite-updateMany-let.json FAIL BulkWrite updateMany with let option unsupported (server-side error) bulkWrite: error message "update spec requires u" does not contain "'update.let' is an unknown field"
bulkWrite-updateMany-pipeline.json FAIL UpdateMany in bulk write using pipelines MongoBulkWriteError: update spec requires u bulkWrite-updateMany-pipeline.json FAIL UpdateMany in bulk write using pipelines MongoBulkWriteError: update spec requires u
@@ -250,13 +260,20 @@ bulkWrite-updateOne-dots_and_dollars.json SKIP Updating document to set top-leve
bulkWrite-updateOne-dots_and_dollars.json SKIP Updating document to set top-level dotted key on 5.0+ server needs server >= 5.0 bulkWrite-updateOne-dots_and_dollars.json SKIP Updating document to set top-level dotted key on 5.0+ server needs server >= 5.0
bulkWrite-updateOne-dots_and_dollars.json SKIP Updating document to set dollar-prefixed key in embedded doc on 5.0+ server needs server >= 5.0 bulkWrite-updateOne-dots_and_dollars.json SKIP Updating document to set dollar-prefixed key in embedded doc on 5.0+ server needs server >= 5.0
bulkWrite-updateOne-dots_and_dollars.json SKIP Updating document to set dotted key in embedded doc on 5.0+ server needs server >= 5.0 bulkWrite-updateOne-dots_and_dollars.json SKIP Updating document to set dotted key in embedded doc on 5.0+ server needs server >= 5.0
bulkWrite-updateOne-hint-unacknowledged.json FAIL Unacknowledged updateOne with hint string on 4.2+ server events client0[0].command.writeConcern: missing from actual
bulkWrite-updateOne-hint-unacknowledged.json FAIL Unacknowledged updateOne with hint document on 4.2+ server events client0[0].command.writeConcern: missing from actual
bulkWrite-updateOne-let.json SKIP BulkWrite updateOne with let option needs server >= 5.0 bulkWrite-updateOne-let.json SKIP BulkWrite updateOne with let option needs server >= 5.0
bulkWrite-updateOne-let.json FAIL BulkWrite updateOne with let option unsupported (server-side error) bulkWrite: error message "update spec requires u" does not contain "'update.let' is an unknown field" bulkWrite-updateOne-let.json FAIL BulkWrite updateOne with let option unsupported (server-side error) bulkWrite: error message "update spec requires u" does not contain "'update.let' is an unknown field"
bulkWrite-updateOne-pipeline.json FAIL UpdateOne in bulk write using pipelines MongoBulkWriteError: update spec requires u bulkWrite-updateOne-pipeline.json FAIL UpdateOne in bulk write using pipelines MongoBulkWriteError: update spec requires u
bulkWrite-updateOne-rawdata.json SKIP BulkWrite updateOne with rawData option needs server >= 8.2.0 bulkWrite-updateOne-rawdata.json SKIP BulkWrite updateOne with rawData option needs server >= 8.2.0
bulkWrite-updateOne-rawdata.json FAIL BulkWrite updateOne with rawData option on less than 8.2.0 - ignore argument MongoBulkWriteError: update spec requires u bulkWrite-updateOne-rawdata.json FAIL BulkWrite updateOne with rawData option on less than 8.2.0 - ignore argument MongoBulkWriteError: update spec requires u
bulkWrite-updateOne-sort.json SKIP BulkWrite updateOne with sort option needs server >= 8.0 bulkWrite-updateOne-sort.json SKIP BulkWrite updateOne with sort option needs server >= 8.0
bulkWrite-updateOne-sort.json FAIL BulkWrite updateOne with sort option unsupported (server-side error) events client0[0].command.updates[0].sort._id: missing from actual
bypassDocumentValidation.json FAIL Aggregate with $out passes bypassDocumentValidation: false MongoServerError: Unrecognized pipeline stage name: '$out' bypassDocumentValidation.json FAIL Aggregate with $out passes bypassDocumentValidation: false MongoServerError: Unrecognized pipeline stage name: '$out'
bypassDocumentValidation.json FAIL BulkWrite passes bypassDocumentValidation: false events client0[0].command.bypassDocumentValidation: missing from actual
bypassDocumentValidation.json FAIL FindOneAndReplace passes bypassDocumentValidation: false events client0[0].command.bypassDocumentValidation: missing from actual
bypassDocumentValidation.json FAIL FindOneAndUpdate passes bypassDocumentValidation: false events client0[0].command.bypassDocumentValidation: missing from actual
bypassDocumentValidation.json FAIL InsertMany passes bypassDocumentValidation: false events client0[0].command.bypassDocumentValidation: missing from actual
client-bulkWrite-delete-options.json SKIP * needs server >= 8.0 client-bulkWrite-delete-options.json SKIP * needs server >= 8.0
client-bulkWrite-delete-rawdata.json SKIP client bulk write delete with rawData option needs server >= 8.2.0 client-bulkWrite-delete-rawdata.json SKIP client bulk write delete with rawData option needs server >= 8.2.0
client-bulkWrite-delete-rawdata.json SKIP client bulk write delete with rawData option on less than 8.2.0 - ignore argument needs server >= 8.0 client-bulkWrite-delete-rawdata.json SKIP client bulk write delete with rawData option on less than 8.2.0 - ignore argument needs server >= 8.0
@@ -304,6 +321,8 @@ deleteMany-comment.json SKIP deleteMany with comment - pre 4.4 needs server <= 4
deleteMany-hint-serverError.json SKIP * needs server <= 4.3.3 deleteMany-hint-serverError.json SKIP * needs server <= 4.3.3
deleteMany-hint-unacknowledged.json SKIP Unacknowledged deleteMany with hint string fails with client-side error on pre-4.4 server needs server <= 4.2.99 deleteMany-hint-unacknowledged.json SKIP Unacknowledged deleteMany with hint string fails with client-side error on pre-4.4 server needs server <= 4.2.99
deleteMany-hint-unacknowledged.json SKIP Unacknowledged deleteMany with hint document fails with client-side error on pre-4.4 server needs server <= 4.2.99 deleteMany-hint-unacknowledged.json SKIP Unacknowledged deleteMany with hint document fails with client-side error on pre-4.4 server needs server <= 4.2.99
deleteMany-hint-unacknowledged.json FAIL Unacknowledged deleteMany with hint string on 4.4+ server events client0[0].command.writeConcern: missing from actual
deleteMany-hint-unacknowledged.json FAIL Unacknowledged deleteMany with hint document on 4.4+ server events client0[0].command.writeConcern: missing from actual
deleteMany-let.json SKIP deleteMany with let option needs server >= 5.0 deleteMany-let.json SKIP deleteMany with let option needs server >= 5.0
deleteMany-let.json FAIL deleteMany with let option unsupported (server-side error) deleteMany: expected an error, the operation succeeded deleteMany-let.json FAIL deleteMany with let option unsupported (server-side error) deleteMany: expected an error, the operation succeeded
deleteMany-rawdata.json SKIP deleteMany with rawData option needs server >= 8.2.0 deleteMany-rawdata.json SKIP deleteMany with rawData option needs server >= 8.2.0
@@ -313,6 +332,8 @@ deleteOne-errorResponse.json SKIP delete operations support errorResponse assert
deleteOne-hint-serverError.json SKIP * needs server <= 4.3.3 deleteOne-hint-serverError.json SKIP * needs server <= 4.3.3
deleteOne-hint-unacknowledged.json SKIP Unacknowledged deleteOne with hint string fails with client-side error on pre-4.4 server needs server <= 4.2.99 deleteOne-hint-unacknowledged.json SKIP Unacknowledged deleteOne with hint string fails with client-side error on pre-4.4 server needs server <= 4.2.99
deleteOne-hint-unacknowledged.json SKIP Unacknowledged deleteOne with hint document fails with client-side error on pre-4.4 server needs server <= 4.2.99 deleteOne-hint-unacknowledged.json SKIP Unacknowledged deleteOne with hint document fails with client-side error on pre-4.4 server needs server <= 4.2.99
deleteOne-hint-unacknowledged.json FAIL Unacknowledged deleteOne with hint string on 4.4+ server events client0[0].command.writeConcern: missing from actual
deleteOne-hint-unacknowledged.json FAIL Unacknowledged deleteOne with hint document on 4.4+ server events client0[0].command.writeConcern: missing from actual
deleteOne-let.json SKIP deleteOne with let option needs server >= 5.0 deleteOne-let.json SKIP deleteOne with let option needs server >= 5.0
deleteOne-let.json FAIL deleteOne with let option unsupported (server-side error) deleteOne: expected an error, the operation succeeded deleteOne-let.json FAIL deleteOne with let option unsupported (server-side error) deleteOne: expected an error, the operation succeeded
deleteOne-rawdata.json SKIP deleteOne with rawData option needs server >= 8.2.0 deleteOne-rawdata.json SKIP deleteOne with rawData option needs server >= 8.2.0
@@ -327,6 +348,7 @@ distinct.json FAIL Distinct with a filter MongoServerError: no such command: 'di
estimatedDocumentCount-comment.json SKIP estimatedDocumentCount with document comment needs server >= 4.4.14 estimatedDocumentCount-comment.json SKIP estimatedDocumentCount with document comment needs server >= 4.4.14
estimatedDocumentCount-comment.json FAIL estimatedDocumentCount with document comment - pre 4.4.14, server error estimatedDocumentCount: expected an error, the operation succeeded estimatedDocumentCount-comment.json FAIL estimatedDocumentCount with document comment - pre 4.4.14, server error estimatedDocumentCount: expected an error, the operation succeeded
estimatedDocumentCount-rawdata.json SKIP Estimated document count with rawData option needs server >= 8.2.0 estimatedDocumentCount-rawdata.json SKIP Estimated document count with rawData option needs server >= 8.2.0
estimatedDocumentCount.json FAIL estimatedDocumentCount with maxTimeMS events client0[0].command.maxTimeMS: expected 6000, got 10000
estimatedDocumentCount.json SKIP estimatedDocumentCount errors correctly--command error runner: failPoint estimatedDocumentCount.json SKIP estimatedDocumentCount errors correctly--command error runner: failPoint
estimatedDocumentCount.json SKIP estimatedDocumentCount errors correctly--socket error runner: failPoint estimatedDocumentCount.json SKIP estimatedDocumentCount errors correctly--socket error runner: failPoint
estimatedDocumentCount.json FAIL estimatedDocumentCount works correctly on views estimatedDocumentCount: expected 2, got 0 estimatedDocumentCount.json FAIL estimatedDocumentCount works correctly on views estimatedDocumentCount: expected 2, got 0
@@ -335,10 +357,12 @@ find-collation.json FAIL Find with a collation find: expected 1 elements, got 0
find-comment.json FAIL find with string comment find[0]: unexpected extra keys ["x"] find-comment.json FAIL find with string comment find[0]: unexpected extra keys ["x"]
find-comment.json FAIL find with document comment find[0]: unexpected extra keys ["x"] find-comment.json FAIL find with document comment find[0]: unexpected extra keys ["x"]
find-comment.json SKIP find with document comment - pre 4.4 needs server <= 4.2.99 find-comment.json SKIP find with document comment - pre 4.4 needs server <= 4.2.99
find-comment.json FAIL find with comment sets comment on getMore events client0[1].command.comment: missing from actual
find-comment.json SKIP find with comment does not set comment on getMore - pre 4.4 needs server <= 4.3.99 find-comment.json SKIP find with comment does not set comment on getMore - pre 4.4 needs server <= 4.3.99
find-let.json SKIP Find with let option needs server >= 5.0 find-let.json SKIP Find with let option needs server >= 5.0
find-let.json FAIL Find with let option unsupported (server-side error) find: expected an error, the operation succeeded find-let.json FAIL Find with let option unsupported (server-side error) find: expected an error, the operation succeeded
find-rawdata.json SKIP Find with rawData option needs server >= 8.2.0 find-rawdata.json SKIP Find with rawData option needs server >= 8.2.0
findOne.json FAIL FindOne with filter, sort, and skip events client0[0].command.sort._id: missing from actual
findOneAndDelete-collation.json FAIL FindOneAndDelete when one document matches with collation findOneAndDelete: expected a document, got null findOneAndDelete-collation.json FAIL FindOneAndDelete when one document matches with collation findOneAndDelete: expected a document, got null
findOneAndDelete-comment.json SKIP findOneAndDelete with comment - pre 4.4 needs server <= 4.2.99 findOneAndDelete-comment.json SKIP findOneAndDelete with comment - pre 4.4 needs server <= 4.2.99
findOneAndDelete-hint-serverError.json SKIP * needs server <= 4.3.3 findOneAndDelete-hint-serverError.json SKIP * needs server <= 4.3.3
@@ -399,16 +423,21 @@ insertOne-comment.json SKIP insertOne with comment - pre 4.4 needs server <= 4.2
insertOne-dots_and_dollars.json SKIP Inserting document with top-level dollar-prefixed key on 5.0+ server needs server >= 5.0 insertOne-dots_and_dollars.json SKIP Inserting document with top-level dollar-prefixed key on 5.0+ server needs server >= 5.0
insertOne-dots_and_dollars.json FAIL Inserting document with top-level dollar-prefixed key on pre-5.0 server yields server-side error insertOne: expected an error, the operation succeeded insertOne-dots_and_dollars.json FAIL Inserting document with top-level dollar-prefixed key on pre-5.0 server yields server-side error insertOne: expected an error, the operation succeeded
insertOne-dots_and_dollars.json FAIL Inserting document with dollar-prefixed key in _id yields server-side error insertOne: expected an error, the operation succeeded insertOne-dots_and_dollars.json FAIL Inserting document with dollar-prefixed key in _id yields server-side error insertOne: expected an error, the operation succeeded
insertOne-dots_and_dollars.json FAIL Unacknowledged write using dollar-prefixed or dotted keys may be silently rejected on pre-5.0 server events client0[0].command.writeConcern: missing from actual
insertOne-errorResponse.json SKIP insert operations support errorResponse assertions runner: failPoint insertOne-errorResponse.json SKIP insert operations support errorResponse assertions runner: failPoint
insertOne-rawdata.json SKIP insertOne with rawData option needs server >= 8.2.0 insertOne-rawdata.json SKIP insertOne with rawData option needs server >= 8.2.0
replaceOne-collation.json FAIL ReplaceOne when one document matches with collation replaceOne.matchedCount: expected 1, got 0 replaceOne-collation.json FAIL ReplaceOne when one document matches with collation replaceOne.matchedCount: expected 1, got 0
replaceOne-comment.json SKIP ReplaceOne with comment - pre 4.4 needs server <= 4.2.99 replaceOne-comment.json SKIP ReplaceOne with comment - pre 4.4 needs server <= 4.2.99
replaceOne-dots_and_dollars.json SKIP Replacing document with dollar-prefixed key in embedded doc on 5.0+ server needs server >= 5.0 replaceOne-dots_and_dollars.json SKIP Replacing document with dollar-prefixed key in embedded doc on 5.0+ server needs server >= 5.0
replaceOne-dots_and_dollars.json FAIL Replacing document with dollar-prefixed key in embedded doc on pre-5.0 server yields server-side error replaceOne: expected an error, the operation succeeded replaceOne-dots_and_dollars.json FAIL Replacing document with dollar-prefixed key in embedded doc on pre-5.0 server yields server-side error replaceOne: expected an error, the operation succeeded
replaceOne-dots_and_dollars.json FAIL Unacknowledged write using dollar-prefixed or dotted keys may be silently rejected on pre-5.0 server events client0[0].command.writeConcern: missing from actual
replaceOne-hint-unacknowledged.json FAIL Unacknowledged replaceOne with hint string on 4.2+ server events client0[0].command.writeConcern: missing from actual
replaceOne-hint-unacknowledged.json FAIL Unacknowledged replaceOne with hint document on 4.2+ server events client0[0].command.writeConcern: missing from actual
replaceOne-let.json SKIP ReplaceOne with let option needs server >= 5.0 replaceOne-let.json SKIP ReplaceOne with let option needs server >= 5.0
replaceOne-let.json FAIL ReplaceOne with let option unsupported (server-side error) replaceOne: expected an error, the operation succeeded replaceOne-let.json FAIL ReplaceOne with let option unsupported (server-side error) replaceOne: expected an error, the operation succeeded
replaceOne-rawdata.json SKIP ReplaceOne with rawData option needs server >= 8.2.0 replaceOne-rawdata.json SKIP ReplaceOne with rawData option needs server >= 8.2.0
replaceOne-sort.json SKIP ReplaceOne with sort option needs server >= 8.0 replaceOne-sort.json SKIP ReplaceOne with sort option needs server >= 8.0
replaceOne-sort.json FAIL replaceOne with sort option unsupported (server-side error) events client0[0].command.updates[0].sort._id: missing from actual
updateMany-arrayFilters.json FAIL UpdateMany when no documents match arrayFilters updateMany.modifiedCount: expected 0, got 2 updateMany-arrayFilters.json FAIL UpdateMany when no documents match arrayFilters updateMany.modifiedCount: expected 0, got 2
updateMany-arrayFilters.json FAIL UpdateMany when one document matches arrayFilters updateMany.modifiedCount: expected 1, got 2 updateMany-arrayFilters.json FAIL UpdateMany when one document matches arrayFilters updateMany.modifiedCount: expected 1, got 2
updateMany-arrayFilters.json FAIL UpdateMany when multiple documents match arrayFilters outcome crud-v1.coll[0].y: expected an array, got {"$[i]":{"b":2}} updateMany-arrayFilters.json FAIL UpdateMany when multiple documents match arrayFilters outcome crud-v1.coll[0].y: expected an array, got {"$[i]":{"b":2}}
@@ -418,6 +447,8 @@ updateMany-dots_and_dollars.json SKIP Updating document to set top-level dollar-
updateMany-dots_and_dollars.json SKIP Updating document to set top-level dotted key on 5.0+ server needs server >= 5.0 updateMany-dots_and_dollars.json SKIP Updating document to set top-level dotted key on 5.0+ server needs server >= 5.0
updateMany-dots_and_dollars.json SKIP Updating document to set dollar-prefixed key in embedded doc on 5.0+ server needs server >= 5.0 updateMany-dots_and_dollars.json SKIP Updating document to set dollar-prefixed key in embedded doc on 5.0+ server needs server >= 5.0
updateMany-dots_and_dollars.json SKIP Updating document to set dotted key in embedded doc on 5.0+ server needs server >= 5.0 updateMany-dots_and_dollars.json SKIP Updating document to set dotted key in embedded doc on 5.0+ server needs server >= 5.0
updateMany-hint-unacknowledged.json FAIL Unacknowledged updateMany with hint string on 4.2+ server events client0[0].command.writeConcern: missing from actual
updateMany-hint-unacknowledged.json FAIL Unacknowledged updateMany with hint document on 4.2+ server events client0[0].command.writeConcern: missing from actual
updateMany-let.json SKIP updateMany with let option needs server >= 5.0 updateMany-let.json SKIP updateMany with let option needs server >= 5.0
updateMany-let.json FAIL updateMany with let option unsupported (server-side error) updateMany: error message "update spec requires u" does not contain "'update.let' is an unknown field" updateMany-let.json FAIL updateMany with let option unsupported (server-side error) updateMany: error message "update spec requires u" does not contain "'update.let' is an unknown field"
updateMany-pipeline.json FAIL UpdateMany using pipelines MongoServerError: update spec requires u updateMany-pipeline.json FAIL UpdateMany using pipelines MongoServerError: update spec requires u
@@ -434,8 +465,11 @@ updateOne-dots_and_dollars.json SKIP Updating document to set top-level dotted k
updateOne-dots_and_dollars.json SKIP Updating document to set dollar-prefixed key in embedded doc on 5.0+ server needs server >= 5.0 updateOne-dots_and_dollars.json SKIP Updating document to set dollar-prefixed key in embedded doc on 5.0+ server needs server >= 5.0
updateOne-dots_and_dollars.json SKIP Updating document to set dotted key in embedded doc on 5.0+ server needs server >= 5.0 updateOne-dots_and_dollars.json SKIP Updating document to set dotted key in embedded doc on 5.0+ server needs server >= 5.0
updateOne-errorResponse.json SKIP update operations support errorResponse assertions runner: failPoint updateOne-errorResponse.json SKIP update operations support errorResponse assertions runner: failPoint
updateOne-hint-unacknowledged.json FAIL Unacknowledged updateOne with hint string on 4.2+ server events client0[0].command.writeConcern: missing from actual
updateOne-hint-unacknowledged.json FAIL Unacknowledged updateOne with hint document on 4.2+ server events client0[0].command.writeConcern: missing from actual
updateOne-let.json SKIP UpdateOne with let option needs server >= 5.0 updateOne-let.json SKIP UpdateOne with let option needs server >= 5.0
updateOne-let.json FAIL UpdateOne with let option unsupported (server-side error) updateOne: error message "update spec requires u" does not contain "'update.let' is an unknown field" updateOne-let.json FAIL UpdateOne with let option unsupported (server-side error) updateOne: error message "update spec requires u" does not contain "'update.let' is an unknown field"
updateOne-pipeline.json FAIL UpdateOne using pipelines MongoServerError: update spec requires u updateOne-pipeline.json FAIL UpdateOne using pipelines MongoServerError: update spec requires u
updateOne-rawdata.json SKIP UpdateOne with rawData option needs server >= 8.2.0 updateOne-rawdata.json SKIP UpdateOne with rawData option needs server >= 8.2.0
updateOne-sort.json SKIP UpdateOne with sort option needs server >= 8.0 updateOne-sort.json SKIP UpdateOne with sort option needs server >= 8.0
updateOne-sort.json FAIL updateOne with sort option unsupported (server-side error) events client0[0].command.updates[0].sort._id: missing from actual