mongo 2.14.1 → 2.15.0.alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +4 -1
  4. data/Rakefile +8 -15
  5. data/lib/mongo/auth/aws/conversation.rb +1 -4
  6. data/lib/mongo/auth/base.rb +13 -7
  7. data/lib/mongo/auth/conversation_base.rb +32 -0
  8. data/lib/mongo/auth/cr/conversation.rb +6 -29
  9. data/lib/mongo/auth/gssapi/conversation.rb +4 -15
  10. data/lib/mongo/auth/ldap/conversation.rb +3 -14
  11. data/lib/mongo/auth/sasl_conversation_base.rb +1 -13
  12. data/lib/mongo/auth/scram_conversation_base.rb +7 -34
  13. data/lib/mongo/auth/user/view.rb +16 -9
  14. data/lib/mongo/auth/x509/conversation.rb +4 -25
  15. data/lib/mongo/bulk_write.rb +21 -18
  16. data/lib/mongo/client.rb +82 -6
  17. data/lib/mongo/cluster/reapers/cursor_reaper.rb +6 -2
  18. data/lib/mongo/cluster.rb +19 -2
  19. data/lib/mongo/collection/view/aggregation.rb +1 -1
  20. data/lib/mongo/collection/view/change_stream.rb +1 -1
  21. data/lib/mongo/collection/view/iterable.rb +7 -17
  22. data/lib/mongo/collection/view/map_reduce.rb +2 -2
  23. data/lib/mongo/collection/view/readable.rb +42 -20
  24. data/lib/mongo/collection/view/writable.rb +14 -14
  25. data/lib/mongo/collection.rb +6 -6
  26. data/lib/mongo/cursor.rb +2 -12
  27. data/lib/mongo/database/view.rb +1 -1
  28. data/lib/mongo/database.rb +8 -3
  29. data/lib/mongo/error/bulk_write_error.rb +17 -3
  30. data/lib/mongo/error/internal_driver_error.rb +22 -0
  31. data/lib/mongo/error/operation_failure.rb +21 -2
  32. data/lib/mongo/error/parser.rb +65 -12
  33. data/lib/mongo/error/server_api_conflict.rb +23 -0
  34. data/lib/mongo/error/server_api_not_supported.rb +24 -0
  35. data/lib/mongo/error/unmet_dependency.rb +21 -0
  36. data/lib/mongo/error.rb +9 -1
  37. data/lib/mongo/index/view.rb +21 -11
  38. data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +27 -16
  39. data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +26 -15
  40. data/lib/mongo/monitoring.rb +13 -4
  41. data/lib/mongo/operation/collections_info/command.rb +2 -2
  42. data/lib/mongo/operation/collections_info.rb +18 -1
  43. data/lib/mongo/operation/context.rb +99 -0
  44. data/lib/mongo/operation/indexes.rb +15 -1
  45. data/lib/mongo/operation/insert/command.rb +2 -2
  46. data/lib/mongo/operation/insert/legacy.rb +2 -2
  47. data/lib/mongo/operation/insert/op_msg.rb +2 -2
  48. data/lib/mongo/operation/list_collections/result.rb +4 -1
  49. data/lib/mongo/operation/parallel_scan/command.rb +2 -1
  50. data/lib/mongo/operation/result.rb +2 -0
  51. data/lib/mongo/operation/shared/executable.rb +24 -14
  52. data/lib/mongo/operation/shared/executable_no_validate.rb +2 -2
  53. data/lib/mongo/operation/shared/op_msg_or_command.rb +1 -7
  54. data/lib/mongo/operation/shared/op_msg_or_find_command.rb +1 -7
  55. data/lib/mongo/operation/shared/polymorphic_operation.rb +39 -0
  56. data/lib/mongo/operation/shared/read_preference_supported.rb +36 -38
  57. data/lib/mongo/operation/shared/response_handling.rb +23 -23
  58. data/lib/mongo/operation/shared/sessions_supported.rb +15 -5
  59. data/lib/mongo/operation/shared/write.rb +8 -18
  60. data/lib/mongo/operation.rb +2 -2
  61. data/lib/mongo/protocol/compressed.rb +51 -5
  62. data/lib/mongo/protocol/message.rb +20 -2
  63. data/lib/mongo/protocol/msg.rb +38 -13
  64. data/lib/mongo/protocol/query.rb +11 -11
  65. data/lib/mongo/query_cache.rb +30 -0
  66. data/lib/mongo/retryable.rb +1 -1
  67. data/lib/mongo/server/app_metadata.rb +52 -18
  68. data/lib/mongo/server/connection.rb +5 -0
  69. data/lib/mongo/server/connection_base.rb +13 -10
  70. data/lib/mongo/server/connection_pool.rb +6 -2
  71. data/lib/mongo/server/description/features.rb +9 -8
  72. data/lib/mongo/server/description.rb +4 -0
  73. data/lib/mongo/server/monitor/app_metadata.rb +1 -1
  74. data/lib/mongo/server/monitor/connection.rb +9 -10
  75. data/lib/mongo/server/monitor.rb +20 -1
  76. data/lib/mongo/server/pending_connection.rb +24 -6
  77. data/lib/mongo/server/push_monitor.rb +11 -1
  78. data/lib/mongo/server.rb +7 -1
  79. data/lib/mongo/server_selector/secondary_preferred.rb +7 -2
  80. data/lib/mongo/session/session_pool.rb +4 -2
  81. data/lib/mongo/session.rb +2 -2
  82. data/lib/mongo/socket/ssl.rb +8 -0
  83. data/lib/mongo/socket.rb +29 -4
  84. data/lib/mongo/uri/options_mapper.rb +38 -0
  85. data/lib/mongo/utils.rb +15 -0
  86. data/lib/mongo/version.rb +1 -1
  87. data/lib/mongo.rb +23 -0
  88. data/spec/README.md +24 -1
  89. data/spec/integration/auth_spec.rb +25 -15
  90. data/spec/integration/bulk_write_error_message_spec.rb +41 -0
  91. data/spec/integration/change_stream_spec.rb +4 -4
  92. data/spec/integration/command_monitoring_spec.rb +2 -2
  93. data/spec/integration/connection_spec.rb +2 -0
  94. data/spec/integration/docs_examples_spec.rb +8 -1
  95. data/spec/integration/fork_reconnect_spec.rb +4 -1
  96. data/spec/integration/ocsp_verifier_spec.rb +13 -7
  97. data/spec/integration/operation_failure_code_spec.rb +1 -1
  98. data/spec/integration/operation_failure_message_spec.rb +90 -0
  99. data/spec/integration/query_cache_spec.rb +0 -45
  100. data/spec/integration/reconnect_spec.rb +1 -1
  101. data/spec/integration/snappy_compression_spec.rb +25 -0
  102. data/spec/integration/srv_monitoring_spec.rb +1 -1
  103. data/spec/integration/transactions_examples_spec.rb +6 -0
  104. data/spec/integration/zlib_compression_spec.rb +1 -1
  105. data/spec/integration/zstd_compression_spec.rb +26 -0
  106. data/spec/lite_spec_helper.rb +7 -1
  107. data/spec/mongo/address_spec.rb +15 -11
  108. data/spec/mongo/auth/ldap/conversation_spec.rb +1 -1
  109. data/spec/mongo/auth/ldap_spec.rb +5 -1
  110. data/spec/mongo/auth/scram_negotiation_spec.rb +1 -1
  111. data/spec/mongo/auth/scram_spec.rb +1 -1
  112. data/spec/mongo/auth/x509/conversation_spec.rb +3 -3
  113. data/spec/mongo/client_construction_spec.rb +207 -33
  114. data/spec/mongo/client_spec.rb +17 -0
  115. data/spec/mongo/cluster_spec.rb +1 -0
  116. data/spec/mongo/collection/view/explainable_spec.rb +1 -1
  117. data/spec/mongo/collection/view/readable_spec.rb +33 -19
  118. data/spec/mongo/collection_crud_spec.rb +4357 -0
  119. data/spec/mongo/collection_ddl_spec.rb +534 -0
  120. data/spec/mongo/collection_spec.rb +5 -4859
  121. data/spec/mongo/database_spec.rb +66 -4
  122. data/spec/mongo/error/bulk_write_error_spec.rb +3 -3
  123. data/spec/mongo/error/parser_spec.rb +37 -6
  124. data/spec/mongo/index/view_spec.rb +4 -0
  125. data/spec/mongo/monitoring/event/server_heartbeat_failed_spec.rb +1 -1
  126. data/spec/mongo/monitoring/event/server_heartbeat_succeeded_spec.rb +1 -1
  127. data/spec/mongo/operation/aggregate_spec.rb +2 -1
  128. data/spec/mongo/operation/collections_info_spec.rb +4 -1
  129. data/spec/mongo/operation/command_spec.rb +6 -3
  130. data/spec/mongo/operation/create_index_spec.rb +6 -3
  131. data/spec/mongo/operation/create_user_spec.rb +6 -3
  132. data/spec/mongo/operation/delete/bulk_spec.rb +9 -6
  133. data/spec/mongo/operation/delete_spec.rb +11 -7
  134. data/spec/mongo/operation/drop_index_spec.rb +6 -2
  135. data/spec/mongo/operation/find/legacy_spec.rb +3 -1
  136. data/spec/mongo/operation/get_more_spec.rb +3 -1
  137. data/spec/mongo/operation/indexes_spec.rb +5 -1
  138. data/spec/mongo/operation/insert/bulk_spec.rb +10 -7
  139. data/spec/mongo/operation/insert_spec.rb +15 -12
  140. data/spec/mongo/operation/map_reduce_spec.rb +5 -2
  141. data/spec/mongo/operation/read_preference_legacy_spec.rb +19 -9
  142. data/spec/mongo/operation/read_preference_op_msg_spec.rb +3 -3
  143. data/spec/mongo/operation/remove_user_spec.rb +6 -3
  144. data/spec/mongo/operation/result_spec.rb +1 -1
  145. data/spec/mongo/operation/update/bulk_spec.rb +9 -6
  146. data/spec/mongo/operation/update_spec.rb +10 -7
  147. data/spec/mongo/operation/update_user_spec.rb +4 -1
  148. data/spec/mongo/protocol/compressed_spec.rb +26 -12
  149. data/spec/mongo/query_cache_middleware_spec.rb +55 -0
  150. data/spec/mongo/retryable_spec.rb +3 -2
  151. data/spec/mongo/server/app_metadata_shared.rb +7 -33
  152. data/spec/mongo/server/app_metadata_spec.rb +2 -0
  153. data/spec/mongo/server/connection_pool/populator_spec.rb +3 -1
  154. data/spec/mongo/server/connection_pool_spec.rb +1 -1
  155. data/spec/mongo/server/connection_spec.rb +24 -17
  156. data/spec/mongo/server/monitor/connection_spec.rb +17 -7
  157. data/spec/mongo/server/monitor_spec.rb +9 -1
  158. data/spec/mongo/server_selector/secondary_preferred_spec.rb +6 -6
  159. data/spec/mongo/server_spec.rb +15 -2
  160. data/spec/mongo/socket/ssl_spec.rb +40 -0
  161. data/spec/mongo/socket_spec.rb +2 -2
  162. data/spec/mongo/tls_context_hooks_spec.rb +37 -0
  163. data/spec/runners/connection_string.rb +0 -4
  164. data/spec/runners/crud/requirement.rb +40 -3
  165. data/spec/runners/crud/verifier.rb +8 -0
  166. data/spec/runners/transactions/operation.rb +1 -1
  167. data/spec/runners/transactions/test.rb +1 -0
  168. data/spec/runners/unified/assertions.rb +249 -0
  169. data/spec/runners/unified/change_stream_operations.rb +26 -0
  170. data/spec/runners/unified/crud_operations.rb +199 -0
  171. data/spec/runners/unified/ddl_operations.rb +96 -0
  172. data/spec/runners/unified/entity_map.rb +39 -0
  173. data/spec/runners/unified/error.rb +25 -0
  174. data/spec/runners/unified/event_subscriber.rb +91 -0
  175. data/spec/runners/unified/exceptions.rb +21 -0
  176. data/spec/runners/unified/grid_fs_operations.rb +55 -0
  177. data/spec/runners/unified/support_operations.rb +250 -0
  178. data/spec/runners/unified/test.rb +393 -0
  179. data/spec/runners/unified/test_group.rb +28 -0
  180. data/spec/runners/unified/using_hash.rb +31 -0
  181. data/spec/runners/unified.rb +96 -0
  182. data/spec/shared/lib/mrss/cluster_config.rb +0 -3
  183. data/spec/shared/lib/mrss/docker_runner.rb +0 -3
  184. data/spec/shared/lib/mrss/lite_constraints.rb +0 -16
  185. data/spec/shared/lib/mrss/server_version_registry.rb +0 -3
  186. data/spec/shared/lib/mrss/spec_organizer.rb +0 -3
  187. data/spec/shared/shlib/server.sh +1 -1
  188. data/spec/spec_helper.rb +4 -1
  189. data/spec/spec_tests/crud_unified_spec.rb +10 -0
  190. data/spec/spec_tests/data/change_streams/change-streams.yml +0 -1
  191. data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +267 -0
  192. data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-4.9.yml +60 -0
  193. data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount.yml → estimatedDocumentCount-pre4.9.yml} +2 -0
  194. data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors-4.9.yml +146 -0
  195. data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount-serverErrors.yml → estimatedDocumentCount-serverErrors-pre4.9.yml} +2 -0
  196. data/spec/spec_tests/data/retryable_reads/listIndexNames.yml +1 -1
  197. data/spec/spec_tests/data/unified/valid-fail/operation-failure.yml +31 -0
  198. data/spec/spec_tests/data/unified/valid-pass/poc-change-streams.yml +220 -0
  199. data/spec/spec_tests/data/unified/valid-pass/poc-command-monitoring.yml +102 -0
  200. data/spec/spec_tests/data/unified/valid-pass/poc-crud.yml +184 -0
  201. data/spec/spec_tests/data/unified/valid-pass/poc-gridfs.yml +155 -0
  202. data/spec/spec_tests/data/unified/valid-pass/poc-retryable-reads.yml +193 -0
  203. data/spec/spec_tests/data/unified/valid-pass/poc-retryable-writes.yml +210 -0
  204. data/spec/spec_tests/data/unified/valid-pass/poc-sessions.yml +215 -0
  205. data/spec/spec_tests/data/unified/valid-pass/poc-transactions-convenient-api.yml +235 -0
  206. data/spec/spec_tests/data/unified/valid-pass/poc-transactions-mongos-pin-auto.yml +169 -0
  207. data/spec/spec_tests/data/unified/valid-pass/poc-transactions.yml +170 -0
  208. data/spec/spec_tests/data/uri_options/compression-options.yml +1 -1
  209. data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +416 -0
  210. data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +409 -0
  211. data/spec/spec_tests/data/versioned_api/runcommand-helper-no-api-version-declared.yml +67 -0
  212. data/spec/spec_tests/data/versioned_api/test-commands-deprecation-errors.yml +47 -0
  213. data/spec/spec_tests/data/versioned_api/test-commands-strict-mode.yml +44 -0
  214. data/spec/spec_tests/data/versioned_api/transaction-handling.yml +180 -0
  215. data/spec/spec_tests/unified_spec.rb +15 -0
  216. data/spec/spec_tests/uri_options_spec.rb +16 -0
  217. data/spec/spec_tests/versioned_api_spec.rb +10 -0
  218. data/spec/support/client_registry.rb +4 -8
  219. data/spec/support/client_registry_macros.rb +4 -4
  220. data/spec/support/common_shortcuts.rb +15 -1
  221. data/spec/support/shared/session.rb +2 -2
  222. data/spec/support/spec_config.rb +42 -11
  223. data/spec/support/utils.rb +64 -3
  224. data.tar.gz.sig +0 -0
  225. metadata +1005 -915
  226. metadata.gz.sig +0 -0
  227. data/lib/mongo/operation/shared/collections_info_or_list_collections.rb +0 -58
  228. data/lib/mongo/operation/shared/op_msg_or_list_indexes_command.rb +0 -47
  229. data/spec/integration/secondary_reads_spec.rb +0 -102
  230. data/spec/support/cluster_config.rb +0 -207
