1239 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
			
		
		
	
	
			1239 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
| {
 | |
|   "description": "cursors are correctly pinned to connections for load-balanced clusters",
 | |
|   "schemaVersion": "1.3",
 | |
|   "runOnRequirements": [
 | |
|     {
 | |
|       "topologies": [
 | |
|         "load-balanced"
 | |
|       ]
 | |
|     }
 | |
|   ],
 | |
|   "createEntities": [
 | |
|     {
 | |
|       "client": {
 | |
|         "id": "client0",
 | |
|         "useMultipleMongoses": true,
 | |
|         "observeEvents": [
 | |
|           "commandStartedEvent",
 | |
|           "commandSucceededEvent",
 | |
|           "commandFailedEvent",
 | |
|           "connectionReadyEvent",
 | |
|           "connectionClosedEvent",
 | |
|           "connectionCheckedOutEvent",
 | |
|           "connectionCheckedInEvent"
 | |
|         ]
 | |
|       }
 | |
|     },
 | |
|     {
 | |
|       "database": {
 | |
|         "id": "database0",
 | |
|         "client": "client0",
 | |
|         "databaseName": "database0Name"
 | |
|       }
 | |
|     },
 | |
|     {
 | |
|       "collection": {
 | |
|         "id": "collection0",
 | |
|         "database": "database0",
 | |
|         "collectionName": "coll0"
 | |
|       }
 | |
|     },
 | |
|     {
 | |
|       "collection": {
 | |
|         "id": "collection1",
 | |
|         "database": "database0",
 | |
|         "collectionName": "coll1"
 | |
|       }
 | |
|     },
 | |
|     {
 | |
|       "collection": {
 | |
|         "id": "collection2",
 | |
|         "database": "database0",
 | |
|         "collectionName": "coll2"
 | |
|       }
 | |
|     }
 | |
|   ],
 | |
|   "initialData": [
 | |
|     {
 | |
|       "collectionName": "coll0",
 | |
|       "databaseName": "database0Name",
 | |
|       "documents": [
 | |
|         {
 | |
|           "_id": 1
 | |
|         },
 | |
|         {
 | |
|           "_id": 2
 | |
|         },
 | |
|         {
 | |
|           "_id": 3
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "collectionName": "coll1",
 | |
|       "databaseName": "database0Name",
 | |
|       "documents": []
 | |
|     },
 | |
|     {
 | |
|       "collectionName": "coll2",
 | |
|       "databaseName": "database0Name",
 | |
|       "documents": []
 | |
|     }
 | |
|   ],
 | |
|   "tests": [
 | |
|     {
 | |
|       "description": "no connection is pinned if all documents are returned in the initial batch",
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "createFindCursor",
 | |
|           "object": "collection0",
 | |
|           "arguments": {
 | |
|             "filter": {}
 | |
|           },
 | |
|           "saveResultAsEntity": "cursor0"
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 0
 | |
|           }
 | |
|         }
 | |
|       ],
 | |
|       "expectEvents": [
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "events": [
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "find": "coll0",
 | |
|                   "filter": {}
 | |
|                 },
 | |
|                 "commandName": "find"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "reply": {
 | |
|                   "cursor": {
 | |
|                     "id": 0,
 | |
|                     "firstBatch": {
 | |
|                       "$$type": "array"
 | |
|                     },
 | |
|                     "ns": {
 | |
|                       "$$type": "string"
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "find"
 | |
|               }
 | |
|             }
 | |
|           ]
 | |
|         },
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "eventType": "cmap",
 | |
|           "events": [
 | |
|             {
 | |
|               "connectionReadyEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "pinned connections are returned when the cursor is drained",
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "createFindCursor",
 | |
|           "object": "collection0",
 | |
|           "arguments": {
 | |
|             "filter": {},
 | |
|             "batchSize": 2
 | |
|           },
 | |
|           "saveResultAsEntity": "cursor0"
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 1
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "iterateUntilDocumentOrError",
 | |
|           "object": "cursor0",
 | |
|           "expectResult": {
 | |
|             "_id": 1
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "iterateUntilDocumentOrError",
 | |
|           "object": "cursor0",
 | |
|           "expectResult": {
 | |
|             "_id": 2
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "iterateUntilDocumentOrError",
 | |
|           "object": "cursor0",
 | |
|           "expectResult": {
 | |
|             "_id": 3
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 0
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "close",
 | |
|           "object": "cursor0"
 | |
|         }
 | |
|       ],
 | |
|       "expectEvents": [
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "events": [
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "find": "coll0",
 | |
|                   "filter": {},
 | |
|                   "batchSize": 2
 | |
|                 },
 | |
|                 "commandName": "find"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "reply": {
 | |
|                   "cursor": {
 | |
|                     "id": {
 | |
|                       "$$type": "long"
 | |
|                     },
 | |
|                     "firstBatch": {
 | |
|                       "$$type": "array"
 | |
|                     },
 | |
|                     "ns": {
 | |
|                       "$$type": "string"
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "find"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "getMore": {
 | |
|                     "$$type": "long"
 | |
|                   },
 | |
|                   "collection": "coll0"
 | |
|                 },
 | |
|                 "commandName": "getMore"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "reply": {
 | |
|                   "cursor": {
 | |
|                     "id": 0,
 | |
|                     "ns": {
 | |
|                       "$$type": "string"
 | |
|                     },
 | |
|                     "nextBatch": {
 | |
|                       "$$type": "array"
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "getMore"
 | |
|               }
 | |
|             }
 | |
|           ]
 | |
|         },
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "eventType": "cmap",
 | |
|           "events": [
 | |
|             {
 | |
|               "connectionReadyEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "pinned connections are returned to the pool when the cursor is closed",
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "createFindCursor",
 | |
|           "object": "collection0",
 | |
|           "arguments": {
 | |
|             "filter": {},
 | |
|             "batchSize": 2
 | |
|           },
 | |
|           "saveResultAsEntity": "cursor0"
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 1
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "close",
 | |
|           "object": "cursor0"
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 0
 | |
|           }
 | |
|         }
 | |
|       ],
 | |
|       "expectEvents": [
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "events": [
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "find": "coll0",
 | |
|                   "filter": {},
 | |
|                   "batchSize": 2
 | |
|                 },
 | |
|                 "commandName": "find"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "reply": {
 | |
|                   "cursor": {
 | |
|                     "id": {
 | |
|                       "$$type": "long"
 | |
|                     },
 | |
|                     "firstBatch": {
 | |
|                       "$$type": "array"
 | |
|                     },
 | |
|                     "ns": {
 | |
|                       "$$type": "string"
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "find"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "commandName": "killCursors"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "commandName": "killCursors"
 | |
|               }
 | |
|             }
 | |
|           ]
 | |
|         },
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "eventType": "cmap",
 | |
|           "events": [
 | |
|             {
 | |
|               "connectionReadyEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "pinned connections are not returned after an network error during getMore",
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "failPoint",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "failPoint": {
 | |
|               "configureFailPoint": "failCommand",
 | |
|               "mode": {
 | |
|                 "times": 1
 | |
|               },
 | |
|               "data": {
 | |
|                 "failCommands": [
 | |
|                   "getMore"
 | |
|                 ],
 | |
|                 "closeConnection": true
 | |
|               }
 | |
|             }
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "createFindCursor",
 | |
|           "object": "collection0",
 | |
|           "arguments": {
 | |
|             "filter": {},
 | |
|             "batchSize": 2
 | |
|           },
 | |
|           "saveResultAsEntity": "cursor0"
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 1
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "iterateUntilDocumentOrError",
 | |
|           "object": "cursor0",
 | |
|           "expectResult": {
 | |
|             "_id": 1
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "iterateUntilDocumentOrError",
 | |
|           "object": "cursor0",
 | |
|           "expectResult": {
 | |
|             "_id": 2
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "iterateUntilDocumentOrError",
 | |
|           "object": "cursor0",
 | |
|           "expectError": {
 | |
|             "isClientError": true
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 1
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "close",
 | |
|           "object": "cursor0"
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 0
 | |
|           }
 | |
|         }
 | |
|       ],
 | |
|       "expectEvents": [
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "events": [
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "find": "coll0",
 | |
|                   "filter": {},
 | |
|                   "batchSize": 2
 | |
|                 },
 | |
|                 "commandName": "find"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "reply": {
 | |
|                   "cursor": {
 | |
|                     "id": {
 | |
|                       "$$type": "long"
 | |
|                     },
 | |
|                     "firstBatch": {
 | |
|                       "$$type": "array"
 | |
|                     },
 | |
|                     "ns": {
 | |
|                       "$$type": "string"
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "find"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "getMore": {
 | |
|                     "$$type": "long"
 | |
|                   },
 | |
|                   "collection": "coll0"
 | |
|                 },
 | |
|                 "commandName": "getMore"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandFailedEvent": {
 | |
|                 "commandName": "getMore"
 | |
|               }
 | |
|             }
 | |
|           ]
 | |
|         },
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "eventType": "cmap",
 | |
|           "events": [
 | |
|             {
 | |
|               "connectionReadyEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionClosedEvent": {
 | |
|                 "reason": "error"
 | |
|               }
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "pinned connections are returned after a network error during a killCursors request",
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "failPoint",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "failPoint": {
 | |
|               "configureFailPoint": "failCommand",
 | |
|               "mode": {
 | |
|                 "times": 1
 | |
|               },
 | |
|               "data": {
 | |
|                 "failCommands": [
 | |
|                   "killCursors"
 | |
|                 ],
 | |
|                 "closeConnection": true
 | |
|               }
 | |
|             }
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "createFindCursor",
 | |
|           "object": "collection0",
 | |
|           "arguments": {
 | |
|             "filter": {},
 | |
|             "batchSize": 2
 | |
|           },
 | |
|           "saveResultAsEntity": "cursor0"
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 1
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "close",
 | |
|           "object": "cursor0"
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 0
 | |
|           }
 | |
|         }
 | |
|       ],
 | |
|       "expectEvents": [
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "events": [
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "find": "coll0",
 | |
|                   "filter": {},
 | |
|                   "batchSize": 2
 | |
|                 },
 | |
|                 "commandName": "find"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "reply": {
 | |
|                   "cursor": {
 | |
|                     "id": {
 | |
|                       "$$type": "long"
 | |
|                     },
 | |
|                     "firstBatch": {
 | |
|                       "$$type": "array"
 | |
|                     },
 | |
|                     "ns": {
 | |
|                       "$$type": "string"
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "find"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "commandName": "killCursors"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandFailedEvent": {
 | |
|                 "commandName": "killCursors"
 | |
|               }
 | |
|             }
 | |
|           ]
 | |
|         },
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "eventType": "cmap",
 | |
|           "events": [
 | |
|             {
 | |
|               "connectionReadyEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionClosedEvent": {
 | |
|                 "reason": "error"
 | |
|               }
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "pinned connections are not returned to the pool after a non-network error on getMore",
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "failPoint",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "failPoint": {
 | |
|               "configureFailPoint": "failCommand",
 | |
|               "mode": {
 | |
|                 "times": 1
 | |
|               },
 | |
|               "data": {
 | |
|                 "failCommands": [
 | |
|                   "getMore"
 | |
|                 ],
 | |
|                 "errorCode": 7
 | |
|               }
 | |
|             }
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "createFindCursor",
 | |
|           "object": "collection0",
 | |
|           "arguments": {
 | |
|             "filter": {},
 | |
|             "batchSize": 2
 | |
|           },
 | |
|           "saveResultAsEntity": "cursor0"
 | |
|         },
 | |
|         {
 | |
|           "name": "iterateUntilDocumentOrError",
 | |
|           "object": "cursor0",
 | |
|           "expectResult": {
 | |
|             "_id": 1
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "iterateUntilDocumentOrError",
 | |
|           "object": "cursor0",
 | |
|           "expectResult": {
 | |
|             "_id": 2
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "iterateUntilDocumentOrError",
 | |
|           "object": "cursor0",
 | |
|           "expectError": {
 | |
|             "errorCode": 7
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 1
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "close",
 | |
|           "object": "cursor0"
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 0
 | |
|           }
 | |
|         }
 | |
|       ],
 | |
|       "expectEvents": [
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "events": [
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "find": "coll0",
 | |
|                   "filter": {},
 | |
|                   "batchSize": 2
 | |
|                 },
 | |
|                 "commandName": "find"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "reply": {
 | |
|                   "cursor": {
 | |
|                     "id": {
 | |
|                       "$$type": "long"
 | |
|                     },
 | |
|                     "firstBatch": {
 | |
|                       "$$type": "array"
 | |
|                     },
 | |
|                     "ns": {
 | |
|                       "$$type": "string"
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "find"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "getMore": {
 | |
|                     "$$type": "long"
 | |
|                   },
 | |
|                   "collection": "coll0"
 | |
|                 },
 | |
|                 "commandName": "getMore"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandFailedEvent": {
 | |
|                 "commandName": "getMore"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "commandName": "killCursors"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "commandName": "killCursors"
 | |
|               }
 | |
|             }
 | |
|           ]
 | |
|         },
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "eventType": "cmap",
 | |
|           "events": [
 | |
|             {
 | |
|               "connectionReadyEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "aggregate pins the cursor to a connection",
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "aggregate",
 | |
|           "object": "collection0",
 | |
|           "arguments": {
 | |
|             "pipeline": [],
 | |
|             "batchSize": 2
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 0
 | |
|           }
 | |
|         }
 | |
|       ],
 | |
|       "expectEvents": [
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "events": [
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "aggregate": "coll0",
 | |
|                   "cursor": {
 | |
|                     "batchSize": 2
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "aggregate"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "commandName": "aggregate"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "getMore": {
 | |
|                     "$$type": "long"
 | |
|                   },
 | |
|                   "collection": "coll0"
 | |
|                 },
 | |
|                 "commandName": "getMore"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "reply": {
 | |
|                   "cursor": {
 | |
|                     "id": 0,
 | |
|                     "ns": {
 | |
|                       "$$type": "string"
 | |
|                     },
 | |
|                     "nextBatch": {
 | |
|                       "$$type": "array"
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "getMore"
 | |
|               }
 | |
|             }
 | |
|           ]
 | |
|         },
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "eventType": "cmap",
 | |
|           "events": [
 | |
|             {
 | |
|               "connectionReadyEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "listCollections pins the cursor to a connection",
 | |
|       "runOnRequirements": [
 | |
|         {
 | |
|           "serverless": "forbid"
 | |
|         }
 | |
|       ],
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "listCollections",
 | |
|           "object": "database0",
 | |
|           "arguments": {
 | |
|             "filter": {},
 | |
|             "batchSize": 2
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 0
 | |
|           }
 | |
|         }
 | |
|       ],
 | |
|       "expectEvents": [
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "events": [
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "listCollections": 1,
 | |
|                   "cursor": {
 | |
|                     "batchSize": 2
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "listCollections",
 | |
|                 "databaseName": "database0Name"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "commandName": "listCollections"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "getMore": {
 | |
|                     "$$type": "long"
 | |
|                   },
 | |
|                   "collection": {
 | |
|                     "$$type": "string"
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "getMore"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "reply": {
 | |
|                   "cursor": {
 | |
|                     "id": 0,
 | |
|                     "ns": {
 | |
|                       "$$type": "string"
 | |
|                     },
 | |
|                     "nextBatch": {
 | |
|                       "$$type": "array"
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "getMore"
 | |
|               }
 | |
|             }
 | |
|           ]
 | |
|         },
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "eventType": "cmap",
 | |
|           "events": [
 | |
|             {
 | |
|               "connectionReadyEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "listIndexes pins the cursor to a connection",
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "createIndex",
 | |
|           "object": "collection0",
 | |
|           "arguments": {
 | |
|             "keys": {
 | |
|               "x": 1
 | |
|             },
 | |
|             "name": "x_1"
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "createIndex",
 | |
|           "object": "collection0",
 | |
|           "arguments": {
 | |
|             "keys": {
 | |
|               "y": 1
 | |
|             },
 | |
|             "name": "y_1"
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "listIndexes",
 | |
|           "object": "collection0",
 | |
|           "arguments": {
 | |
|             "batchSize": 2
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 0
 | |
|           }
 | |
|         }
 | |
|       ],
 | |
|       "expectEvents": [
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "events": [
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "createIndexes": "coll0",
 | |
|                   "indexes": [
 | |
|                     {
 | |
|                       "name": "x_1",
 | |
|                       "key": {
 | |
|                         "x": 1
 | |
|                       }
 | |
|                     }
 | |
|                   ]
 | |
|                 },
 | |
|                 "commandName": "createIndexes"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "commandName": "createIndexes"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "createIndexes": "coll0",
 | |
|                   "indexes": [
 | |
|                     {
 | |
|                       "name": "y_1",
 | |
|                       "key": {
 | |
|                         "y": 1
 | |
|                       }
 | |
|                     }
 | |
|                   ]
 | |
|                 },
 | |
|                 "commandName": "createIndexes"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "commandName": "createIndexes"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "listIndexes": "coll0",
 | |
|                   "cursor": {
 | |
|                     "batchSize": 2
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "listIndexes",
 | |
|                 "databaseName": "database0Name"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "commandName": "listIndexes"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "command": {
 | |
|                   "getMore": {
 | |
|                     "$$type": "long"
 | |
|                   },
 | |
|                   "collection": "coll0"
 | |
|                 },
 | |
|                 "commandName": "getMore"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "reply": {
 | |
|                   "cursor": {
 | |
|                     "id": 0,
 | |
|                     "ns": {
 | |
|                       "$$type": "string"
 | |
|                     },
 | |
|                     "nextBatch": {
 | |
|                       "$$type": "array"
 | |
|                     }
 | |
|                   }
 | |
|                 },
 | |
|                 "commandName": "getMore"
 | |
|               }
 | |
|             }
 | |
|           ]
 | |
|         },
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "eventType": "cmap",
 | |
|           "events": [
 | |
|             {
 | |
|               "connectionReadyEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "description": "change streams pin to a connection",
 | |
|       "runOnRequirements": [
 | |
|         {
 | |
|           "serverless": "forbid"
 | |
|         }
 | |
|       ],
 | |
|       "operations": [
 | |
|         {
 | |
|           "name": "createChangeStream",
 | |
|           "object": "collection0",
 | |
|           "arguments": {
 | |
|             "pipeline": []
 | |
|           },
 | |
|           "saveResultAsEntity": "changeStream0"
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 1
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "close",
 | |
|           "object": "changeStream0"
 | |
|         },
 | |
|         {
 | |
|           "name": "assertNumberConnectionsCheckedOut",
 | |
|           "object": "testRunner",
 | |
|           "arguments": {
 | |
|             "client": "client0",
 | |
|             "connections": 0
 | |
|           }
 | |
|         }
 | |
|       ],
 | |
|       "expectEvents": [
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "events": [
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "commandName": "aggregate"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "commandName": "aggregate"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandStartedEvent": {
 | |
|                 "commandName": "killCursors"
 | |
|               }
 | |
|             },
 | |
|             {
 | |
|               "commandSucceededEvent": {
 | |
|                 "commandName": "killCursors"
 | |
|               }
 | |
|             }
 | |
|           ]
 | |
|         },
 | |
|         {
 | |
|           "client": "client0",
 | |
|           "eventType": "cmap",
 | |
|           "events": [
 | |
|             {
 | |
|               "connectionReadyEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedOutEvent": {}
 | |
|             },
 | |
|             {
 | |
|               "connectionCheckedInEvent": {}
 | |
|             }
 | |
|           ]
 | |
|         }
 | |
|       ]
 | |
|     }
 | |
|   ]
 | |
| }
 |