runOn: - minServerVersion: "4.0" topology: ["single", "replicaset"] - minServerVersion: "4.1.7" topology: ["sharded", "load-balanced"] database_name: &database_name "retryable-reads-tests" collection_name: &collection_name "coll" data: - {_id: 1, x: 0} - {_id: 2, x: 1} - {_id: 3, x: 2} tests: - description: "MapReduce succeeds with retry on" operations: - &operation_succeeds <<: &operation name: mapReduce object: collection arguments: map: { $code: "function inc() { return emit(0, this.x + 1) }" } reduce: { $code: "function sum(key, values) { return values.reduce((acc, x) => acc + x); }" } out: { inline: 1 } result: [ { "_id" : 0, "value" : 6 } ] expectations: - &command_started_event command_started_event: command: mapReduce: *collection_name map: { $code: "function inc() { return emit(0, this.x + 1) }" } reduce: { $code: "function sum(key, values) { return values.reduce((acc, x) => acc + x); }" } out: { inline: 1 } database_name: *database_name - description: "MapReduce fails with retry on" failPoint: &failCommand_failPoint configureFailPoint: failCommand mode: { times: 1 } data: failCommands: [mapReduce] closeConnection: true operations: - &operation_fails <<: *operation error: true expectations: - *command_started_event - description: "MapReduce fails with retry off" clientOptions: retryReads: false failPoint: *failCommand_failPoint operations: [*operation_fails] expectations: - *command_started_event