...

Text file src/go.mongodb.org/mongo-driver/testdata/convenient-transactions/commit.yml

Documentation: go.mongodb.org/mongo-driver/testdata/convenient-transactions

     1runOn:
     2    -
     3        minServerVersion: "4.0"
     4        topology: ["replicaset"]
     5    -
     6        minServerVersion: "4.1.8"
     7        topology: ["sharded"]
     8
     9database_name: &database_name "withTransaction-tests"
    10collection_name: &collection_name "test"
    11
    12data: []
    13
    14tests:
    15  -
    16    description: withTransaction commits after callback returns
    17    useMultipleMongoses: true
    18    operations:
    19      -
    20        name: withTransaction
    21        object: session0
    22        arguments:
    23          callback:
    24            operations:
    25              -
    26                name: insertOne
    27                object: collection
    28                arguments:
    29                  session: session0
    30                  document: { _id: 1 }
    31                result:
    32                  insertedId: 1
    33              -
    34                name: insertOne
    35                object: collection
    36                arguments:
    37                  session: session0
    38                  document: { _id: 2 }
    39                result:
    40                  insertedId: 2
    41    expectations:
    42      -
    43        command_started_event:
    44          command:
    45            insert: *collection_name
    46            documents:
    47              - { _id: 1 }
    48            ordered: true
    49            lsid: session0
    50            txnNumber: { $numberLong: "1" }
    51            startTransaction: true
    52            autocommit: false
    53            # omitted fields
    54            readConcern: ~
    55            writeConcern: ~
    56          command_name: insert
    57          database_name: *database_name
    58      -
    59        command_started_event:
    60          command:
    61            insert: *collection_name
    62            documents:
    63              - { _id: 2 }
    64            ordered: true
    65            lsid: session0
    66            txnNumber: { $numberLong: "1" }
    67            autocommit: false
    68            # omitted fields
    69            readConcern: ~
    70            startTransaction: ~
    71            writeConcern: ~
    72          command_name: insert
    73          database_name: *database_name
    74      -
    75        command_started_event:
    76          command:
    77            commitTransaction: 1
    78            lsid: session0
    79            txnNumber: { $numberLong: "1" }
    80            autocommit: false
    81            # omitted fields
    82            readConcern: ~
    83            startTransaction: ~
    84            writeConcern: ~
    85          command_name: commitTransaction
    86          database_name: admin
    87    outcome:
    88      collection:
    89        data:
    90          - { _id: 1 }
    91          - { _id: 2 }
    92  -
    93    # In this scenario, the callback commits the transaction originally started
    94    # by withTransaction and starts a second transaction before returning. Since
    95    # withTransaction only examines the session's state, it should commit that
    96    # second transaction after the callback returns.
    97    description: withTransaction commits after callback returns (second transaction)
    98    useMultipleMongoses: true
    99    operations:
   100      -
   101        name: withTransaction
   102        object: session0
   103        arguments:
   104          callback:
   105            operations:
   106              -
   107                name: insertOne
   108                object: collection
   109                arguments:
   110                  session: session0
   111                  document: { _id: 1 }
   112                result:
   113                  insertedId: 1
   114              -
   115                name: commitTransaction
   116                object: session0
   117              -
   118                name: startTransaction
   119                object: session0
   120              -
   121                name: insertOne
   122                object: collection
   123                arguments:
   124                  session: session0
   125                  document: { _id: 2 }
   126                result:
   127                  insertedId: 2
   128    expectations:
   129      -
   130        command_started_event:
   131          command:
   132            insert: *collection_name
   133            documents:
   134              - { _id: 1 }
   135            ordered: true
   136            lsid: session0
   137            txnNumber: { $numberLong: "1" }
   138            startTransaction: true
   139            autocommit: false
   140            # omitted fields
   141            readConcern: ~
   142            writeConcern: ~
   143          command_name: insert
   144          database_name: *database_name
   145      -
   146        command_started_event:
   147          command:
   148            commitTransaction: 1
   149            lsid: session0
   150            txnNumber: { $numberLong: "1" }
   151            autocommit: false
   152            # omitted fields
   153            readConcern: ~
   154            startTransaction: ~
   155            writeConcern: ~
   156          command_name: commitTransaction
   157          database_name: admin
   158      -
   159        command_started_event:
   160          command:
   161            insert: *collection_name
   162            documents:
   163              - { _id: 2 }
   164            ordered: true
   165            lsid: session0
   166            # second transaction will be causally consistent with the first
   167            readConcern: { afterClusterTime: 42 }
   168            # txnNumber is incremented for the second transaction
   169            txnNumber: { $numberLong: "2" }
   170            startTransaction: true
   171            autocommit: false
   172            # omitted fields
   173            writeConcern: ~
   174          command_name: insert
   175          database_name: *database_name
   176      -
   177        command_started_event:
   178          command:
   179            commitTransaction: 1
   180            lsid: session0
   181            txnNumber: { $numberLong: "2" }
   182            autocommit: false
   183            # omitted fields
   184            readConcern: ~
   185            startTransaction: ~
   186            writeConcern: ~
   187          command_name: commitTransaction
   188          database_name: admin
   189    outcome:
   190      collection:
   191        data:
   192          - { _id: 1 }
   193          - { _id: 2 }

View as plain text