mongo 2.20.1 → 2.21.1

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 (1512) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -1
  3. data/lib/mongo/address.rb +22 -3
  4. data/lib/mongo/auth/aws/conversation.rb +1 -1
  5. data/lib/mongo/auth/aws/credentials_retriever.rb +70 -17
  6. data/lib/mongo/auth/base.rb +1 -1
  7. data/lib/mongo/auth/credential_cache.rb +13 -6
  8. data/lib/mongo/bulk_write.rb +35 -2
  9. data/lib/mongo/client.rb +113 -34
  10. data/lib/mongo/client_encryption.rb +7 -4
  11. data/lib/mongo/cluster/reapers/cursor_reaper.rb +6 -1
  12. data/lib/mongo/cluster/sdam_flow.rb +21 -8
  13. data/lib/mongo/cluster.rb +14 -4
  14. data/lib/mongo/collection/helpers.rb +1 -1
  15. data/lib/mongo/collection/view/aggregation/behavior.rb +131 -0
  16. data/lib/mongo/collection/view/aggregation.rb +34 -100
  17. data/lib/mongo/collection/view/builder/aggregation.rb +1 -7
  18. data/lib/mongo/collection/view/change_stream.rb +80 -27
  19. data/lib/mongo/collection/view/iterable.rb +76 -60
  20. data/lib/mongo/collection/view/map_reduce.rb +25 -8
  21. data/lib/mongo/collection/view/readable.rb +79 -30
  22. data/lib/mongo/collection/view/writable.rb +109 -48
  23. data/lib/mongo/collection/view.rb +43 -3
  24. data/lib/mongo/collection.rb +158 -23
  25. data/lib/mongo/crypt/auto_encrypter.rb +4 -6
  26. data/lib/mongo/crypt/binary.rb +5 -5
  27. data/lib/mongo/crypt/binding.rb +69 -5
  28. data/lib/mongo/crypt/context.rb +72 -38
  29. data/lib/mongo/crypt/encryption_io.rb +60 -28
  30. data/lib/mongo/crypt/explicit_encrypter.rb +49 -20
  31. data/lib/mongo/crypt/explicit_encryption_context.rb +17 -11
  32. data/lib/mongo/crypt/handle.rb +1 -1
  33. data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +22 -6
  34. data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +29 -4
  35. data/lib/mongo/csot_timeout_holder.rb +119 -0
  36. data/lib/mongo/cursor/kill_spec.rb +5 -2
  37. data/lib/mongo/cursor/nontailable.rb +27 -0
  38. data/lib/mongo/cursor.rb +87 -25
  39. data/lib/mongo/cursor_host.rb +82 -0
  40. data/lib/mongo/database/view.rb +81 -14
  41. data/lib/mongo/database.rb +88 -18
  42. data/lib/mongo/error/kms_error.rb +9 -0
  43. data/lib/mongo/error/operation_failure.rb +209 -204
  44. data/lib/mongo/error/pool_cleared_error.rb +1 -0
  45. data/lib/mongo/error/sdam_error_detection.rb +3 -3
  46. data/lib/mongo/error/server_timeout_error.rb +12 -0
  47. data/lib/mongo/error/socket_timeout_error.rb +3 -1
  48. data/{spec/runners/crud/context.rb → lib/mongo/error/timeout_error.rb} +5 -12
  49. data/lib/mongo/error.rb +2 -0
  50. data/lib/mongo/grid/fs_bucket.rb +45 -12
  51. data/lib/mongo/grid/stream/read.rb +15 -1
  52. data/lib/mongo/grid/stream/write.rb +21 -4
  53. data/lib/mongo/index/view.rb +77 -16
  54. data/lib/mongo/lint.rb +1 -1
  55. data/lib/mongo/monitoring/event/secure.rb +1 -1
  56. data/lib/mongo/monitoring.rb +1 -1
  57. data/lib/mongo/operation/context.rb +40 -2
  58. data/lib/mongo/operation/create_search_indexes/op_msg.rb +2 -2
  59. data/lib/mongo/operation/delete/op_msg.rb +2 -1
  60. data/lib/mongo/operation/drop_search_index/op_msg.rb +2 -2
  61. data/lib/mongo/operation/find/op_msg.rb +45 -0
  62. data/lib/mongo/operation/get_more/op_msg.rb +33 -0
  63. data/lib/mongo/operation/insert/op_msg.rb +3 -2
  64. data/lib/mongo/operation/insert/result.rb +4 -2
  65. data/lib/mongo/operation/list_collections/result.rb +1 -1
  66. data/lib/mongo/operation/map_reduce/result.rb +1 -1
  67. data/lib/mongo/operation/op_msg_base.rb +3 -1
  68. data/lib/mongo/operation/result.rb +26 -5
  69. data/lib/mongo/operation/shared/executable.rb +12 -1
  70. data/lib/mongo/operation/shared/op_msg_executable.rb +4 -1
  71. data/lib/mongo/operation/shared/read_preference_supported.rb +2 -2
  72. data/lib/mongo/operation/shared/response_handling.rb +3 -3
  73. data/lib/mongo/operation/shared/sessions_supported.rb +3 -3
  74. data/lib/mongo/operation/shared/timed.rb +52 -0
  75. data/lib/mongo/operation/shared/write.rb +4 -1
  76. data/lib/mongo/operation/update/op_msg.rb +2 -1
  77. data/lib/mongo/operation/update_search_index/op_msg.rb +2 -2
  78. data/lib/mongo/operation.rb +1 -0
  79. data/lib/mongo/protocol/compressed.rb +1 -1
  80. data/lib/mongo/protocol/message.rb +1 -4
  81. data/lib/mongo/protocol/msg.rb +3 -3
  82. data/lib/mongo/retryable/read_worker.rb +69 -29
  83. data/lib/mongo/retryable/write_worker.rb +49 -18
  84. data/lib/mongo/retryable.rb +8 -2
  85. data/lib/mongo/search_index/view.rb +4 -4
  86. data/lib/mongo/server/connection.rb +11 -5
  87. data/lib/mongo/server/connection_base.rb +22 -2
  88. data/lib/mongo/server/connection_pool.rb +32 -14
  89. data/lib/mongo/server/description/features.rb +1 -1
  90. data/lib/mongo/server/description.rb +18 -5
  91. data/lib/mongo/server/monitor.rb +7 -4
  92. data/lib/mongo/server/pending_connection.rb +7 -3
  93. data/lib/mongo/server/push_monitor.rb +1 -1
  94. data/lib/mongo/server/{round_trip_time_averager.rb → round_trip_time_calculator.rb} +25 -7
  95. data/lib/mongo/server.rb +11 -6
  96. data/lib/mongo/server_selector/base.rb +25 -9
  97. data/lib/mongo/session/server_session/dirtyable.rb +1 -1
  98. data/lib/mongo/session.rb +78 -9
  99. data/lib/mongo/socket/ssl.rb +109 -17
  100. data/lib/mongo/socket/tcp.rb +40 -6
  101. data/lib/mongo/socket.rb +163 -27
  102. data/lib/mongo/uri/options_mapper.rb +1 -0
  103. data/lib/mongo/uri/srv_protocol.rb +3 -1
  104. data/lib/mongo/version.rb +1 -1
  105. data/lib/mongo.rb +1 -0
  106. data/mongo.gemspec +4 -4
  107. metadata +27 -2820
  108. data/Rakefile +0 -196
  109. data/spec/NOTES.aws-auth.md +0 -296
  110. data/spec/README.aws-auth.md +0 -318
  111. data/spec/README.md +0 -733
  112. data/spec/USERS.md +0 -72
  113. data/spec/atlas/atlas_connectivity_spec.rb +0 -23
  114. data/spec/atlas/operations_spec.rb +0 -19
  115. data/spec/faas/ruby-sam-app/Gemfile +0 -9
  116. data/spec/faas/ruby-sam-app/mongodb/Gemfile +0 -4
  117. data/spec/faas/ruby-sam-app/mongodb/app.rb +0 -149
  118. data/spec/faas/ruby-sam-app/template.yaml +0 -48
  119. data/spec/integration/auth_spec.rb +0 -309
  120. data/spec/integration/awaited_ismaster_spec.rb +0 -31
  121. data/spec/integration/aws_auth_credentials_cache_spec.rb +0 -51
  122. data/spec/integration/aws_auth_request_spec.rb +0 -77
  123. data/spec/integration/aws_credentials_retriever_spec.rb +0 -136
  124. data/spec/integration/aws_lambda_examples_spec.rb +0 -68
  125. data/spec/integration/bson_symbol_spec.rb +0 -39
  126. data/spec/integration/bulk_insert_spec.rb +0 -83
  127. data/spec/integration/bulk_write_error_message_spec.rb +0 -74
  128. data/spec/integration/bulk_write_spec.rb +0 -86
  129. data/spec/integration/change_stream_examples_spec.rb +0 -208
  130. data/spec/integration/change_stream_spec.rb +0 -814
  131. data/spec/integration/check_clean_slate_spec.rb +0 -19
  132. data/spec/integration/client_authentication_options_spec.rb +0 -514
  133. data/spec/integration/client_connectivity_spec.rb +0 -41
  134. data/spec/integration/client_construction_aws_auth_spec.rb +0 -203
  135. data/spec/integration/client_construction_spec.rb +0 -381
  136. data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +0 -360
  137. data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +0 -306
  138. data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +0 -74
  139. data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +0 -82
  140. data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +0 -260
  141. data/spec/integration/client_side_encryption/auto_encryption_spec.rb +0 -747
  142. data/spec/integration/client_side_encryption/automatic_data_encryption_keys_prose_spec.rb +0 -153
  143. data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +0 -190
  144. data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +0 -81
  145. data/spec/integration/client_side_encryption/client_close_spec.rb +0 -66
  146. data/spec/integration/client_side_encryption/corpus_spec.rb +0 -273
  147. data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +0 -132
  148. data/spec/integration/client_side_encryption/data_key_spec.rb +0 -258
  149. data/spec/integration/client_side_encryption/decryption_events_prose_spec.rb +0 -159
  150. data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +0 -176
  151. data/spec/integration/client_side_encryption/explicit_queryable_encryption_spec.rb +0 -150
  152. data/spec/integration/client_side_encryption/external_key_vault_spec.rb +0 -144
  153. data/spec/integration/client_side_encryption/kms_tls_options_spec.rb +0 -436
  154. data/spec/integration/client_side_encryption/kms_tls_spec.rb +0 -92
  155. data/spec/integration/client_side_encryption/mongocryptd_prose_spec.rb +0 -105
  156. data/spec/integration/client_side_encryption/on_demand_aws_credentials_spec.rb +0 -49
  157. data/spec/integration/client_side_encryption/on_demand_azure_credentials_spec.rb +0 -46
  158. data/spec/integration/client_side_encryption/on_demand_gcp_credentials_spec.rb +0 -47
  159. data/spec/integration/client_side_encryption/queryable_encryption_examples_spec.rb +0 -114
  160. data/spec/integration/client_side_encryption/range_explicit_encryption_prose_spec.rb +0 -539
  161. data/spec/integration/client_side_encryption/rewrap_prose_spec.rb +0 -114
  162. data/spec/integration/client_side_encryption/unique_index_on_key_alt_names_prose_spec.rb +0 -89
  163. data/spec/integration/client_side_encryption/views_spec.rb +0 -47
  164. data/spec/integration/client_spec.rb +0 -54
  165. data/spec/integration/client_update_spec.rb +0 -161
  166. data/spec/integration/collection_indexes_prose_spec.rb +0 -58
  167. data/spec/integration/command_monitoring_spec.rb +0 -184
  168. data/spec/integration/command_spec.rb +0 -157
  169. data/spec/integration/connect_single_rs_name_spec.rb +0 -75
  170. data/spec/integration/connection/faas_env_spec.rb +0 -62
  171. data/spec/integration/connection_pool_populator_spec.rb +0 -325
  172. data/spec/integration/connection_spec.rb +0 -353
  173. data/spec/integration/crud_spec.rb +0 -378
  174. data/spec/integration/cursor_pinning_spec.rb +0 -125
  175. data/spec/integration/cursor_reaping_spec.rb +0 -143
  176. data/spec/integration/docs_examples_spec.rb +0 -207
  177. data/spec/integration/error_detection_spec.rb +0 -42
  178. data/spec/integration/find_options_spec.rb +0 -227
  179. data/spec/integration/fork_reconnect_spec.rb +0 -207
  180. data/spec/integration/get_more_spec.rb +0 -42
  181. data/spec/integration/grid_fs_bucket_spec.rb +0 -51
  182. data/spec/integration/heartbeat_events_spec.rb +0 -102
  183. data/spec/integration/map_reduce_spec.rb +0 -81
  184. data/spec/integration/mmapv1_spec.rb +0 -31
  185. data/spec/integration/mongos_pinning_spec.rb +0 -37
  186. data/spec/integration/ocsp_connectivity_spec.rb +0 -29
  187. data/spec/integration/ocsp_verifier_cache_spec.rb +0 -191
  188. data/spec/integration/ocsp_verifier_spec.rb +0 -358
  189. data/spec/integration/operation_failure_code_spec.rb +0 -29
  190. data/spec/integration/operation_failure_message_spec.rb +0 -91
  191. data/spec/integration/query_cache_spec.rb +0 -1343
  192. data/spec/integration/query_cache_transactions_spec.rb +0 -193
  193. data/spec/integration/read_concern_spec.rb +0 -92
  194. data/spec/integration/read_preference_spec.rb +0 -548
  195. data/spec/integration/reconnect_spec.rb +0 -200
  196. data/spec/integration/retryable_errors_spec.rb +0 -286
  197. data/spec/integration/retryable_reads_errors_spec.rb +0 -275
  198. data/spec/integration/retryable_writes/retryable_writes_36_and_older_spec.rb +0 -764
  199. data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +0 -405
  200. data/spec/integration/retryable_writes/shared/adds_diagnostics.rb +0 -18
  201. data/spec/integration/retryable_writes/shared/does_not_support_retries.rb +0 -27
  202. data/spec/integration/retryable_writes/shared/only_supports_legacy_retries.rb +0 -28
  203. data/spec/integration/retryable_writes/shared/performs_legacy_retries.rb +0 -220
  204. data/spec/integration/retryable_writes/shared/performs_modern_retries.rb +0 -235
  205. data/spec/integration/retryable_writes/shared/performs_no_retries.rb +0 -113
  206. data/spec/integration/retryable_writes/shared/supports_legacy_retries.rb +0 -22
  207. data/spec/integration/retryable_writes/shared/supports_modern_retries.rb +0 -28
  208. data/spec/integration/retryable_writes/shared/supports_retries.rb +0 -19
  209. data/spec/integration/retryable_writes_errors_spec.rb +0 -348
  210. data/spec/integration/sdam_error_handling_spec.rb +0 -489
  211. data/spec/integration/sdam_events_spec.rb +0 -178
  212. data/spec/integration/sdam_prose_spec.rb +0 -67
  213. data/spec/integration/search_indexes_prose_spec.rb +0 -168
  214. data/spec/integration/secondary_reads_spec.rb +0 -103
  215. data/spec/integration/server_description_spec.rb +0 -48
  216. data/spec/integration/server_monitor_spec.rb +0 -57
  217. data/spec/integration/server_selection_spec.rb +0 -39
  218. data/spec/integration/server_selector_spec.rb +0 -107
  219. data/spec/integration/server_spec.rb +0 -66
  220. data/spec/integration/shell_examples_spec.rb +0 -984
  221. data/spec/integration/size_limit_spec.rb +0 -118
  222. data/spec/integration/snappy_compression_spec.rb +0 -28
  223. data/spec/integration/snapshot_query_examples_spec.rb +0 -129
  224. data/spec/integration/srv_monitoring_spec.rb +0 -445
  225. data/spec/integration/srv_spec.rb +0 -60
  226. data/spec/integration/ssl_uri_options_spec.rb +0 -28
  227. data/spec/integration/step_down_spec.rb +0 -225
  228. data/spec/integration/time_zone_querying_spec.rb +0 -55
  229. data/spec/integration/transaction_pinning_spec.rb +0 -134
  230. data/spec/integration/transactions_api_examples_spec.rb +0 -62
  231. data/spec/integration/transactions_examples_spec.rb +0 -235
  232. data/spec/integration/truncated_utf8_spec.rb +0 -26
  233. data/spec/integration/versioned_api_examples_spec.rb +0 -120
  234. data/spec/integration/x509_auth_spec.rb +0 -112
  235. data/spec/integration/zlib_compression_spec.rb +0 -28
  236. data/spec/integration/zstd_compression_spec.rb +0 -29
  237. data/spec/kerberos/kerberos_spec.rb +0 -94
  238. data/spec/lite_spec_helper.rb +0 -209
  239. data/spec/mongo/address/ipv4_spec.rb +0 -102
  240. data/spec/mongo/address/ipv6_spec.rb +0 -137
  241. data/spec/mongo/address/unix_spec.rb +0 -45
  242. data/spec/mongo/address/validator_spec.rb +0 -54
  243. data/spec/mongo/address_spec.rb +0 -357
  244. data/spec/mongo/auth/aws/credential_cache_spec.rb +0 -63
  245. data/spec/mongo/auth/aws/credentials_retriever_spec.rb +0 -90
  246. data/spec/mongo/auth/aws/credentials_spec.rb +0 -46
  247. data/spec/mongo/auth/aws/request_region_spec.rb +0 -45
  248. data/spec/mongo/auth/aws/request_spec.rb +0 -79
  249. data/spec/mongo/auth/cr_spec.rb +0 -58
  250. data/spec/mongo/auth/gssapi/conversation_spec.rb +0 -124
  251. data/spec/mongo/auth/invalid_mechanism_spec.rb +0 -14
  252. data/spec/mongo/auth/ldap/conversation_spec.rb +0 -46
  253. data/spec/mongo/auth/ldap_spec.rb +0 -46
  254. data/spec/mongo/auth/scram/conversation_spec.rb +0 -205
  255. data/spec/mongo/auth/scram256/conversation_spec.rb +0 -174
  256. data/spec/mongo/auth/scram_negotiation_spec.rb +0 -532
  257. data/spec/mongo/auth/scram_spec.rb +0 -121
  258. data/spec/mongo/auth/stringprep/profiles/sasl_spec.rb +0 -116
  259. data/spec/mongo/auth/stringprep_spec.rb +0 -191
  260. data/spec/mongo/auth/user/view_spec.rb +0 -584
  261. data/spec/mongo/auth/user_spec.rb +0 -343
  262. data/spec/mongo/auth/x509/conversation_spec.rb +0 -72
  263. data/spec/mongo/auth/x509_spec.rb +0 -72
  264. data/spec/mongo/auth_spec.rb +0 -68
  265. data/spec/mongo/bson_spec.rb +0 -14
  266. data/spec/mongo/bulk_write/ordered_combiner_spec.rb +0 -287
  267. data/spec/mongo/bulk_write/result_spec.rb +0 -141
  268. data/spec/mongo/bulk_write/unordered_combiner_spec.rb +0 -242
  269. data/spec/mongo/bulk_write_spec.rb +0 -2514
  270. data/spec/mongo/caching_cursor_spec.rb +0 -73
  271. data/spec/mongo/client_construction_spec.rb +0 -2723
  272. data/spec/mongo/client_encryption_spec.rb +0 -402
  273. data/spec/mongo/client_spec.rb +0 -1203
  274. data/spec/mongo/cluster/cursor_reaper_spec.rb +0 -230
  275. data/spec/mongo/cluster/periodic_executor_spec.rb +0 -21
  276. data/spec/mongo/cluster/socket_reaper_spec.rb +0 -46
  277. data/spec/mongo/cluster/topology/replica_set_spec.rb +0 -601
  278. data/spec/mongo/cluster/topology/sharded_spec.rb +0 -158
  279. data/spec/mongo/cluster/topology/single_spec.rb +0 -192
  280. data/spec/mongo/cluster/topology/unknown_spec.rb +0 -103
  281. data/spec/mongo/cluster/topology_spec.rb +0 -211
  282. data/spec/mongo/cluster_spec.rb +0 -825
  283. data/spec/mongo/cluster_time_spec.rb +0 -151
  284. data/spec/mongo/collection/view/aggregation_spec.rb +0 -778
  285. data/spec/mongo/collection/view/builder/find_command_spec.rb +0 -528
  286. data/spec/mongo/collection/view/builder/op_query_spec.rb +0 -161
  287. data/spec/mongo/collection/view/change_stream_resume_spec.rb +0 -397
  288. data/spec/mongo/collection/view/change_stream_spec.rb +0 -547
  289. data/spec/mongo/collection/view/explainable_spec.rb +0 -119
  290. data/spec/mongo/collection/view/immutable_spec.rb +0 -57
  291. data/spec/mongo/collection/view/iterable_spec.rb +0 -41
  292. data/spec/mongo/collection/view/map_reduce_spec.rb +0 -907
  293. data/spec/mongo/collection/view/readable_spec.rb +0 -2283
  294. data/spec/mongo/collection/view/writable_spec.rb +0 -1976
  295. data/spec/mongo/collection/view_spec.rb +0 -424
  296. data/spec/mongo/collection_crud_spec.rb +0 -4472
  297. data/spec/mongo/collection_ddl_spec.rb +0 -587
  298. data/spec/mongo/collection_spec.rb +0 -850
  299. data/spec/mongo/condition_variable_spec.rb +0 -104
  300. data/spec/mongo/config/options_spec.rb +0 -76
  301. data/spec/mongo/config_spec.rb +0 -74
  302. data/spec/mongo/crypt/auto_decryption_context_spec.rb +0 -109
  303. data/spec/mongo/crypt/auto_encrypter_spec.rb +0 -448
  304. data/spec/mongo/crypt/auto_encryption_context_spec.rb +0 -126
  305. data/spec/mongo/crypt/binary_spec.rb +0 -113
  306. data/spec/mongo/crypt/binding/binary_spec.rb +0 -54
  307. data/spec/mongo/crypt/binding/context_spec.rb +0 -305
  308. data/spec/mongo/crypt/binding/helpers_spec.rb +0 -44
  309. data/spec/mongo/crypt/binding/mongocrypt_spec.rb +0 -113
  310. data/spec/mongo/crypt/binding/status_spec.rb +0 -97
  311. data/spec/mongo/crypt/binding/version_spec.rb +0 -67
  312. data/spec/mongo/crypt/binding_unloaded_spec.rb +0 -37
  313. data/spec/mongo/crypt/data_key_context_spec.rb +0 -144
  314. data/spec/mongo/crypt/encryption_io_spec.rb +0 -141
  315. data/spec/mongo/crypt/explicit_decryption_context_spec.rb +0 -106
  316. data/spec/mongo/crypt/explicit_encryption_context_spec.rb +0 -266
  317. data/spec/mongo/crypt/handle_spec.rb +0 -266
  318. data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +0 -111
  319. data/spec/mongo/crypt/hooks_spec.rb +0 -30
  320. data/spec/mongo/crypt/kms/azure/credentials_retriever_spec.rb +0 -86
  321. data/spec/mongo/crypt/kms/credentials_spec.rb +0 -373
  322. data/spec/mongo/crypt/kms_spec.rb +0 -62
  323. data/spec/mongo/crypt/status_spec.rb +0 -150
  324. data/spec/mongo/crypt_spec.rb +0 -21
  325. data/spec/mongo/cursor/builder/get_more_command_spec.rb +0 -195
  326. data/spec/mongo/cursor/builder/op_get_more_spec.rb +0 -68
  327. data/spec/mongo/cursor_spec.rb +0 -834
  328. data/spec/mongo/database_spec.rb +0 -1365
  329. data/spec/mongo/distinguishing_semaphore_spec.rb +0 -66
  330. data/spec/mongo/error/bulk_write_error_spec.rb +0 -52
  331. data/spec/mongo/error/crypt_error_spec.rb +0 -29
  332. data/spec/mongo/error/max_bson_size_spec.rb +0 -38
  333. data/spec/mongo/error/no_server_available_spec.rb +0 -35
  334. data/spec/mongo/error/notable_spec.rb +0 -62
  335. data/spec/mongo/error/operation_failure_heavy_spec.rb +0 -110
  336. data/spec/mongo/error/operation_failure_spec.rb +0 -553
  337. data/spec/mongo/error/parser_spec.rb +0 -519
  338. data/spec/mongo/error/unsupported_option_spec.rb +0 -57
  339. data/spec/mongo/event/publisher_spec.rb +0 -53
  340. data/spec/mongo/event/subscriber_spec.rb +0 -37
  341. data/spec/mongo/grid/file/chunk_spec.rb +0 -230
  342. data/spec/mongo/grid/file/info_spec.rb +0 -107
  343. data/spec/mongo/grid/file_spec.rb +0 -194
  344. data/spec/mongo/grid/fs_bucket_spec.rb +0 -1269
  345. data/spec/mongo/grid/stream/read_spec.rb +0 -292
  346. data/spec/mongo/grid/stream/write_spec.rb +0 -559
  347. data/spec/mongo/grid/stream_spec.rb +0 -51
  348. data/spec/mongo/id_spec.rb +0 -38
  349. data/spec/mongo/index/view_spec.rb +0 -1296
  350. data/spec/mongo/lint_spec.rb +0 -231
  351. data/spec/mongo/logger_spec.rb +0 -62
  352. data/spec/mongo/monitoring/command_log_subscriber_spec.rb +0 -79
  353. data/spec/mongo/monitoring/event/cmap/connection_check_out_failed_spec.rb +0 -26
  354. data/spec/mongo/monitoring/event/cmap/connection_check_out_started_spec.rb +0 -22
  355. data/spec/mongo/monitoring/event/cmap/connection_checked_in_spec.rb +0 -33
  356. data/spec/mongo/monitoring/event/cmap/connection_checked_out_spec.rb +0 -33
  357. data/spec/mongo/monitoring/event/cmap/connection_closed_spec.rb +0 -30
  358. data/spec/mongo/monitoring/event/cmap/connection_created_spec.rb +0 -27
  359. data/spec/mongo/monitoring/event/cmap/connection_ready_spec.rb +0 -27
  360. data/spec/mongo/monitoring/event/cmap/pool_cleared_spec.rb +0 -22
  361. data/spec/mongo/monitoring/event/cmap/pool_closed_spec.rb +0 -29
  362. data/spec/mongo/monitoring/event/cmap/pool_created_spec.rb +0 -36
  363. data/spec/mongo/monitoring/event/command_failed_spec.rb +0 -87
  364. data/spec/mongo/monitoring/event/command_started_spec.rb +0 -51
  365. data/spec/mongo/monitoring/event/command_succeeded_spec.rb +0 -88
  366. data/spec/mongo/monitoring/event/secure_spec.rb +0 -123
  367. data/spec/mongo/monitoring/event/server_closed_spec.rb +0 -38
  368. data/spec/mongo/monitoring/event/server_description_changed_spec.rb +0 -38
  369. data/spec/mongo/monitoring/event/server_heartbeat_failed_spec.rb +0 -34
  370. data/spec/mongo/monitoring/event/server_heartbeat_started_spec.rb +0 -34
  371. data/spec/mongo/monitoring/event/server_heartbeat_succeeded_spec.rb +0 -34
  372. data/spec/mongo/monitoring/event/server_opening_spec.rb +0 -38
  373. data/spec/mongo/monitoring/event/topology_changed_spec.rb +0 -44
  374. data/spec/mongo/monitoring/event/topology_closed_spec.rb +0 -38
  375. data/spec/mongo/monitoring/event/topology_opening_spec.rb +0 -38
  376. data/spec/mongo/monitoring_spec.rb +0 -196
  377. data/spec/mongo/operation/aggregate/result_spec.rb +0 -90
  378. data/spec/mongo/operation/aggregate_spec.rb +0 -76
  379. data/spec/mongo/operation/collections_info_spec.rb +0 -48
  380. data/spec/mongo/operation/command_spec.rb +0 -86
  381. data/spec/mongo/operation/create/op_msg_spec.rb +0 -244
  382. data/spec/mongo/operation/create_index_spec.rb +0 -62
  383. data/spec/mongo/operation/create_user_spec.rb +0 -53
  384. data/spec/mongo/operation/delete/bulk_spec.rb +0 -245
  385. data/spec/mongo/operation/delete/op_msg_spec.rb +0 -266
  386. data/spec/mongo/operation/delete_spec.rb +0 -203
  387. data/spec/mongo/operation/drop_index_spec.rb +0 -61
  388. data/spec/mongo/operation/find/builder/flags_spec.rb +0 -109
  389. data/spec/mongo/operation/find/builder/modifiers_spec.rb +0 -213
  390. data/spec/mongo/operation/indexes_spec.rb +0 -41
  391. data/spec/mongo/operation/insert/bulk_spec.rb +0 -273
  392. data/spec/mongo/operation/insert/op_msg_spec.rb +0 -296
  393. data/spec/mongo/operation/insert_spec.rb +0 -258
  394. data/spec/mongo/operation/limited_spec.rb +0 -55
  395. data/spec/mongo/operation/map_reduce_spec.rb +0 -131
  396. data/spec/mongo/operation/read_preference_legacy_spec.rb +0 -360
  397. data/spec/mongo/operation/read_preference_op_msg_spec.rb +0 -332
  398. data/spec/mongo/operation/remove_user_spec.rb +0 -52
  399. data/spec/mongo/operation/result_spec.rb +0 -369
  400. data/spec/mongo/operation/specifiable_spec.rb +0 -87
  401. data/spec/mongo/operation/update/bulk_spec.rb +0 -239
  402. data/spec/mongo/operation/update/op_msg_spec.rb +0 -272
  403. data/spec/mongo/operation/update_spec.rb +0 -235
  404. data/spec/mongo/operation/update_user_spec.rb +0 -52
  405. data/spec/mongo/options/redacted_spec.rb +0 -353
  406. data/spec/mongo/protocol/caching_hash_spec.rb +0 -37
  407. data/spec/mongo/protocol/compressed_spec.rb +0 -83
  408. data/spec/mongo/protocol/get_more_spec.rb +0 -164
  409. data/spec/mongo/protocol/kill_cursors_spec.rb +0 -121
  410. data/spec/mongo/protocol/msg_spec.rb +0 -507
  411. data/spec/mongo/protocol/query_spec.rb +0 -347
  412. data/spec/mongo/protocol/registry_spec.rb +0 -34
  413. data/spec/mongo/protocol/reply_spec.rb +0 -198
  414. data/spec/mongo/query_cache_middleware_spec.rb +0 -55
  415. data/spec/mongo/query_cache_spec.rb +0 -453
  416. data/spec/mongo/retryable/write_worker_spec.rb +0 -39
  417. data/spec/mongo/retryable_spec.rb +0 -623
  418. data/spec/mongo/semaphore_spec.rb +0 -54
  419. data/spec/mongo/server/app_metadata/environment_spec.rb +0 -344
  420. data/spec/mongo/server/app_metadata/truncator_spec.rb +0 -158
  421. data/spec/mongo/server/app_metadata_spec.rb +0 -158
  422. data/spec/mongo/server/connection_auth_spec.rb +0 -138
  423. data/spec/mongo/server/connection_common_spec.rb +0 -87
  424. data/spec/mongo/server/connection_pool/populator_spec.rb +0 -120
  425. data/spec/mongo/server/connection_pool_spec.rb +0 -1609
  426. data/spec/mongo/server/connection_spec.rb +0 -1310
  427. data/spec/mongo/server/description/features_spec.rb +0 -274
  428. data/spec/mongo/server/description_query_methods_spec.rb +0 -291
  429. data/spec/mongo/server/description_spec.rb +0 -846
  430. data/spec/mongo/server/monitor/app_metadata_spec.rb +0 -25
  431. data/spec/mongo/server/monitor/connection_spec.rb +0 -197
  432. data/spec/mongo/server/monitor_spec.rb +0 -326
  433. data/spec/mongo/server/push_monitor_spec.rb +0 -95
  434. data/spec/mongo/server/round_trip_time_averager_spec.rb +0 -48
  435. data/spec/mongo/server_selector/nearest_spec.rb +0 -338
  436. data/spec/mongo/server_selector/primary_preferred_spec.rb +0 -372
  437. data/spec/mongo/server_selector/primary_spec.rb +0 -181
  438. data/spec/mongo/server_selector/secondary_preferred_spec.rb +0 -350
  439. data/spec/mongo/server_selector/secondary_spec.rb +0 -278
  440. data/spec/mongo/server_selector_spec.rb +0 -736
  441. data/spec/mongo/server_spec.rb +0 -463
  442. data/spec/mongo/session/server_session_spec.rb +0 -62
  443. data/spec/mongo/session/session_pool_spec.rb +0 -257
  444. data/spec/mongo/session_spec.rb +0 -368
  445. data/spec/mongo/session_transaction_spec.rb +0 -222
  446. data/spec/mongo/socket/ssl_spec.rb +0 -840
  447. data/spec/mongo/socket/tcp_spec.rb +0 -17
  448. data/spec/mongo/socket/unix_spec.rb +0 -56
  449. data/spec/mongo/socket_spec.rb +0 -119
  450. data/spec/mongo/srv/monitor_spec.rb +0 -233
  451. data/spec/mongo/srv/result_spec.rb +0 -57
  452. data/spec/mongo/timeout_spec.rb +0 -42
  453. data/spec/mongo/tls_context_hooks_spec.rb +0 -40
  454. data/spec/mongo/uri/options_mapper_spec.rb +0 -1605
  455. data/spec/mongo/uri/srv_protocol_spec.rb +0 -1367
  456. data/spec/mongo/uri_option_parsing_spec.rb +0 -625
  457. data/spec/mongo/uri_spec.rb +0 -1443
  458. data/spec/mongo/utils_spec.rb +0 -42
  459. data/spec/mongo/write_concern/acknowledged_spec.rb +0 -58
  460. data/spec/mongo/write_concern/unacknowledged_spec.rb +0 -29
  461. data/spec/mongo/write_concern_spec.rb +0 -227
  462. data/spec/runners/auth.rb +0 -140
  463. data/spec/runners/change_streams/outcome.rb +0 -45
  464. data/spec/runners/change_streams/spec.rb +0 -60
  465. data/spec/runners/change_streams/test.rb +0 -232
  466. data/spec/runners/cmap/verifier.rb +0 -48
  467. data/spec/runners/cmap.rb +0 -516
  468. data/spec/runners/command_monitoring.rb +0 -346
  469. data/spec/runners/connection_string.rb +0 -393
  470. data/spec/runners/crud/operation.rb +0 -480
  471. data/spec/runners/crud/outcome.rb +0 -56
  472. data/spec/runners/crud/requirement.rb +0 -139
  473. data/spec/runners/crud/spec.rb +0 -76
  474. data/spec/runners/crud/test.rb +0 -115
  475. data/spec/runners/crud/test_base.rb +0 -53
  476. data/spec/runners/crud/verifier.rb +0 -222
  477. data/spec/runners/crud.rb +0 -257
  478. data/spec/runners/gridfs.rb +0 -641
  479. data/spec/runners/read_write_concern_document.rb +0 -70
  480. data/spec/runners/sdam/verifier.rb +0 -112
  481. data/spec/runners/sdam.rb +0 -279
  482. data/spec/runners/server_selection.rb +0 -365
  483. data/spec/runners/server_selection_rtt.rb +0 -41
  484. data/spec/runners/transactions/operation.rb +0 -334
  485. data/spec/runners/transactions/spec.rb +0 -29
  486. data/spec/runners/transactions/test.rb +0 -379
  487. data/spec/runners/transactions.rb +0 -107
  488. data/spec/runners/unified/assertions.rb +0 -392
  489. data/spec/runners/unified/change_stream_operations.rb +0 -52
  490. data/spec/runners/unified/client_side_encryption_operations.rb +0 -83
  491. data/spec/runners/unified/crud_operations.rb +0 -344
  492. data/spec/runners/unified/ddl_operations.rb +0 -255
  493. data/spec/runners/unified/entity_map.rb +0 -42
  494. data/spec/runners/unified/error.rb +0 -29
  495. data/spec/runners/unified/event_subscriber.rb +0 -110
  496. data/spec/runners/unified/exceptions.rb +0 -24
  497. data/spec/runners/unified/grid_fs_operations.rb +0 -79
  498. data/spec/runners/unified/search_index_operations.rb +0 -63
  499. data/spec/runners/unified/support_operations.rb +0 -331
  500. data/spec/runners/unified/test.rb +0 -594
  501. data/spec/runners/unified/test_group.rb +0 -31
  502. data/spec/runners/unified/thread_operations.rb +0 -73
  503. data/spec/runners/unified.rb +0 -109
  504. data/spec/solo/clean_exit_spec.rb +0 -22
  505. data/spec/spec_helper.rb +0 -35
  506. data/spec/spec_tests/auth_spec.rb +0 -58
  507. data/spec/spec_tests/change_streams_unified_spec.rb +0 -14
  508. data/spec/spec_tests/client_side_encryption_spec.rb +0 -37
  509. data/spec/spec_tests/client_side_encryption_unified_spec.rb +0 -26
  510. data/spec/spec_tests/cmap_spec.rb +0 -126
  511. data/spec/spec_tests/collection_management_spec.rb +0 -13
  512. data/spec/spec_tests/command_monitoring_unified_spec.rb +0 -13
  513. data/spec/spec_tests/connection_string_spec.rb +0 -10
  514. data/spec/spec_tests/crud_spec.rb +0 -12
  515. data/spec/spec_tests/crud_unified_spec.rb +0 -13
  516. data/spec/spec_tests/data/auth/connection-string.yml +0 -366
  517. data/spec/spec_tests/data/change_streams_unified/change-streams-clusterTime.yml +0 -41
  518. data/spec/spec_tests/data/change_streams_unified/change-streams-disambiguatedPaths.yml +0 -103
  519. data/spec/spec_tests/data/change_streams_unified/change-streams-errors.yml +0 -120
  520. data/spec/spec_tests/data/change_streams_unified/change-streams-pre_and_post_images.yml +0 -351
  521. data/spec/spec_tests/data/change_streams_unified/change-streams-resume-allowlist.yml +0 -1169
  522. data/spec/spec_tests/data/change_streams_unified/change-streams-resume-errorLabels.yml +0 -1069
  523. data/spec/spec_tests/data/change_streams_unified/change-streams-showExpandedEvents.yml +0 -307
  524. data/spec/spec_tests/data/change_streams_unified/change-streams.yml +0 -927
  525. data/spec/spec_tests/data/client_side_encryption/aggregate.yml +0 -120
  526. data/spec/spec_tests/data/client_side_encryption/awsTemporary.yml +0 -57
  527. data/spec/spec_tests/data/client_side_encryption/azureKMS.yml +0 -46
  528. data/spec/spec_tests/data/client_side_encryption/badQueries.yml +0 -536
  529. data/spec/spec_tests/data/client_side_encryption/badSchema.yml +0 -73
  530. data/spec/spec_tests/data/client_side_encryption/basic.yml +0 -102
  531. data/spec/spec_tests/data/client_side_encryption/bulk.yml +0 -81
  532. data/spec/spec_tests/data/client_side_encryption/bypassAutoEncryption.yml +0 -100
  533. data/spec/spec_tests/data/client_side_encryption/bypassedCommand.yml +0 -43
  534. data/spec/spec_tests/data/client_side_encryption/count.yml +0 -54
  535. data/spec/spec_tests/data/client_side_encryption/countDocuments.yml +0 -52
  536. data/spec/spec_tests/data/client_side_encryption/create-and-createIndexes.yml +0 -58
  537. data/spec/spec_tests/data/client_side_encryption/delete.yml +0 -91
  538. data/spec/spec_tests/data/client_side_encryption/distinct.yml +0 -66
  539. data/spec/spec_tests/data/client_side_encryption/explain.yml +0 -57
  540. data/spec/spec_tests/data/client_side_encryption/find.yml +0 -105
  541. data/spec/spec_tests/data/client_side_encryption/findOneAndDelete.yml +0 -50
  542. data/spec/spec_tests/data/client_side_encryption/findOneAndReplace.yml +0 -50
  543. data/spec/spec_tests/data/client_side_encryption/findOneAndUpdate.yml +0 -50
  544. data/spec/spec_tests/data/client_side_encryption/fle2v2-BypassQueryAnalysis.yml +0 -90
  545. data/spec/spec_tests/data/client_side_encryption/fle2v2-Compact.yml +0 -83
  546. data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection-OldServer.yml +0 -61
  547. data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection.yml +0 -938
  548. data/spec/spec_tests/data/client_side_encryption/fle2v2-DecryptExistingData.yml +0 -67
  549. data/spec/spec_tests/data/client_side_encryption/fle2v2-Delete.yml +0 -101
  550. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-EncryptedFieldsMap.yml +0 -80
  551. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-jsonSchema.yml +0 -103
  552. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFieldsMap-defaults.yml +0 -59
  553. data/spec/spec_tests/data/client_side_encryption/fle2v2-FindOneAndUpdate.yml +0 -201
  554. data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Indexed.yml +0 -97
  555. data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Unindexed.yml +0 -90
  556. data/spec/spec_tests/data/client_side_encryption/fle2v2-MissingKey.yml +0 -44
  557. data/spec/spec_tests/data/client_side_encryption/fle2v2-NoEncryption.yml +0 -45
  558. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Aggregate.yml +0 -242
  559. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Correctness.yml +0 -423
  560. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Delete.yml +0 -183
  561. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-FindOneAndUpdate.yml +0 -240
  562. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-InsertFind.yml +0 -236
  563. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Update.yml +0 -253
  564. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Aggregate.yml +0 -1688
  565. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Correctness.yml +0 -294
  566. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Delete.yml +0 -906
  567. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-FindOneAndUpdate.yml +0 -1685
  568. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-InsertFind.yml +0 -1681
  569. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Update.yml +0 -1698
  570. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Aggregate.yml +0 -330
  571. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Correctness.yml +0 -425
  572. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Delete.yml +0 -227
  573. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-FindOneAndUpdate.yml +0 -328
  574. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-InsertFind.yml +0 -320
  575. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Update.yml +0 -337
  576. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Aggregate.yml +0 -914
  577. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Correctness.yml +0 -293
  578. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Delete.yml +0 -519
  579. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-FindOneAndUpdate.yml +0 -912
  580. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-InsertFind.yml +0 -908
  581. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Update.yml +0 -925
  582. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Aggregate.yml +0 -326
  583. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Correctness.yml +0 -425
  584. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Delete.yml +0 -225
  585. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-FindOneAndUpdate.yml +0 -324
  586. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-InsertFind.yml +0 -320
  587. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Update.yml +0 -339
  588. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Aggregate.yml +0 -242
  589. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Correctness.yml +0 -424
  590. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Delete.yml +0 -183
  591. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-FindOneAndUpdate.yml +0 -240
  592. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-InsertFind.yml +0 -236
  593. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Update.yml +0 -255
  594. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Aggregate.yml +0 -242
  595. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Correctness.yml +0 -423
  596. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Delete.yml +0 -183
  597. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-FindOneAndUpdate.yml +0 -240
  598. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-InsertFind.yml +0 -236
  599. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Update.yml +0 -255
  600. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-WrongType.yml +0 -44
  601. data/spec/spec_tests/data/client_side_encryption/fle2v2-Update.yml +0 -211
  602. data/spec/spec_tests/data/client_side_encryption/fle2v2-validatorAndPartialFieldExpression.yml +0 -170
  603. data/spec/spec_tests/data/client_side_encryption/gcpKMS.yml +0 -46
  604. data/spec/spec_tests/data/client_side_encryption/getMore.yml +0 -61
  605. data/spec/spec_tests/data/client_side_encryption/insert.yml +0 -88
  606. data/spec/spec_tests/data/client_side_encryption/keyAltName.yml +0 -64
  607. data/spec/spec_tests/data/client_side_encryption/localKMS.yml +0 -47
  608. data/spec/spec_tests/data/client_side_encryption/localSchema.yml +0 -65
  609. data/spec/spec_tests/data/client_side_encryption/malformedCiphertext.yml +0 -69
  610. data/spec/spec_tests/data/client_side_encryption/maxWireVersion.yml +0 -22
  611. data/spec/spec_tests/data/client_side_encryption/missingKey.yml +0 -42
  612. data/spec/spec_tests/data/client_side_encryption/noSchema.yml +0 -39
  613. data/spec/spec_tests/data/client_side_encryption/replaceOne.yml +0 -57
  614. data/spec/spec_tests/data/client_side_encryption/types.yml +0 -501
  615. data/spec/spec_tests/data/client_side_encryption/unified/addKeyAltName.yml +0 -194
  616. data/spec/spec_tests/data/client_side_encryption/unified/createDataKey-kms_providers-invalid.yml +0 -67
  617. data/spec/spec_tests/data/client_side_encryption/unified/createDataKey.yml +0 -309
  618. data/spec/spec_tests/data/client_side_encryption/unified/deleteKey.yml +0 -159
  619. data/spec/spec_tests/data/client_side_encryption/unified/getKey.yml +0 -105
  620. data/spec/spec_tests/data/client_side_encryption/unified/getKeyByAltName.yml +0 -104
  621. data/spec/spec_tests/data/client_side_encryption/unified/getKeys.yml +0 -122
  622. data/spec/spec_tests/data/client_side_encryption/unified/removeKeyAltName.yml +0 -157
  623. data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey-decrypt_failure.yml +0 -69
  624. data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey-encrypt_failure.yml +0 -122
  625. data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey.yml +0 -432
  626. data/spec/spec_tests/data/client_side_encryption/unsupportedCommand.yml +0 -25
  627. data/spec/spec_tests/data/client_side_encryption/updateMany.yml +0 -70
  628. data/spec/spec_tests/data/client_side_encryption/updateOne.yml +0 -164
  629. data/spec/spec_tests/data/client_side_encryption/validatorAndPartialFieldExpression.yml +0 -166
  630. data/spec/spec_tests/data/cmap/connection-must-have-id.yml +0 -29
  631. data/spec/spec_tests/data/cmap/connection-must-order-ids.yml +0 -29
  632. data/spec/spec_tests/data/cmap/pool-checkin-destroy-closed.yml +0 -29
  633. data/spec/spec_tests/data/cmap/pool-checkin-destroy-stale.yml +0 -29
  634. data/spec/spec_tests/data/cmap/pool-checkin-make-available.yml +0 -26
  635. data/spec/spec_tests/data/cmap/pool-checkin.yml +0 -24
  636. data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +0 -21
  637. data/spec/spec_tests/data/cmap/pool-checkout-custom-maxConnecting-is-enforced.yml +0 -50
  638. data/spec/spec_tests/data/cmap/pool-checkout-error-closed.yml +0 -38
  639. data/spec/spec_tests/data/cmap/pool-checkout-maxConnecting-is-enforced.yml +0 -81
  640. data/spec/spec_tests/data/cmap/pool-checkout-maxConnecting-timeout.yml +0 -71
  641. data/spec/spec_tests/data/cmap/pool-checkout-minPoolSize-connection-maxConnecting.yml +0 -64
  642. data/spec/spec_tests/data/cmap/pool-checkout-multiple.yml +0 -39
  643. data/spec/spec_tests/data/cmap/pool-checkout-no-idle.yml +0 -41
  644. data/spec/spec_tests/data/cmap/pool-checkout-no-stale.yml +0 -41
  645. data/spec/spec_tests/data/cmap/pool-checkout-returned-connection-maxConnecting.yml +0 -88
  646. data/spec/spec_tests/data/cmap/pool-clear-interrupting-pending-connections.yml +0 -43
  647. data/spec/spec_tests/data/cmap/pool-clear-min-size.yml +0 -41
  648. data/spec/spec_tests/data/cmap/pool-clear-paused.yml +0 -18
  649. data/spec/spec_tests/data/cmap/pool-clear-ready.yml +0 -39
  650. data/spec/spec_tests/data/cmap/pool-clear-schedule-run-interruptInUseConnections-false.yml +0 -48
  651. data/spec/spec_tests/data/cmap/pool-close-destroy-conns.yml +0 -30
  652. data/spec/spec_tests/data/cmap/pool-close.yml +0 -11
  653. data/spec/spec_tests/data/cmap/pool-create-max-size.yml +0 -73
  654. data/spec/spec_tests/data/cmap/pool-create-min-size-error.yml +0 -43
  655. data/spec/spec_tests/data/cmap/pool-create-min-size.yml +0 -43
  656. data/spec/spec_tests/data/cmap/pool-create-with-options.yml +0 -21
  657. data/spec/spec_tests/data/cmap/pool-create.yml +0 -12
  658. data/spec/spec_tests/data/cmap/pool-ready-ready.yml +0 -22
  659. data/spec/spec_tests/data/cmap/pool-ready.yml +0 -30
  660. data/spec/spec_tests/data/cmap/wait-queue-fairness.yml +0 -126
  661. data/spec/spec_tests/data/cmap/wait-queue-timeout.yml +0 -51
  662. data/spec/spec_tests/data/collection_management/clustered-indexes.yml +0 -135
  663. data/spec/spec_tests/data/collection_management/createCollection-pre_and_post_images.yml +0 -50
  664. data/spec/spec_tests/data/collection_management/modifyCollection-errorResponse.yml +0 -59
  665. data/spec/spec_tests/data/collection_management/modifyCollection-pre_and_post_images.yml +0 -58
  666. data/spec/spec_tests/data/collection_management/timeseries-collection.yml +0 -164
  667. data/spec/spec_tests/data/command_monitoring_unified/bulkWrite.yml +0 -68
  668. data/spec/spec_tests/data/command_monitoring_unified/command.yml +0 -50
  669. data/spec/spec_tests/data/command_monitoring_unified/deleteMany.yml +0 -79
  670. data/spec/spec_tests/data/command_monitoring_unified/deleteOne.yml +0 -79
  671. data/spec/spec_tests/data/command_monitoring_unified/find.yml +0 -254
  672. data/spec/spec_tests/data/command_monitoring_unified/insertMany.yml +0 -79
  673. data/spec/spec_tests/data/command_monitoring_unified/insertOne.yml +0 -77
  674. data/spec/spec_tests/data/command_monitoring_unified/pre-42-server-connection-id.yml +0 -56
  675. data/spec/spec_tests/data/command_monitoring_unified/redacted-commands.yml +0 -348
  676. data/spec/spec_tests/data/command_monitoring_unified/server-connection-id.yml +0 -56
  677. data/spec/spec_tests/data/command_monitoring_unified/unacknowledgedBulkWrite.yml +0 -55
  678. data/spec/spec_tests/data/command_monitoring_unified/updateMany.yml +0 -87
  679. data/spec/spec_tests/data/command_monitoring_unified/updateOne.yml +0 -118
  680. data/spec/spec_tests/data/command_monitoring_unified/writeConcernError.yml +0 -80
  681. data/spec/spec_tests/data/connection_string/invalid-uris.yml +0 -251
  682. data/spec/spec_tests/data/connection_string/valid-auth.yml +0 -257
  683. data/spec/spec_tests/data/connection_string/valid-db-with-dotted-name.yml +0 -77
  684. data/spec/spec_tests/data/connection_string/valid-host_identifiers.yml +0 -121
  685. data/spec/spec_tests/data/connection_string/valid-options.yml +0 -30
  686. data/spec/spec_tests/data/connection_string/valid-unix_socket-absolute.yml +0 -197
  687. data/spec/spec_tests/data/connection_string/valid-unix_socket-relative.yml +0 -213
  688. data/spec/spec_tests/data/connection_string/valid-warnings.yml +0 -75
  689. data/spec/spec_tests/data/crud/read/aggregate-collation.yml +0 -18
  690. data/spec/spec_tests/data/crud/read/aggregate-out.yml +0 -44
  691. data/spec/spec_tests/data/crud/read/aggregate.yml +0 -21
  692. data/spec/spec_tests/data/crud/read/count-collation.yml +0 -26
  693. data/spec/spec_tests/data/crud/read/count-empty.yml +0 -29
  694. data/spec/spec_tests/data/crud/read/count.yml +0 -74
  695. data/spec/spec_tests/data/crud/read/distinct-collation.yml +0 -18
  696. data/spec/spec_tests/data/crud/read/distinct.yml +0 -32
  697. data/spec/spec_tests/data/crud/read/find-collation.yml +0 -16
  698. data/spec/spec_tests/data/crud/read/find.yml +0 -49
  699. data/spec/spec_tests/data/crud/write/bulkWrite-arrayFilters.yml +0 -45
  700. data/spec/spec_tests/data/crud/write/bulkWrite-collation.yml +0 -102
  701. data/spec/spec_tests/data/crud/write/bulkWrite.yml +0 -405
  702. data/spec/spec_tests/data/crud/write/deleteMany-collation.yml +0 -23
  703. data/spec/spec_tests/data/crud/write/deleteMany.yml +0 -35
  704. data/spec/spec_tests/data/crud/write/deleteOne-collation.yml +0 -23
  705. data/spec/spec_tests/data/crud/write/deleteOne.yml +0 -48
  706. data/spec/spec_tests/data/crud/write/findOneAndDelete-collation.yml +0 -24
  707. data/spec/spec_tests/data/crud/write/findOneAndDelete.yml +0 -53
  708. data/spec/spec_tests/data/crud/write/findOneAndReplace-collation.yml +0 -25
  709. data/spec/spec_tests/data/crud/write/findOneAndReplace-upsert.yml +0 -91
  710. data/spec/spec_tests/data/crud/write/findOneAndReplace-upsert_pre_2.6.yml +0 -88
  711. data/spec/spec_tests/data/crud/write/findOneAndReplace.yml +0 -113
  712. data/spec/spec_tests/data/crud/write/findOneAndUpdate-arrayFilters.yml +0 -69
  713. data/spec/spec_tests/data/crud/write/findOneAndUpdate-collation.yml +0 -28
  714. data/spec/spec_tests/data/crud/write/findOneAndUpdate.yml +0 -163
  715. data/spec/spec_tests/data/crud/write/insertMany.yml +0 -81
  716. data/spec/spec_tests/data/crud/write/insertOne.yml +0 -18
  717. data/spec/spec_tests/data/crud/write/replaceOne-collation.yml +0 -25
  718. data/spec/spec_tests/data/crud/write/replaceOne-pre_2.6.yml +0 -98
  719. data/spec/spec_tests/data/crud/write/replaceOne-upsert.yml +0 -48
  720. data/spec/spec_tests/data/crud/write/replaceOne.yml +0 -102
  721. data/spec/spec_tests/data/crud/write/updateMany-arrayFilters.yml +0 -66
  722. data/spec/spec_tests/data/crud/write/updateMany-collation.yml +0 -29
  723. data/spec/spec_tests/data/crud/write/updateMany-pre_2.6.yml +0 -86
  724. data/spec/spec_tests/data/crud/write/updateMany.yml +0 -87
  725. data/spec/spec_tests/data/crud/write/updateOne-arrayFilters.yml +0 -114
  726. data/spec/spec_tests/data/crud/write/updateOne-collation.yml +0 -26
  727. data/spec/spec_tests/data/crud/write/updateOne-pre_2.6.yml +0 -83
  728. data/spec/spec_tests/data/crud/write/updateOne.yml +0 -84
  729. data/spec/spec_tests/data/crud_unified/aggregate-allowdiskuse.yml +0 -75
  730. data/spec/spec_tests/data/crud_unified/aggregate-let.yml +0 -138
  731. data/spec/spec_tests/data/crud_unified/aggregate-merge-errorResponse.yml +0 -42
  732. data/spec/spec_tests/data/crud_unified/aggregate-merge.yml +0 -185
  733. data/spec/spec_tests/data/crud_unified/aggregate-out-readConcern.yml +0 -171
  734. data/spec/spec_tests/data/crud_unified/aggregate-write-readPreference.yml +0 -157
  735. data/spec/spec_tests/data/crud_unified/aggregate.yml +0 -215
  736. data/spec/spec_tests/data/crud_unified/bulkWrite-arrayFilters-clientError.yml +0 -98
  737. data/spec/spec_tests/data/crud_unified/bulkWrite-arrayFilters.yml +0 -174
  738. data/spec/spec_tests/data/crud_unified/bulkWrite-comment.yml +0 -189
  739. data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint-clientError.yml +0 -113
  740. data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint-serverError.yml +0 -142
  741. data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint.yml +0 -154
  742. data/spec/spec_tests/data/crud_unified/bulkWrite-deleteMany-hint-unacknowledged.yml +0 -98
  743. data/spec/spec_tests/data/crud_unified/bulkWrite-deleteMany-let.yml +0 -86
  744. data/spec/spec_tests/data/crud_unified/bulkWrite-deleteOne-hint-unacknowledged.yml +0 -97
  745. data/spec/spec_tests/data/crud_unified/bulkWrite-deleteOne-let.yml +0 -86
  746. data/spec/spec_tests/data/crud_unified/bulkWrite-errorResponse.yml +0 -50
  747. data/spec/spec_tests/data/crud_unified/bulkWrite-insertOne-dots_and_dollars.yml +0 -138
  748. data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-dots_and_dollars.yml +0 -165
  749. data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-hint-unacknowledged.yml +0 -103
  750. data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-let.yml +0 -93
  751. data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint-clientError.yml +0 -148
  752. data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint-serverError.yml +0 -239
  753. data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint.yml +0 -256
  754. data/spec/spec_tests/data/crud_unified/bulkWrite-update-validation.yml +0 -73
  755. data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-dots_and_dollars.yml +0 -150
  756. data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-hint-unacknowledged.yml +0 -104
  757. data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-let.yml +0 -96
  758. data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-dots_and_dollars.yml +0 -150
  759. data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-hint-unacknowledged.yml +0 -103
  760. data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-let.yml +0 -95
  761. data/spec/spec_tests/data/crud_unified/countDocuments-comment.yml +0 -92
  762. data/spec/spec_tests/data/crud_unified/db-aggregate-write-readPreference.yml +0 -153
  763. data/spec/spec_tests/data/crud_unified/db-aggregate.yml +0 -73
  764. data/spec/spec_tests/data/crud_unified/deleteMany-comment.yml +0 -97
  765. data/spec/spec_tests/data/crud_unified/deleteMany-hint-clientError.yml +0 -87
  766. data/spec/spec_tests/data/crud_unified/deleteMany-hint-serverError.yml +0 -107
  767. data/spec/spec_tests/data/crud_unified/deleteMany-hint-unacknowledged.yml +0 -90
  768. data/spec/spec_tests/data/crud_unified/deleteMany-hint.yml +0 -99
  769. data/spec/spec_tests/data/crud_unified/deleteMany-let.yml +0 -93
  770. data/spec/spec_tests/data/crud_unified/deleteOne-comment.yml +0 -98
  771. data/spec/spec_tests/data/crud_unified/deleteOne-errorResponse.yml +0 -46
  772. data/spec/spec_tests/data/crud_unified/deleteOne-hint-clientError.yml +0 -80
  773. data/spec/spec_tests/data/crud_unified/deleteOne-hint-serverError.yml +0 -100
  774. data/spec/spec_tests/data/crud_unified/deleteOne-hint-unacknowledged.yml +0 -89
  775. data/spec/spec_tests/data/crud_unified/deleteOne-hint.yml +0 -95
  776. data/spec/spec_tests/data/crud_unified/deleteOne-let.yml +0 -91
  777. data/spec/spec_tests/data/crud_unified/distinct-comment.yml +0 -98
  778. data/spec/spec_tests/data/crud_unified/estimatedDocumentCount-comment.yml +0 -95
  779. data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +0 -181
  780. data/spec/spec_tests/data/crud_unified/find-allowdiskuse-clientError.yml +0 -55
  781. data/spec/spec_tests/data/crud_unified/find-allowdiskuse-serverError.yml +0 -68
  782. data/spec/spec_tests/data/crud_unified/find-allowdiskuse.yml +0 -79
  783. data/spec/spec_tests/data/crud_unified/find-comment.yml +0 -166
  784. data/spec/spec_tests/data/crud_unified/find-let.yml +0 -71
  785. data/spec/spec_tests/data/crud_unified/find-test-all-options.yml +0 -348
  786. data/spec/spec_tests/data/crud_unified/find.yml +0 -68
  787. data/spec/spec_tests/data/crud_unified/findOneAndDelete-comment.yml +0 -96
  788. data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-clientError.yml +0 -91
  789. data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-serverError.yml +0 -107
  790. data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-unacknowledged.yml +0 -88
  791. data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint.yml +0 -102
  792. data/spec/spec_tests/data/crud_unified/findOneAndDelete-let.yml +0 -86
  793. data/spec/spec_tests/data/crud_unified/findOneAndReplace-comment.yml +0 -101
  794. data/spec/spec_tests/data/crud_unified/findOneAndReplace-dots_and_dollars.yml +0 -140
  795. data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-clientError.yml +0 -83
  796. data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-serverError.yml +0 -99
  797. data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-unacknowledged.yml +0 -96
  798. data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint.yml +0 -98
  799. data/spec/spec_tests/data/crud_unified/findOneAndReplace-let.yml +0 -94
  800. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-comment.yml +0 -95
  801. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-dots_and_dollars.yml +0 -127
  802. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-errorResponse.yml +0 -69
  803. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-clientError.yml +0 -84
  804. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-serverError.yml +0 -100
  805. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-unacknowledged.yml +0 -92
  806. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint.yml +0 -99
  807. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-let.yml +0 -96
  808. data/spec/spec_tests/data/crud_unified/insertMany-comment.yml +0 -93
  809. data/spec/spec_tests/data/crud_unified/insertMany-dots_and_dollars.yml +0 -128
  810. data/spec/spec_tests/data/crud_unified/insertOne-comment.yml +0 -91
  811. data/spec/spec_tests/data/crud_unified/insertOne-dots_and_dollars.yml +0 -238
  812. data/spec/spec_tests/data/crud_unified/insertOne-errorResponse.yml +0 -46
  813. data/spec/spec_tests/data/crud_unified/replaceOne-comment.yml +0 -105
  814. data/spec/spec_tests/data/crud_unified/replaceOne-dots_and_dollars.yml +0 -180
  815. data/spec/spec_tests/data/crud_unified/replaceOne-hint-unacknowledged.yml +0 -95
  816. data/spec/spec_tests/data/crud_unified/replaceOne-hint.yml +0 -108
  817. data/spec/spec_tests/data/crud_unified/replaceOne-let.yml +0 -98
  818. data/spec/spec_tests/data/crud_unified/replaceOne-validation.yml +0 -37
  819. data/spec/spec_tests/data/crud_unified/updateMany-comment.yml +0 -104
  820. data/spec/spec_tests/data/crud_unified/updateMany-dots_and_dollars.yml +0 -138
  821. data/spec/spec_tests/data/crud_unified/updateMany-hint-clientError.yml +0 -91
  822. data/spec/spec_tests/data/crud_unified/updateMany-hint-serverError.yml +0 -115
  823. data/spec/spec_tests/data/crud_unified/updateMany-hint-unacknowledged.yml +0 -96
  824. data/spec/spec_tests/data/crud_unified/updateMany-hint.yml +0 -115
  825. data/spec/spec_tests/data/crud_unified/updateMany-let.yml +0 -107
  826. data/spec/spec_tests/data/crud_unified/updateMany-validation.yml +0 -39
  827. data/spec/spec_tests/data/crud_unified/updateOne-comment.yml +0 -104
  828. data/spec/spec_tests/data/crud_unified/updateOne-dots_and_dollars.yml +0 -138
  829. data/spec/spec_tests/data/crud_unified/updateOne-errorResponse.yml +0 -47
  830. data/spec/spec_tests/data/crud_unified/updateOne-hint-clientError.yml +0 -85
  831. data/spec/spec_tests/data/crud_unified/updateOne-hint-serverError.yml +0 -109
  832. data/spec/spec_tests/data/crud_unified/updateOne-hint-unacknowledged.yml +0 -95
  833. data/spec/spec_tests/data/crud_unified/updateOne-hint.yml +0 -109
  834. data/spec/spec_tests/data/crud_unified/updateOne-let.yml +0 -102
  835. data/spec/spec_tests/data/crud_unified/updateOne-validation.yml +0 -37
  836. data/spec/spec_tests/data/crud_unified/updateWithPipelines.yml +0 -299
  837. data/spec/spec_tests/data/gridfs/delete.yml +0 -123
  838. data/spec/spec_tests/data/gridfs/download.yml +0 -192
  839. data/spec/spec_tests/data/gridfs/download_by_name.yml +0 -113
  840. data/spec/spec_tests/data/gridfs/upload.yml +0 -158
  841. data/spec/spec_tests/data/gridfs_unified/delete.yml +0 -198
  842. data/spec/spec_tests/data/gridfs_unified/download.yml +0 -241
  843. data/spec/spec_tests/data/gridfs_unified/downloadByName.yml +0 -159
  844. data/spec/spec_tests/data/gridfs_unified/upload-disableMD5.yml +0 -92
  845. data/spec/spec_tests/data/gridfs_unified/upload.yml +0 -288
  846. data/spec/spec_tests/data/index_management/createSearchIndex.yml +0 -64
  847. data/spec/spec_tests/data/index_management/createSearchIndexes.yml +0 -86
  848. data/spec/spec_tests/data/index_management/dropSearchIndex.yml +0 -43
  849. data/spec/spec_tests/data/index_management/listSearchIndexes.yml +0 -91
  850. data/spec/spec_tests/data/index_management/updateSearchIndex.yml +0 -46
  851. data/spec/spec_tests/data/load_balancers/event-monitoring.yml +0 -99
  852. data/spec/spec_tests/data/load_balancers/lb-connection-establishment.yml +0 -36
  853. data/spec/spec_tests/data/load_balancers/non-lb-connection-establishment.yml +0 -56
  854. data/spec/spec_tests/data/load_balancers/server-selection.yml +0 -50
  855. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/DefaultNoMaxStaleness.yml +0 -26
  856. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Incompatible.yml +0 -25
  857. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/LastUpdateTime.yml +0 -33
  858. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/MaxStalenessTooSmall.yml +0 -15
  859. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest.yml +0 -33
  860. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest2.yml +0 -33
  861. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/NoKnownServers.yml +0 -16
  862. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred.yml +0 -27
  863. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred_tags.yml +0 -36
  864. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Secondary.yml +0 -51
  865. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred.yml +0 -26
  866. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred_tags.yml +0 -51
  867. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/ZeroMaxStaleness.yml +0 -23
  868. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/DefaultNoMaxStaleness.yml +0 -26
  869. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Incompatible.yml +0 -25
  870. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LastUpdateTime.yml +0 -35
  871. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat.yml +0 -29
  872. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat2.yml +0 -25
  873. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessTooSmall.yml +0 -26
  874. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessWithModePrimary.yml +0 -23
  875. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest.yml +0 -33
  876. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest2.yml +0 -33
  877. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest_tags.yml +0 -36
  878. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred.yml +0 -27
  879. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred_incompatible.yml +0 -27
  880. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred.yml +0 -26
  881. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags.yml +0 -59
  882. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags2.yml +0 -43
  883. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags.yml +0 -59
  884. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags2.yml +0 -43
  885. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/ZeroMaxStaleness.yml +0 -23
  886. data/spec/spec_tests/data/max_staleness/Sharded/Incompatible.yml +0 -25
  887. data/spec/spec_tests/data/max_staleness/Sharded/SmallMaxStaleness.yml +0 -28
  888. data/spec/spec_tests/data/max_staleness/Single/Incompatible.yml +0 -18
  889. data/spec/spec_tests/data/max_staleness/Single/SmallMaxStaleness.yml +0 -20
  890. data/spec/spec_tests/data/max_staleness/Unknown/SmallMaxStaleness.yml +0 -15
  891. data/spec/spec_tests/data/read_write_concern/connection-string/read-concern.yml +0 -32
  892. data/spec/spec_tests/data/read_write_concern/connection-string/write-concern.yml +0 -79
  893. data/spec/spec_tests/data/read_write_concern/document/read-concern.yml +0 -37
  894. data/spec/spec_tests/data/read_write_concern/document/write-concern.yml +0 -100
  895. data/spec/spec_tests/data/read_write_concern/operation/default-write-concern-2.6.yml +0 -215
  896. data/spec/spec_tests/data/read_write_concern/operation/default-write-concern-3.2.yml +0 -58
  897. data/spec/spec_tests/data/read_write_concern/operation/default-write-concern-3.4.yml +0 -95
  898. data/spec/spec_tests/data/read_write_concern/operation/default-write-concern-4.2.yml +0 -36
  899. data/spec/spec_tests/data/retryable_reads/legacy/aggregate-merge.yml +0 -39
  900. data/spec/spec_tests/data/retryable_reads/legacy/aggregate-serverErrors.yml +0 -157
  901. data/spec/spec_tests/data/retryable_reads/legacy/aggregate.yml +0 -87
  902. data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-client.watch-serverErrors.yml +0 -150
  903. data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-client.watch.yml +0 -62
  904. data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.coll.watch-serverErrors.yml +0 -150
  905. data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.coll.watch.yml +0 -66
  906. data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.watch-serverErrors.yml +0 -154
  907. data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.watch.yml +0 -62
  908. data/spec/spec_tests/data/retryable_reads/legacy/count-serverErrors.yml +0 -150
  909. data/spec/spec_tests/data/retryable_reads/legacy/count.yml +0 -64
  910. data/spec/spec_tests/data/retryable_reads/legacy/countDocuments-serverErrors.yml +0 -150
  911. data/spec/spec_tests/data/retryable_reads/legacy/countDocuments.yml +0 -64
  912. data/spec/spec_tests/data/retryable_reads/legacy/distinct-serverErrors.yml +0 -156
  913. data/spec/spec_tests/data/retryable_reads/legacy/distinct.yml +0 -71
  914. data/spec/spec_tests/data/retryable_reads/legacy/estimatedDocumentCount-serverErrors.yml +0 -148
  915. data/spec/spec_tests/data/retryable_reads/legacy/estimatedDocumentCount.yml +0 -62
  916. data/spec/spec_tests/data/retryable_reads/legacy/find-serverErrors.yml +0 -160
  917. data/spec/spec_tests/data/retryable_reads/legacy/find.yml +0 -86
  918. data/spec/spec_tests/data/retryable_reads/legacy/findOne-serverErrors.yml +0 -154
  919. data/spec/spec_tests/data/retryable_reads/legacy/findOne.yml +0 -68
  920. data/spec/spec_tests/data/retryable_reads/legacy/gridfs-download-serverErrors.yml +0 -173
  921. data/spec/spec_tests/data/retryable_reads/legacy/gridfs-download.yml +0 -79
  922. data/spec/spec_tests/data/retryable_reads/legacy/gridfs-downloadByName-serverErrors.yml +0 -174
  923. data/spec/spec_tests/data/retryable_reads/legacy/gridfs-downloadByName.yml +0 -79
  924. data/spec/spec_tests/data/retryable_reads/legacy/listCollectionNames-serverErrors.yml +0 -143
  925. data/spec/spec_tests/data/retryable_reads/legacy/listCollectionNames.yml +0 -59
  926. data/spec/spec_tests/data/retryable_reads/legacy/listCollectionObjects-serverErrors.yml +0 -144
  927. data/spec/spec_tests/data/retryable_reads/legacy/listCollectionObjects.yml +0 -59
  928. data/spec/spec_tests/data/retryable_reads/legacy/listCollections-serverErrors.yml +0 -143
  929. data/spec/spec_tests/data/retryable_reads/legacy/listCollections.yml +0 -59
  930. data/spec/spec_tests/data/retryable_reads/legacy/listDatabaseNames-serverErrors.yml +0 -143
  931. data/spec/spec_tests/data/retryable_reads/legacy/listDatabaseNames.yml +0 -59
  932. data/spec/spec_tests/data/retryable_reads/legacy/listDatabaseObjects-serverErrors.yml +0 -144
  933. data/spec/spec_tests/data/retryable_reads/legacy/listDatabaseObjects.yml +0 -59
  934. data/spec/spec_tests/data/retryable_reads/legacy/listDatabases-serverErrors.yml +0 -144
  935. data/spec/spec_tests/data/retryable_reads/legacy/listDatabases.yml +0 -59
  936. data/spec/spec_tests/data/retryable_reads/legacy/listIndexNames-serverErrors.yml +0 -144
  937. data/spec/spec_tests/data/retryable_reads/legacy/listIndexNames.yml +0 -60
  938. data/spec/spec_tests/data/retryable_reads/legacy/listIndexes-serverErrors.yml +0 -145
  939. data/spec/spec_tests/data/retryable_reads/legacy/listIndexes.yml +0 -60
  940. data/spec/spec_tests/data/retryable_reads/legacy/mapReduce.yml +0 -62
  941. data/spec/spec_tests/data/retryable_reads/unified/handshakeError.yml +0 -1342
  942. data/spec/spec_tests/data/retryable_writes/legacy/bulkWrite-errorLabels.yml +0 -77
  943. data/spec/spec_tests/data/retryable_writes/legacy/bulkWrite-serverErrors.yml +0 -130
  944. data/spec/spec_tests/data/retryable_writes/legacy/bulkWrite.yml +0 -402
  945. data/spec/spec_tests/data/retryable_writes/legacy/deleteMany.yml +0 -22
  946. data/spec/spec_tests/data/retryable_writes/legacy/deleteOne-errorLabels.yml +0 -48
  947. data/spec/spec_tests/data/retryable_writes/legacy/deleteOne-serverErrors.yml +0 -73
  948. data/spec/spec_tests/data/retryable_writes/legacy/deleteOne.yml +0 -57
  949. data/spec/spec_tests/data/retryable_writes/legacy/findOneAndDelete-errorLabels.yml +0 -49
  950. data/spec/spec_tests/data/retryable_writes/legacy/findOneAndDelete-serverErrors.yml +0 -74
  951. data/spec/spec_tests/data/retryable_writes/legacy/findOneAndDelete.yml +0 -58
  952. data/spec/spec_tests/data/retryable_writes/legacy/findOneAndReplace-errorLabels.yml +0 -52
  953. data/spec/spec_tests/data/retryable_writes/legacy/findOneAndReplace-serverErrors.yml +0 -80
  954. data/spec/spec_tests/data/retryable_writes/legacy/findOneAndReplace.yml +0 -63
  955. data/spec/spec_tests/data/retryable_writes/legacy/findOneAndUpdate-errorLabels.yml +0 -52
  956. data/spec/spec_tests/data/retryable_writes/legacy/findOneAndUpdate-serverErrors.yml +0 -79
  957. data/spec/spec_tests/data/retryable_writes/legacy/findOneAndUpdate.yml +0 -62
  958. data/spec/spec_tests/data/retryable_writes/legacy/insertMany-errorLabels.yml +0 -54
  959. data/spec/spec_tests/data/retryable_writes/legacy/insertMany-serverErrors.yml +0 -84
  960. data/spec/spec_tests/data/retryable_writes/legacy/insertMany.yml +0 -74
  961. data/spec/spec_tests/data/retryable_writes/legacy/insertOne-errorLabels.yml +0 -44
  962. data/spec/spec_tests/data/retryable_writes/legacy/insertOne-serverErrors.yml +0 -527
  963. data/spec/spec_tests/data/retryable_writes/legacy/insertOne.yml +0 -61
  964. data/spec/spec_tests/data/retryable_writes/legacy/replaceOne-errorLabels.yml +0 -53
  965. data/spec/spec_tests/data/retryable_writes/legacy/replaceOne-serverErrors.yml +0 -82
  966. data/spec/spec_tests/data/retryable_writes/legacy/replaceOne.yml +0 -66
  967. data/spec/spec_tests/data/retryable_writes/legacy/updateMany.yml +0 -27
  968. data/spec/spec_tests/data/retryable_writes/legacy/updateOne-errorLabels.yml +0 -53
  969. data/spec/spec_tests/data/retryable_writes/legacy/updateOne-serverErrors.yml +0 -82
  970. data/spec/spec_tests/data/retryable_writes/legacy/updateOne.yml +0 -129
  971. data/spec/spec_tests/data/retryable_writes/unified/bulkWrite-serverErrors.yml +0 -93
  972. data/spec/spec_tests/data/retryable_writes/unified/handshakeError.yml +0 -785
  973. data/spec/spec_tests/data/retryable_writes/unified/insertOne-noWritesPerformedError.yml +0 -54
  974. data/spec/spec_tests/data/retryable_writes/unified/insertOne-serverErrors.yml +0 -75
  975. data/spec/spec_tests/data/run_command_unified/runCommand.yml +0 -319
  976. data/spec/spec_tests/data/sdam/errors/error_handling_handshake.yml +0 -55
  977. data/spec/spec_tests/data/sdam/errors/non-stale-network-error.yml +0 -47
  978. data/spec/spec_tests/data/sdam/errors/non-stale-network-timeout-error.yml +0 -38
  979. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-InterruptedAtShutdown.yml +0 -61
  980. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-InterruptedDueToReplStateChange.yml +0 -61
  981. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-LegacyNotPrimary.yml +0 -61
  982. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotPrimaryNoSecondaryOk.yml +0 -61
  983. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotPrimaryOrSecondary.yml +0 -61
  984. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotWritablePrimary.yml +0 -61
  985. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-PrimarySteppedDown.yml +0 -61
  986. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-ShutdownInProgress.yml +0 -61
  987. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-InterruptedAtShutdown.yml +0 -52
  988. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-InterruptedDueToReplStateChange.yml +0 -52
  989. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-LegacyNotPrimary.yml +0 -52
  990. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotPrimaryNoSecondaryOk.yml +0 -52
  991. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotPrimaryOrSecondary.yml +0 -52
  992. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotWritablePrimary.yml +0 -52
  993. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-PrimarySteppedDown.yml +0 -52
  994. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-ShutdownInProgress.yml +0 -52
  995. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-InterruptedAtShutdown.yml +0 -61
  996. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-InterruptedDueToReplStateChange.yml +0 -61
  997. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-LegacyNotPrimary.yml +0 -61
  998. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotPrimaryNoSecondaryOk.yml +0 -61
  999. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotPrimaryOrSecondary.yml +0 -61
  1000. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotWritablePrimary.yml +0 -61
  1001. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-PrimarySteppedDown.yml +0 -61
  1002. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-ShutdownInProgress.yml +0 -61
  1003. data/spec/spec_tests/data/sdam/errors/post-42-InterruptedAtShutdown.yml +0 -47
  1004. data/spec/spec_tests/data/sdam/errors/post-42-InterruptedDueToReplStateChange.yml +0 -47
  1005. data/spec/spec_tests/data/sdam/errors/post-42-LegacyNotPrimary.yml +0 -47
  1006. data/spec/spec_tests/data/sdam/errors/post-42-NotPrimaryNoSecondaryOk.yml +0 -47
  1007. data/spec/spec_tests/data/sdam/errors/post-42-NotPrimaryOrSecondary.yml +0 -47
  1008. data/spec/spec_tests/data/sdam/errors/post-42-NotWritablePrimary.yml +0 -47
  1009. data/spec/spec_tests/data/sdam/errors/post-42-PrimarySteppedDown.yml +0 -47
  1010. data/spec/spec_tests/data/sdam/errors/post-42-ShutdownInProgress.yml +0 -47
  1011. data/spec/spec_tests/data/sdam/errors/pre-42-InterruptedAtShutdown.yml +0 -47
  1012. data/spec/spec_tests/data/sdam/errors/pre-42-InterruptedDueToReplStateChange.yml +0 -47
  1013. data/spec/spec_tests/data/sdam/errors/pre-42-LegacyNotPrimary.yml +0 -47
  1014. data/spec/spec_tests/data/sdam/errors/pre-42-NotPrimaryNoSecondaryOk.yml +0 -47
  1015. data/spec/spec_tests/data/sdam/errors/pre-42-NotPrimaryOrSecondary.yml +0 -47
  1016. data/spec/spec_tests/data/sdam/errors/pre-42-NotWritablePrimary.yml +0 -47
  1017. data/spec/spec_tests/data/sdam/errors/pre-42-PrimarySteppedDown.yml +0 -47
  1018. data/spec/spec_tests/data/sdam/errors/pre-42-ShutdownInProgress.yml +0 -47
  1019. data/spec/spec_tests/data/sdam/errors/prefer-error-code.yml +0 -54
  1020. data/spec/spec_tests/data/sdam/errors/stale-generation-InterruptedAtShutdown.yml +0 -91
  1021. data/spec/spec_tests/data/sdam/errors/stale-generation-InterruptedDueToReplStateChange.yml +0 -91
  1022. data/spec/spec_tests/data/sdam/errors/stale-generation-NotPrimaryNoSecondaryOk.yml +0 -91
  1023. data/spec/spec_tests/data/sdam/errors/stale-generation-NotPrimaryOrSecondary.yml +0 -91
  1024. data/spec/spec_tests/data/sdam/errors/stale-generation-NotWritablePrimary.yml +0 -91
  1025. data/spec/spec_tests/data/sdam/errors/stale-generation-PrimarySteppedDown.yml +0 -91
  1026. data/spec/spec_tests/data/sdam/errors/stale-generation-ShutdownInProgress.yml +0 -91
  1027. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-InterruptedAtShutdown.yml +0 -91
  1028. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-InterruptedDueToReplStateChange.yml +0 -91
  1029. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-LegacyNotPrimary.yml +0 -91
  1030. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotPrimaryNoSecondaryOk.yml +0 -91
  1031. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotPrimaryOrSecondary.yml +0 -91
  1032. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotWritablePrimary.yml +0 -91
  1033. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-PrimarySteppedDown.yml +0 -91
  1034. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-ShutdownInProgress.yml +0 -91
  1035. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-network.yml +0 -82
  1036. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-timeout.yml +0 -82
  1037. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-InterruptedAtShutdown.yml +0 -91
  1038. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-InterruptedDueToReplStateChange.yml +0 -91
  1039. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-LegacyNotPrimary.yml +0 -91
  1040. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotPrimaryNoSecondaryOk.yml +0 -91
  1041. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotPrimaryOrSecondary.yml +0 -91
  1042. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotWritablePrimary.yml +0 -91
  1043. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-PrimarySteppedDown.yml +0 -91
  1044. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-ShutdownInProgress.yml +0 -91
  1045. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-network.yml +0 -82
  1046. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-timeout.yml +0 -82
  1047. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-InterruptedAtShutdown.yml +0 -65
  1048. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-InterruptedDueToReplStateChange.yml +0 -65
  1049. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-LegacyNotPrimary.yml +0 -65
  1050. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotPrimaryNoSecondaryOk.yml +0 -65
  1051. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotPrimaryOrSecondary.yml +0 -65
  1052. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotWritablePrimary.yml +0 -65
  1053. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-PrimarySteppedDown.yml +0 -65
  1054. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-ShutdownInProgress.yml +0 -65
  1055. data/spec/spec_tests/data/sdam/errors/write_errors_ignored.yml +0 -42
  1056. data/spec/spec_tests/data/sdam/load-balanced/discover_load_balancer.yml +0 -25
  1057. data/spec/spec_tests/data/sdam/rs/compatible.yml +0 -45
  1058. data/spec/spec_tests/data/sdam/rs/compatible_unknown.yml +0 -34
  1059. data/spec/spec_tests/data/sdam/rs/discover_arbiters.yml +0 -44
  1060. data/spec/spec_tests/data/sdam/rs/discover_arbiters_replicaset.yml +0 -44
  1061. data/spec/spec_tests/data/sdam/rs/discover_ghost.yml +0 -36
  1062. data/spec/spec_tests/data/sdam/rs/discover_ghost_replicaset.yml +0 -42
  1063. data/spec/spec_tests/data/sdam/rs/discover_hidden.yml +0 -51
  1064. data/spec/spec_tests/data/sdam/rs/discover_hidden_replicaset.yml +0 -51
  1065. data/spec/spec_tests/data/sdam/rs/discover_passives.yml +0 -83
  1066. data/spec/spec_tests/data/sdam/rs/discover_passives_replicaset.yml +0 -83
  1067. data/spec/spec_tests/data/sdam/rs/discover_primary.yml +0 -43
  1068. data/spec/spec_tests/data/sdam/rs/discover_primary_replicaset.yml +0 -43
  1069. data/spec/spec_tests/data/sdam/rs/discover_rsother.yml +0 -50
  1070. data/spec/spec_tests/data/sdam/rs/discover_rsother_replicaset.yml +0 -68
  1071. data/spec/spec_tests/data/sdam/rs/discover_secondary.yml +0 -44
  1072. data/spec/spec_tests/data/sdam/rs/discover_secondary_replicaset.yml +0 -44
  1073. data/spec/spec_tests/data/sdam/rs/discovery.yml +0 -207
  1074. data/spec/spec_tests/data/sdam/rs/electionId_precedence_setVersion.yml +0 -62
  1075. data/spec/spec_tests/data/sdam/rs/equal_electionids.yml +0 -57
  1076. data/spec/spec_tests/data/sdam/rs/hosts_differ_from_seeds.yml +0 -37
  1077. data/spec/spec_tests/data/sdam/rs/incompatible_arbiter.yml +0 -36
  1078. data/spec/spec_tests/data/sdam/rs/incompatible_ghost.yml +0 -34
  1079. data/spec/spec_tests/data/sdam/rs/incompatible_other.yml +0 -36
  1080. data/spec/spec_tests/data/sdam/rs/ls_timeout.yml +0 -249
  1081. data/spec/spec_tests/data/sdam/rs/member_reconfig.yml +0 -74
  1082. data/spec/spec_tests/data/sdam/rs/member_standalone.yml +0 -66
  1083. data/spec/spec_tests/data/sdam/rs/new_primary.yml +0 -80
  1084. data/spec/spec_tests/data/sdam/rs/new_primary_new_electionid.yml +0 -119
  1085. data/spec/spec_tests/data/sdam/rs/new_primary_new_setversion.yml +0 -119
  1086. data/spec/spec_tests/data/sdam/rs/new_primary_wrong_set_name.yml +0 -77
  1087. data/spec/spec_tests/data/sdam/rs/non_rs_member.yml +0 -33
  1088. data/spec/spec_tests/data/sdam/rs/normalize_case.yml +0 -52
  1089. data/spec/spec_tests/data/sdam/rs/normalize_case_me.yml +0 -102
  1090. data/spec/spec_tests/data/sdam/rs/null_election_id-pre-6.0.yml +0 -175
  1091. data/spec/spec_tests/data/sdam/rs/null_election_id.yml +0 -177
  1092. data/spec/spec_tests/data/sdam/rs/primary_becomes_ghost.yml +0 -65
  1093. data/spec/spec_tests/data/sdam/rs/primary_becomes_mongos.yml +0 -58
  1094. data/spec/spec_tests/data/sdam/rs/primary_becomes_standalone.yml +0 -55
  1095. data/spec/spec_tests/data/sdam/rs/primary_changes_set_name.yml +0 -63
  1096. data/spec/spec_tests/data/sdam/rs/primary_disconnect.yml +0 -59
  1097. data/spec/spec_tests/data/sdam/rs/primary_disconnect_electionid.yml +0 -189
  1098. data/spec/spec_tests/data/sdam/rs/primary_disconnect_setversion.yml +0 -189
  1099. data/spec/spec_tests/data/sdam/rs/primary_hint_from_secondary_with_mismatched_me.yml +0 -64
  1100. data/spec/spec_tests/data/sdam/rs/primary_mismatched_me.yml +0 -27
  1101. data/spec/spec_tests/data/sdam/rs/primary_mismatched_me_not_removed.yml +0 -75
  1102. data/spec/spec_tests/data/sdam/rs/primary_reports_new_member.yml +0 -175
  1103. data/spec/spec_tests/data/sdam/rs/primary_to_no_primary_mismatched_me.yml +0 -81
  1104. data/spec/spec_tests/data/sdam/rs/primary_wrong_set_name.yml +0 -30
  1105. data/spec/spec_tests/data/sdam/rs/repeated.yml +0 -105
  1106. data/spec/spec_tests/data/sdam/rs/replicaset_rsnp.yml +0 -21
  1107. data/spec/spec_tests/data/sdam/rs/response_from_removed.yml +0 -69
  1108. data/spec/spec_tests/data/sdam/rs/ruby_primary_address_change.yml +0 -31
  1109. data/spec/spec_tests/data/sdam/rs/ruby_secondary_wrong_set_name_with_primary_second.yml +0 -73
  1110. data/spec/spec_tests/data/sdam/rs/sec_not_auth.yml +0 -55
  1111. data/spec/spec_tests/data/sdam/rs/secondary_ignore_ok_0-pre-6.0.yml +0 -87
  1112. data/spec/spec_tests/data/sdam/rs/secondary_ignore_ok_0.yml +0 -87
  1113. data/spec/spec_tests/data/sdam/rs/secondary_mismatched_me.yml +0 -28
  1114. data/spec/spec_tests/data/sdam/rs/secondary_wrong_set_name.yml +0 -31
  1115. data/spec/spec_tests/data/sdam/rs/secondary_wrong_set_name_with_primary.yml +0 -75
  1116. data/spec/spec_tests/data/sdam/rs/set_version_can_rollback.yml +0 -101
  1117. data/spec/spec_tests/data/sdam/rs/setversion_equal_max_without_electionid.yml +0 -78
  1118. data/spec/spec_tests/data/sdam/rs/setversion_greaterthan_max_without_electionid.yml +0 -79
  1119. data/spec/spec_tests/data/sdam/rs/setversion_without_electionid-pre-6.0.yml +0 -79
  1120. data/spec/spec_tests/data/sdam/rs/setversion_without_electionid.yml +0 -78
  1121. data/spec/spec_tests/data/sdam/rs/stepdown_change_set_name.yml +0 -65
  1122. data/spec/spec_tests/data/sdam/rs/too_new.yml +0 -45
  1123. data/spec/spec_tests/data/sdam/rs/too_old.yml +0 -41
  1124. data/spec/spec_tests/data/sdam/rs/topology_version_equal.yml +0 -68
  1125. data/spec/spec_tests/data/sdam/rs/topology_version_greater.yml +0 -194
  1126. data/spec/spec_tests/data/sdam/rs/topology_version_less.yml +0 -64
  1127. data/spec/spec_tests/data/sdam/rs/unexpected_mongos.yml +0 -29
  1128. data/spec/spec_tests/data/sdam/rs/use_setversion_without_electionid-pre-6.0.yml +0 -117
  1129. data/spec/spec_tests/data/sdam/rs/use_setversion_without_electionid.yml +0 -119
  1130. data/spec/spec_tests/data/sdam/rs/wrong_set_name.yml +0 -38
  1131. data/spec/spec_tests/data/sdam/sharded/compatible.yml +0 -40
  1132. data/spec/spec_tests/data/sdam/sharded/discover_single_mongos.yml +0 -24
  1133. data/spec/spec_tests/data/sdam/sharded/ls_timeout_mongos.yml +0 -101
  1134. data/spec/spec_tests/data/sdam/sharded/mongos_disconnect.yml +0 -113
  1135. data/spec/spec_tests/data/sdam/sharded/multiple_mongoses.yml +0 -52
  1136. data/spec/spec_tests/data/sdam/sharded/non_mongos_removed.yml +0 -47
  1137. data/spec/spec_tests/data/sdam/sharded/normalize_uri_case.yml +0 -32
  1138. data/spec/spec_tests/data/sdam/sharded/ruby_primary_different_address.yml +0 -21
  1139. data/spec/spec_tests/data/sdam/sharded/ruby_primary_mismatched_me.yml +0 -22
  1140. data/spec/spec_tests/data/sdam/sharded/too_new.yml +0 -38
  1141. data/spec/spec_tests/data/sdam/sharded/too_old.yml +0 -38
  1142. data/spec/spec_tests/data/sdam/single/compatible.yml +0 -27
  1143. data/spec/spec_tests/data/sdam/single/direct_connection_external_ip.yml +0 -37
  1144. data/spec/spec_tests/data/sdam/single/direct_connection_mongos.yml +0 -36
  1145. data/spec/spec_tests/data/sdam/single/direct_connection_replicaset.yml +0 -23
  1146. data/spec/spec_tests/data/sdam/single/direct_connection_rsarbiter.yml +0 -38
  1147. data/spec/spec_tests/data/sdam/single/direct_connection_rsprimary.yml +0 -37
  1148. data/spec/spec_tests/data/sdam/single/direct_connection_rssecondary.yml +0 -38
  1149. data/spec/spec_tests/data/sdam/single/direct_connection_standalone.yml +0 -35
  1150. data/spec/spec_tests/data/sdam/single/direct_connection_unavailable_seed.yml +0 -28
  1151. data/spec/spec_tests/data/sdam/single/direct_connection_wrong_set_name.yml +0 -40
  1152. data/spec/spec_tests/data/sdam/single/discover_standalone.yml +0 -35
  1153. data/spec/spec_tests/data/sdam/single/discover_unavailable_seed.yml +0 -28
  1154. data/spec/spec_tests/data/sdam/single/ls_timeout_standalone.yml +0 -36
  1155. data/spec/spec_tests/data/sdam/single/not_ok_response.yml +0 -44
  1156. data/spec/spec_tests/data/sdam/single/ruby_primary_different_address.yml +0 -24
  1157. data/spec/spec_tests/data/sdam/single/ruby_primary_mismatched_me.yml +0 -25
  1158. data/spec/spec_tests/data/sdam/single/standalone_removed.yml +0 -35
  1159. data/spec/spec_tests/data/sdam/single/standalone_using_legacy_hello.yml +0 -34
  1160. data/spec/spec_tests/data/sdam/single/too_new.yml +0 -27
  1161. data/spec/spec_tests/data/sdam/single/too_old.yml +0 -25
  1162. data/spec/spec_tests/data/sdam/single/too_old_then_upgraded.yml +0 -48
  1163. data/spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml +0 -70
  1164. data/spec/spec_tests/data/sdam_monitoring/load_balancer.yml +0 -65
  1165. data/spec/spec_tests/data/sdam_monitoring/replica_set_other_chain.yml +0 -222
  1166. data/spec/spec_tests/data/sdam_monitoring/replica_set_other_change.yml +0 -225
  1167. data/spec/spec_tests/data/sdam_monitoring/replica_set_primary_address_change.yml +0 -251
  1168. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_me_mismatch.yml +0 -111
  1169. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_no_primary.yml +0 -112
  1170. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_primary.yml +0 -111
  1171. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_primary_and_secondary.yml +0 -198
  1172. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_primary_removal.yml +0 -175
  1173. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml +0 -111
  1174. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_second_seed_removal.yml +0 -106
  1175. data/spec/spec_tests/data/sdam_monitoring/required_replica_set.yml +0 -108
  1176. data/spec/spec_tests/data/sdam_monitoring/standalone.yml +0 -70
  1177. data/spec/spec_tests/data/sdam_monitoring/standalone_repeated.yml +0 -86
  1178. data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +0 -73
  1179. data/spec/spec_tests/data/sdam_monitoring/standalone_to_rs_with_me_mismatch.yml +0 -90
  1180. data/spec/spec_tests/data/sdam_unified/auth-error.yml +0 -130
  1181. data/spec/spec_tests/data/sdam_unified/auth-misc-command-error.yml +0 -132
  1182. data/spec/spec_tests/data/sdam_unified/auth-network-error.yml +0 -132
  1183. data/spec/spec_tests/data/sdam_unified/auth-network-timeout-error.yml +0 -138
  1184. data/spec/spec_tests/data/sdam_unified/auth-shutdown-error.yml +0 -133
  1185. data/spec/spec_tests/data/sdam_unified/cancel-server-check.yml +0 -143
  1186. data/spec/spec_tests/data/sdam_unified/connectTimeoutMS.yml +0 -130
  1187. data/spec/spec_tests/data/sdam_unified/find-network-error.yml +0 -135
  1188. data/spec/spec_tests/data/sdam_unified/find-network-timeout-error.yml +0 -119
  1189. data/spec/spec_tests/data/sdam_unified/find-shutdown-error.yml +0 -163
  1190. data/spec/spec_tests/data/sdam_unified/hello-command-error.yml +0 -233
  1191. data/spec/spec_tests/data/sdam_unified/hello-network-error.yml +0 -228
  1192. data/spec/spec_tests/data/sdam_unified/hello-timeout.yml +0 -318
  1193. data/spec/spec_tests/data/sdam_unified/insert-network-error.yml +0 -137
  1194. data/spec/spec_tests/data/sdam_unified/insert-shutdown-error.yml +0 -162
  1195. data/spec/spec_tests/data/sdam_unified/interruptInUse-pool-clear.yml +0 -340
  1196. data/spec/spec_tests/data/sdam_unified/minPoolSize-error.yml +0 -125
  1197. data/spec/spec_tests/data/sdam_unified/pool-cleared-error.yml +0 -239
  1198. data/spec/spec_tests/data/sdam_unified/rediscover-quickly-after-step-down.yml +0 -144
  1199. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-directConnection.yml +0 -14
  1200. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-no-results.yml +0 -5
  1201. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-replicaSet-errors.yml +0 -6
  1202. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-true-multiple-hosts.yml +0 -5
  1203. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-true-txt.yml +0 -11
  1204. data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-conflicts_with_loadBalanced-true-txt.yml +0 -5
  1205. data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-conflicts_with_loadBalanced-true.yml +0 -5
  1206. data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero-txt.yml +0 -11
  1207. data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero.yml +0 -11
  1208. data/spec/spec_tests/data/seed_list_discovery/replica-set/direct-connection-false.yml +0 -10
  1209. data/spec/spec_tests/data/seed_list_discovery/replica-set/direct-connection-true.yml +0 -5
  1210. data/spec/spec_tests/data/seed_list_discovery/replica-set/encoded-userinfo-and-db.yml +0 -15
  1211. data/spec/spec_tests/data/seed_list_discovery/replica-set/loadBalanced-false-txt.yml +0 -10
  1212. data/spec/spec_tests/data/seed_list_discovery/replica-set/longer-parent-in-return.yml +0 -11
  1213. data/spec/spec_tests/data/seed_list_discovery/replica-set/misformatted-option.yml +0 -5
  1214. data/spec/spec_tests/data/seed_list_discovery/replica-set/no-results.yml +0 -5
  1215. data/spec/spec_tests/data/seed_list_discovery/replica-set/not-enough-parts.yml +0 -5
  1216. data/spec/spec_tests/data/seed_list_discovery/replica-set/one-result-default-port.yml +0 -10
  1217. data/spec/spec_tests/data/seed_list_discovery/replica-set/one-txt-record-multiple-strings.yml +0 -10
  1218. data/spec/spec_tests/data/seed_list_discovery/replica-set/one-txt-record.yml +0 -11
  1219. data/spec/spec_tests/data/seed_list_discovery/replica-set/parent-part-mismatch1.yml +0 -5
  1220. data/spec/spec_tests/data/seed_list_discovery/replica-set/parent-part-mismatch2.yml +0 -5
  1221. data/spec/spec_tests/data/seed_list_discovery/replica-set/parent-part-mismatch3.yml +0 -5
  1222. data/spec/spec_tests/data/seed_list_discovery/replica-set/parent-part-mismatch4.yml +0 -5
  1223. data/spec/spec_tests/data/seed_list_discovery/replica-set/parent-part-mismatch5.yml +0 -5
  1224. data/spec/spec_tests/data/seed_list_discovery/replica-set/returned-parent-too-short.yml +0 -5
  1225. data/spec/spec_tests/data/seed_list_discovery/replica-set/returned-parent-wrong.yml +0 -5
  1226. data/spec/spec_tests/data/seed_list_discovery/replica-set/srv-service-name.yml +0 -11
  1227. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-conflicts_with_replicaSet-txt.yml +0 -5
  1228. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-conflicts_with_replicaSet.yml +0 -5
  1229. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-equal_to_srv_records.yml +0 -16
  1230. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-greater_than_srv_records.yml +0 -15
  1231. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-less_than_srv_records.yml +0 -15
  1232. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-zero-txt.yml +0 -15
  1233. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-zero.yml +0 -15
  1234. data/spec/spec_tests/data/seed_list_discovery/replica-set/two-results-default-port.yml +0 -11
  1235. data/spec/spec_tests/data/seed_list_discovery/replica-set/two-results-nonstandard-port.yml +0 -11
  1236. data/spec/spec_tests/data/seed_list_discovery/replica-set/two-txt-records.yml +0 -5
  1237. data/spec/spec_tests/data/seed_list_discovery/replica-set/txt-record-not-allowed-option.yml +0 -5
  1238. data/spec/spec_tests/data/seed_list_discovery/replica-set/txt-record-with-overridden-ssl-option.yml +0 -11
  1239. data/spec/spec_tests/data/seed_list_discovery/replica-set/txt-record-with-overridden-uri-option.yml +0 -11
  1240. data/spec/spec_tests/data/seed_list_discovery/replica-set/txt-record-with-unallowed-option.yml +0 -5
  1241. data/spec/spec_tests/data/seed_list_discovery/replica-set/uri-with-admin-database.yml +0 -13
  1242. data/spec/spec_tests/data/seed_list_discovery/replica-set/uri-with-auth.yml +0 -12
  1243. data/spec/spec_tests/data/seed_list_discovery/replica-set/uri-with-port.yml +0 -5
  1244. data/spec/spec_tests/data/seed_list_discovery/replica-set/uri-with-two-hosts.yml +0 -5
  1245. data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-equal_to_srv_records.yml +0 -13
  1246. data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-greater_than_srv_records.yml +0 -12
  1247. data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-less_than_srv_records.yml +0 -10
  1248. data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-zero.yml +0 -11
  1249. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Nearest.yml +0 -25
  1250. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Nearest_multiple.yml +0 -26
  1251. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +0 -20
  1252. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/PossiblePrimary.yml +0 -15
  1253. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/PossiblePrimaryNearest.yml +0 -15
  1254. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Primary.yml +0 -18
  1255. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +0 -25
  1256. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +0 -20
  1257. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Secondary.yml +0 -25
  1258. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +0 -25
  1259. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +0 -20
  1260. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Secondary_multi_tags.yml +0 -31
  1261. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Secondary_multi_tags2.yml +0 -31
  1262. data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +0 -20
  1263. data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/Nearest.yml +0 -32
  1264. data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/Nearest_multiple.yml +0 -33
  1265. data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +0 -25
  1266. data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/Primary.yml +0 -26
  1267. data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +0 -28
  1268. data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +0 -28
  1269. data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/Secondary.yml +0 -30
  1270. data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/SecondaryPreferred.yml +0 -30
  1271. data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/SecondaryPreferred_non_matching.yml +0 -28
  1272. data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/SecondaryPreferred_tags.yml +0 -28
  1273. data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/Secondary_non_matching.yml +0 -25
  1274. data/spec/spec_tests/data/server_selection/Sharded/read/Nearest.yml +0 -21
  1275. data/spec/spec_tests/data/server_selection/Sharded/read/Primary.yml +0 -19
  1276. data/spec/spec_tests/data/server_selection/Sharded/read/PrimaryPreferred.yml +0 -21
  1277. data/spec/spec_tests/data/server_selection/Sharded/read/Secondary.yml +0 -21
  1278. data/spec/spec_tests/data/server_selection/Sharded/read/SecondaryPreferred.yml +0 -21
  1279. data/spec/spec_tests/data/server_selection/Single/read/SecondaryPreferred.yml +0 -18
  1280. data/spec/spec_tests/data/server_selection/Unknown/read/SecondaryPreferred.yml +0 -10
  1281. data/spec/spec_tests/data/server_selection/Unknown/read/ghost.yml +0 -11
  1282. data/spec/spec_tests/data/server_selection/Unknown/write/ghost.yml +0 -11
  1283. data/spec/spec_tests/data/server_selection_rtt/first_value.yml +0 -4
  1284. data/spec/spec_tests/data/server_selection_rtt/first_value_zero.yml +0 -4
  1285. data/spec/spec_tests/data/server_selection_rtt/value_test_1.yml +0 -4
  1286. data/spec/spec_tests/data/server_selection_rtt/value_test_2.yml +0 -4
  1287. data/spec/spec_tests/data/server_selection_rtt/value_test_3.yml +0 -4
  1288. data/spec/spec_tests/data/server_selection_rtt/value_test_4.yml +0 -4
  1289. data/spec/spec_tests/data/server_selection_rtt/value_test_5.yml +0 -4
  1290. data/spec/spec_tests/data/sessions_unified/driver-sessions-dirty-session-errors.yml +0 -351
  1291. data/spec/spec_tests/data/sessions_unified/driver-sessions-server-support.yml +0 -123
  1292. data/spec/spec_tests/data/sessions_unified/implicit-sessions-default-causal-consistency.yml +0 -119
  1293. data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-client-error.yml +0 -75
  1294. data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-server-error.yml +0 -102
  1295. data/spec/spec_tests/data/sessions_unified/snapshot-sessions-unsupported-ops.yml +0 -258
  1296. data/spec/spec_tests/data/sessions_unified/snapshot-sessions.yml +0 -482
  1297. data/spec/spec_tests/data/transactions/abort.yml +0 -413
  1298. data/spec/spec_tests/data/transactions/bulk.yml +0 -267
  1299. data/spec/spec_tests/data/transactions/causal-consistency.yml +0 -175
  1300. data/spec/spec_tests/data/transactions/commit.yml +0 -603
  1301. data/spec/spec_tests/data/transactions/count.yml +0 -67
  1302. data/spec/spec_tests/data/transactions/create-collection.yml +0 -131
  1303. data/spec/spec_tests/data/transactions/create-index.yml +0 -152
  1304. data/spec/spec_tests/data/transactions/delete.yml +0 -192
  1305. data/spec/spec_tests/data/transactions/error-labels.yml +0 -1030
  1306. data/spec/spec_tests/data/transactions/errors-client.yml +0 -55
  1307. data/spec/spec_tests/data/transactions/errors.yml +0 -133
  1308. data/spec/spec_tests/data/transactions/findOneAndDelete.yml +0 -134
  1309. data/spec/spec_tests/data/transactions/findOneAndReplace.yml +0 -148
  1310. data/spec/spec_tests/data/transactions/findOneAndUpdate.yml +0 -236
  1311. data/spec/spec_tests/data/transactions/insert.yml +0 -390
  1312. data/spec/spec_tests/data/transactions/isolation.yml +0 -133
  1313. data/spec/spec_tests/data/transactions/mongos-pin-auto.yml +0 -1674
  1314. data/spec/spec_tests/data/transactions/mongos-recovery-token.yml +0 -350
  1315. data/spec/spec_tests/data/transactions/pin-mongos.yml +0 -559
  1316. data/spec/spec_tests/data/transactions/read-concern.yml +0 -623
  1317. data/spec/spec_tests/data/transactions/read-pref.yml +0 -348
  1318. data/spec/spec_tests/data/transactions/reads.yml +0 -261
  1319. data/spec/spec_tests/data/transactions/retryable-abort-errorLabels.yml +0 -124
  1320. data/spec/spec_tests/data/transactions/retryable-abort.yml +0 -1315
  1321. data/spec/spec_tests/data/transactions/retryable-commit-errorLabels.yml +0 -132
  1322. data/spec/spec_tests/data/transactions/retryable-commit.yml +0 -1460
  1323. data/spec/spec_tests/data/transactions/retryable-writes.yml +0 -216
  1324. data/spec/spec_tests/data/transactions/run-command.yml +0 -197
  1325. data/spec/spec_tests/data/transactions/transaction-options-repl.yml +0 -117
  1326. data/spec/spec_tests/data/transactions/transaction-options.yml +0 -781
  1327. data/spec/spec_tests/data/transactions/update.yml +0 -246
  1328. data/spec/spec_tests/data/transactions/write-concern.yml +0 -554
  1329. data/spec/spec_tests/data/transactions_api/callback-aborts.yml +0 -170
  1330. data/spec/spec_tests/data/transactions_api/callback-commits.yml +0 -204
  1331. data/spec/spec_tests/data/transactions_api/callback-retry.yml +0 -215
  1332. data/spec/spec_tests/data/transactions_api/commit-retry.yml +0 -324
  1333. data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror-4.2.yml +0 -139
  1334. data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror.yml +0 -175
  1335. data/spec/spec_tests/data/transactions_api/commit-writeconcernerror.yml +0 -216
  1336. data/spec/spec_tests/data/transactions_api/commit.yml +0 -193
  1337. data/spec/spec_tests/data/transactions_api/transaction-options.yml +0 -274
  1338. data/spec/spec_tests/data/transactions_unified/do-not-retry-read-in-transaction.yml +0 -64
  1339. data/spec/spec_tests/data/transactions_unified/mongos-unpin.yml +0 -172
  1340. data/spec/spec_tests/data/transactions_unified/retryable-abort-handshake.yml +0 -118
  1341. data/spec/spec_tests/data/transactions_unified/retryable-commit-handshake.yml +0 -118
  1342. data/spec/spec_tests/data/unified/valid-fail/entity-findCursor-malformed.yml +0 -31
  1343. data/spec/spec_tests/data/unified/valid-fail/entity-findCursor.yml +0 -31
  1344. data/spec/spec_tests/data/unified/valid-fail/ignoreResultAndError-malformed.yml +0 -34
  1345. data/spec/spec_tests/data/unified/valid-fail/ignoreResultAndError.yml +0 -35
  1346. data/spec/spec_tests/data/unified/valid-fail/operation-failure.yml +0 -31
  1347. data/spec/spec_tests/data/unified/valid-fail/operation-unsupported.yml +0 -13
  1348. data/spec/spec_tests/data/unified/valid-pass/assertNumberConnectionsCheckedOut.yml +0 -17
  1349. data/spec/spec_tests/data/unified/valid-pass/collectionData-createOptions.yml +0 -37
  1350. data/spec/spec_tests/data/unified/valid-pass/entity-client-cmap-events.yml +0 -40
  1351. data/spec/spec_tests/data/unified/valid-pass/entity-client-storeEventsAsEntities.yml +0 -37
  1352. data/spec/spec_tests/data/unified/valid-pass/expectedError-errorResponse.yml +0 -39
  1353. data/spec/spec_tests/data/unified/valid-pass/expectedEventsForClient-eventType.yml +0 -66
  1354. data/spec/spec_tests/data/unified/valid-pass/expectedEventsForClient-ignoreExtraEvents.yml +0 -78
  1355. data/spec/spec_tests/data/unified/valid-pass/ignoreResultAndError.yml +0 -34
  1356. data/spec/spec_tests/data/unified/valid-pass/observeSensitiveCommands.yml +0 -255
  1357. data/spec/spec_tests/data/unified/valid-pass/poc-change-streams.yml +0 -241
  1358. data/spec/spec_tests/data/unified/valid-pass/poc-command-monitoring.yml +0 -102
  1359. data/spec/spec_tests/data/unified/valid-pass/poc-crud.yml +0 -190
  1360. data/spec/spec_tests/data/unified/valid-pass/poc-gridfs.yml +0 -155
  1361. data/spec/spec_tests/data/unified/valid-pass/poc-retryable-reads.yml +0 -193
  1362. data/spec/spec_tests/data/unified/valid-pass/poc-retryable-writes.yml +0 -210
  1363. data/spec/spec_tests/data/unified/valid-pass/poc-sessions.yml +0 -214
  1364. data/spec/spec_tests/data/unified/valid-pass/poc-transactions-convenient-api.yml +0 -235
  1365. data/spec/spec_tests/data/unified/valid-pass/poc-transactions-mongos-pin-auto.yml +0 -169
  1366. data/spec/spec_tests/data/unified/valid-pass/poc-transactions.yml +0 -171
  1367. data/spec/spec_tests/data/uri_options/auth-options.yml +0 -49
  1368. data/spec/spec_tests/data/uri_options/compression-options.yml +0 -51
  1369. data/spec/spec_tests/data/uri_options/concern-options.yml +0 -55
  1370. data/spec/spec_tests/data/uri_options/connection-options.yml +0 -209
  1371. data/spec/spec_tests/data/uri_options/connection-pool-options.yml +0 -26
  1372. data/spec/spec_tests/data/uri_options/read-preference-options.yml +0 -66
  1373. data/spec/spec_tests/data/uri_options/ruby-auth-options.yml +0 -12
  1374. data/spec/spec_tests/data/uri_options/ruby-connection-options.yml +0 -58
  1375. data/spec/spec_tests/data/uri_options/srv-options.yml +0 -96
  1376. data/spec/spec_tests/data/uri_options/tls-options.yml +0 -364
  1377. data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +0 -419
  1378. data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +0 -413
  1379. data/spec/spec_tests/data/versioned_api/runcommand-helper-no-api-version-declared.yml +0 -75
  1380. data/spec/spec_tests/data/versioned_api/test-commands-deprecation-errors.yml +0 -47
  1381. data/spec/spec_tests/data/versioned_api/test-commands-strict-mode.yml +0 -46
  1382. data/spec/spec_tests/data/versioned_api/transaction-handling.yml +0 -128
  1383. data/spec/spec_tests/gridfs_spec.rb +0 -55
  1384. data/spec/spec_tests/gridfs_unified_spec.rb +0 -13
  1385. data/spec/spec_tests/index_management_unified_spec.rb +0 -13
  1386. data/spec/spec_tests/load_balancers_spec.rb +0 -15
  1387. data/spec/spec_tests/max_staleness_spec.rb +0 -12
  1388. data/spec/spec_tests/read_write_concern_connection_string_spec.rb +0 -13
  1389. data/spec/spec_tests/read_write_concern_document_spec.rb +0 -77
  1390. data/spec/spec_tests/read_write_concern_operaton_spec.rb +0 -13
  1391. data/spec/spec_tests/retryable_reads_spec.rb +0 -55
  1392. data/spec/spec_tests/retryable_reads_unified_spec.rb +0 -22
  1393. data/spec/spec_tests/retryable_writes_spec.rb +0 -25
  1394. data/spec/spec_tests/retryable_writes_unified_spec.rb +0 -21
  1395. data/spec/spec_tests/run_command_unified_spec.rb +0 -13
  1396. data/spec/spec_tests/sdam_monitoring_spec.rb +0 -101
  1397. data/spec/spec_tests/sdam_spec.rb +0 -246
  1398. data/spec/spec_tests/sdam_unified_spec.rb +0 -15
  1399. data/spec/spec_tests/seed_list_discovery_spec.rb +0 -127
  1400. data/spec/spec_tests/server_selection_rtt_spec.rb +0 -33
  1401. data/spec/spec_tests/server_selection_spec.rb +0 -12
  1402. data/spec/spec_tests/sessions_unified_spec.rb +0 -13
  1403. data/spec/spec_tests/transactions_api_spec.rb +0 -13
  1404. data/spec/spec_tests/transactions_spec.rb +0 -13
  1405. data/spec/spec_tests/transactions_unified_spec.rb +0 -14
  1406. data/spec/spec_tests/unified_spec.rb +0 -18
  1407. data/spec/spec_tests/uri_options_spec.rb +0 -93
  1408. data/spec/spec_tests/versioned_api_spec.rb +0 -13
  1409. data/spec/stress/cleanup_spec.rb +0 -61
  1410. data/spec/stress/connection_pool_stress_spec.rb +0 -143
  1411. data/spec/stress/connection_pool_timing_spec.rb +0 -160
  1412. data/spec/stress/fork_reconnect_stress_spec.rb +0 -108
  1413. data/spec/stress/push_monitor_close_spec.rb +0 -44
  1414. data/spec/support/authorization.rb +0 -161
  1415. data/spec/support/aws_utils/base.rb +0 -137
  1416. data/spec/support/aws_utils/inspector.rb +0 -227
  1417. data/spec/support/aws_utils/orchestrator.rb +0 -385
  1418. data/spec/support/aws_utils/provisioner.rb +0 -363
  1419. data/spec/support/aws_utils.rb +0 -66
  1420. data/spec/support/background_thread_registry.rb +0 -60
  1421. data/spec/support/certificates/README.md +0 -106
  1422. data/spec/support/certificates/atlas-ocsp-ca.crt +0 -115
  1423. data/spec/support/certificates/atlas-ocsp.crt +0 -147
  1424. data/spec/support/certificates/ca.crt +0 -76
  1425. data/spec/support/certificates/client-encrypted.key +0 -30
  1426. data/spec/support/certificates/client-int.crt +0 -78
  1427. data/spec/support/certificates/client-second-level-bundle.pem +0 -179
  1428. data/spec/support/certificates/client-second-level.crt +0 -74
  1429. data/spec/support/certificates/client-second-level.key +0 -27
  1430. data/spec/support/certificates/client-second-level.pem +0 -101
  1431. data/spec/support/certificates/client-x509.crt +0 -78
  1432. data/spec/support/certificates/client-x509.key +0 -27
  1433. data/spec/support/certificates/client-x509.pem +0 -105
  1434. data/spec/support/certificates/client.crt +0 -74
  1435. data/spec/support/certificates/client.key +0 -27
  1436. data/spec/support/certificates/client.pem +0 -101
  1437. data/spec/support/certificates/crl.pem +0 -12
  1438. data/spec/support/certificates/crl_client_revoked.pem +0 -13
  1439. data/spec/support/certificates/multi-ca.crt +0 -152
  1440. data/spec/support/certificates/python-ca.crt +0 -76
  1441. data/spec/support/certificates/retrieve-atlas-cert +0 -40
  1442. data/spec/support/certificates/server-int.crt +0 -78
  1443. data/spec/support/certificates/server-second-level-bundle.pem +0 -179
  1444. data/spec/support/certificates/server-second-level.crt +0 -74
  1445. data/spec/support/certificates/server-second-level.key +0 -27
  1446. data/spec/support/certificates/server-second-level.pem +0 -101
  1447. data/spec/support/certificates/server.pem +0 -101
  1448. data/spec/support/client_registry.rb +0 -258
  1449. data/spec/support/client_registry_macros.rb +0 -26
  1450. data/spec/support/cluster_tools.rb +0 -384
  1451. data/spec/support/common_shortcuts.rb +0 -421
  1452. data/spec/support/constraints.rb +0 -39
  1453. data/spec/support/crypt/corpus/corpus-encrypted.json +0 -9515
  1454. data/spec/support/crypt/corpus/corpus-key-aws.json +0 -33
  1455. data/spec/support/crypt/corpus/corpus-key-azure.json +0 -33
  1456. data/spec/support/crypt/corpus/corpus-key-gcp.json +0 -35
  1457. data/spec/support/crypt/corpus/corpus-key-kmip.json +0 -32
  1458. data/spec/support/crypt/corpus/corpus-key-local.json +0 -31
  1459. data/spec/support/crypt/corpus/corpus-schema.json +0 -6335
  1460. data/spec/support/crypt/corpus/corpus.json +0 -8619
  1461. data/spec/support/crypt/data_keys/key_document_aws.json +0 -34
  1462. data/spec/support/crypt/data_keys/key_document_azure.json +0 -33
  1463. data/spec/support/crypt/data_keys/key_document_gcp.json +0 -37
  1464. data/spec/support/crypt/data_keys/key_document_kmip.json +0 -32
  1465. data/spec/support/crypt/data_keys/key_document_local.json +0 -31
  1466. data/spec/support/crypt/encrypted_fields/encryptedFields.json +0 -32
  1467. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Date.json +0 -30
  1468. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalNoPrecision.json +0 -21
  1469. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalPrecision.json +0 -29
  1470. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoubleNoPrecision.json +0 -21
  1471. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoublePrecision.json +0 -30
  1472. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Int.json +0 -27
  1473. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Long.json +0 -27
  1474. data/spec/support/crypt/external/external-key.json +0 -31
  1475. data/spec/support/crypt/external/external-schema.json +0 -19
  1476. data/spec/support/crypt/keys/key1-document.json +0 -30
  1477. data/spec/support/crypt/limits/limits-doc.json +0 -102
  1478. data/spec/support/crypt/limits/limits-key.json +0 -31
  1479. data/spec/support/crypt/limits/limits-schema.json +0 -1405
  1480. data/spec/support/crypt/schema_maps/schema_map_aws.json +0 -17
  1481. data/spec/support/crypt/schema_maps/schema_map_aws_key_alt_names.json +0 -12
  1482. data/spec/support/crypt/schema_maps/schema_map_azure.json +0 -17
  1483. data/spec/support/crypt/schema_maps/schema_map_azure_key_alt_names.json +0 -12
  1484. data/spec/support/crypt/schema_maps/schema_map_gcp.json +0 -17
  1485. data/spec/support/crypt/schema_maps/schema_map_gcp_key_alt_names.json +0 -12
  1486. data/spec/support/crypt/schema_maps/schema_map_kmip.json +0 -17
  1487. data/spec/support/crypt/schema_maps/schema_map_kmip_key_alt_names.json +0 -12
  1488. data/spec/support/crypt/schema_maps/schema_map_local.json +0 -18
  1489. data/spec/support/crypt/schema_maps/schema_map_local_key_alt_names.json +0 -12
  1490. data/spec/support/crypt.rb +0 -412
  1491. data/spec/support/dns.rb +0 -16
  1492. data/spec/support/json_ext_formatter.rb +0 -16
  1493. data/spec/support/keyword_struct.rb +0 -29
  1494. data/spec/support/local_resource_registry.rb +0 -37
  1495. data/spec/support/macros.rb +0 -29
  1496. data/spec/support/matchers.rb +0 -88
  1497. data/spec/support/mongos_macros.rb +0 -24
  1498. data/spec/support/monitoring_ext.rb +0 -19
  1499. data/spec/support/ocsp +0 -1
  1500. data/spec/support/primary_socket.rb +0 -24
  1501. data/spec/support/recording_logger.rb +0 -27
  1502. data/spec/support/sdam_formatter_integration.rb +0 -119
  1503. data/spec/support/shared/app_metadata.rb +0 -179
  1504. data/spec/support/shared/auth_context.rb +0 -17
  1505. data/spec/support/shared/protocol.rb +0 -36
  1506. data/spec/support/shared/scram_conversation.rb +0 -104
  1507. data/spec/support/shared/server_selector.rb +0 -233
  1508. data/spec/support/shared/session.rb +0 -916
  1509. data/spec/support/spec_config.rb +0 -767
  1510. data/spec/support/spec_setup.rb +0 -83
  1511. data/spec/support/using_hash.rb +0 -40
  1512. data/spec/support/utils.rb +0 -678