@@ -0,0 +1,416 @@
1
+ description: "CRUD Api Version 1 (strict)"
2
+
3
+ schemaVersion: "1.1"
4
+
5
+ runOnRequirements:
6
+ - minServerVersion: "4.9"
7
+
8
+ createEntities:
9
+ - client:
10
+ id: &client client
11
+ observeEvents:
12
+ - commandStartedEvent
13
+ serverApi:
14
+ version: "1"
15
+ strict: true
16
+ - database:
17
+ id: &database database
18
+ client: *client
19
+ databaseName: &databaseName versioned-api-tests
20
+ - database:
21
+ id: &adminDatabase adminDatabase
22
+ client: *client
23
+ databaseName: &adminDatabaseName admin
24
+ - collection:
25
+ id: &collection collection
26
+ database: *database
27
+ collectionName: &collectionName test
28
+
29
+ _yamlAnchors:
30
+ versions:
31
+ - &expectedApiVersion
32
+ apiVersion: "1"
33
+ apiStrict: true
34
+ apiDeprecationErrors: { $$unsetOrMatches: false }
35
+
36
+ initialData:
37
+ - collectionName: *collectionName
38
+ databaseName: *databaseName
39
+ documents:
40
+ - { _id: 1, x: 11 }
41
+ - { _id: 2, x: 22 }
42
+ - { _id: 3, x: 33 }
43
+ - { _id: 4, x: 44 }
44
+ - { _id: 5, x: 55 }
45
+
46
+ tests:
47
+ - description: "aggregate on collection appends declared API version"
48
+ operations:
49
+ - name: aggregate
50
+ object: *collection
51
+ arguments:
52
+ pipeline: &pipeline
53
+ - $sort: { x : 1 }
54
+ - $match: { _id: { $gt: 1 } }
55
+ expectEvents:
56
+ - client: *client
57
+ events:
58
+ - commandStartedEvent:
59
+ command:
60
+ aggregate: *collectionName
61
+ pipeline: *pipeline
62
+ <<: *expectedApiVersion
63
+
64
+ - description: "aggregate on database appends declared API version"
65
+ operations:
66
+ - name: aggregate
67
+ object: *adminDatabase
68
+ arguments:
69
+ pipeline: &pipeline
70
+ - $listLocalSessions: {}
71
+ - $limit: 1
72
+ expectError:
73
+ errorCodeName: "APIStrictError"
74
+ expectEvents:
75
+ - client: *client
76
+ events:
77
+ - commandStartedEvent:
78
+ command:
79
+ aggregate: 1
80
+ pipeline: *pipeline
81
+ <<: *expectedApiVersion
82
+
83
+ - description: "bulkWrite appends declared API version"
84
+ operations:
85
+ - name: bulkWrite
86
+ object: *collection
87
+ arguments:
88
+ requests:
89
+ - insertOne:
90
+ document: { _id: 6, x: 66 }
91
+ - updateOne:
92
+ filter: { _id: 2 }
93
+ update: { $inc: { x: 1 } }
94
+ - deleteMany:
95
+ filter: { x: { $nin: [ 24, 34 ] } }
96
+ - updateMany:
97
+ filter: { _id: { $gt: 1 } }
98
+ update: { $inc: { x: 1 } }
99
+ - deleteOne:
100
+ filter: { _id: 7 }
101
+ - replaceOne:
102
+ filter: { _id: 4 }
103
+ replacement: { _id: 4, x: 44 }
104
+ upsert: true
105
+ ordered: true
106
+ expectEvents:
107
+ - client: *client
108
+ events:
109
+ - commandStartedEvent:
110
+ command:
111
+ insert: *collectionName
112
+ documents:
113
+ - { _id: 6, x: 66 }
114
+ <<: *expectedApiVersion
115
+ - commandStartedEvent:
116
+ command:
117
+ update: *collectionName
118
+ updates:
119
+ - q: { _id: 2 }
120
+ u: { $inc: { x: 1 } }
121
+ multi: { $$unsetOrMatches: false }
122
+ upsert: { $$unsetOrMatches: false }
123
+ <<: *expectedApiVersion
124
+ - commandStartedEvent:
125
+ command:
126
+ delete: *collectionName
127
+ deletes:
128
+ - { q: { x: { $nin: [ 24, 34 ] } }, limit: 0 }
129
+ <<: *expectedApiVersion
130
+ - commandStartedEvent:
131
+ command:
132
+ update: *collectionName
133
+ updates:
134
+ - q: { _id: { $gt: 1 } }
135
+ u: { $inc: { x: 1 } }
136
+ multi: true
137
+ upsert: { $$unsetOrMatches: false }
138
+ <<: *expectedApiVersion
139
+ - commandStartedEvent:
140
+ command:
141
+ delete: *collectionName
142
+ deletes:
143
+ - { q: { _id: 7 }, limit: 1 }
144
+ <<: *expectedApiVersion
145
+ - commandStartedEvent:
146
+ command:
147
+ update: *collectionName
148
+ updates:
149
+ - q: { _id: 4 }
150
+ u: { _id: 4, x: 44 }
151
+ multi: { $$unsetOrMatches: false }
152
+ upsert: true
153
+ <<: *expectedApiVersion
154
+
155
+ - description: "countDocuments appends declared API version"
156
+ operations:
157
+ - name: countDocuments
158
+ object: *collection
159
+ arguments:
160
+ filter: &filter
161
+ x : { $gt: 11 }
162
+ expectEvents:
163
+ - client: *client
164
+ events:
165
+ - commandStartedEvent:
166
+ command:
167
+ aggregate: *collectionName
168
+ pipeline:
169
+ - { $match: *filter }
170
+ - { $group: { _id: 1, n: { $sum: 1 } } }
171
+ <<: *expectedApiVersion
172
+
173
+ - description: "deleteMany appends declared API version"
174
+ operations:
175
+ - name: deleteMany
176
+ object: *collection
177
+ arguments:
178
+ filter: { x: { $nin: [ 24, 34 ] } }
179
+ expectEvents:
180
+ - client: *client
181
+ events:
182
+ - commandStartedEvent:
183
+ command:
184
+ delete: *collectionName
185
+ deletes:
186
+ - { q: { x: { $nin: [ 24, 34 ] } }, limit: 0 }
187
+ <<: *expectedApiVersion
188
+
189
+ - description: "deleteOne appends declared API version"
190
+ operations:
191
+ - name: deleteOne
192
+ object: *collection
193
+ arguments:
194
+ filter: { _id: 7 }
195
+ expectEvents:
196
+ - client: *client
197
+ events:
198
+ - commandStartedEvent:
199
+ command:
200
+ delete: *collectionName
201
+ deletes:
202
+ - { q: { _id: 7 }, limit: 1 }
203
+ <<: *expectedApiVersion
204
+
205
+ # distinct will fail until drivers replace it with an alternative
206
+ # implementation
207
+ - description: "distinct appends declared API version"
208
+ operations:
209
+ - name: distinct
210
+ object: *collection
211
+ arguments:
212
+ fieldName: x
213
+ filter: {}
214
+ expectError:
215
+ isError: true
216
+ errorContains: "command distinct is not in API Version 1"
217
+ errorCodeName: "APIStrictError"
218
+ expectEvents:
219
+ - client: *client
220
+ events:
221
+ - commandStartedEvent:
222
+ command:
223
+ distinct: *collectionName
224
+ key: x
225
+ <<: *expectedApiVersion
226
+
227
+ - description: "estimatedDocumentCount appends declared API version"
228
+ skipReason: "DRIVERS-1561 collStats is not in API version 1"
229
+ operations:
230
+ - name: estimatedDocumentCount
231
+ object: *collection
232
+ arguments: {}
233
+ expectEvents:
234
+ - client: *client
235
+ events:
236
+ - commandStartedEvent:
237
+ command:
238
+ aggregate: *collectionName
239
+ pipeline: &pipeline
240
+ - $collStats: { count: {} }
241
+ - $group: { _id: 1, n: { $sum: $count }}
242
+ <<: *expectedApiVersion
243
+
244
+ - description: "find command with declared API version appends to the command, but getMore does not"
245
+ operations:
246
+ - name: find
247
+ object: *collection
248
+ arguments:
249
+ filter: {}
250
+ sort: { _id: 1 }
251
+ batchSize: 3
252
+ expectResult:
253
+ - { _id: 1, x: 11 }
254
+ - { _id: 2, x: 22 }
255
+ - { _id: 3, x: 33 }
256
+ - { _id: 4, x: 44 }
257
+ - { _id: 5, x: 55 }
258
+ expectEvents:
259
+ - client: *client
260
+ events:
261
+ - commandStartedEvent:
262
+ command:
263
+ find: *collectionName
264
+ <<: *expectedApiVersion
265
+ - commandStartedEvent:
266
+ command:
267
+ getMore: { $$type: [ int, long ] }
268
+ apiVersion: { $$exists: false }
269
+ apiStrict: { $$exists: false }
270
+ apiDeprecationErrors: { $$exists: false }
271
+
272
+ - description: "findOneAndDelete appends declared API version"
273
+ operations:
274
+ - name: findOneAndDelete
275
+ object: *collection
276
+ arguments:
277
+ filter: &filter { _id: 1 }
278
+ expectEvents:
279
+ - client: *client
280
+ events:
281
+ - commandStartedEvent:
282
+ command:
283
+ findAndModify: *collectionName
284
+ query: *filter
285
+ remove: true
286
+ <<: *expectedApiVersion
287
+
288
+ - description: "findOneAndReplace appends declared API version"
289
+ operations:
290
+ - name: findOneAndReplace
291
+ object: *collection
292
+ arguments:
293
+ filter: &filter { _id: 1 }
294
+ replacement: &replacement { x: 33 }
295
+ expectEvents:
296
+ - client: *client
297
+ events:
298
+ - commandStartedEvent:
299
+ command:
300
+ findAndModify: *collectionName
301
+ query: *filter
302
+ update: *replacement
303
+ <<: *expectedApiVersion
304
+
305
+ - description: "findOneAndUpdate appends declared API version"
306
+ operations:
307
+ - name: findOneAndUpdate
308
+ object: collection
309
+ arguments:
310
+ filter: &filter { _id: 1 }
311
+ update: &update { $inc: { x: 1 } }
312
+ expectEvents:
313
+ - client: *client
314
+ events:
315
+ - commandStartedEvent:
316
+ command:
317
+ findAndModify: *collectionName
318
+ query: *filter
319
+ update: *update
320
+ <<: *expectedApiVersion
321
+
322
+ - description: "insertMany appends declared API version"
323
+ operations:
324
+ - name: insertMany
325
+ object: *collection
326
+ arguments:
327
+ documents:
328
+ - { _id: 6, x: 66 }
329
+ - { _id: 7, x: 77 }
330
+ expectEvents:
331
+ - client: *client
332
+ events:
333
+ - commandStartedEvent:
334
+ command:
335
+ insert: *collectionName
336
+ documents:
337
+ - { _id: 6, x: 66 }
338
+ - { _id: 7, x: 77 }
339
+ <<: *expectedApiVersion
340
+
341
+ - description: "insertOne appends declared API version"
342
+ operations:
343
+ - name: insertOne
344
+ object: *collection
345
+ arguments:
346
+ document: { _id: 6, x: 66 }
347
+ expectEvents:
348
+ - client: *client
349
+ events:
350
+ - commandStartedEvent:
351
+ command:
352
+ insert: *collectionName
353
+ documents:
354
+ - { _id: 6, x: 66 }
355
+ <<: *expectedApiVersion
356
+
357
+ - description: "replaceOne appends declared API version"
358
+ operations:
359
+ - name: replaceOne
360
+ object: *collection
361
+ arguments:
362
+ filter: { _id: 4 }
363
+ replacement: { _id: 4, x: 44 }
364
+ upsert: true
365
+ expectEvents:
366
+ - client: *client
367
+ events:
368
+ - commandStartedEvent:
369
+ command:
370
+ update: *collectionName
371
+ updates:
372
+ - q: { _id: 4 }
373
+ u: { _id: 4, x: 44 }
374
+ multi: { $$unsetOrMatches: false }
375
+ upsert: true
376
+ <<: *expectedApiVersion
377
+
378
+ - description: "updateMany appends declared API version"
379
+ operations:
380
+ - name: updateMany
381
+ object: *collection
382
+ arguments:
383
+ filter: { _id: { $gt: 1 } }
384
+ update: { $inc: { x: 1 } }
385
+ expectEvents:
386
+ - client: *client
387
+ events:
388
+ - commandStartedEvent:
389
+ command:
390
+ update: *collectionName
391
+ updates:
392
+ - q: { _id: { $gt: 1 } }
393
+ u: { $inc: { x: 1 } }
394
+ multi: true
395
+ upsert: { $$unsetOrMatches: false }
396
+ <<: *expectedApiVersion
397
+
398
+ - description: "updateOne appends declared API version"
399
+ operations:
400
+ - name: updateOne
401
+ object: *collection
402
+ arguments:
403
+ filter: { _id: 2 }
404
+ update: { $inc: { x: 1 } }
405
+ expectEvents:
406
+ - client: *client
407
+ events:
408
+ - commandStartedEvent:
409
+ command:
410
+ update: *collectionName
411
+ updates:
412
+ - q: { _id: 2 }
413
+ u: { $inc: { x: 1 } }
414
+ multi: { $$unsetOrMatches: false }
415
+ upsert: { $$unsetOrMatches: false }
416
+ <<: *expectedApiVersion