176 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| runOn:
 | |
|     -
 | |
|         minServerVersion: "4.0"
 | |
|         topology: ["replicaset"]
 | |
|     -
 | |
|         minServerVersion: "4.1.8"
 | |
|         topology: ["sharded"]
 | |
| 
 | |
| database_name: &database_name "transaction-tests"
 | |
| collection_name: &collection_name "test"
 | |
| 
 | |
| data:
 | |
|   - _id: 1
 | |
|     count: 0
 | |
| 
 | |
| tests:
 | |
|   - description: causal consistency
 | |
|     clientOptions:
 | |
|       retryWrites: false
 | |
|     operations:
 | |
|       # Update a document without a transaction.
 | |
|       - &updateOne
 | |
|         name: updateOne
 | |
|         object: collection
 | |
|         arguments:
 | |
|           session: session0
 | |
|           filter: {_id: 1}
 | |
|           update:
 | |
|             $inc: {count: 1}
 | |
|         result:
 | |
|           matchedCount: 1
 | |
|           modifiedCount: 1
 | |
|           upsertedCount: 0
 | |
|       # Updating the same document inside a transaction.
 | |
|       # Casual consistency ensures that the transaction snapshot is causally
 | |
|       # after the first updateOne.
 | |
|       - name: startTransaction
 | |
|         object: session0
 | |
|       - *updateOne
 | |
|       - name: commitTransaction
 | |
|         object: session0
 | |
| 
 | |
|     expectations:
 | |
|       - command_started_event:
 | |
|           command:
 | |
|             update: *collection_name
 | |
|             updates:
 | |
|               - q: {_id: 1}
 | |
|                 u: {$inc: {count: 1}}
 | |
|             ordered: true
 | |
|             lsid: session0
 | |
|             readConcern:
 | |
|             txnNumber:
 | |
|             startTransaction:
 | |
|             autocommit:
 | |
|             writeConcern:
 | |
|           command_name: update
 | |
|           database_name: *database_name
 | |
|       - command_started_event:
 | |
|           command:
 | |
|             update: *collection_name
 | |
|             updates:
 | |
|               - q: {_id: 1}
 | |
|                 u: {$inc: {count: 1}}
 | |
|             ordered: true
 | |
|             readConcern:
 | |
|               afterClusterTime: 42
 | |
|             lsid: session0
 | |
|             txnNumber:
 | |
|               $numberLong: "1"
 | |
|             startTransaction: true
 | |
|             autocommit: false
 | |
|             writeConcern:
 | |
|           command_name: update
 | |
|           database_name: *database_name
 | |
|       - command_started_event:
 | |
|           command:
 | |
|             commitTransaction: 1
 | |
|             lsid: session0
 | |
|             txnNumber:
 | |
|               $numberLong: "1"
 | |
|             startTransaction:
 | |
|             autocommit: false
 | |
|             writeConcern:
 | |
|           command_name: commitTransaction
 | |
|           database_name: admin
 | |
| 
 | |
|     outcome:
 | |
|       collection:
 | |
|         data:
 | |
|           - _id: 1
 | |
|             count: 2
 | |
| 
 | |
|   - description: causal consistency disabled
 | |
|     clientOptions:
 | |
|       retryWrites: false
 | |
|     sessionOptions:
 | |
|       session0:
 | |
|         causalConsistency: false
 | |
| 
 | |
|     operations:
 | |
|       # Insert a document without a transaction.
 | |
|       - name: insertOne
 | |
|         object: collection
 | |
|         arguments:
 | |
|           session: session0
 | |
|           document:
 | |
|             _id: 2
 | |
|         result:
 | |
|           insertedId: 2
 | |
|       - name: startTransaction
 | |
|         object: session0
 | |
|       - name: updateOne
 | |
|         object: collection
 | |
|         arguments:
 | |
|           session: session0
 | |
|           filter: {_id: 1}
 | |
|           update:
 | |
|             $inc: {count: 1}
 | |
|         result:
 | |
|           matchedCount: 1
 | |
|           modifiedCount: 1
 | |
|           upsertedCount: 0
 | |
|       - name: commitTransaction
 | |
|         object: session0
 | |
| 
 | |
|     expectations:
 | |
|       - command_started_event:
 | |
|           command:
 | |
|             insert: *collection_name
 | |
|             documents:
 | |
|               - _id: 2
 | |
|             ordered: true
 | |
|             readConcern:
 | |
|             lsid: session0
 | |
|             txnNumber:
 | |
|             autocommit:
 | |
|             writeConcern:
 | |
|           command_name: insert
 | |
|           database_name: *database_name
 | |
|       - command_started_event:
 | |
|           command:
 | |
|             update: *collection_name
 | |
|             updates:
 | |
|               - q: {_id: 1}
 | |
|                 u: {$inc: {count: 1}}
 | |
|             ordered: true
 | |
|             # No afterClusterTime
 | |
|             readConcern:
 | |
|             lsid: session0
 | |
|             txnNumber:
 | |
|               $numberLong: "1"
 | |
|             startTransaction: true
 | |
|             autocommit: false
 | |
|             writeConcern:
 | |
|           command_name: update
 | |
|           database_name: *database_name
 | |
|       - command_started_event:
 | |
|           command:
 | |
|             commitTransaction: 1
 | |
|             lsid: session0
 | |
|             txnNumber:
 | |
|               $numberLong: "1"
 | |
|             startTransaction:
 | |
|             autocommit: false
 | |
|             writeConcern:
 | |
|           command_name: commitTransaction
 | |
|           database_name: admin
 | |
| 
 | |
|     outcome:
 | |
|       collection:
 | |
|         data:
 | |
|           - _id: 1
 | |
|             count: 1
 | |
|           - _id: 2
 |