...

Text file src/go.mongodb.org/mongo-driver/testdata/sessions/snapshot-sessions.yml

Documentation: go.mongodb.org/mongo-driver/testdata/sessions

     1description: snapshot-sessions
     2
     3schemaVersion: "1.0"
     4
     5runOnRequirements:
     6  - minServerVersion: "5.0"
     7    topologies: [replicaset, sharded-replicaset]
     8
     9createEntities:
    10  - client:
    11      id: &client0 client0
    12      observeEvents: [ commandStartedEvent]
    13      ignoreCommandMonitoringEvents: [ findAndModify, insert, update ]
    14  - database:
    15      id: &database0 database0
    16      client: *client0
    17      databaseName: &database0Name database0
    18  - collection:
    19      id: &collection0 collection0
    20      database: *database0
    21      collectionName: &collection0Name collection0
    22      collectionOptions:
    23        writeConcern: { w: majority }
    24  - session:
    25      id: session0
    26      client: client0
    27      sessionOptions:
    28        snapshot: true
    29  - session:
    30      id: session1
    31      client: client0
    32      sessionOptions:
    33        snapshot: true
    34
    35initialData:
    36  - collectionName: *collection0Name
    37    databaseName: *database0Name
    38    documents:
    39      - { _id: 1, x: 11 }
    40      - { _id: 2, x: 11 }
    41
    42tests:
    43- description: Find operation with snapshot
    44  operations:
    45  - name: find
    46    object: collection0
    47    arguments:
    48      session: session0
    49      filter: { _id: 1 }
    50    expectResult:
    51      - {_id: 1, x: 11}
    52  - name: findOneAndUpdate
    53    object: collection0
    54    arguments:
    55      filter: { _id: 1 }
    56      update: { $inc: { x: 1 } }
    57      returnDocument: After
    58    expectResult: { _id: 1, x: 12 }
    59  - name: find
    60    object: collection0
    61    arguments:
    62      session: session1
    63      filter: { _id: 1 }
    64    expectResult:
    65      - { _id: 1, x: 12 }
    66  - name: findOneAndUpdate
    67    object: collection0
    68    arguments:
    69      filter: { _id: 1 }
    70      update: { $inc: { x: 1 } }
    71      returnDocument: After
    72    expectResult: { _id: 1, x: 13 }
    73  - name: find
    74    object: collection0
    75    arguments:
    76      filter: { _id: 1 }
    77    expectResult:
    78    - { _id: 1, x: 13 }
    79  - name: find
    80    object: collection0
    81    arguments:
    82      session: session0
    83      filter: { _id: 1 }
    84    expectResult:
    85    - {_id: 1, x: 11}
    86  - name: find
    87    object: collection0
    88    arguments:
    89      session: session1
    90      filter: { _id: 1 }
    91    expectResult:
    92    - {_id: 1, x: 12}
    93  expectEvents:
    94  - client: client0
    95    events:
    96    - commandStartedEvent:
    97        command:
    98          find: collection0
    99          readConcern:
   100            level: snapshot
   101            atClusterTime:
   102              "$$exists": false
   103    - commandStartedEvent:
   104        command:
   105          find: collection0
   106          readConcern:
   107            level: snapshot
   108            atClusterTime:
   109              "$$exists": false
   110    - commandStartedEvent:
   111        command:
   112          find: collection0
   113          readConcern:
   114            "$$exists": false
   115    - commandStartedEvent:
   116        command:
   117          find: collection0
   118          readConcern:
   119            level: snapshot
   120            atClusterTime:
   121              "$$exists": true
   122    - commandStartedEvent:
   123        command:
   124          find: collection0
   125          readConcern:
   126            level: snapshot
   127            atClusterTime:
   128              "$$exists": true
   129
   130- description: Distinct operation with snapshot
   131  operations:
   132  - name: distinct
   133    object: collection0
   134    arguments:
   135      fieldName: x
   136      filter: {}
   137      session: session0
   138    expectResult:
   139    - 11
   140  - name: findOneAndUpdate
   141    object: collection0
   142    arguments:
   143      filter: { _id: 2 }
   144      update: { $inc: { x: 1 } }
   145      returnDocument: After
   146    expectResult: { _id: 2, x: 12 }
   147  - name: distinct
   148    object: collection0
   149    arguments:
   150      fieldName: x
   151      filter: {}
   152      session: session1
   153    expectResult: [11, 12]
   154  - name: findOneAndUpdate
   155    object: collection0
   156    arguments:
   157      filter: { _id: 2 }
   158      update: { $inc: { x: 1 } }
   159      returnDocument: After
   160    expectResult: { _id: 2, x: 13 }
   161  - name: distinct
   162    object: collection0
   163    arguments:
   164      fieldName: x
   165      filter: {}
   166    expectResult: [ 11, 13 ]
   167  - name: distinct
   168    object: collection0
   169    arguments:
   170      fieldName: x
   171      filter: {}
   172      session: session0
   173    expectResult: [ 11 ]
   174  - name: distinct
   175    object: collection0
   176    arguments:
   177      fieldName: x
   178      filter: {}
   179      session: session1
   180    expectResult: [ 11, 12 ]
   181  expectEvents:
   182  - client: client0
   183    events:
   184    - commandStartedEvent:
   185        command:
   186          distinct: collection0
   187          readConcern:
   188            level: snapshot
   189            atClusterTime:
   190              "$$exists": false
   191    - commandStartedEvent:
   192        command:
   193          distinct: collection0
   194          readConcern:
   195            level: snapshot
   196            atClusterTime:
   197              "$$exists": false
   198    - commandStartedEvent:
   199        command:
   200          distinct: collection0
   201          readConcern:
   202            "$$exists": false
   203    - commandStartedEvent:
   204        command:
   205          distinct: collection0
   206          readConcern:
   207            level: snapshot
   208            atClusterTime:
   209              "$$exists": true
   210    - commandStartedEvent:
   211        command:
   212          distinct: collection0
   213          readConcern:
   214            level: snapshot
   215            atClusterTime:
   216              "$$exists": true
   217
   218- description: Aggregate operation with snapshot
   219  operations:
   220  - name: aggregate
   221    object: collection0
   222    arguments:
   223      pipeline:
   224      - "$match": { _id: 1 }
   225      session: session0
   226    expectResult:
   227    - { _id: 1, x: 11 }
   228  - name: findOneAndUpdate
   229    object: collection0
   230    arguments:
   231      filter: { _id: 1 }
   232      update: { $inc: { x: 1 } }
   233      returnDocument: After
   234    expectResult: { _id: 1, x: 12 }
   235  - name: aggregate
   236    object: collection0
   237    arguments:
   238      pipeline:
   239      - "$match":
   240          _id: 1
   241      session: session1
   242    expectResult:
   243    - {_id: 1, x: 12}
   244  - name: findOneAndUpdate
   245    object: collection0
   246    arguments:
   247      filter: { _id: 1 }
   248      update: { $inc: { x: 1 } }
   249      returnDocument: After
   250    expectResult: { _id: 1, x: 13 }
   251  - name: aggregate
   252    object: collection0
   253    arguments:
   254      pipeline:
   255      - "$match": { _id: 1 }
   256    expectResult:
   257    - { _id: 1, x: 13 }
   258  - name: aggregate
   259    object: collection0
   260    arguments:
   261      pipeline:
   262      - "$match":
   263          _id: 1
   264      session: session0
   265    expectResult:
   266    - { _id: 1, x: 11 }
   267  - name: aggregate
   268    object: collection0
   269    arguments:
   270      pipeline:
   271      - "$match": { _id: 1 }
   272      session: session1
   273    expectResult:
   274    - { _id: 1, x: 12 }
   275  expectEvents:
   276  - client: client0
   277    events:
   278    - commandStartedEvent:
   279        command:
   280          aggregate: collection0
   281          readConcern:
   282            level: snapshot
   283            atClusterTime:
   284              "$$exists": false
   285    - commandStartedEvent:
   286        command:
   287          aggregate: collection0
   288          readConcern:
   289            level: snapshot
   290            atClusterTime:
   291              "$$exists": false
   292    - commandStartedEvent:
   293        command:
   294          aggregate: collection0
   295          readConcern:
   296            "$$exists": false
   297    - commandStartedEvent:
   298        command:
   299          aggregate: collection0
   300          readConcern:
   301            level: snapshot
   302            atClusterTime:
   303              "$$exists": true
   304    - commandStartedEvent:
   305        command:
   306          aggregate: collection0
   307          readConcern:
   308            level: snapshot
   309            atClusterTime:
   310              "$$exists": true
   311
   312- description: countDocuments operation with snapshot
   313  operations:
   314  - name: countDocuments
   315    object: collection0
   316    arguments:
   317      filter: {}
   318      session: session0
   319    expectResult: 2
   320  - name: countDocuments
   321    object: collection0
   322    arguments:
   323      filter: {}
   324      session: session0
   325    expectResult: 2
   326  expectEvents:
   327  - client: client0
   328    events:
   329    - commandStartedEvent:
   330        command:
   331          aggregate: collection0
   332          readConcern:
   333            level: snapshot
   334            atClusterTime:
   335              "$$exists": false
   336    - commandStartedEvent:
   337        command:
   338          aggregate: collection0
   339          readConcern:
   340            level: snapshot
   341            atClusterTime:
   342              "$$exists": true
   343
   344- description: Mixed operation with snapshot
   345  operations:
   346  - name: find
   347    object: collection0
   348    arguments:
   349      session: session0
   350      filter: { _id: 1 }
   351    expectResult:
   352    - { _id: 1, x: 11 }
   353  - name: findOneAndUpdate
   354    object: collection0
   355    arguments:
   356      filter: { _id: 1 }
   357      update: { $inc: { x: 1 } }
   358      returnDocument: After
   359    expectResult: { _id: 1, x: 12 }
   360  - name: find
   361    object: collection0
   362    arguments:
   363      filter: { _id: 1 }
   364    expectResult:
   365    - { _id: 1, x: 12 }
   366  - name: aggregate
   367    object: collection0
   368    arguments:
   369      pipeline:
   370      - "$match":
   371          _id: 1
   372      session: session0
   373    expectResult:
   374    - { _id: 1, x: 11 }
   375  - name: distinct
   376    object: collection0
   377    arguments:
   378      fieldName: x
   379      filter: {}
   380      session: session0
   381    expectResult: [ 11 ]
   382  expectEvents:
   383  - client: client0
   384    events:
   385    - commandStartedEvent:
   386        command:
   387          find: collection0
   388          readConcern:
   389            level: snapshot
   390            atClusterTime:
   391              "$$exists": false
   392    - commandStartedEvent:
   393        command:
   394          find: collection0
   395          readConcern:
   396            "$$exists": false
   397    - commandStartedEvent:
   398        command:
   399          aggregate: collection0
   400          readConcern:
   401            level: snapshot
   402            atClusterTime:
   403              "$$exists": true
   404    - commandStartedEvent:
   405        command:
   406          distinct: collection0
   407          readConcern:
   408            level: snapshot
   409            atClusterTime:
   410              "$$exists": true
   411
   412- description: Write commands with snapshot session do not affect snapshot reads
   413  operations:
   414  - name: find
   415    object: collection0
   416    arguments:
   417      filter: {}
   418      session: session0
   419  - name: insertOne
   420    object: collection0
   421    arguments:
   422      document:
   423        _id: 22
   424        x: 33
   425  - name: updateOne
   426    object: collection0
   427    arguments:
   428      filter: { _id: 1 }
   429      update: { $inc: { x: 1 } }
   430  - name: find
   431    object: collection0
   432    arguments:
   433      filter: { _id: 1 }
   434      session: session0
   435    expectResult:
   436    - {_id: 1, x: 11}
   437  expectEvents:
   438  - client: client0
   439    events:
   440    - commandStartedEvent:
   441        command:
   442          find: collection0
   443          readConcern:
   444            level: snapshot
   445            atClusterTime:
   446              "$$exists": false
   447    - commandStartedEvent:
   448        command:
   449          find: collection0
   450          readConcern:
   451            level: snapshot
   452            atClusterTime:
   453              "$$exists": true
   454
   455- description: First snapshot read does not send atClusterTime
   456  operations:
   457  - name: find
   458    object: collection0
   459    arguments:
   460      filter: {}
   461      session: session0
   462  expectEvents:
   463  - client: client0
   464    events:
   465    - commandStartedEvent:
   466        command:
   467          find: collection0
   468          readConcern:
   469            level: snapshot
   470            atClusterTime:
   471              "$$exists": false
   472        commandName: find
   473        databaseName: database0
   474
   475- description: StartTransaction fails in snapshot session
   476  operations:
   477  - name: startTransaction
   478    object: session0
   479    expectError:
   480      isError: true
   481      isClientError: true
   482      errorContains: Transactions are not supported in snapshot sessions

View as plain text