...
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