407 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
			
		
		
	
	
			407 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
| {
 | |
|   "runOn": [
 | |
|     {
 | |
|       "minServerVersion": "4.0",
 | |
|       "topology": [
 | |
|         "single",
 | |
|         "replicaset"
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "minServerVersion": "4.1.7",
 | |
|       "topology": [
 | |
|         "sharded",
 | |
|         "load-balanced"
 | |
|       ]
 | |
|     }
 | |
|   ],
 | |
|   "database_name": "retryable-reads-tests",
 | |
|   "collection_name": "coll",
 | |
|   "data": [
 | |
|     {
 | |
|       "_id": 1,
 | |
|       "x": 11
 | |
|     },
 | |
|     {
 | |
|       "_id": 2,
 | |
|       "x": 22
 | |
|     },
 | |
|     {
 | |
|       "_id": 3,
 | |
|       "x": 33
 | |
|     }
 | |
|   ],
 | |
|   "tests": [
 | |
|     {
 | |
|       "description": "Aggregate succeeds on first attempt",
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "aggregate",
 | |
|           "object": "collection",
 | |
|           "arguments": {
 | |
|             "pipeline": [
 | |
|               {
 | |
|                 "$match": {
 | |
|                   "_id": {
 | |
|                     "$gt": 1
 | |
|                   }
 | |
|                 }
 | |
|               },
 | |
|               {
 | |
|                 "$sort": {
 | |
|                   "x": 1
 | |
|                 }
 | |
|               }
 | |
|             ]
 | |
|           },
 | |
|           "result": [
 | |
|             {
 | |
|               "_id": 2,
 | |
|               "x": 22
 | |
|             },
 | |
|             {
 | |
|               "_id": 3,
 | |
|               "x": 33
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ],
 | |
|       "expectations": [
 | |
|         {
 | |
|           "command_started_event": {
 | |
|             "command": {
 | |
|               "aggregate": "coll",
 | |
|               "pipeline": [
 | |
|                 {
 | |
|                   "$match": {
 | |
|                     "_id": {
 | |
|                       "$gt": 1
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 {
 | |
|                   "$sort": {
 | |
|                     "x": 1
 | |
|                   }
 | |
|                 }
 | |
|               ]
 | |
|             },
 | |
|             "database_name": "retryable-reads-tests"
 | |
|           }
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "Aggregate succeeds on second attempt",
 | |
|       "failPoint": {
 | |
|         "configureFailPoint": "failCommand",
 | |
|         "mode": {
 | |
|           "times": 1
 | |
|         },
 | |
|         "data": {
 | |
|           "failCommands": [
 | |
|             "aggregate"
 | |
|           ],
 | |
|           "closeConnection": true
 | |
|         }
 | |
|       },
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "aggregate",
 | |
|           "object": "collection",
 | |
|           "arguments": {
 | |
|             "pipeline": [
 | |
|               {
 | |
|                 "$match": {
 | |
|                   "_id": {
 | |
|                     "$gt": 1
 | |
|                   }
 | |
|                 }
 | |
|               },
 | |
|               {
 | |
|                 "$sort": {
 | |
|                   "x": 1
 | |
|                 }
 | |
|               }
 | |
|             ]
 | |
|           },
 | |
|           "result": [
 | |
|             {
 | |
|               "_id": 2,
 | |
|               "x": 22
 | |
|             },
 | |
|             {
 | |
|               "_id": 3,
 | |
|               "x": 33
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ],
 | |
|       "expectations": [
 | |
|         {
 | |
|           "command_started_event": {
 | |
|             "command": {
 | |
|               "aggregate": "coll",
 | |
|               "pipeline": [
 | |
|                 {
 | |
|                   "$match": {
 | |
|                     "_id": {
 | |
|                       "$gt": 1
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 {
 | |
|                   "$sort": {
 | |
|                     "x": 1
 | |
|                   }
 | |
|                 }
 | |
|               ]
 | |
|             },
 | |
|             "database_name": "retryable-reads-tests"
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "command_started_event": {
 | |
|             "command": {
 | |
|               "aggregate": "coll",
 | |
|               "pipeline": [
 | |
|                 {
 | |
|                   "$match": {
 | |
|                     "_id": {
 | |
|                       "$gt": 1
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 {
 | |
|                   "$sort": {
 | |
|                     "x": 1
 | |
|                   }
 | |
|                 }
 | |
|               ]
 | |
|             },
 | |
|             "database_name": "retryable-reads-tests"
 | |
|           }
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "Aggregate fails on first attempt",
 | |
|       "clientOptions": {
 | |
|         "retryReads": false
 | |
|       },
 | |
|       "failPoint": {
 | |
|         "configureFailPoint": "failCommand",
 | |
|         "mode": {
 | |
|           "times": 1
 | |
|         },
 | |
|         "data": {
 | |
|           "failCommands": [
 | |
|             "aggregate"
 | |
|           ],
 | |
|           "closeConnection": true
 | |
|         }
 | |
|       },
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "aggregate",
 | |
|           "object": "collection",
 | |
|           "arguments": {
 | |
|             "pipeline": [
 | |
|               {
 | |
|                 "$match": {
 | |
|                   "_id": {
 | |
|                     "$gt": 1
 | |
|                   }
 | |
|                 }
 | |
|               },
 | |
|               {
 | |
|                 "$sort": {
 | |
|                   "x": 1
 | |
|                 }
 | |
|               }
 | |
|             ]
 | |
|           },
 | |
|           "error": true
 | |
|         }
 | |
|       ],
 | |
|       "expectations": [
 | |
|         {
 | |
|           "command_started_event": {
 | |
|             "command": {
 | |
|               "aggregate": "coll",
 | |
|               "pipeline": [
 | |
|                 {
 | |
|                   "$match": {
 | |
|                     "_id": {
 | |
|                       "$gt": 1
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 {
 | |
|                   "$sort": {
 | |
|                     "x": 1
 | |
|                   }
 | |
|                 }
 | |
|               ]
 | |
|             },
 | |
|             "database_name": "retryable-reads-tests"
 | |
|           }
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "Aggregate fails on second attempt",
 | |
|       "failPoint": {
 | |
|         "configureFailPoint": "failCommand",
 | |
|         "mode": {
 | |
|           "times": 2
 | |
|         },
 | |
|         "data": {
 | |
|           "failCommands": [
 | |
|             "aggregate"
 | |
|           ],
 | |
|           "closeConnection": true
 | |
|         }
 | |
|       },
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "aggregate",
 | |
|           "object": "collection",
 | |
|           "arguments": {
 | |
|             "pipeline": [
 | |
|               {
 | |
|                 "$match": {
 | |
|                   "_id": {
 | |
|                     "$gt": 1
 | |
|                   }
 | |
|                 }
 | |
|               },
 | |
|               {
 | |
|                 "$sort": {
 | |
|                   "x": 1
 | |
|                 }
 | |
|               }
 | |
|             ]
 | |
|           },
 | |
|           "error": true
 | |
|         }
 | |
|       ],
 | |
|       "expectations": [
 | |
|         {
 | |
|           "command_started_event": {
 | |
|             "command": {
 | |
|               "aggregate": "coll",
 | |
|               "pipeline": [
 | |
|                 {
 | |
|                   "$match": {
 | |
|                     "_id": {
 | |
|                       "$gt": 1
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 {
 | |
|                   "$sort": {
 | |
|                     "x": 1
 | |
|                   }
 | |
|                 }
 | |
|               ]
 | |
|             },
 | |
|             "database_name": "retryable-reads-tests"
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "command_started_event": {
 | |
|             "command": {
 | |
|               "aggregate": "coll",
 | |
|               "pipeline": [
 | |
|                 {
 | |
|                   "$match": {
 | |
|                     "_id": {
 | |
|                       "$gt": 1
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 {
 | |
|                   "$sort": {
 | |
|                     "x": 1
 | |
|                   }
 | |
|                 }
 | |
|               ]
 | |
|             },
 | |
|             "database_name": "retryable-reads-tests"
 | |
|           }
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "Aggregate with $out does not retry",
 | |
|       "failPoint": {
 | |
|         "configureFailPoint": "failCommand",
 | |
|         "mode": {
 | |
|           "times": 1
 | |
|         },
 | |
|         "data": {
 | |
|           "failCommands": [
 | |
|             "aggregate"
 | |
|           ],
 | |
|           "closeConnection": true
 | |
|         }
 | |
|       },
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "aggregate",
 | |
|           "object": "collection",
 | |
|           "arguments": {
 | |
|             "pipeline": [
 | |
|               {
 | |
|                 "$match": {
 | |
|                   "_id": {
 | |
|                     "$gt": 1
 | |
|                   }
 | |
|                 }
 | |
|               },
 | |
|               {
 | |
|                 "$sort": {
 | |
|                   "x": 1
 | |
|                 }
 | |
|               },
 | |
|               {
 | |
|                 "$out": "output-collection"
 | |
|               }
 | |
|             ]
 | |
|           },
 | |
|           "error": true
 | |
|         }
 | |
|       ],
 | |
|       "expectations": [
 | |
|         {
 | |
|           "command_started_event": {
 | |
|             "command": {
 | |
|               "aggregate": "coll",
 | |
|               "pipeline": [
 | |
|                 {
 | |
|                   "$match": {
 | |
|                     "_id": {
 | |
|                       "$gt": 1
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 {
 | |
|                   "$sort": {
 | |
|                     "x": 1
 | |
|                   }
 | |
|                 },
 | |
|                 {
 | |
|                   "$out": "output-collection"
 | |
|                 }
 | |
|               ]
 | |
|             },
 | |
|             "command_name": "aggregate",
 | |
|             "database_name": "retryable-reads-tests"
 | |
|           }
 | |
|         }
 | |
|       ]
 | |
|     }
 | |
|   ]
 | |
| }
 |