Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
DRIVERS-1385: Test top-level errorLabel with writeConcernError (#1042)
Add unified tests that add RetryableWriteError as a top-level errorLabel of a writeConcernError, as is done by actual MongoDB server.
- Loading branch information
Showing
63 changed files
with
559 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
205 changes: 205 additions & 0 deletions
205
source/retryable-writes/tests/unified/bulkWrite-serverErrors.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,205 @@ | ||
{ | ||
"description": "retryable-writes bulkWrite serverErrors", | ||
"schemaVersion": "1.0", | ||
"runOnRequirements": [ | ||
{ | ||
"minServerVersion": "3.6", | ||
"topologies": [ | ||
"replicaset" | ||
] | ||
} | ||
], | ||
"createEntities": [ | ||
{ | ||
"client": { | ||
"id": "client0", | ||
"useMultipleMongoses": false, | ||
"observeEvents": [ | ||
"commandStartedEvent" | ||
] | ||
} | ||
}, | ||
{ | ||
"database": { | ||
"id": "database0", | ||
"client": "client0", | ||
"databaseName": "retryable-writes-tests" | ||
} | ||
}, | ||
{ | ||
"collection": { | ||
"id": "collection0", | ||
"database": "database0", | ||
"collectionName": "coll" | ||
} | ||
} | ||
], | ||
"initialData": [ | ||
{ | ||
"collectionName": "coll", | ||
"databaseName": "retryable-writes-tests", | ||
"documents": [ | ||
{ | ||
"_id": 1, | ||
"x": 11 | ||
}, | ||
{ | ||
"_id": 2, | ||
"x": 22 | ||
} | ||
] | ||
} | ||
], | ||
"tests": [ | ||
{ | ||
"description": "BulkWrite succeeds after retryable writeConcernError in first batch", | ||
"runOnRequirements": [ | ||
{ | ||
"minServerVersion": "4.0", | ||
"topologies": [ | ||
"replicaset" | ||
] | ||
}, | ||
{ | ||
"minServerVersion": "4.1.7", | ||
"topologies": [ | ||
"sharded-replicaset" | ||
] | ||
} | ||
], | ||
"operations": [ | ||
{ | ||
"name": "failPoint", | ||
"object": "testRunner", | ||
"arguments": { | ||
"client": "client0", | ||
"failPoint": { | ||
"configureFailPoint": "failCommand", | ||
"mode": { | ||
"times": 1 | ||
}, | ||
"data": { | ||
"failCommands": [ | ||
"insert" | ||
], | ||
"errorLabels": [ | ||
"RetryableWriteError" | ||
], | ||
"writeConcernError": { | ||
"code": 91, | ||
"errmsg": "Replication is being shut down" | ||
} | ||
} | ||
} | ||
} | ||
}, | ||
{ | ||
"name": "bulkWrite", | ||
"object": "collection0", | ||
"arguments": { | ||
"requests": [ | ||
{ | ||
"insertOne": { | ||
"document": { | ||
"_id": 3, | ||
"x": 33 | ||
} | ||
} | ||
}, | ||
{ | ||
"deleteOne": { | ||
"filter": { | ||
"_id": 2 | ||
} | ||
} | ||
} | ||
] | ||
}, | ||
"expectResult": { | ||
"deletedCount": 1, | ||
"insertedCount": 1, | ||
"matchedCount": 0, | ||
"modifiedCount": 0, | ||
"upsertedCount": 0, | ||
"insertedIds": { | ||
"$$unsetOrMatches": { | ||
"0": 3 | ||
} | ||
}, | ||
"upsertedIds": {} | ||
} | ||
} | ||
], | ||
"expectEvents": [ | ||
{ | ||
"client": "client0", | ||
"events": [ | ||
{ | ||
"commandStartedEvent": { | ||
"command": { | ||
"insert": "coll", | ||
"documents": [ | ||
{ | ||
"_id": 3, | ||
"x": 33 | ||
} | ||
] | ||
}, | ||
"commandName": "insert", | ||
"databaseName": "retryable-writes-tests" | ||
} | ||
}, | ||
{ | ||
"commandStartedEvent": { | ||
"command": { | ||
"insert": "coll", | ||
"documents": [ | ||
{ | ||
"_id": 3, | ||
"x": 33 | ||
} | ||
] | ||
}, | ||
"commandName": "insert", | ||
"databaseName": "retryable-writes-tests" | ||
} | ||
}, | ||
{ | ||
"commandStartedEvent": { | ||
"command": { | ||
"delete": "coll", | ||
"deletes": [ | ||
{ | ||
"q": { | ||
"_id": 2 | ||
}, | ||
"limit": 1 | ||
} | ||
] | ||
}, | ||
"commandName": "delete", | ||
"databaseName": "retryable-writes-tests" | ||
} | ||
} | ||
] | ||
} | ||
], | ||
"outcome": [ | ||
{ | ||
"collectionName": "coll", | ||
"databaseName": "retryable-writes-tests", | ||
"documents": [ | ||
{ | ||
"_id": 1, | ||
"x": 11 | ||
}, | ||
{ | ||
"_id": 3, | ||
"x": 33 | ||
} | ||
] | ||
} | ||
] | ||
} | ||
] | ||
} |
96 changes: 96 additions & 0 deletions
96
source/retryable-writes/tests/unified/bulkWrite-serverErrors.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
description: "retryable-writes bulkWrite serverErrors" | ||
|
||
schemaVersion: "1.0" | ||
|
||
runOnRequirements: | ||
- minServerVersion: "3.6" | ||
topologies: [ replicaset ] | ||
|
||
createEntities: | ||
- client: | ||
id: &client0 client0 | ||
useMultipleMongoses: false | ||
observeEvents: [ commandStartedEvent ] | ||
- database: | ||
id: &database0 database0 | ||
client: *client0 | ||
databaseName: &databaseName retryable-writes-tests | ||
- collection: | ||
id: &collection0 collection0 | ||
database: *database0 | ||
collectionName: &collectionName coll | ||
|
||
initialData: | ||
- collectionName: *collectionName | ||
databaseName: *databaseName | ||
documents: | ||
- { _id: 1, x: 11 } | ||
- { _id: 2, x: 22 } | ||
|
||
tests: | ||
- description: "BulkWrite succeeds after retryable writeConcernError in first batch" | ||
runOnRequirements: | ||
- minServerVersion: "4.0" | ||
topologies: [ replicaset ] | ||
- minServerVersion: "4.1.7" | ||
topologies: [ sharded-replicaset ] | ||
operations: | ||
- name: failPoint | ||
object: testRunner | ||
arguments: | ||
client: *client0 | ||
failPoint: | ||
configureFailPoint: failCommand | ||
mode: { times: 1 } | ||
data: | ||
failCommands: [ insert ] | ||
errorLabels: [RetryableWriteError] # top-level error labels | ||
writeConcernError: | ||
code: 91 # ShutdownInProgress | ||
errmsg: "Replication is being shut down" | ||
- name: bulkWrite | ||
object: *collection0 | ||
arguments: | ||
requests: | ||
- insertOne: | ||
document: { _id: 3, x: 33 } | ||
- deleteOne: | ||
filter: { _id: 2 } | ||
expectResult: | ||
deletedCount: 1 | ||
insertedCount: 1 | ||
matchedCount: 0 | ||
modifiedCount: 0 | ||
upsertedCount: 0 | ||
insertedIds: { $$unsetOrMatches: { 0: 3 } } | ||
upsertedIds: { } | ||
expectEvents: | ||
- client: *client0 | ||
events: | ||
- commandStartedEvent: | ||
command: | ||
insert: *collectionName | ||
documents: [{ _id: 3, x: 33 }] | ||
commandName: insert | ||
databaseName: *databaseName | ||
- commandStartedEvent: | ||
command: | ||
insert: *collectionName | ||
documents: [{ _id: 3, x: 33 }] | ||
commandName: insert | ||
databaseName: *databaseName | ||
- commandStartedEvent: | ||
command: | ||
delete: *collectionName | ||
deletes: | ||
- | ||
q: { _id: 2 } | ||
limit: 1 | ||
commandName: delete | ||
databaseName: *databaseName | ||
outcome: | ||
- collectionName: *collectionName | ||
databaseName: *databaseName | ||
documents: | ||
- { _id: 1, x: 11 } | ||
- { _id: 3, x: 33 } # The write was still applied |
Oops, something went wrong.