@@ -1,2514 +0,0 @@
1
- # frozen_string_literal: true
2
- # rubocop:todo all
3
-
4
- require 'spec_helper'
5
-
6
- describe Mongo::BulkWrite do
7
-
8
- before do
9
- authorized_collection.drop
10
- end
11
-
12
- let(:collection_invalid_write_concern) do
13
- authorized_collection.client.with(write: INVALID_WRITE_CONCERN)[authorized_collection.name]
14
- end
15
-
16
- let(:collation) do
17
- { locale: 'en_US', strength: 2 }
18
- end
19
-
20
- let(:array_filters) do
21
- [{ 'i.y' => 3}]
22
- end
23
-
24
- let(:collection) do
25
- authorized_collection
26
- end
27
-
28
- let(:client) do
29
- authorized_client
30
- end
31
-
32
- shared_examples_for 'bulk write with write concern yielding operation failure' do
33
- require_topology :single
34
-
35
- it 'raises an OperationFailure' do
36
- expect {
37
- bulk_write_invalid_write_concern.execute
38
- }.to raise_error(Mongo::Error::OperationFailure)
39
- end
40
- end
41
-
42
- describe '#execute' do
43
- shared_examples_for 'an executable bulk write' do
44
-
45
- context 'when providing a bad operation' do
46
-
47
- let(:requests) do
48
- [{ not_an_operation: { _id: 0 }}]
49
- end
50
-
51
- it 'raises an exception' do
52
- expect {
53
- bulk_write.execute
54
- }.to raise_error(Mongo::Error::InvalidBulkOperationType)
55
- end
56
- end
57
-
58
- context 'when providing no requests' do
59
-
60
- let(:requests) do
61
- []
62
- end
63
-
64
- it 'raises an exception' do
65
- expect {
66
- bulk_write.execute
67
- }.to raise_error(ArgumentError, /Bulk write requests cannot be empty/)
68
- end
69
- end
70
-
71
- context 'when the operations do not need to be split' do
72
-
73
- context 'when a write error occurs' do
74
-
75
- let(:requests) do
76
- [
77
- { insert_one: { _id: 0 }},
78
- { insert_one: { _id: 1 }},
79
- { insert_one: { _id: 0 }},
80
- { insert_one: { _id: 1 }}
81
- ]
82
- end
83
-
84
- let(:error) do
85
- begin
86
- bulk_write.execute
87
- rescue => e
88
- e
89
- end
90
- end
91
-
92
- it 'raises an exception' do
93
- expect {
94
- bulk_write.execute
95
- }.to raise_error(Mongo::Error::BulkWriteError)
96
- end
97
-
98
- it 'sets the document index on the error' do
99
- expect(error.result['writeErrors'].first['index']).to eq(2)
100
- end
101
-
102
- context 'when a session is provided' do
103
-
104
- let(:extra_options) do
105
- { session: session }
106
- end
107
-
108
- let(:client) do
109
- authorized_client
110
- end
111
-
112
- let(:failed_operation) do
113
- bulk_write.execute
114
- end
115
-
116
- it_behaves_like 'a failed operation using a session'
117
- end
118
- end
119
-
120
- context 'when provided a single insert one' do
121
-
122
- let(:requests) do
123
- [{ insert_one: { _id: 0 }}]
124
- end
125
-
126
- let(:result) do
127
- bulk_write.execute
128
- end
129
-
130
- it 'inserts the document' do
131
- expect(result.inserted_count).to eq(1)
132
- expect(authorized_collection.find(_id: 0).count).to eq(1)
133
- end
134
-
135
- it 'only inserts that document' do
136
- result
137
- expect(authorized_collection.find.first['_id']).to eq(0)
138
- end
139
-
140
- context 'when a session is provided' do
141
-
142
- let(:operation) do
143
- result
144
- end
145
-
146
- let(:extra_options) do
147
- { session: session }
148
- end
149
-
150
- let(:client) do
151
- authorized_client
152
- end
153
-
154
- it_behaves_like 'an operation using a session'
155
- end
156
-
157
- context 'when there is a write concern error' do
158
-
159
- it_behaves_like 'bulk write with write concern yielding operation failure'
160
-
161
- context 'when a session is provided' do
162
-
163
- let(:extra_options) do
164
- {session: session}
165
- end
166
-
167
- let(:client) do
168
- collection_invalid_write_concern.client
169
- end
170
-
171
- let(:failed_operation) do
172
- bulk_write_invalid_write_concern.execute
173
- end
174
-
175
- it_behaves_like 'a failed operation using a session'
176
- end
177
- end
178
- end
179
-
180
- context 'when provided multiple insert ones' do
181
-
182
- let(:requests) do
183
- [
184
- { insert_one: { _id: 0 }},
185
- { insert_one: { _id: 1 }},
186
- { insert_one: { _id: 2 }}
187
- ]
188
- end
189
-
190
- let(:result) do
191
- bulk_write.execute
192
- end
193
-
194
- it 'inserts the documents' do
195
- expect(result.inserted_count).to eq(3)
196
- expect(authorized_collection.find(_id: { '$in'=> [ 0, 1, 2 ]}).count).to eq(3)
197
- end
198
-
199
- context 'when there is a write failure' do
200
-
201
- let(:requests) do
202
- [{ insert_one: { _id: 1 }}, { insert_one: { _id: 1 }}]
203
- end
204
-
205
- it 'raises a BulkWriteError' do
206
- expect {
207
- bulk_write.execute
208
- }.to raise_error(Mongo::Error::BulkWriteError)
209
- end
210
- end
211
-
212
- context 'when there is a write concern error' do
213
-
214
- it_behaves_like 'bulk write with write concern yielding operation failure'
215
-
216
- context 'when a session is provided' do
217
-
218
- let(:extra_options) do
219
- {session: session}
220
- end
221
-
222
- let(:client) do
223
- collection_invalid_write_concern.client
224
- end
225
-
226
- let(:failed_operation) do
227
- bulk_write_invalid_write_concern.execute
228
- end
229
-
230
- it_behaves_like 'a failed operation using a session'
231
- end
232
- end
233
- end
234
-
235
- context 'when provided a single delete one' do
236
-
237
- let(:requests) do
238
- [{ delete_one: { filter: { _id: 0 }}}]
239
- end
240
-
241
- let(:result) do
242
- bulk_write.execute
243
- end
244
-
245
- before do
246
- authorized_collection.insert_one({ _id: 0 })
247
- end
248
-
249
- it 'deletes the document' do
250
- expect(result.deleted_count).to eq(1)
251
- expect(authorized_collection.find(_id: 0).count).to eq(0)
252
- end
253
-
254
- context 'when the write has specified a hint option' do
255
- let(:requests) do
256
- [{
257
- delete_one: {
258
- filter: { _id: 1 },
259
- hint: '_id_',
260
- }
261
- }]
262
- end
263
-
264
- context 'with unacknowledged write concern' do
265
- let(:bulk_write) do
266
- described_class.new(
267
- collection,
268
- requests,
269
- options.merge(write_concern: { w: 0 })
270
- )
271
- end
272
-
273
- context "on 4.4+ servers" do
274
- min_server_version '4.4'
275
-
276
- it "doesn't raises an error" do
277
- expect do
278
- bulk_write.execute
279
- end.to_not raise_error(Mongo::Error::UnsupportedOption)
280
- end
281
- end
282
-
283
- context "on <=4.2 servers" do
284
- max_server_version '4.2'
285
-
286
- it 'raises a client-side error' do
287
- expect do
288
- bulk_write.execute
289
- end.to raise_error(Mongo::Error::UnsupportedOption, /The hint option cannot be specified on an unacknowledged write operation/)
290
- end
291
- end
292
- end
293
-
294
- # Functionality on more recent servers is sufficiently covered by spec tests.
295
- context 'on server versions < 3.4' do
296
- max_server_fcv '3.2'
297
-
298
- it 'raises a client-side error' do
299
- expect do
300
- bulk_write.execute
301
- end.to raise_error(Mongo::Error::UnsupportedOption, /The MongoDB server handling this request does not support the hint option on this command./)
302
- end
303
- end
304
- end
305
-
306
- context 'when a session is provided' do
307
-
308
- let(:operation) do
309
- result
310
- end
311
-
312
- let(:client) do
313
- authorized_client
314
- end
315
-
316
- let(:extra_options) do
317
- { session: session }
318
- end
319
-
320
- it_behaves_like 'an operation using a session'
321
- end
322
-
323
- context 'when there is a write concern error' do
324
-
325
- it_behaves_like 'bulk write with write concern yielding operation failure'
326
-
327
- context 'when a session is provided' do
328
-
329
- let(:extra_options) do
330
- {session: session}
331
- end
332
-
333
- let(:client) do
334
- collection_invalid_write_concern.client
335
- end
336
-
337
- let(:failed_operation) do
338
- bulk_write_invalid_write_concern.execute
339
- end
340
-
341
- it_behaves_like 'a failed operation using a session'
342
- end
343
-
344
- context 'when the write has a collation specified' do
345
-
346
- before do
347
- authorized_collection.insert_one(name: 'bang')
348
- end
349
-
350
- let(:requests) do
351
- [{ delete_one: { filter: { name: 'BANG' }, collation: collation } }]
352
- end
353
-
354
- context 'when the server selected supports collations' do
355
- min_server_fcv '3.4'
356
-
357
- let!(:result) do
358
- bulk_write.execute
359
- end
360
-
361
- it 'applies the collation' do
362
- expect(authorized_collection.find(name: 'bang').count).to eq(0)
363
- end
364
-
365
- it 'reports the deleted count' do
366
- expect(result.deleted_count).to eq(1)
367
- end
368
- end
369
-
370
- context 'when the server selected does not support collations' do
371
- max_server_version '3.2'
372
-
373
- it 'raises an exception' do
374
- expect {
375
- bulk_write.execute
376
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
377
- end
378
-
379
- context 'when a String key is used' do
380
-
381
- let(:requests) do
382
- [{ delete_one: { filter: { name: 'BANG' }, 'collation' => collation } }]
383
- end
384
-
385
- it 'raises an exception' do
386
- expect {
387
- bulk_write.execute
388
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
389
- end
390
- end
391
- end
392
- end
393
-
394
- context 'when a collation is not specified' do
395
-
396
- before do
397
- authorized_collection.insert_one(name: 'bang')
398
- end
399
-
400
- let(:requests) do
401
- [{ delete_one: { filter: { name: 'BANG' }}}]
402
- end
403
-
404
- let!(:result) do
405
- bulk_write.execute
406
- end
407
-
408
- it 'does not apply the collation' do
409
- expect(authorized_collection.find(name: 'bang').count).to eq(1)
410
- end
411
-
412
- it 'reports the deleted count' do
413
- expect(result.deleted_count).to eq(0)
414
- end
415
- end
416
- end
417
-
418
- context 'when bulk executing update_one' do
419
- context 'when the write has specified a hint option' do
420
- let(:requests) do
421
- [{
422
- update_one: {
423
- filter: { _id: 1 },
424
- update: { '$set' => { 'x.$[i].y' => 5 } },
425
- hint: '_id_',
426
- }
427
- }]
428
- end
429
-
430
- # Functionality on more recent servers is sufficiently covered by spec tests.
431
- context 'on server versions < 3.4' do
432
- max_server_fcv '3.2'
433
-
434
- it 'raises a client-side error' do
435
- expect do
436
- bulk_write.execute
437
- end.to raise_error(Mongo::Error::UnsupportedOption, /The MongoDB server handling this request does not support the hint option on this command./)
438
- end
439
- end
440
-
441
- context 'with unacknowledged write concern' do
442
- let(:bulk_write) do
443
- described_class.new(
444
- collection,
445
- requests,
446
- options.merge(write_concern: { w: 0 })
447
- )
448
- end
449
-
450
- context "on 4.2+ servers" do
451
- min_server_version '4.2'
452
-
453
- it "doesn't raises an error" do
454
- expect do
455
- bulk_write.execute
456
- end.to_not raise_error(Mongo::Error::UnsupportedOption)
457
- end
458
- end
459
-
460
- context "on <=4.2 servers" do
461
- max_server_version '4.0'
462
-
463
- it 'raises a client-side error' do
464
- expect do
465
- bulk_write.execute
466
- end.to raise_error(Mongo::Error::UnsupportedOption, /The hint option cannot be specified on an unacknowledged write operation/)
467
- end
468
- end
469
- end
470
- end
471
-
472
- context 'when the write has specified arrayFilters' do
473
-
474
- before do
475
- authorized_collection.insert_one(_id: 1, x: [{ y: 1 }, { y: 2 }, { y: 3 }])
476
- end
477
-
478
- let(:requests) do
479
- [{
480
- update_one: {
481
- filter: { _id: 1 },
482
- update: { '$set' => { 'x.$[i].y' => 5 } },
483
- array_filters: array_filters,
484
- }
485
- }]
486
- end
487
-
488
- context 'when the server selected supports arrayFilters' do
489
- min_server_fcv '3.6'
490
-
491
- let!(:result) do
492
- bulk_write.execute
493
- end
494
-
495
- it 'applies the arrayFilters' do
496
- expect(result.matched_count).to eq(1)
497
- expect(result.modified_count).to eq(1)
498
- expect(authorized_collection.find(_id: 1).first['x'].last['y']).to eq(5)
499
- end
500
- end
501
-
502
- context 'when the server selected does not support arrayFilters' do
503
- max_server_version '3.4'
504
-
505
- it 'raises an exception' do
506
- expect {
507
- bulk_write.execute
508
- }.to raise_exception(Mongo::Error::UnsupportedArrayFilters)
509
- end
510
- end
511
- end
512
- end
513
-
514
- context 'when bulk executing update_many' do
515
- context 'when the write has specified a hint option' do
516
- let(:requests) do
517
- [{
518
- update_many: {
519
- filter: { '$or' => [{ _id: 1 }, { _id: 2 }]},
520
- update: { '$set' => { 'x.$[i].y' => 5 } },
521
- hint: '_id_',
522
- }
523
- }]
524
- end
525
-
526
- # Functionality on more recent servers is sufficiently covered by spec tests.
527
- context 'on server versions < 3.4' do
528
- max_server_fcv '3.2'
529
-
530
- it 'raises a client-side error' do
531
- expect do
532
- bulk_write.execute
533
- end.to raise_error(Mongo::Error::UnsupportedOption, /The MongoDB server handling this request does not support the hint option on this command./)
534
- end
535
- end
536
-
537
- context 'with unacknowledged write concern' do
538
- let(:bulk_write) do
539
- described_class.new(
540
- collection,
541
- requests,
542
- options.merge(write_concern: { w: 0 })
543
- )
544
- end
545
-
546
- context "on 4.2+ servers" do
547
- min_server_version '4.2'
548
-
549
- it "doesn't raises an error" do
550
- expect do
551
- bulk_write.execute
552
- end.to_not raise_error(Mongo::Error::UnsupportedOption)
553
- end
554
- end
555
-
556
- context "on <=4.0 servers" do
557
- max_server_version '4.0'
558
-
559
- it 'raises a client-side error' do
560
- expect do
561
- bulk_write.execute
562
- end.to raise_error(Mongo::Error::UnsupportedOption, /The hint option cannot be specified on an unacknowledged write operation/)
563
- end
564
- end
565
- end
566
- end
567
-
568
-
569
- context 'when the write has specified arrayFilters' do
570
-
571
- before do
572
- authorized_collection.insert_many([{
573
- _id: 1, x: [
574
- { y: 1 },
575
- { y: 2 },
576
- { y: 3 }
577
- ]
578
- },
579
- {
580
- _id: 2,
581
- x: [
582
- { y: 3 },
583
- { y: 2 },
584
- { y: 1 }
585
- ]
586
- }])
587
- end
588
-
589
- let(:selector) do
590
- { '$or' => [{ _id: 1 }, { _id: 2 }]}
591
- end
592
-
593
- let(:requests) do
594
- [{
595
- update_many: {
596
- filter: { '$or' => [{ _id: 1 }, { _id: 2 }]},
597
- update: { '$set' => { 'x.$[i].y' => 5 } },
598
- array_filters: array_filters,
599
- }
600
- }]
601
- end
602
-
603
- context 'when the server selected supports arrayFilters' do
604
- min_server_fcv '3.6'
605
-
606
- let!(:result) do
607
- bulk_write.execute
608
- end
609
-
610
- it 'applies the arrayFilters' do
611
- expect(result.matched_count).to eq(2)
612
- expect(result.modified_count).to eq(2)
613
-
614
- docs = authorized_collection.find(selector, sort: { _id: 1 }).to_a
615
- expect(docs[0]['x']).to eq ([{ 'y' => 1 }, { 'y' => 2 }, { 'y' => 5}])
616
- expect(docs[1]['x']).to eq ([{ 'y' => 5 }, { 'y' => 2 }, { 'y' => 1}])
617
- end
618
- end
619
-
620
- context 'when the server selected does not support arrayFilters' do
621
- max_server_version '3.4'
622
-
623
- it 'raises an exception' do
624
- expect {
625
- bulk_write.execute
626
- }.to raise_exception(Mongo::Error::UnsupportedArrayFilters)
627
- end
628
- end
629
- end
630
- end
631
-
632
- context 'when multiple documents match delete selector' do
633
-
634
- before do
635
- authorized_collection.insert_many([{ a: 1 }, { a: 1 }])
636
- end
637
-
638
- let(:requests) do
639
- [{ delete_one: { filter: { a: 1 }}}]
640
- end
641
-
642
- it 'reports n_removed correctly' do
643
- expect(bulk_write.execute.deleted_count).to eq(1)
644
- end
645
-
646
- it 'deletes only matching documents' do
647
- bulk_write.execute
648
- expect(authorized_collection.find(a: 1).count).to eq(1)
649
- end
650
- end
651
- end
652
-
653
- context 'when provided multiple delete ones' do
654
-
655
- let(:requests) do
656
- [
657
- { delete_one: { filter: { _id: 0 }}},
658
- { delete_one: { filter: { _id: 1 }}},
659
- { delete_one: { filter: { _id: 2 }}}
660
- ]
661
- end
662
-
663
- let(:result) do
664
- bulk_write.execute
665
- end
666
-
667
- before do
668
- authorized_collection.insert_many([
669
- { _id: 0 }, { _id: 1 }, { _id: 2 }
670
- ])
671
- end
672
-
673
- it 'deletes the documents' do
674
- expect(result.deleted_count).to eq(3)
675
- expect(authorized_collection.find(_id: { '$in'=> [ 0, 1, 2 ]}).count).to eq(0)
676
- end
677
-
678
- context 'when a session is provided' do
679
-
680
- let(:operation) do
681
- result
682
- end
683
-
684
- let(:client) do
685
- authorized_client
686
- end
687
-
688
- let(:extra_options) do
689
- { session: session }
690
- end
691
-
692
- it_behaves_like 'an operation using a session'
693
- end
694
-
695
- context 'when there is a write concern error' do
696
-
697
- it_behaves_like 'bulk write with write concern yielding operation failure'
698
-
699
- context 'when a session is provided' do
700
-
701
- let(:extra_options) do
702
- {session: session}
703
- end
704
-
705
- let(:client) do
706
- collection_invalid_write_concern.client
707
- end
708
-
709
- let(:failed_operation) do
710
- bulk_write_invalid_write_concern.execute
711
- end
712
-
713
- it_behaves_like 'a failed operation using a session'
714
- end
715
- end
716
-
717
- context 'when the write has a collation specified' do
718
-
719
- before do
720
- authorized_collection.insert_one(name: 'bang')
721
- authorized_collection.insert_one(name: 'doink')
722
- end
723
-
724
- let(:requests) do
725
- [{ delete_one: { filter: { name: 'BANG' }, collation: collation }},
726
- { delete_one: { filter: { name: 'DOINK' }, collation: collation }}]
727
- end
728
-
729
- context 'when the server selected supports collations' do
730
- min_server_fcv '3.4'
731
-
732
- let!(:result) do
733
- bulk_write.execute
734
- end
735
-
736
- it 'applies the collation' do
737
- expect(authorized_collection.find(name: { '$in' => ['bang', 'doink']}).count).to eq(0)
738
- end
739
-
740
- it 'reports the deleted count' do
741
- expect(result.deleted_count).to eq(2)
742
- end
743
- end
744
-
745
- context 'when the server selected does not support collations' do
746
- max_server_version '3.2'
747
-
748
- it 'raises an exception' do
749
- expect {
750
- bulk_write.execute
751
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
752
- end
753
-
754
- context 'when a String key is used' do
755
-
756
- let(:requests) do
757
- [{ delete_one: { filter: { name: 'BANG' }, 'collation' => collation }},
758
- { delete_one: { filter: { name: 'DOINK' }, 'collation' => collation }}]
759
- end
760
-
761
- it 'raises an exception' do
762
- expect {
763
- bulk_write.execute
764
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
765
- end
766
- end
767
- end
768
- end
769
-
770
- context 'when the write does not have a collation specified' do
771
-
772
- before do
773
- authorized_collection.insert_one(name: 'bang')
774
- authorized_collection.insert_one(name: 'doink')
775
- end
776
-
777
- let(:requests) do
778
- [{ delete_one: { filter: { name: 'BANG' }}},
779
- { delete_one: { filter: { name: 'DOINK' }}}]
780
- end
781
-
782
- let!(:result) do
783
- bulk_write.execute
784
- end
785
-
786
- it 'does not apply the collation' do
787
- expect(authorized_collection.find(name: { '$in' => ['bang', 'doink']}).count).to eq(2)
788
- end
789
-
790
- it 'reports the deleted count' do
791
- expect(result.deleted_count).to eq(0)
792
- end
793
- end
794
- end
795
-
796
- context 'when provided a single delete many' do
797
-
798
- let(:requests) do
799
- [{ delete_many: { filter: { _id: 0 }}}]
800
- end
801
-
802
- let(:result) do
803
- bulk_write.execute
804
- end
805
-
806
- before do
807
- authorized_collection.insert_one({ _id: 0 })
808
- end
809
-
810
- it 'deletes the documents' do
811
- expect(result.deleted_count).to eq(1)
812
- expect(authorized_collection.find(_id: 0).count).to eq(0)
813
- end
814
-
815
- context 'when the write has specified a hint option' do
816
- let(:requests) do
817
- [{
818
- delete_many: {
819
- filter: { _id: 1 },
820
- hint: '_id_',
821
- }
822
- }]
823
- end
824
-
825
- # Functionality on more recent servers is sufficiently covered by spec tests.
826
- context 'on server versions < 3.4' do
827
- max_server_fcv '3.2'
828
-
829
- it 'raises a client-side error' do
830
- expect do
831
- bulk_write.execute
832
- end.to raise_error(Mongo::Error::UnsupportedOption, /The MongoDB server handling this request does not support the hint option on this command./)
833
- end
834
- end
835
-
836
- context 'with unacknowledged write concern' do
837
- let(:bulk_write) do
838
- described_class.new(
839
- collection,
840
- requests,
841
- options.merge(write_concern: { w: 0 })
842
- )
843
- end
844
-
845
- context "on 4.4+ servers" do
846
- min_server_version '4.4'
847
-
848
- it "doesn't raises an error" do
849
- expect do
850
- bulk_write.execute
851
- end.to_not raise_error(Mongo::Error::UnsupportedOption)
852
- end
853
- end
854
-
855
- context "on <=4.2 servers" do
856
- max_server_version '4.2'
857
-
858
- it 'raises a client-side error' do
859
- expect do
860
- bulk_write.execute
861
- end.to raise_error(Mongo::Error::UnsupportedOption, /The hint option cannot be specified on an unacknowledged write operation/)
862
- end
863
- end
864
- end
865
- end
866
-
867
- context 'when a session is provided' do
868
-
869
- let(:operation) do
870
- result
871
- end
872
-
873
- let(:client) do
874
- authorized_client
875
- end
876
-
877
- let(:extra_options) do
878
- { session: session }
879
- end
880
-
881
- it_behaves_like 'an operation using a session'
882
- end
883
-
884
- context 'when there is a write concern error' do
885
-
886
- it_behaves_like 'bulk write with write concern yielding operation failure'
887
-
888
- context 'when a session is provided' do
889
-
890
- let(:extra_options) do
891
- {session: session}
892
- end
893
-
894
- let(:client) do
895
- collection_invalid_write_concern.client
896
- end
897
-
898
- let(:failed_operation) do
899
- bulk_write_invalid_write_concern.execute
900
- end
901
-
902
- it_behaves_like 'a failed operation using a session'
903
- end
904
- end
905
-
906
- context 'when the write has a collation specified' do
907
-
908
- before do
909
- authorized_collection.insert_one(name: 'bang')
910
- authorized_collection.insert_one(name: 'bang')
911
- end
912
-
913
- let(:requests) do
914
- [{ delete_many: { filter: { name: 'BANG' }, collation: collation }}]
915
- end
916
-
917
- context 'when the server selected supports collations' do
918
- min_server_fcv '3.4'
919
-
920
- let!(:result) do
921
- bulk_write.execute
922
- end
923
-
924
- it 'applies the collation' do
925
- expect(authorized_collection.find(name: 'bang').count).to eq(0)
926
- end
927
-
928
- it 'reports the deleted count' do
929
- expect(result.deleted_count).to eq(2)
930
- end
931
- end
932
-
933
- context 'when the server selected does not support collations' do
934
- max_server_version '3.2'
935
-
936
- it 'raises an exception' do
937
- expect {
938
- bulk_write.execute
939
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
940
- end
941
-
942
- context 'when a String key is used' do
943
-
944
- let(:requests) do
945
- [{ delete_many: { filter: { name: 'BANG' }, 'collation' => collation }}]
946
- end
947
-
948
- it 'raises an exception' do
949
- expect {
950
- bulk_write.execute
951
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
952
- end
953
- end
954
- end
955
- end
956
-
957
- context 'when a collation is not specified' do
958
-
959
- before do
960
- authorized_collection.insert_one(name: 'bang')
961
- authorized_collection.insert_one(name: 'bang')
962
- end
963
-
964
- let(:requests) do
965
- [{ delete_many: { filter: { name: 'BANG' }}}]
966
- end
967
-
968
- let!(:result) do
969
- bulk_write.execute
970
- end
971
-
972
- it 'does not apply the collation' do
973
- expect(authorized_collection.find(name: 'bang').count).to eq(2)
974
- end
975
-
976
- it 'reports the deleted count' do
977
- expect(result.deleted_count).to eq(0)
978
- end
979
- end
980
- end
981
-
982
- context 'when provided multiple delete many ops' do
983
-
984
- let(:requests) do
985
- [
986
- { delete_many: { filter: { _id: 0 }}},
987
- { delete_many: { filter: { _id: 1 }}},
988
- { delete_many: { filter: { _id: 2 }}}
989
- ]
990
- end
991
-
992
- let(:result) do
993
- bulk_write.execute
994
- end
995
-
996
- before do
997
- authorized_collection.insert_many([
998
- { _id: 0 }, { _id: 1 }, { _id: 2 }
999
- ])
1000
- end
1001
-
1002
- it 'deletes the documents' do
1003
- expect(result.deleted_count).to eq(3)
1004
- expect(authorized_collection.find(_id: { '$in'=> [ 0, 1, 2 ]}).count).to eq(0)
1005
- end
1006
-
1007
- context 'when a session is provided' do
1008
-
1009
- let(:operation) do
1010
- result
1011
- end
1012
-
1013
- let(:client) do
1014
- authorized_client
1015
- end
1016
-
1017
- let(:extra_options) do
1018
- { session: session }
1019
- end
1020
-
1021
- it_behaves_like 'an operation using a session'
1022
- end
1023
-
1024
- context 'when there is a write concern error' do
1025
-
1026
- it_behaves_like 'bulk write with write concern yielding operation failure'
1027
-
1028
- context 'when a session is provided' do
1029
-
1030
- let(:operation) do
1031
- result
1032
- end
1033
-
1034
- let(:client) do
1035
- authorized_client
1036
- end
1037
-
1038
- let(:extra_options) do
1039
- {session: session}
1040
- end
1041
-
1042
- it_behaves_like 'an operation using a session'
1043
- end
1044
- end
1045
-
1046
- context 'when the write has a collation specified' do
1047
-
1048
- before do
1049
- authorized_collection.insert_one(name: 'bang')
1050
- authorized_collection.insert_one(name: 'bang')
1051
- authorized_collection.insert_one(name: 'doink')
1052
- end
1053
-
1054
- let(:requests) do
1055
- [{ delete_many: { filter: { name: 'BANG' }, collation: collation }},
1056
- { delete_many: { filter: { name: 'DOINK' }, collation: collation }}]
1057
- end
1058
-
1059
- context 'when the server selected supports collations' do
1060
- min_server_fcv '3.4'
1061
-
1062
- let!(:result) do
1063
- bulk_write.execute
1064
- end
1065
-
1066
- it 'applies the collation' do
1067
- expect(authorized_collection.find(name: { '$in' => ['bang', 'doink'] }).count).to eq(0)
1068
- end
1069
-
1070
- it 'reports the deleted count' do
1071
- expect(result.deleted_count).to eq(3)
1072
- end
1073
- end
1074
-
1075
- context 'when the server selected does not support collations' do
1076
- max_server_version '3.2'
1077
-
1078
- it 'raises an exception' do
1079
- expect {
1080
- bulk_write.execute
1081
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
1082
- end
1083
-
1084
- context 'when a String key is used' do
1085
-
1086
- let(:requests) do
1087
- [{ delete_many: { filter: { name: 'BANG' }, 'collation' => collation }},
1088
- { delete_many: { filter: { name: 'DOINK' }, 'collation' => collation }}]
1089
- end
1090
-
1091
- it 'raises an exception' do
1092
- expect {
1093
- bulk_write.execute
1094
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
1095
- end
1096
- end
1097
- end
1098
- end
1099
-
1100
- context 'when a collation is not specified' do
1101
-
1102
- before do
1103
- authorized_collection.insert_one(name: 'bang')
1104
- authorized_collection.insert_one(name: 'bang')
1105
- authorized_collection.insert_one(name: 'doink')
1106
- end
1107
-
1108
- let(:requests) do
1109
- [{ delete_many: { filter: { name: 'BANG' }}},
1110
- { delete_many: { filter: { name: 'DOINK' }}}]
1111
- end
1112
-
1113
- let!(:result) do
1114
- bulk_write.execute
1115
- end
1116
-
1117
- it 'does not apply the collation' do
1118
- expect(authorized_collection.find(name: { '$in' => ['bang', 'doink'] }).count).to eq(3)
1119
- end
1120
-
1121
- it 'reports the deleted count' do
1122
- expect(result.deleted_count).to eq(0)
1123
- end
1124
- end
1125
- end
1126
-
1127
- context 'when providing a single replace one' do
1128
-
1129
- let(:requests) do
1130
- [{ replace_one: { filter: { _id: 0 }, replacement: { name: 'test' }}}]
1131
- end
1132
-
1133
- let(:result) do
1134
- bulk_write.execute
1135
- end
1136
-
1137
- before do
1138
- authorized_collection.insert_one({ _id: 0 })
1139
- end
1140
-
1141
- it 'replaces the document' do
1142
- expect(result.modified_count).to eq(1)
1143
- expect(authorized_collection.find(_id: 0).first[:name]).to eq('test')
1144
- end
1145
-
1146
- context 'when a hint option is provided' do
1147
- let(:requests) do
1148
- [{
1149
- replace_one: {
1150
- filter: { _id: 0 },
1151
- replacements: { name: 'test' },
1152
- hint: '_id_'
1153
- }
1154
- }]
1155
- end
1156
-
1157
- # Functionality on more recent servers is sufficiently covered by spec tests.
1158
- context 'on server versions < 3.4' do
1159
- max_server_fcv '3.2'
1160
-
1161
- it 'raises a client-side error' do
1162
- expect do
1163
- bulk_write.execute
1164
- end.to raise_error(Mongo::Error::UnsupportedOption, /The MongoDB server handling this request does not support the hint option on this command./)
1165
- end
1166
- end
1167
-
1168
- context 'with unacknowledged write concern' do
1169
- let(:bulk_write) do
1170
- described_class.new(
1171
- collection,
1172
- requests,
1173
- options.merge(write_concern: { w: 0 })
1174
- )
1175
- end
1176
-
1177
- context "on 4.2+ servers" do
1178
- min_server_version '4.2'
1179
-
1180
- it "doesn't raises an error" do
1181
- expect do
1182
- bulk_write.execute
1183
- end.to_not raise_error(Mongo::Error::UnsupportedOption)
1184
- end
1185
- end
1186
-
1187
- context "on <=4.0 servers" do
1188
- max_server_version '4.0'
1189
-
1190
- it 'raises a client-side error' do
1191
- expect do
1192
- bulk_write.execute
1193
- end.to raise_error(Mongo::Error::UnsupportedOption, /The hint option cannot be specified on an unacknowledged write operation/)
1194
- end
1195
- end
1196
- end
1197
- end
1198
-
1199
- context 'when a session is provided' do
1200
-
1201
- let(:operation) do
1202
- result
1203
- end
1204
-
1205
- let(:client) do
1206
- authorized_client
1207
- end
1208
-
1209
- let(:extra_options) do
1210
- { session: session }
1211
- end
1212
-
1213
- it_behaves_like 'an operation using a session'
1214
- end
1215
-
1216
- context 'when there is a write concern error' do
1217
-
1218
- it_behaves_like 'bulk write with write concern yielding operation failure'
1219
-
1220
- context 'when a session is provided' do
1221
-
1222
- let(:extra_options) do
1223
- {session: session}
1224
- end
1225
-
1226
- let(:client) do
1227
- collection_invalid_write_concern.client
1228
- end
1229
-
1230
- let(:failed_operation) do
1231
- bulk_write_invalid_write_concern.execute
1232
- end
1233
-
1234
- it_behaves_like 'a failed operation using a session'
1235
- end
1236
- end
1237
-
1238
- context 'when the write has a collation specified' do
1239
-
1240
- before do
1241
- authorized_collection.insert_one(name: 'bang')
1242
- end
1243
-
1244
- let(:requests) do
1245
- [{ replace_one: { filter: { name: 'BANG' },
1246
- replacement: { other: 'pong' },
1247
- collation: collation }}]
1248
- end
1249
-
1250
- context 'when the server selected supports collations' do
1251
- min_server_fcv '3.4'
1252
-
1253
- let!(:result) do
1254
- bulk_write.execute
1255
- end
1256
-
1257
- it 'applies the collation' do
1258
- expect(authorized_collection.find(other: 'pong').count).to eq(1)
1259
- end
1260
-
1261
- it 'reports the upserted id' do
1262
- expect(result.upserted_ids).to eq([])
1263
- end
1264
-
1265
- it 'reports the upserted count' do
1266
- expect(result.upserted_count).to eq(0)
1267
- end
1268
-
1269
- it 'reports the modified count' do
1270
- expect(result.modified_count).to eq(1)
1271
- end
1272
-
1273
- it 'reports the matched count' do
1274
- expect(result.matched_count).to eq(1)
1275
- end
1276
- end
1277
-
1278
- context 'when the server selected does not support collations' do
1279
- max_server_version '3.2'
1280
-
1281
- it 'raises an exception' do
1282
- expect {
1283
- bulk_write.execute
1284
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
1285
- end
1286
-
1287
- context 'when a String key is used' do
1288
-
1289
- let(:requests) do
1290
- [{ replace_one: { filter: { name: 'BANG' },
1291
- replacement: { other: 'pong' },
1292
- 'collation' => collation }}]
1293
- end
1294
-
1295
- it 'raises an exception' do
1296
- expect {
1297
- bulk_write.execute
1298
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
1299
- end
1300
- end
1301
- end
1302
- end
1303
-
1304
- context 'when the write does not have a collation specified' do
1305
-
1306
- before do
1307
- authorized_collection.insert_one(name: 'bang')
1308
- end
1309
-
1310
- let(:requests) do
1311
- [{ replace_one: { filter: { name: 'BANG' }, replacement: { other: 'pong' }}}]
1312
- end
1313
-
1314
- let!(:result) do
1315
- bulk_write.execute
1316
- end
1317
-
1318
- it 'does not apply the collation' do
1319
- expect(authorized_collection.find(other: 'pong').count).to eq(0)
1320
- end
1321
-
1322
- it 'reports the upserted id' do
1323
- expect(result.upserted_ids).to eq([])
1324
- end
1325
-
1326
- it 'reports the upserted count' do
1327
- expect(result.upserted_count).to eq(0)
1328
- end
1329
-
1330
- it 'reports the modified count' do
1331
- expect(result.modified_count).to eq(0)
1332
- end
1333
-
1334
- it 'reports the matched count' do
1335
- expect(result.matched_count).to eq(0)
1336
- end
1337
- end
1338
- end
1339
-
1340
- context 'when providing a single update one' do
1341
-
1342
- context 'when upsert is false' do
1343
-
1344
- let(:requests) do
1345
- [{ update_one: { filter: { _id: 0 }, update: { "$set" => { name: 'test' }}}}]
1346
- end
1347
-
1348
- let(:result) do
1349
- bulk_write.execute
1350
- end
1351
-
1352
- before do
1353
- authorized_collection.insert_one({ _id: 0 })
1354
- end
1355
-
1356
- it 'updates the document' do
1357
- result
1358
- expect(authorized_collection.find(_id: 0).first[:name]).to eq('test')
1359
- end
1360
-
1361
- it 'reports the upserted id' do
1362
- expect(result.upserted_ids).to eq([])
1363
- end
1364
-
1365
- it 'reports the upserted count' do
1366
- expect(result.upserted_count).to eq(0)
1367
- end
1368
-
1369
- it 'reports the modified count' do
1370
- expect(result.modified_count).to eq(1)
1371
- end
1372
-
1373
- it 'reports the matched count' do
1374
- expect(result.matched_count).to eq(1)
1375
- end
1376
-
1377
- context 'when a session is provided' do
1378
-
1379
- let(:operation) do
1380
- result
1381
- end
1382
-
1383
- let(:client) do
1384
- authorized_client
1385
- end
1386
-
1387
- let(:extra_options) do
1388
- { session: session }
1389
- end
1390
-
1391
- it_behaves_like 'an operation using a session'
1392
- end
1393
-
1394
- context 'when documents match but are not modified' do
1395
-
1396
- before do
1397
- authorized_collection.insert_one({ a: 0 })
1398
- end
1399
-
1400
- let(:requests) do
1401
- [{ update_one: { filter: { a: 0 }, update: { "$set" => { a: 0 }}}}]
1402
- end
1403
-
1404
- it 'reports the upserted id' do
1405
- expect(result.upserted_ids).to eq([])
1406
- end
1407
-
1408
- it 'reports the upserted count' do
1409
- expect(result.upserted_count).to eq(0)
1410
- end
1411
-
1412
- it 'reports the modified count' do
1413
- expect(result.modified_count).to eq(0)
1414
- end
1415
-
1416
- it 'reports the matched count' do
1417
- expect(result.matched_count).to eq(1)
1418
- end
1419
- end
1420
-
1421
- context 'when the number of updates exceeds the max batch size' do
1422
- # Test uses doubles for server descriptions, doubles are
1423
- # incompatible with freezing which linting does for descriptions
1424
- require_no_linting
1425
-
1426
- let(:batch_size) do
1427
- 11
1428
- end
1429
-
1430
- before do
1431
- allow_any_instance_of(Mongo::Server::Description).to \
1432
- receive(:max_write_batch_size).and_return(batch_size - 1)
1433
- end
1434
-
1435
- let(:requests) do
1436
- batch_size.times.collect do |i|
1437
- { update_one: { filter: { a: i }, update: { "$set" => { a: i, b: 3 }}, upsert: true }}
1438
- end
1439
- end
1440
-
1441
- it 'updates the documents and reports the correct number of upserted ids' do
1442
- expect(result.upserted_ids.size).to eq(batch_size)
1443
- expect(authorized_collection.find(b: 3).count).to eq(batch_size)
1444
- end
1445
- end
1446
-
1447
- context 'when there is a write concern error' do
1448
-
1449
- it_behaves_like 'bulk write with write concern yielding operation failure'
1450
-
1451
- context 'when a session is provided' do
1452
-
1453
- let(:extra_options) do
1454
- {session: session}
1455
- end
1456
-
1457
- let(:client) do
1458
- collection_invalid_write_concern.client
1459
- end
1460
-
1461
- let(:failed_operation) do
1462
- bulk_write_invalid_write_concern.execute
1463
- end
1464
-
1465
- it_behaves_like 'a failed operation using a session'
1466
- end
1467
- end
1468
- end
1469
-
1470
- context 'when upsert is true' do
1471
-
1472
- let(:requests) do
1473
- [{ update_one: { filter: { _id: 0 }, update: { "$set" => { name: 'test' } }, upsert: true }}]
1474
- end
1475
-
1476
- let(:result) do
1477
- bulk_write.execute
1478
- end
1479
-
1480
- it 'updates the document' do
1481
- result
1482
- expect(authorized_collection.find(_id: 0).first[:name]).to eq('test')
1483
- end
1484
-
1485
- it 'reports the upserted count' do
1486
- expect(result.upserted_count).to eq(1)
1487
- end
1488
-
1489
- it 'reports the modified_count count' do
1490
- expect(result.modified_count).to eq(0)
1491
- end
1492
-
1493
- it 'reports the matched count' do
1494
- expect(result.matched_count).to eq(0)
1495
- end
1496
-
1497
- it 'reports the upserted id' do
1498
- expect(result.upserted_ids).to eq([0])
1499
- end
1500
-
1501
- context 'when there is a write concern error' do
1502
-
1503
- it_behaves_like 'bulk write with write concern yielding operation failure'
1504
- end
1505
-
1506
- context 'when write_concern is specified as an option' do
1507
-
1508
- # In a multi-sharded cluster, the write seems to go to a
1509
- # different shard from the read
1510
- require_no_multi_mongos
1511
-
1512
- let(:extra_options) do
1513
- { write_concern: { w: 0 } }
1514
- end
1515
-
1516
- let(:result) do
1517
- bulk_write.execute
1518
- end
1519
-
1520
- it 'updates the document' do
1521
- result
1522
- expect(authorized_collection.find(_id: 0).first[:name]).to eq('test')
1523
- end
1524
-
1525
- it 'does not report the upserted count' do
1526
- expect(result.upserted_count).to eq(0)
1527
- end
1528
-
1529
- it 'does not report the modified_count count' do
1530
- expect(result.modified_count).to eq(0)
1531
- end
1532
-
1533
- it 'does not report the matched count' do
1534
- expect(result.matched_count).to eq(0)
1535
- end
1536
-
1537
- it 'does not report the upserted id' do
1538
- expect(result.upserted_ids).to eq([])
1539
- end
1540
- end
1541
- end
1542
-
1543
- context 'when the write has a collation specified' do
1544
-
1545
- before do
1546
- authorized_collection.insert_one(name: 'bang')
1547
- end
1548
-
1549
- let(:requests) do
1550
- [{ update_one: { filter: { name: 'BANG' },
1551
- update: { "$set" => { name: 'pong' }},
1552
- collation: collation }}]
1553
- end
1554
-
1555
- context 'when the server selected supports collations' do
1556
- min_server_fcv '3.4'
1557
-
1558
- let!(:result) do
1559
- bulk_write.execute
1560
- end
1561
-
1562
- it 'applies the collation' do
1563
- expect(authorized_collection.find(name: 'pong').count).to eq(1)
1564
- end
1565
-
1566
- it 'reports the upserted id' do
1567
- expect(result.upserted_ids).to eq([])
1568
- end
1569
-
1570
- it 'reports the upserted count' do
1571
- expect(result.upserted_count).to eq(0)
1572
- end
1573
-
1574
- it 'reports the modified count' do
1575
- expect(result.modified_count).to eq(1)
1576
- end
1577
-
1578
- it 'reports the matched count' do
1579
- expect(result.matched_count).to eq(1)
1580
- end
1581
- end
1582
-
1583
- context 'when the server selected does not support collations' do
1584
- max_server_version '3.2'
1585
-
1586
- it 'raises an exception' do
1587
- expect {
1588
- bulk_write.execute
1589
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
1590
- end
1591
-
1592
- context 'when a String key is used' do
1593
-
1594
- let(:requests) do
1595
- [{ update_one: { filter: { name: 'BANG' },
1596
- update: { "$set" => { name: 'pong' }},
1597
- 'collation' => collation }}]
1598
- end
1599
-
1600
- it 'raises an exception' do
1601
- expect {
1602
- bulk_write.execute
1603
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
1604
- end
1605
- end
1606
- end
1607
- end
1608
-
1609
- context 'when the write does not have a collation specified' do
1610
-
1611
- before do
1612
- authorized_collection.insert_one(name: 'bang')
1613
- end
1614
-
1615
- let(:requests) do
1616
- [{ update_one: { filter: { name: 'BANG' }, update: { "$set" => { name: 'pong' }}}}]
1617
- end
1618
-
1619
- let!(:result) do
1620
- bulk_write.execute
1621
- end
1622
-
1623
- it 'does not apply the collation' do
1624
- expect(authorized_collection.find(name: 'pong').count).to eq(0)
1625
- end
1626
-
1627
- it 'reports the upserted id' do
1628
- expect(result.upserted_ids).to eq([])
1629
- end
1630
-
1631
- it 'reports the upserted count' do
1632
- expect(result.upserted_count).to eq(0)
1633
- end
1634
-
1635
- it 'reports the modified count' do
1636
- expect(result.modified_count).to eq(0)
1637
- end
1638
-
1639
- it 'reports the matched count' do
1640
- expect(result.matched_count).to eq(0)
1641
- end
1642
- end
1643
- end
1644
-
1645
- context 'when providing multiple update ones' do
1646
-
1647
- context 'when the write has a collation specified' do
1648
-
1649
- before do
1650
- authorized_collection.insert_one(name: 'bang')
1651
- authorized_collection.insert_one(name: 'doink')
1652
- end
1653
-
1654
- let(:requests) do
1655
- [{ update_one: { filter: { name: 'BANG' },
1656
- update: { "$set" => { name: 'pong' }},
1657
- collation: collation }},
1658
- { update_one: { filter: { name: 'DOINK' },
1659
- update: { "$set" => { name: 'pong' }},
1660
- collation: collation }}]
1661
- end
1662
-
1663
- context 'when the server selected supports collations' do
1664
- min_server_fcv '3.4'
1665
-
1666
- let!(:result) do
1667
- bulk_write.execute
1668
- end
1669
-
1670
- it 'applies the collation' do
1671
- expect(authorized_collection.find(name: 'pong').count).to eq(2)
1672
- end
1673
-
1674
- it 'reports the upserted id' do
1675
- expect(result.upserted_ids).to eq([])
1676
- end
1677
-
1678
- it 'reports the upserted count' do
1679
- expect(result.upserted_count).to eq(0)
1680
- end
1681
-
1682
- it 'reports the modified count' do
1683
- expect(result.modified_count).to eq(2)
1684
- end
1685
-
1686
- it 'reports the matched count' do
1687
- expect(result.matched_count).to eq(2)
1688
- end
1689
- end
1690
-
1691
- context 'when the server selected does not support collations' do
1692
- max_server_version '3.2'
1693
-
1694
- it 'raises an exception' do
1695
- expect {
1696
- bulk_write.execute
1697
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
1698
- end
1699
-
1700
- context 'when a String key is used' do
1701
-
1702
- let(:requests) do
1703
- [{ update_one: { filter: { name: 'BANG' },
1704
- update: { "$set" => { name: 'pong' }},
1705
- 'collation' => collation }},
1706
- { update_one: { filter: { name: 'DOINK' },
1707
- update: { "$set" => { name: 'pong' }},
1708
- 'collation' => collation }}]
1709
- end
1710
-
1711
- it 'raises an exception' do
1712
- expect {
1713
- bulk_write.execute
1714
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
1715
- end
1716
- end
1717
- end
1718
- end
1719
-
1720
- context 'when the write does not have a collation specified' do
1721
-
1722
- before do
1723
- authorized_collection.insert_one(name: 'bang')
1724
- authorized_collection.insert_one(name: 'doink')
1725
- end
1726
-
1727
- let(:requests) do
1728
- [{ update_one: { filter: { name: 'BANG' }, update: { "$set" => { name: 'pong' }}}},
1729
- { update_one: { filter: { name: 'DOINK' }, update: { "$set" => { name: 'pong' }}}}]
1730
- end
1731
-
1732
- let!(:result) do
1733
- bulk_write.execute
1734
- end
1735
-
1736
- it 'does not apply the collation' do
1737
- expect(authorized_collection.find(name: 'pong').count).to eq(0)
1738
- end
1739
-
1740
- it 'reports the upserted id' do
1741
- expect(result.upserted_ids).to eq([])
1742
- end
1743
-
1744
- it 'reports the upserted count' do
1745
- expect(result.upserted_count).to eq(0)
1746
- end
1747
-
1748
- it 'reports the modified count' do
1749
- expect(result.modified_count).to eq(0)
1750
- end
1751
-
1752
- it 'reports the matched count' do
1753
- expect(result.matched_count).to eq(0)
1754
- end
1755
- end
1756
-
1757
- context 'when upsert is false' do
1758
-
1759
- let(:requests) do
1760
- [{ update_one: { filter: { _id: 0 }, update: { "$set" => { name: 'test' }}}},
1761
- { update_one: { filter: { _id: 1 }, update: { "$set" => { name: 'test' }}}}]
1762
- end
1763
-
1764
- let(:result) do
1765
- bulk_write.execute
1766
- end
1767
-
1768
- before do
1769
- authorized_collection.insert_many([{ _id: 0 }, { _id: 1 }])
1770
- end
1771
-
1772
- it 'updates the document' do
1773
- result
1774
- expect(authorized_collection.find(name: 'test').count).to eq(2)
1775
- end
1776
-
1777
- it 'reports the upserted id' do
1778
- expect(result.upserted_ids).to eq([])
1779
- end
1780
-
1781
- it 'reports the upserted count' do
1782
- expect(result.upserted_count).to eq(0)
1783
- end
1784
-
1785
- it 'reports the modified count' do
1786
- expect(result.modified_count).to eq(2)
1787
- end
1788
-
1789
- it 'reports the matched count' do
1790
- expect(result.matched_count).to eq(2)
1791
- end
1792
-
1793
- context 'when there is a mix of updates and matched without an update' do
1794
-
1795
- let(:requests) do
1796
- [{ update_one: { filter: { a: 0 }, update: { "$set" => { a: 1 }}}},
1797
- { update_one: { filter: { a: 2 }, update: { "$set" => { a: 2 }}}}]
1798
- end
1799
-
1800
- let(:result) do
1801
- bulk_write.execute
1802
- end
1803
-
1804
- before do
1805
- authorized_collection.insert_many([{ a: 0 }, { a: 2 }])
1806
- end
1807
-
1808
- it 'updates the document' do
1809
- result
1810
- expect(authorized_collection.find(a: { '$lt' => 3 }).count).to eq(2)
1811
- end
1812
-
1813
- it 'reports the upserted id' do
1814
- expect(result.upserted_ids).to eq([])
1815
- end
1816
-
1817
- it 'reports the upserted count' do
1818
- expect(result.upserted_count).to eq(0)
1819
- end
1820
-
1821
- it 'reports the modified count' do
1822
- expect(result.modified_count).to eq(1)
1823
- end
1824
-
1825
- it 'reports the matched count' do
1826
- expect(result.matched_count).to eq(2)
1827
- end
1828
- end
1829
-
1830
- context 'when there is a write concern error' do
1831
-
1832
- it_behaves_like 'bulk write with write concern yielding operation failure'
1833
- end
1834
- end
1835
-
1836
- context 'when upsert is true' do
1837
-
1838
- let(:requests) do
1839
- [{ update_one: { filter: { _id: 0 }, update: { "$set" => { name: 'test' }}, upsert: true }},
1840
- { update_one: { filter: { _id: 1 }, update: { "$set" => { name: 'test1' }}, upsert: true }}]
1841
- end
1842
-
1843
- let(:result) do
1844
- bulk_write.execute
1845
- end
1846
-
1847
- it 'updates the document' do
1848
- expect(result.modified_count).to eq(0)
1849
- expect(authorized_collection.find(name: { '$in' => ['test', 'test1'] }).count).to eq(2)
1850
- end
1851
-
1852
- it 'reports the upserted count' do
1853
- expect(result.upserted_count).to eq(2)
1854
- end
1855
-
1856
- it 'reports the modified count' do
1857
- expect(result.modified_count).to eq(0)
1858
- end
1859
-
1860
- it 'reports the matched count' do
1861
- expect(result.matched_count).to eq(0)
1862
- end
1863
-
1864
- it 'reports the upserted id' do
1865
- expect(result.upserted_ids).to eq([0, 1])
1866
- end
1867
-
1868
- context 'when there is a mix of updates, upsert, and matched without an update' do
1869
-
1870
- let(:requests) do
1871
- [{ update_one: { filter: { a: 0 }, update: { "$set" => { a: 1 }}}},
1872
- { update_one: { filter: { a: 2 }, update: { "$set" => { a: 2 }}}},
1873
- { update_one: { filter: { _id: 3 }, update: { "$set" => { a: 4 }}, upsert: true }}]
1874
- end
1875
-
1876
- let(:result) do
1877
- bulk_write.execute
1878
- end
1879
-
1880
- before do
1881
- authorized_collection.insert_many([{ a: 0 }, { a: 2 }])
1882
- end
1883
-
1884
- it 'updates the documents' do
1885
- result
1886
- expect(authorized_collection.find(a: { '$lt' => 3 }).count).to eq(2)
1887
- expect(authorized_collection.find(a: 4).count).to eq(1)
1888
- end
1889
-
1890
- it 'reports the upserted id' do
1891
- expect(result.upserted_ids).to eq([3])
1892
- end
1893
-
1894
- it 'reports the upserted count' do
1895
- expect(result.upserted_count).to eq(1)
1896
- end
1897
-
1898
- it 'reports the modified count' do
1899
- expect(result.modified_count).to eq(1)
1900
- end
1901
-
1902
- it 'reports the matched count' do
1903
- expect(result.matched_count).to eq(2)
1904
- end
1905
- end
1906
-
1907
- context 'when there is a write concern error' do
1908
-
1909
- it_behaves_like 'bulk write with write concern yielding operation failure'
1910
- end
1911
- end
1912
- end
1913
-
1914
- context 'when providing a single update many' do
1915
-
1916
- context 'when the write has a collation specified' do
1917
-
1918
- before do
1919
- authorized_collection.insert_one(name: 'bang')
1920
- authorized_collection.insert_one(name: 'bang')
1921
- end
1922
-
1923
- let(:requests) do
1924
- [{ update_many: { filter: { name: 'BANG' },
1925
- update: { "$set" => { name: 'pong' }},
1926
- collation: collation }}]
1927
- end
1928
-
1929
- context 'when the server selected supports collations' do
1930
- min_server_fcv '3.4'
1931
-
1932
- let!(:result) do
1933
- bulk_write.execute
1934
- end
1935
-
1936
- it 'applies the collation' do
1937
- expect(authorized_collection.find(name: 'pong').count).to eq(2)
1938
- end
1939
-
1940
- it 'reports the upserted id' do
1941
- expect(result.upserted_ids).to eq([])
1942
- end
1943
-
1944
- it 'reports the upserted count' do
1945
- expect(result.upserted_count).to eq(0)
1946
- end
1947
-
1948
- it 'reports the modified count' do
1949
- expect(result.modified_count).to eq(2)
1950
- end
1951
-
1952
- it 'reports the matched count' do
1953
- expect(result.matched_count).to eq(2)
1954
- end
1955
- end
1956
-
1957
- context 'when the server selected does not support collations' do
1958
- max_server_version '3.2'
1959
-
1960
- it 'raises an exception' do
1961
- expect {
1962
- bulk_write.execute
1963
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
1964
- end
1965
-
1966
- context 'when a String key is used' do
1967
-
1968
- let(:requests) do
1969
- [{ update_many: { filter: { name: 'BANG' },
1970
- update: { "$set" => { name: 'pong' }},
1971
- 'collation' => collation }}]
1972
- end
1973
-
1974
- it 'raises an exception' do
1975
- expect {
1976
- bulk_write.execute
1977
- }.to raise_exception(Mongo::Error::UnsupportedCollation)
1978
- end
1979
- end
1980
- end
1981
- end
1982
-
1983
- context 'when the write does not have a collation specified' do
1984
-
1985
- before do
1986
- authorized_collection.insert_one(name: 'bang')
1987
- authorized_collection.insert_one(name: 'bang')
1988
- end
1989
-
1990
- let(:requests) do
1991
- [{ update_many: { filter: { name: 'BANG' }, update: { "$set" => { name: 'pong' }}}}]
1992
- end
1993
-
1994
- let!(:result) do
1995
- bulk_write.execute
1996
- end
1997
-
1998
- it 'does not apply the collation' do
1999
- expect(authorized_collection.find(name: 'pong').count).to eq(0)
2000
- end
2001
-
2002
- it 'reports the upserted id' do
2003
- expect(result.upserted_ids).to eq([])
2004
- end
2005
-
2006
- it 'reports the upserted count' do
2007
- expect(result.upserted_count).to eq(0)
2008
- end
2009
-
2010
- it 'reports the modified count' do
2011
- expect(result.modified_count).to eq(0)
2012
- end
2013
-
2014
- it 'reports the matched count' do
2015
- expect(result.matched_count).to be(0)
2016
- end
2017
- end
2018
-
2019
- context 'when upsert is false' do
2020
-
2021
- let(:requests) do
2022
- [{ update_many: { filter: { a: 0 }, update: { "$set" => { name: 'test' }}}}]
2023
- end
2024
-
2025
- let(:result) do
2026
- bulk_write.execute
2027
- end
2028
-
2029
- before do
2030
- authorized_collection.insert_many([{ a: 0 }, { a: 0 }])
2031
- end
2032
-
2033
- it 'updates the documents' do
2034
- expect(authorized_collection.find(a: 0).count).to eq(2)
2035
- end
2036
-
2037
- it 'reports the upserted ids' do
2038
- expect(result.upserted_ids).to eq([])
2039
- end
2040
-
2041
- it 'reports the upserted count' do
2042
- expect(result.upserted_count).to eq(0)
2043
- end
2044
-
2045
- it 'reports the modified count' do
2046
- expect(result.modified_count).to eq(2)
2047
- end
2048
-
2049
- it 'reports the matched count' do
2050
- expect(result.matched_count).to eq(2)
2051
- end
2052
-
2053
- context 'when there is a write concern error' do
2054
-
2055
- it_behaves_like 'bulk write with write concern yielding operation failure'
2056
- end
2057
- end
2058
-
2059
- context 'when upsert is true' do
2060
-
2061
- let(:requests) do
2062
- [{ update_many: { filter: { _id: 0 }, update: { "$set" => { name: 'test' }}, upsert: true }}]
2063
- end
2064
-
2065
- let(:result) do
2066
- bulk_write.execute
2067
- end
2068
-
2069
- it 'updates the document' do
2070
- result
2071
- expect(authorized_collection.find(name: 'test').count).to eq(1)
2072
- end
2073
-
2074
- it 'reports the upserted count' do
2075
- expect(result.upserted_count).to eq(1)
2076
- end
2077
-
2078
- it 'reports the matched count' do
2079
- expect(result.matched_count).to eq(0)
2080
- end
2081
-
2082
- it 'reports the modified count' do
2083
- expect(result.modified_count).to eq(0)
2084
- end
2085
-
2086
- it 'reports the upserted id' do
2087
- expect(result.upserted_ids).to eq([0])
2088
- end
2089
-
2090
- context 'when there is a write concern error' do
2091
-
2092
- it_behaves_like 'bulk write with write concern yielding operation failure'
2093
- end
2094
- end
2095
- end
2096
- end
2097
-
2098
- context 'when the operations need to be split' do
2099
- # Test uses doubles for server descriptions, doubles are
2100
- # incompatible with freezing which linting does for descriptions
2101
- require_no_linting
2102
-
2103
- let(:batch_size) do
2104
- 11
2105
- end
2106
-
2107
- let(:connection) do
2108
- server = client.cluster.next_primary
2109
- end
2110
-
2111
- before do
2112
- allow_any_instance_of(Mongo::Server::Description).to \
2113
- receive(:max_write_batch_size).and_return(batch_size - 1)
2114
- end
2115
-
2116
- context 'when a write error occurs' do
2117
-
2118
- let(:requests) do
2119
- batch_size.times.map do |i|
2120
- { insert_one: { _id: i }}
2121
- end
2122
- end
2123
-
2124
- let(:error) do
2125
- begin
2126
- bulk_write.execute
2127
- rescue => e
2128
- e
2129
- end
2130
- end
2131
-
2132
- it 'raises an exception' do
2133
- expect {
2134
- requests.push({ insert_one: { _id: 5 }})
2135
- bulk_write.execute
2136
- }.to raise_error(Mongo::Error::BulkWriteError)
2137
- end
2138
-
2139
- it 'sets the document index on the error' do
2140
- requests.push({ insert_one: { _id: 5 }})
2141
- expect(error.result['writeErrors'].first['index']).to eq(batch_size)
2142
- end
2143
- end
2144
-
2145
- context 'when no write errors occur' do
2146
-
2147
- let(:requests) do
2148
- batch_size.times.map do |i|
2149
- { insert_one: { _id: i }}
2150
- end
2151
- end
2152
-
2153
- let(:result) do
2154
- bulk_write.execute
2155
- end
2156
-
2157
- it 'inserts the documents' do
2158
- expect(result.inserted_count).to eq(batch_size)
2159
- end
2160
-
2161
- it 'combines the inserted ids' do
2162
- expect(result.inserted_ids.size).to eq(batch_size)
2163
- end
2164
-
2165
- context 'when a session is provided' do
2166
-
2167
- let(:operation) do
2168
- result
2169
- end
2170
-
2171
- let(:client) do
2172
- authorized_client
2173
- end
2174
-
2175
- let(:extra_options) do
2176
- { session: session }
2177
- end
2178
-
2179
- it_behaves_like 'an operation using a session'
2180
- end
2181
-
2182
- context 'when retryable writes are supported' do
2183
- require_wired_tiger
2184
- min_server_fcv '3.6'
2185
- require_topology :replica_set, :sharded
2186
-
2187
- # In a multi-shard cluster, retries may go to a different server
2188
- # than original command which these tests are not prepared to handle
2189
- require_no_multi_mongos
2190
-
2191
-
2192
- let(:subscriber) { Mrss::EventSubscriber.new }
2193
-
2194
- let(:client) do
2195
- authorized_client_with_retry_writes.tap do |client|
2196
- # We do not unsubscribe any of these subscribers.
2197
- # This is harmless since they simply store the events in themselves.
2198
- client.subscribe(Mongo::Monitoring::COMMAND, subscriber)
2199
- end
2200
- end
2201
-
2202
- let(:collection) do
2203
- client[authorized_collection.name]
2204
- end
2205
-
2206
- let!(:result) do
2207
- bulk_write.execute
2208
- end
2209
-
2210
- let(:started_events) do
2211
- subscriber.started_events.select do |event|
2212
- event.command['insert']
2213
- end
2214
- end
2215
-
2216
- let(:first_txn_number) do
2217
- Utils.int64_value(started_events[-2].command['txnNumber'])
2218
- end
2219
-
2220
- let(:second_txn_number) do
2221
- Utils.int64_value(started_events[-1].command['txnNumber'])
2222
- end
2223
-
2224
- it 'inserts the documents' do
2225
- expect(result.inserted_count).to eq(batch_size)
2226
- end
2227
-
2228
- it 'combines the inserted ids' do
2229
- expect(result.inserted_ids.size).to eq(batch_size)
2230
- end
2231
-
2232
- it 'publishes the expected number of events' do
2233
- expect(started_events.length).to eq 2
2234
- end
2235
-
2236
- it 'increments the transaction number' do
2237
- expect(second_txn_number). to eq(first_txn_number + 1)
2238
- end
2239
- end
2240
- end
2241
- end
2242
-
2243
- context 'when an operation exceeds the max bson size' do
2244
-
2245
- let(:requests) do
2246
- 5.times.map do |i|
2247
- { insert_one: { _id: i, x: 'y' * 4000000 }}
2248
- end
2249
- end
2250
-
2251
- let(:result) do
2252
- bulk_write.execute
2253
- end
2254
-
2255
- it 'inserts the documents' do
2256
- expect(result.inserted_count).to eq(5)
2257
- end
2258
-
2259
- context 'when a session is provided' do
2260
-
2261
- let(:operation) do
2262
- result
2263
- end
2264
-
2265
- let(:client) do
2266
- authorized_client
2267
- end
2268
-
2269
- let(:extra_options) do
2270
- { session: session }
2271
- end
2272
-
2273
- it_behaves_like 'an operation using a session'
2274
- end
2275
- end
2276
- end
2277
-
2278
- context 'when the bulk write is unordered' do
2279
-
2280
- let(:bulk_write) do
2281
- described_class.new(collection, requests, options)
2282
- end
2283
-
2284
- let(:options) do
2285
- { ordered: false }.merge(extra_options)
2286
- end
2287
-
2288
- let(:extra_options) do
2289
- {}
2290
- end
2291
-
2292
- let(:bulk_write_invalid_write_concern) do
2293
- described_class.new(collection_invalid_write_concern, requests, options)
2294
- end
2295
-
2296
- it_behaves_like 'an executable bulk write'
2297
- end
2298
-
2299
- context 'when the bulk write is ordered' do
2300
-
2301
- let(:bulk_write) do
2302
- described_class.new(collection, requests, options)
2303
- end
2304
-
2305
- let(:options) do
2306
- { ordered: true }.merge(extra_options)
2307
- end
2308
-
2309
- let(:extra_options) do
2310
- {}
2311
- end
2312
-
2313
- let(:bulk_write_invalid_write_concern) do
2314
- described_class.new(collection_invalid_write_concern, requests, options)
2315
- end
2316
-
2317
- it_behaves_like 'an executable bulk write'
2318
- end
2319
- end
2320
-
2321
- describe '#initialize' do
2322
-
2323
- let(:requests) do
2324
- [{ insert_one: { _id: 0 }}]
2325
- end
2326
-
2327
- shared_examples_for 'a bulk write initializer' do
2328
-
2329
- it 'sets the collection' do
2330
- expect(bulk_write.collection).to eq(authorized_collection)
2331
- end
2332
-
2333
- it 'sets the requests' do
2334
- expect(bulk_write.requests).to eq(requests)
2335
- end
2336
- end
2337
-
2338
- context 'when no options are provided' do
2339
-
2340
- let(:bulk_write) do
2341
- described_class.new(authorized_collection, requests)
2342
- end
2343
-
2344
- it 'sets empty options' do
2345
- expect(bulk_write.options).to be_empty
2346
- end
2347
-
2348
- it_behaves_like 'a bulk write initializer'
2349
- end
2350
-
2351
- context 'when options are provided' do
2352
-
2353
- let(:bulk_write) do
2354
- described_class.new(authorized_collection, requests, ordered: true)
2355
- end
2356
-
2357
- it 'sets the options' do
2358
- expect(bulk_write.options).to eq(ordered: true)
2359
- end
2360
- end
2361
-
2362
- context 'when nil options are provided' do
2363
-
2364
- let(:bulk_write) do
2365
- described_class.new(authorized_collection, requests, nil)
2366
- end
2367
-
2368
- it 'sets empty options' do
2369
- expect(bulk_write.options).to be_empty
2370
- end
2371
- end
2372
- end
2373
-
2374
- describe '#ordered?' do
2375
-
2376
- context 'when no option provided' do
2377
-
2378
- let(:bulk_write) do
2379
- described_class.new(authorized_collection, [])
2380
- end
2381
-
2382
- it 'returns true' do
2383
- expect(bulk_write).to be_ordered
2384
- end
2385
- end
2386
-
2387
- context 'when the option is provided' do
2388
-
2389
- context 'when the option is true' do
2390
-
2391
- let(:options) do
2392
- { ordered: true }
2393
- end
2394
-
2395
- let(:bulk_write) do
2396
- described_class.new(authorized_collection, [], options)
2397
- end
2398
-
2399
- it 'returns true' do
2400
- expect(bulk_write).to be_ordered
2401
- end
2402
- end
2403
-
2404
- context 'when the option is false' do
2405
-
2406
- let(:options) do
2407
- { ordered: false }
2408
- end
2409
-
2410
- let(:bulk_write) do
2411
- described_class.new(authorized_collection, [], options)
2412
- end
2413
-
2414
- it 'returns false' do
2415
- expect(bulk_write).to_not be_ordered
2416
- end
2417
- end
2418
- end
2419
- end
2420
-
2421
- describe 'when the collection has a validator' do
2422
- min_server_fcv '3.2'
2423
-
2424
- let(:collection_with_validator) do
2425
- authorized_client[:validating,
2426
- :validator => { :a => { '$exists' => true } }].tap do |c|
2427
- c.create
2428
- end
2429
- end
2430
-
2431
- before do
2432
- begin; authorized_client[:validating].drop; rescue; end
2433
- collection_with_validator.delete_many
2434
- collection_with_validator.insert_many([{ :a => 1 }, { :a => 2 }])
2435
- end
2436
-
2437
- context 'when the documents are invalid' do
2438
-
2439
- let(:ops) do
2440
- [
2441
- { insert_one: { :x => 1 } },
2442
- { update_one: { filter: { :a => 1 },
2443
- update: { '$unset' => { :a => '' } } } },
2444
- { replace_one: { filter: { :a => 2 },
2445
- replacement: { :x => 2 } } }
2446
- ]
2447
- end
2448
-
2449
- context 'when bypass_document_validation is not set' do
2450
-
2451
- let(:result) do
2452
- collection_with_validator.bulk_write(ops)
2453
- end
2454
-
2455
- it 'raises BulkWriteError' do
2456
- expect {
2457
- result
2458
- }.to raise_exception(Mongo::Error::BulkWriteError)
2459
- end
2460
- end
2461
-
2462
- context 'when bypass_document_validation is true' do
2463
-
2464
- let(:result2) do
2465
- collection_with_validator.bulk_write(
2466
- ops, :bypass_document_validation => true)
2467
- end
2468
-
2469
- it 'executes successfully' do
2470
- expect(result2.modified_count).to eq(2)
2471
- expect(result2.inserted_count).to eq(1)
2472
- end
2473
- end
2474
- end
2475
- end
2476
-
2477
- describe "#acknowledged?" do
2478
- let(:requests) { [ { insert_one: { x: 1 } } ] }
2479
- let(:options) { {} }
2480
- let(:bulk_write) do
2481
- described_class.new(
2482
- collection,
2483
- requests,
2484
- options
2485
- )
2486
- end
2487
- let(:result) { bulk_write.execute }
2488
-
2489
- context "when using unacknowledged writes with one request" do
2490
- let(:options) { { write_concern: { w: 0 } } }
2491
-
2492
- it 'acknowledged? returns false' do
2493
- expect(result.acknowledged?).to be false
2494
- end
2495
- end
2496
-
2497
- context "when using unacknowledged writes with multiple requests" do
2498
- let(:options) { { write_concern: { w: 0 } } }
2499
- let(:requests) { [ { insert_one: { x: 1 } }, { insert_one: { x: 1 } } ] }
2500
-
2501
- it 'acknowledged? returns false' do
2502
- expect(result.acknowledged?).to be false
2503
- end
2504
- end
2505
-
2506
- context "when not using unacknowledged writes" do
2507
- let(:options) { { write_concern: { w: 1 } } }
2508
-
2509
- it 'acknowledged? returns true' do
2510
- expect(result.acknowledged?).to be true
2511
- end
2512
- end
2513
- end
2514
- end