mongo 2.16.4 → 2.20.0

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 (1612) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +33 -39
  4. data/Rakefile +31 -157
  5. data/bin/mongo_console +2 -0
  6. data/lib/mongo/active_support.rb +1 -1
  7. data/lib/mongo/address/ipv4.rb +1 -1
  8. data/lib/mongo/address/ipv6.rb +1 -1
  9. data/lib/mongo/address/unix.rb +1 -1
  10. data/lib/mongo/address/validator.rb +1 -1
  11. data/lib/mongo/address.rb +1 -1
  12. data/lib/mongo/auth/aws/conversation.rb +1 -5
  13. data/lib/mongo/{operation/get_more/command.rb → auth/aws/credentials.rb} +15 -20
  14. data/lib/mongo/auth/aws/credentials_cache.rb +75 -0
  15. data/lib/mongo/auth/aws/credentials_retriever.rb +172 -37
  16. data/lib/mongo/auth/aws/request.rb +1 -3
  17. data/lib/mongo/auth/aws.rb +6 -6
  18. data/lib/mongo/auth/base.rb +9 -2
  19. data/lib/mongo/auth/conversation_base.rb +1 -1
  20. data/lib/mongo/auth/cr/conversation.rb +1 -1
  21. data/lib/mongo/auth/cr.rb +1 -1
  22. data/lib/mongo/auth/credential_cache.rb +1 -1
  23. data/lib/mongo/auth/gssapi/conversation.rb +1 -1
  24. data/lib/mongo/auth/gssapi.rb +1 -1
  25. data/lib/mongo/auth/ldap/conversation.rb +1 -1
  26. data/lib/mongo/auth/ldap.rb +1 -1
  27. data/lib/mongo/auth/roles.rb +17 -17
  28. data/lib/mongo/auth/sasl_conversation_base.rb +1 -1
  29. data/lib/mongo/auth/scram/conversation.rb +1 -1
  30. data/lib/mongo/auth/scram.rb +1 -1
  31. data/lib/mongo/auth/scram256/conversation.rb +1 -1
  32. data/lib/mongo/auth/scram256.rb +1 -1
  33. data/lib/mongo/auth/scram_conversation_base.rb +1 -1
  34. data/lib/mongo/auth/stringprep/profiles/sasl.rb +1 -1
  35. data/lib/mongo/auth/stringprep/tables.rb +1 -1
  36. data/lib/mongo/auth/stringprep/unicode_normalize/normalize.rb +1 -1
  37. data/lib/mongo/auth/stringprep/unicode_normalize/tables.rb +2 -1
  38. data/lib/mongo/auth/stringprep.rb +1 -1
  39. data/lib/mongo/auth/user/view.rb +1 -1
  40. data/lib/mongo/auth/user.rb +1 -1
  41. data/lib/mongo/auth/x509/conversation.rb +1 -1
  42. data/lib/mongo/auth/x509.rb +1 -1
  43. data/lib/mongo/auth.rb +13 -2
  44. data/lib/mongo/background_thread.rb +1 -1
  45. data/lib/mongo/bson.rb +1 -1
  46. data/lib/mongo/bulk_write/combineable.rb +1 -1
  47. data/lib/mongo/bulk_write/ordered_combiner.rb +1 -1
  48. data/lib/mongo/bulk_write/result.rb +11 -2
  49. data/lib/mongo/bulk_write/result_combiner.rb +3 -5
  50. data/lib/mongo/bulk_write/transformable.rb +1 -1
  51. data/lib/mongo/bulk_write/unordered_combiner.rb +1 -1
  52. data/lib/mongo/bulk_write/validatable.rb +1 -1
  53. data/lib/mongo/bulk_write.rb +118 -30
  54. data/lib/mongo/caching_cursor.rb +1 -1
  55. data/lib/mongo/client.rb +190 -22
  56. data/lib/mongo/client_encryption.rb +215 -11
  57. data/lib/mongo/cluster/periodic_executor.rb +1 -1
  58. data/lib/mongo/cluster/reapers/cursor_reaper.rb +34 -16
  59. data/lib/mongo/cluster/reapers/socket_reaper.rb +2 -2
  60. data/lib/mongo/cluster/sdam_flow.rb +42 -15
  61. data/lib/mongo/cluster/topology/base.rb +17 -1
  62. data/lib/mongo/cluster/topology/load_balanced.rb +1 -1
  63. data/lib/mongo/cluster/topology/no_replica_set_options.rb +1 -1
  64. data/lib/mongo/cluster/topology/replica_set_no_primary.rb +1 -1
  65. data/lib/mongo/cluster/topology/replica_set_with_primary.rb +1 -1
  66. data/lib/mongo/cluster/topology/sharded.rb +1 -1
  67. data/lib/mongo/cluster/topology/single.rb +1 -1
  68. data/lib/mongo/cluster/topology/unknown.rb +1 -1
  69. data/lib/mongo/cluster/topology.rb +1 -1
  70. data/lib/mongo/cluster.rb +82 -41
  71. data/lib/mongo/cluster_time.rb +1 -1
  72. data/lib/mongo/collection/helpers.rb +43 -0
  73. data/lib/mongo/collection/queryable_encryption.rb +162 -0
  74. data/lib/mongo/collection/view/aggregation.rb +68 -17
  75. data/lib/mongo/collection/view/builder/aggregation.rb +12 -14
  76. data/lib/mongo/collection/view/builder/map_reduce.rb +2 -2
  77. data/lib/mongo/collection/view/builder.rb +1 -1
  78. data/lib/mongo/collection/view/change_stream/retryable.rb +1 -1
  79. data/lib/mongo/collection/view/change_stream.rb +69 -23
  80. data/lib/mongo/collection/view/explainable.rb +2 -2
  81. data/lib/mongo/collection/view/immutable.rb +1 -1
  82. data/lib/mongo/collection/view/iterable.rb +6 -6
  83. data/lib/mongo/collection/view/map_reduce.rb +21 -10
  84. data/lib/mongo/collection/view/readable.rb +54 -28
  85. data/lib/mongo/collection/view/writable.rb +153 -39
  86. data/lib/mongo/collection/view.rb +1 -1
  87. data/lib/mongo/collection.rb +332 -98
  88. data/lib/mongo/condition_variable.rb +58 -0
  89. data/lib/mongo/config/options.rb +63 -0
  90. data/lib/mongo/config/validators/option.rb +27 -0
  91. data/lib/mongo/config.rb +43 -0
  92. data/lib/mongo/crypt/auto_decryption_context.rb +1 -1
  93. data/lib/mongo/crypt/auto_encrypter.rb +140 -16
  94. data/lib/mongo/crypt/auto_encryption_context.rb +1 -1
  95. data/lib/mongo/crypt/binary.rb +1 -1
  96. data/lib/mongo/crypt/binding.rb +715 -152
  97. data/lib/mongo/crypt/context.rb +72 -6
  98. data/lib/mongo/crypt/data_key_context.rb +13 -105
  99. data/lib/mongo/crypt/encryption_io.rb +95 -61
  100. data/lib/mongo/crypt/explicit_decryption_context.rb +1 -1
  101. data/lib/mongo/crypt/explicit_encrypter.rb +233 -30
  102. data/lib/mongo/crypt/explicit_encryption_context.rb +76 -22
  103. data/lib/mongo/{operation/drop/command.rb → crypt/explicit_encryption_expression_context.rb} +9 -20
  104. data/lib/mongo/crypt/handle.rb +169 -87
  105. data/lib/mongo/crypt/hooks.rb +26 -3
  106. data/lib/mongo/crypt/kms/aws/credentials.rb +83 -0
  107. data/lib/mongo/crypt/kms/aws/master_document.rb +78 -0
  108. data/lib/mongo/crypt/kms/aws.rb +20 -0
  109. data/lib/mongo/crypt/kms/azure/access_token.rb +54 -0
  110. data/lib/mongo/crypt/kms/azure/credentials.rb +103 -0
  111. data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +122 -0
  112. data/lib/mongo/crypt/kms/azure/master_document.rb +79 -0
  113. data/lib/mongo/crypt/kms/azure.rb +21 -0
  114. data/lib/mongo/crypt/kms/credentials.rb +96 -0
  115. data/lib/mongo/crypt/kms/gcp/credentials.rb +127 -0
  116. data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +58 -0
  117. data/lib/mongo/crypt/kms/gcp/master_document.rb +99 -0
  118. data/lib/mongo/crypt/kms/gcp.rb +21 -0
  119. data/lib/mongo/crypt/kms/kmip/credentials.rb +68 -0
  120. data/lib/mongo/crypt/kms/kmip/master_document.rb +74 -0
  121. data/lib/mongo/crypt/kms/kmip.rb +19 -0
  122. data/lib/mongo/crypt/kms/local/credentials.rb +65 -0
  123. data/lib/mongo/crypt/kms/local/master_document.rb +43 -0
  124. data/lib/mongo/crypt/kms/local.rb +19 -0
  125. data/lib/mongo/crypt/kms/master_key_document.rb +65 -0
  126. data/lib/mongo/crypt/kms.rb +122 -0
  127. data/lib/mongo/crypt/kms_context.rb +1 -1
  128. data/lib/mongo/crypt/rewrap_many_data_key_context.rb +46 -0
  129. data/lib/mongo/crypt/rewrap_many_data_key_result.rb +37 -0
  130. data/lib/mongo/crypt/status.rb +9 -3
  131. data/lib/mongo/crypt.rb +16 -1
  132. data/lib/mongo/cursor/kill_spec.rb +42 -4
  133. data/lib/mongo/cursor.rb +68 -19
  134. data/lib/mongo/database/view.rb +51 -9
  135. data/lib/mongo/database.rb +65 -21
  136. data/lib/mongo/dbref.rb +2 -106
  137. data/lib/mongo/distinguishing_semaphore.rb +2 -2
  138. data/lib/mongo/error/auth_error.rb +1 -1
  139. data/lib/mongo/error/bad_load_balancer_target.rb +1 -1
  140. data/lib/mongo/error/bulk_write_error.rb +32 -5
  141. data/lib/mongo/error/change_stream_resumable.rb +1 -1
  142. data/lib/mongo/error/client_closed.rb +24 -0
  143. data/lib/mongo/error/closed_stream.rb +1 -1
  144. data/lib/mongo/error/connection_check_out_timeout.rb +1 -1
  145. data/lib/mongo/error/connection_perished.rb +3 -1
  146. data/lib/mongo/error/connection_unavailable.rb +27 -0
  147. data/lib/mongo/error/credential_check_error.rb +1 -1
  148. data/lib/mongo/error/crypt_error.rb +1 -1
  149. data/lib/mongo/error/extra_file_chunk.rb +1 -1
  150. data/lib/mongo/error/failed_string_prep_validation.rb +1 -1
  151. data/lib/mongo/error/file_not_found.rb +1 -1
  152. data/lib/mongo/error/handshake_error.rb +1 -1
  153. data/lib/mongo/error/insufficient_iteration_count.rb +1 -1
  154. data/lib/mongo/error/internal_driver_error.rb +1 -1
  155. data/lib/mongo/error/invalid_address.rb +1 -1
  156. data/lib/mongo/error/invalid_application_name.rb +1 -1
  157. data/lib/mongo/error/invalid_bulk_operation.rb +1 -1
  158. data/lib/mongo/error/invalid_bulk_operation_type.rb +1 -1
  159. data/lib/mongo/error/invalid_collection_name.rb +1 -1
  160. data/lib/mongo/error/invalid_config_option.rb +21 -0
  161. data/lib/mongo/error/invalid_cursor_operation.rb +1 -1
  162. data/lib/mongo/error/invalid_database_name.rb +1 -1
  163. data/lib/mongo/error/invalid_document.rb +1 -1
  164. data/lib/mongo/error/invalid_file.rb +1 -1
  165. data/lib/mongo/error/invalid_file_revision.rb +1 -1
  166. data/lib/mongo/error/invalid_max_connecting.rb +28 -0
  167. data/lib/mongo/error/invalid_min_pool_size.rb +1 -1
  168. data/lib/mongo/error/invalid_nonce.rb +1 -1
  169. data/lib/mongo/error/invalid_read_concern.rb +1 -1
  170. data/lib/mongo/error/invalid_read_option.rb +2 -2
  171. data/lib/mongo/error/invalid_replacement_document.rb +28 -10
  172. data/lib/mongo/error/invalid_server_auth_host.rb +1 -1
  173. data/lib/mongo/error/invalid_server_auth_response.rb +1 -1
  174. data/lib/mongo/error/invalid_server_preference.rb +1 -1
  175. data/lib/mongo/error/invalid_session.rb +1 -1
  176. data/lib/mongo/error/invalid_signature.rb +1 -1
  177. data/lib/mongo/error/invalid_transaction_operation.rb +1 -1
  178. data/lib/mongo/error/invalid_txt_record.rb +1 -1
  179. data/lib/mongo/error/invalid_update_document.rb +28 -8
  180. data/lib/mongo/error/invalid_uri.rb +1 -1
  181. data/lib/mongo/error/invalid_write_concern.rb +1 -1
  182. data/lib/mongo/error/kms_error.rb +1 -1
  183. data/lib/mongo/error/labelable.rb +72 -0
  184. data/lib/mongo/error/lint_error.rb +1 -1
  185. data/lib/mongo/error/max_bson_size.rb +1 -1
  186. data/lib/mongo/error/max_message_size.rb +1 -1
  187. data/lib/mongo/error/mismatched_domain.rb +1 -1
  188. data/lib/mongo/error/missing_connection.rb +27 -0
  189. data/lib/mongo/error/missing_file_chunk.rb +9 -3
  190. data/lib/mongo/error/missing_password.rb +1 -1
  191. data/lib/mongo/error/missing_resume_token.rb +1 -1
  192. data/lib/mongo/error/missing_scram_server_signature.rb +1 -1
  193. data/lib/mongo/error/missing_service_id.rb +1 -1
  194. data/lib/mongo/error/mongocryptd_spawn_error.rb +1 -1
  195. data/lib/mongo/error/multi_index_drop.rb +1 -1
  196. data/lib/mongo/error/need_primary_server.rb +1 -1
  197. data/lib/mongo/error/no_server_available.rb +1 -1
  198. data/lib/mongo/error/no_service_connection_available.rb +1 -1
  199. data/lib/mongo/error/no_srv_records.rb +1 -1
  200. data/lib/mongo/error/notable.rb +15 -1
  201. data/lib/mongo/error/operation_failure.rb +35 -87
  202. data/lib/mongo/error/parser.rb +1 -1
  203. data/lib/mongo/{operation/create_user/command.rb → error/pool_cleared_error.rb} +17 -23
  204. data/lib/mongo/error/pool_closed_error.rb +4 -17
  205. data/lib/mongo/{operation/update_user/command.rb → error/pool_error.rb} +21 -21
  206. data/lib/mongo/{operation/drop_index/command.rb → error/pool_paused_error.rb} +17 -22
  207. data/lib/mongo/error/raise_original_error.rb +1 -1
  208. data/lib/mongo/error/read_write_retryable.rb +108 -0
  209. data/lib/mongo/error/sdam_error_detection.rb +1 -1
  210. data/lib/mongo/error/server_api_conflict.rb +1 -1
  211. data/lib/mongo/error/server_api_not_supported.rb +1 -1
  212. data/lib/mongo/error/server_certificate_revoked.rb +1 -1
  213. data/lib/mongo/{operation/get_more/legacy.rb → error/server_not_usable.rb} +13 -16
  214. data/lib/mongo/error/session_ended.rb +1 -1
  215. data/lib/mongo/error/session_not_materialized.rb +29 -0
  216. data/lib/mongo/error/sessions_not_supported.rb +1 -1
  217. data/lib/mongo/{operation/kill_cursors/legacy.rb → error/snapshot_session_invalid_server_version.rb} +9 -19
  218. data/lib/mongo/{operation/command/command.rb → error/snapshot_session_transaction_prohibited.rb} +8 -19
  219. data/lib/mongo/error/socket_error.rb +1 -1
  220. data/lib/mongo/error/socket_timeout_error.rb +1 -1
  221. data/lib/mongo/{operation/shared/op_msg_or_command.rb → error/transactions_not_supported.rb} +13 -20
  222. data/lib/mongo/error/unchangeable_collection_option.rb +1 -1
  223. data/lib/mongo/error/unexpected_chunk_length.rb +1 -1
  224. data/lib/mongo/error/unexpected_response.rb +1 -1
  225. data/lib/mongo/error/unknown_payload_type.rb +1 -1
  226. data/lib/mongo/error/unmet_dependency.rb +1 -1
  227. data/lib/mongo/error/unsupported_array_filters.rb +1 -1
  228. data/lib/mongo/error/unsupported_collation.rb +1 -1
  229. data/lib/mongo/error/unsupported_features.rb +1 -1
  230. data/lib/mongo/error/unsupported_message_type.rb +1 -1
  231. data/lib/mongo/error/unsupported_option.rb +1 -1
  232. data/lib/mongo/error/write_retryable.rb +1 -1
  233. data/lib/mongo/error.rb +16 -38
  234. data/lib/mongo/event/base.rb +1 -1
  235. data/lib/mongo/event/listeners.rb +1 -1
  236. data/lib/mongo/event/publisher.rb +1 -1
  237. data/lib/mongo/event/subscriber.rb +1 -1
  238. data/lib/mongo/event.rb +1 -1
  239. data/lib/mongo/grid/file/chunk.rb +3 -2
  240. data/lib/mongo/grid/file/info.rb +3 -2
  241. data/lib/mongo/grid/file.rb +1 -1
  242. data/lib/mongo/grid/fs_bucket.rb +7 -1
  243. data/lib/mongo/grid/stream/read.rb +7 -1
  244. data/lib/mongo/grid/stream/write.rb +1 -1
  245. data/lib/mongo/grid/stream.rb +1 -1
  246. data/lib/mongo/grid.rb +1 -1
  247. data/lib/mongo/id.rb +1 -1
  248. data/lib/mongo/index/view.rb +24 -8
  249. data/lib/mongo/index.rb +1 -1
  250. data/lib/mongo/lint.rb +1 -1
  251. data/lib/mongo/loggable.rb +3 -3
  252. data/lib/mongo/logger.rb +1 -1
  253. data/lib/mongo/monitoring/cmap_log_subscriber.rb +1 -1
  254. data/lib/mongo/monitoring/command_log_subscriber.rb +1 -1
  255. data/lib/mongo/monitoring/event/cmap/base.rb +1 -1
  256. data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +1 -1
  257. data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +1 -1
  258. data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +1 -1
  259. data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +1 -1
  260. data/lib/mongo/monitoring/event/cmap/connection_closed.rb +1 -1
  261. data/lib/mongo/monitoring/event/cmap/connection_created.rb +1 -1
  262. data/lib/mongo/monitoring/event/cmap/connection_ready.rb +1 -1
  263. data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +9 -2
  264. data/lib/mongo/monitoring/event/cmap/pool_closed.rb +1 -1
  265. data/lib/mongo/monitoring/event/cmap/pool_created.rb +1 -1
  266. data/lib/mongo/monitoring/event/cmap/pool_ready.rb +67 -0
  267. data/lib/mongo/monitoring/event/cmap.rb +2 -1
  268. data/lib/mongo/monitoring/event/command_failed.rb +9 -3
  269. data/lib/mongo/monitoring/event/command_started.rb +2 -2
  270. data/lib/mongo/monitoring/event/command_succeeded.rb +10 -3
  271. data/lib/mongo/monitoring/event/secure.rb +2 -2
  272. data/lib/mongo/monitoring/event/server_closed.rb +1 -1
  273. data/lib/mongo/monitoring/event/server_description_changed.rb +1 -1
  274. data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +1 -1
  275. data/lib/mongo/monitoring/event/server_heartbeat_started.rb +1 -1
  276. data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +1 -1
  277. data/lib/mongo/monitoring/event/server_opening.rb +1 -1
  278. data/lib/mongo/monitoring/event/topology_changed.rb +1 -1
  279. data/lib/mongo/monitoring/event/topology_closed.rb +1 -1
  280. data/lib/mongo/monitoring/event/topology_opening.rb +1 -1
  281. data/lib/mongo/monitoring/event.rb +1 -1
  282. data/lib/mongo/monitoring/publishable.rb +10 -6
  283. data/lib/mongo/monitoring/sdam_log_subscriber.rb +1 -1
  284. data/lib/mongo/monitoring/server_closed_log_subscriber.rb +1 -1
  285. data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +1 -1
  286. data/lib/mongo/monitoring/server_opening_log_subscriber.rb +1 -1
  287. data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +1 -1
  288. data/lib/mongo/monitoring/topology_closed_log_subscriber.rb +1 -1
  289. data/lib/mongo/monitoring/topology_opening_log_subscriber.rb +1 -1
  290. data/lib/mongo/monitoring/unified_sdam_log_subscriber.rb +1 -1
  291. data/lib/mongo/monitoring.rb +1 -1
  292. data/lib/mongo/operation/aggregate/op_msg.rb +1 -1
  293. data/lib/mongo/operation/aggregate/result.rb +1 -1
  294. data/lib/mongo/operation/aggregate.rb +2 -3
  295. data/lib/mongo/operation/collections_info/result.rb +6 -3
  296. data/lib/mongo/operation/collections_info.rb +4 -16
  297. data/lib/mongo/operation/command/op_msg.rb +7 -1
  298. data/lib/mongo/operation/command.rb +2 -3
  299. data/lib/mongo/operation/context.rb +25 -7
  300. data/lib/mongo/operation/count/op_msg.rb +5 -2
  301. data/lib/mongo/operation/count.rb +2 -3
  302. data/lib/mongo/operation/create/op_msg.rb +5 -2
  303. data/lib/mongo/operation/create.rb +2 -3
  304. data/lib/mongo/operation/create_index/op_msg.rb +3 -2
  305. data/lib/mongo/operation/create_index.rb +2 -3
  306. data/lib/mongo/operation/create_search_indexes/op_msg.rb +31 -0
  307. data/lib/mongo/operation/create_search_indexes.rb +15 -0
  308. data/lib/mongo/operation/create_user/op_msg.rb +1 -1
  309. data/lib/mongo/operation/create_user.rb +2 -3
  310. data/lib/mongo/operation/delete/bulk_result.rb +1 -1
  311. data/lib/mongo/operation/delete/op_msg.rb +4 -2
  312. data/lib/mongo/operation/delete/result.rb +1 -1
  313. data/lib/mongo/operation/delete.rb +1 -3
  314. data/lib/mongo/operation/distinct/op_msg.rb +5 -2
  315. data/lib/mongo/operation/distinct.rb +2 -3
  316. data/lib/mongo/operation/drop/op_msg.rb +1 -1
  317. data/lib/mongo/operation/drop.rb +2 -3
  318. data/lib/mongo/operation/drop_database/op_msg.rb +1 -1
  319. data/lib/mongo/operation/drop_database.rb +2 -3
  320. data/lib/mongo/operation/drop_index/op_msg.rb +6 -2
  321. data/lib/mongo/operation/drop_index.rb +2 -3
  322. data/lib/mongo/operation/drop_search_index/op_msg.rb +33 -0
  323. data/lib/mongo/operation/drop_search_index.rb +15 -0
  324. data/lib/mongo/operation/explain/op_msg.rb +1 -1
  325. data/lib/mongo/operation/explain/result.rb +1 -1
  326. data/lib/mongo/operation/explain.rb +2 -4
  327. data/lib/mongo/operation/find/builder/command.rb +2 -1
  328. data/lib/mongo/operation/find/builder/flags.rb +1 -1
  329. data/lib/mongo/operation/find/builder/modifiers.rb +1 -1
  330. data/lib/mongo/operation/find/builder.rb +1 -2
  331. data/lib/mongo/operation/find/op_msg.rb +1 -1
  332. data/lib/mongo/operation/find/result.rb +1 -1
  333. data/lib/mongo/operation/find.rb +2 -4
  334. data/lib/mongo/operation/get_more/command_builder.rb +6 -2
  335. data/lib/mongo/operation/get_more/op_msg.rb +1 -1
  336. data/lib/mongo/operation/get_more/result.rb +1 -1
  337. data/lib/mongo/operation/get_more.rb +2 -4
  338. data/lib/mongo/operation/indexes/op_msg.rb +1 -1
  339. data/lib/mongo/operation/indexes/result.rb +1 -1
  340. data/lib/mongo/operation/indexes.rb +2 -18
  341. data/lib/mongo/operation/insert/bulk_result.rb +6 -2
  342. data/lib/mongo/operation/insert/op_msg.rb +7 -4
  343. data/lib/mongo/operation/insert/result.rb +7 -4
  344. data/lib/mongo/operation/insert.rb +1 -3
  345. data/lib/mongo/operation/kill_cursors/command_builder.rb +1 -1
  346. data/lib/mongo/operation/kill_cursors/op_msg.rb +1 -1
  347. data/lib/mongo/operation/kill_cursors.rb +2 -4
  348. data/lib/mongo/operation/list_collections/op_msg.rb +5 -2
  349. data/lib/mongo/operation/list_collections/result.rb +1 -1
  350. data/lib/mongo/operation/list_collections.rb +2 -3
  351. data/lib/mongo/operation/map_reduce/op_msg.rb +1 -1
  352. data/lib/mongo/operation/map_reduce/result.rb +17 -1
  353. data/lib/mongo/operation/map_reduce.rb +2 -3
  354. data/lib/mongo/operation/op_msg_base.rb +1 -1
  355. data/lib/mongo/operation/parallel_scan/op_msg.rb +1 -1
  356. data/lib/mongo/operation/parallel_scan/result.rb +1 -1
  357. data/lib/mongo/operation/parallel_scan.rb +2 -3
  358. data/lib/mongo/operation/remove_user/op_msg.rb +1 -1
  359. data/lib/mongo/operation/remove_user.rb +2 -3
  360. data/lib/mongo/operation/result.rb +28 -6
  361. data/lib/mongo/operation/shared/bypass_document_validation.rb +1 -1
  362. data/lib/mongo/operation/shared/causal_consistency_supported.rb +1 -1
  363. data/lib/mongo/operation/shared/executable.rb +48 -13
  364. data/lib/mongo/operation/shared/executable_no_validate.rb +1 -1
  365. data/lib/mongo/operation/shared/executable_transaction_label.rb +1 -1
  366. data/lib/mongo/operation/shared/idable.rb +1 -1
  367. data/lib/mongo/operation/shared/limited.rb +1 -1
  368. data/lib/mongo/operation/shared/object_id_generator.rb +1 -1
  369. data/lib/mongo/operation/shared/{polymorphic_operation.rb → op_msg_executable.rb} +25 -8
  370. data/lib/mongo/operation/shared/polymorphic_lookup.rb +1 -1
  371. data/lib/mongo/operation/shared/polymorphic_result.rb +1 -1
  372. data/lib/mongo/operation/shared/read_preference_supported.rb +1 -1
  373. data/lib/mongo/operation/shared/response_handling.rb +30 -31
  374. data/lib/mongo/operation/shared/result/aggregatable.rb +1 -1
  375. data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +1 -1
  376. data/lib/mongo/operation/shared/sessions_supported.rb +26 -7
  377. data/lib/mongo/operation/shared/specifiable.rb +8 -1
  378. data/lib/mongo/operation/shared/validatable.rb +1 -1
  379. data/lib/mongo/operation/shared/write.rb +19 -13
  380. data/lib/mongo/operation/shared/write_concern_supported.rb +1 -1
  381. data/lib/mongo/operation/update/bulk_result.rb +1 -1
  382. data/lib/mongo/operation/update/op_msg.rb +4 -2
  383. data/lib/mongo/operation/update/result.rb +1 -1
  384. data/lib/mongo/operation/update.rb +1 -3
  385. data/lib/mongo/operation/update_search_index/op_msg.rb +34 -0
  386. data/lib/mongo/operation/update_search_index.rb +15 -0
  387. data/lib/mongo/operation/update_user/op_msg.rb +1 -1
  388. data/lib/mongo/operation/update_user.rb +2 -3
  389. data/lib/mongo/operation/users_info/op_msg.rb +1 -1
  390. data/lib/mongo/operation/users_info/result.rb +1 -1
  391. data/lib/mongo/operation/users_info.rb +2 -3
  392. data/lib/mongo/operation/write_command/op_msg.rb +1 -1
  393. data/lib/mongo/operation/write_command.rb +2 -3
  394. data/lib/mongo/operation.rb +5 -4
  395. data/lib/mongo/options/mapper.rb +1 -1
  396. data/lib/mongo/options/redacted.rb +1 -1
  397. data/lib/mongo/options.rb +1 -1
  398. data/lib/mongo/protocol/bit_vector.rb +4 -2
  399. data/lib/mongo/protocol/caching_hash.rb +52 -0
  400. data/lib/mongo/protocol/compressed.rb +1 -1
  401. data/lib/mongo/protocol/get_more.rb +1 -1
  402. data/lib/mongo/protocol/kill_cursors.rb +1 -1
  403. data/lib/mongo/protocol/message.rb +5 -9
  404. data/lib/mongo/protocol/msg.rb +23 -2
  405. data/lib/mongo/protocol/query.rb +1 -1
  406. data/lib/mongo/protocol/registry.rb +1 -1
  407. data/lib/mongo/protocol/reply.rb +1 -1
  408. data/lib/mongo/protocol/serializers.rb +25 -18
  409. data/lib/mongo/protocol.rb +2 -4
  410. data/lib/mongo/query_cache.rb +36 -21
  411. data/lib/mongo/retryable/base_worker.rb +91 -0
  412. data/lib/mongo/retryable/read_worker.rb +297 -0
  413. data/lib/mongo/retryable/write_worker.rb +367 -0
  414. data/lib/mongo/retryable.rb +31 -454
  415. data/lib/mongo/search_index/view.rb +232 -0
  416. data/lib/mongo/semaphore.rb +2 -2
  417. data/lib/mongo/server/app_metadata/environment.rb +314 -0
  418. data/lib/mongo/server/app_metadata/platform.rb +114 -0
  419. data/lib/mongo/server/app_metadata/truncator.rb +142 -0
  420. data/lib/mongo/server/app_metadata.rb +76 -108
  421. data/lib/mongo/server/connection.rb +94 -20
  422. data/lib/mongo/server/connection_base.rb +3 -1
  423. data/lib/mongo/server/connection_common.rb +5 -2
  424. data/lib/mongo/server/connection_pool/generation_manager.rb +56 -12
  425. data/lib/mongo/server/connection_pool/populator.rb +33 -31
  426. data/lib/mongo/server/connection_pool.rb +736 -247
  427. data/lib/mongo/server/description/features.rb +7 -2
  428. data/lib/mongo/server/description/load_balancer.rb +1 -1
  429. data/lib/mongo/server/description.rb +14 -8
  430. data/lib/mongo/server/monitor/app_metadata.rb +1 -1
  431. data/lib/mongo/server/monitor/connection.rb +2 -1
  432. data/lib/mongo/server/monitor.rb +36 -20
  433. data/lib/mongo/server/pending_connection.rb +1 -1
  434. data/lib/mongo/server/push_monitor/connection.rb +1 -1
  435. data/lib/mongo/server/push_monitor.rb +14 -4
  436. data/lib/mongo/server/round_trip_time_averager.rb +1 -1
  437. data/lib/mongo/server.rb +105 -35
  438. data/lib/mongo/server_selector/base.rb +77 -8
  439. data/lib/mongo/server_selector/nearest.rb +1 -1
  440. data/lib/mongo/server_selector/primary.rb +1 -1
  441. data/lib/mongo/server_selector/primary_preferred.rb +1 -1
  442. data/lib/mongo/server_selector/secondary.rb +1 -1
  443. data/lib/mongo/server_selector/secondary_preferred.rb +1 -1
  444. data/lib/mongo/server_selector.rb +1 -1
  445. data/lib/mongo/session/server_session/dirtyable.rb +52 -0
  446. data/lib/mongo/session/server_session.rb +4 -1
  447. data/lib/mongo/session/session_pool.rb +21 -19
  448. data/lib/mongo/session.rb +164 -37
  449. data/lib/mongo/socket/ocsp_cache.rb +3 -4
  450. data/lib/mongo/socket/ocsp_verifier.rb +5 -6
  451. data/lib/mongo/socket/ssl.rb +1 -1
  452. data/lib/mongo/socket/tcp.rb +4 -1
  453. data/lib/mongo/socket/unix.rb +1 -1
  454. data/lib/mongo/socket.rb +30 -7
  455. data/lib/mongo/srv/monitor.rb +1 -3
  456. data/lib/mongo/srv/resolver.rb +25 -4
  457. data/lib/mongo/srv/result.rb +1 -1
  458. data/lib/mongo/srv.rb +1 -1
  459. data/lib/mongo/timeout.rb +2 -2
  460. data/lib/mongo/topology_version.rb +1 -1
  461. data/lib/mongo/uri/options_mapper.rb +324 -81
  462. data/lib/mongo/uri/srv_protocol.rb +2 -2
  463. data/lib/mongo/uri.rb +61 -17
  464. data/lib/mongo/utils.rb +1 -7
  465. data/lib/mongo/version.rb +2 -2
  466. data/lib/mongo/write_concern/acknowledged.rb +1 -1
  467. data/lib/mongo/write_concern/base.rb +1 -1
  468. data/lib/mongo/write_concern/unacknowledged.rb +1 -1
  469. data/lib/mongo/write_concern.rb +1 -1
  470. data/lib/mongo.rb +25 -1
  471. data/mongo.gemspec +10 -7
  472. data/spec/README.md +23 -5
  473. data/spec/atlas/atlas_connectivity_spec.rb +6 -10
  474. data/spec/atlas/operations_spec.rb +4 -13
  475. data/spec/faas/ruby-sam-app/Gemfile +9 -0
  476. data/spec/faas/ruby-sam-app/mongodb/Gemfile +4 -0
  477. data/spec/faas/ruby-sam-app/mongodb/app.rb +149 -0
  478. data/spec/faas/ruby-sam-app/template.yaml +48 -0
  479. data/spec/integration/auth_spec.rb +1 -1
  480. data/spec/integration/awaited_ismaster_spec.rb +1 -1
  481. data/spec/integration/aws_auth_credentials_cache_spec.rb +51 -0
  482. data/spec/integration/aws_auth_request_spec.rb +2 -2
  483. data/spec/integration/aws_credentials_retriever_spec.rb +32 -2
  484. data/spec/integration/aws_lambda_examples_spec.rb +68 -0
  485. data/spec/integration/bson_symbol_spec.rb +1 -1
  486. data/spec/integration/bulk_insert_spec.rb +1 -1
  487. data/spec/integration/bulk_write_error_message_spec.rb +33 -0
  488. data/spec/integration/bulk_write_spec.rb +17 -1
  489. data/spec/integration/change_stream_examples_spec.rb +1 -1
  490. data/spec/integration/change_stream_spec.rb +12 -6
  491. data/spec/integration/check_clean_slate_spec.rb +1 -1
  492. data/spec/integration/client_authentication_options_spec.rb +1 -1
  493. data/spec/integration/client_connectivity_spec.rb +1 -1
  494. data/spec/integration/client_construction_aws_auth_spec.rb +12 -3
  495. data/spec/integration/client_construction_spec.rb +97 -9
  496. data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +10 -10
  497. data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +169 -169
  498. data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +1 -2
  499. data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +1 -1
  500. data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +41 -5
  501. data/spec/integration/client_side_encryption/auto_encryption_spec.rb +146 -3
  502. data/spec/integration/client_side_encryption/automatic_data_encryption_keys_prose_spec.rb +153 -0
  503. data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +3 -3
  504. data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +3 -3
  505. data/spec/integration/client_side_encryption/client_close_spec.rb +2 -2
  506. data/spec/integration/client_side_encryption/corpus_spec.rb +75 -38
  507. data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +40 -43
  508. data/spec/integration/client_side_encryption/data_key_spec.rb +98 -8
  509. data/spec/integration/client_side_encryption/decryption_events_prose_spec.rb +159 -0
  510. data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +60 -1
  511. data/spec/integration/client_side_encryption/explicit_queryable_encryption_spec.rb +150 -0
  512. data/spec/integration/client_side_encryption/external_key_vault_spec.rb +7 -7
  513. data/spec/integration/client_side_encryption/kms_tls_options_spec.rb +436 -0
  514. data/spec/integration/client_side_encryption/kms_tls_spec.rb +92 -0
  515. data/spec/integration/client_side_encryption/mongocryptd_prose_spec.rb +105 -0
  516. data/spec/integration/client_side_encryption/on_demand_aws_credentials_spec.rb +49 -0
  517. data/spec/integration/client_side_encryption/on_demand_azure_credentials_spec.rb +46 -0
  518. data/spec/integration/client_side_encryption/on_demand_gcp_credentials_spec.rb +47 -0
  519. data/spec/integration/client_side_encryption/queryable_encryption_examples_spec.rb +114 -0
  520. data/spec/integration/client_side_encryption/range_explicit_encryption_prose_spec.rb +536 -0
  521. data/spec/integration/client_side_encryption/rewrap_prose_spec.rb +114 -0
  522. data/spec/integration/client_side_encryption/unique_index_on_key_alt_names_prose_spec.rb +89 -0
  523. data/spec/integration/client_side_encryption/views_spec.rb +2 -2
  524. data/spec/integration/client_spec.rb +8 -3
  525. data/spec/integration/client_update_spec.rb +7 -3
  526. data/spec/integration/collection_indexes_prose_spec.rb +1 -1
  527. data/spec/integration/command_monitoring_spec.rb +1 -1
  528. data/spec/integration/command_spec.rb +2 -24
  529. data/spec/integration/connect_single_rs_name_spec.rb +1 -1
  530. data/spec/integration/connection/faas_env_spec.rb +62 -0
  531. data/spec/integration/connection_pool_populator_spec.rb +27 -7
  532. data/spec/integration/connection_spec.rb +1 -1
  533. data/spec/integration/crud_spec.rb +13 -1
  534. data/spec/integration/cursor_pinning_spec.rb +9 -5
  535. data/spec/integration/cursor_reaping_spec.rb +1 -1
  536. data/spec/integration/docs_examples_spec.rb +2 -2
  537. data/spec/integration/error_detection_spec.rb +1 -1
  538. data/spec/integration/fork_reconnect_spec.rb +17 -10
  539. data/spec/integration/get_more_spec.rb +1 -1
  540. data/spec/integration/grid_fs_bucket_spec.rb +4 -4
  541. data/spec/integration/heartbeat_events_spec.rb +1 -1
  542. data/spec/integration/map_reduce_spec.rb +5 -1
  543. data/spec/integration/mmapv1_spec.rb +1 -1
  544. data/spec/integration/mongos_pinning_spec.rb +1 -1
  545. data/spec/integration/ocsp_connectivity_spec.rb +1 -1
  546. data/spec/integration/ocsp_verifier_cache_spec.rb +1 -1
  547. data/spec/integration/ocsp_verifier_spec.rb +5 -2
  548. data/spec/integration/operation_failure_code_spec.rb +1 -1
  549. data/spec/integration/operation_failure_message_spec.rb +1 -0
  550. data/spec/integration/query_cache_spec.rb +124 -33
  551. data/spec/integration/query_cache_transactions_spec.rb +1 -1
  552. data/spec/integration/read_concern_spec.rb +1 -1
  553. data/spec/integration/read_preference_spec.rb +17 -13
  554. data/spec/integration/reconnect_spec.rb +6 -1
  555. data/spec/integration/retryable_errors_spec.rb +1 -1
  556. data/spec/integration/retryable_reads_errors_spec.rb +263 -0
  557. data/spec/integration/retryable_writes/retryable_writes_36_and_older_spec.rb +2 -2
  558. data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +1 -1
  559. data/spec/integration/retryable_writes/shared/adds_diagnostics.rb +1 -1
  560. data/spec/integration/retryable_writes/shared/does_not_support_retries.rb +1 -1
  561. data/spec/integration/retryable_writes/shared/only_supports_legacy_retries.rb +1 -1
  562. data/spec/integration/retryable_writes/shared/performs_legacy_retries.rb +1 -1
  563. data/spec/integration/retryable_writes/shared/performs_modern_retries.rb +1 -1
  564. data/spec/integration/retryable_writes/shared/performs_no_retries.rb +1 -1
  565. data/spec/integration/retryable_writes/shared/supports_legacy_retries.rb +1 -1
  566. data/spec/integration/retryable_writes/shared/supports_modern_retries.rb +1 -1
  567. data/spec/integration/retryable_writes/shared/supports_retries.rb +1 -1
  568. data/spec/integration/retryable_writes_errors_spec.rb +316 -2
  569. data/spec/integration/sdam_error_handling_spec.rb +65 -4
  570. data/spec/integration/sdam_events_spec.rb +1 -1
  571. data/spec/integration/sdam_prose_spec.rb +3 -3
  572. data/spec/integration/search_indexes_prose_spec.rb +168 -0
  573. data/spec/integration/secondary_reads_spec.rb +1 -0
  574. data/spec/integration/server_description_spec.rb +1 -1
  575. data/spec/integration/server_monitor_spec.rb +3 -2
  576. data/spec/integration/server_selection_spec.rb +1 -1
  577. data/spec/integration/server_selector_spec.rb +5 -3
  578. data/spec/integration/server_spec.rb +23 -26
  579. data/spec/integration/shell_examples_spec.rb +1 -1
  580. data/spec/integration/size_limit_spec.rb +5 -2
  581. data/spec/integration/snappy_compression_spec.rb +1 -1
  582. data/spec/integration/snapshot_query_examples_spec.rb +129 -0
  583. data/spec/integration/srv_monitoring_spec.rb +40 -1
  584. data/spec/integration/srv_spec.rb +4 -3
  585. data/spec/integration/ssl_uri_options_spec.rb +1 -1
  586. data/spec/integration/step_down_spec.rb +25 -7
  587. data/spec/integration/time_zone_querying_spec.rb +1 -1
  588. data/spec/integration/transaction_pinning_spec.rb +20 -6
  589. data/spec/integration/transactions_api_examples_spec.rb +1 -1
  590. data/spec/integration/transactions_examples_spec.rb +1 -1
  591. data/spec/integration/truncated_utf8_spec.rb +1 -1
  592. data/spec/integration/versioned_api_examples_spec.rb +38 -32
  593. data/spec/integration/x509_auth_spec.rb +1 -1
  594. data/spec/integration/zlib_compression_spec.rb +1 -1
  595. data/spec/integration/zstd_compression_spec.rb +1 -1
  596. data/spec/kerberos/kerberos_spec.rb +1 -1
  597. data/spec/lite_spec_helper.rb +61 -16
  598. data/spec/mongo/address/ipv4_spec.rb +1 -1
  599. data/spec/mongo/address/ipv6_spec.rb +8 -1
  600. data/spec/mongo/address/unix_spec.rb +1 -1
  601. data/spec/mongo/address/validator_spec.rb +1 -1
  602. data/spec/mongo/address_spec.rb +15 -2
  603. data/spec/mongo/auth/aws/credential_cache_spec.rb +63 -0
  604. data/spec/mongo/auth/aws/credentials_retriever_spec.rb +90 -0
  605. data/spec/mongo/auth/aws/credentials_spec.rb +46 -0
  606. data/spec/mongo/auth/aws/request_region_spec.rb +1 -1
  607. data/spec/mongo/auth/aws/request_spec.rb +1 -1
  608. data/spec/mongo/auth/cr_spec.rb +2 -22
  609. data/spec/mongo/auth/gssapi/conversation_spec.rb +1 -1
  610. data/spec/mongo/auth/invalid_mechanism_spec.rb +1 -1
  611. data/spec/mongo/auth/ldap/conversation_spec.rb +1 -1
  612. data/spec/mongo/auth/ldap_spec.rb +1 -1
  613. data/spec/mongo/auth/scram/conversation_spec.rb +24 -24
  614. data/spec/mongo/auth/scram256/conversation_spec.rb +21 -21
  615. data/spec/mongo/auth/scram_negotiation_spec.rb +2 -1
  616. data/spec/mongo/auth/scram_spec.rb +1 -1
  617. data/spec/mongo/auth/stringprep/profiles/sasl_spec.rb +1 -1
  618. data/spec/mongo/auth/stringprep_spec.rb +1 -1
  619. data/spec/mongo/auth/user/view_spec.rb +96 -1
  620. data/spec/mongo/auth/user_spec.rb +1 -1
  621. data/spec/mongo/auth/x509/conversation_spec.rb +1 -1
  622. data/spec/mongo/auth/x509_spec.rb +1 -1
  623. data/spec/mongo/auth_spec.rb +1 -1
  624. data/spec/mongo/bson_spec.rb +1 -1
  625. data/spec/mongo/bulk_write/ordered_combiner_spec.rb +1 -1
  626. data/spec/mongo/bulk_write/result_spec.rb +16 -2
  627. data/spec/mongo/bulk_write/unordered_combiner_spec.rb +1 -1
  628. data/spec/mongo/bulk_write_spec.rb +142 -21
  629. data/spec/mongo/caching_cursor_spec.rb +1 -1
  630. data/spec/mongo/client_construction_spec.rb +734 -631
  631. data/spec/mongo/client_encryption_spec.rb +11 -23
  632. data/spec/mongo/client_spec.rb +389 -152
  633. data/spec/mongo/cluster/cursor_reaper_spec.rb +42 -17
  634. data/spec/mongo/cluster/periodic_executor_spec.rb +1 -1
  635. data/spec/mongo/cluster/socket_reaper_spec.rb +1 -1
  636. data/spec/mongo/cluster/topology/replica_set_spec.rb +1 -1
  637. data/spec/mongo/cluster/topology/sharded_spec.rb +1 -1
  638. data/spec/mongo/cluster/topology/single_spec.rb +1 -1
  639. data/spec/mongo/cluster/topology/unknown_spec.rb +1 -1
  640. data/spec/mongo/cluster/topology_spec.rb +1 -1
  641. data/spec/mongo/cluster_spec.rb +193 -199
  642. data/spec/mongo/cluster_time_spec.rb +1 -1
  643. data/spec/mongo/collection/view/aggregation_spec.rb +184 -84
  644. data/spec/mongo/collection/view/builder/find_command_spec.rb +1 -1
  645. data/spec/mongo/collection/view/builder/op_query_spec.rb +1 -1
  646. data/spec/mongo/collection/view/change_stream_resume_spec.rb +1 -1
  647. data/spec/mongo/collection/view/change_stream_spec.rb +3 -3
  648. data/spec/mongo/collection/view/explainable_spec.rb +3 -1
  649. data/spec/mongo/collection/view/immutable_spec.rb +1 -1
  650. data/spec/mongo/collection/view/iterable_spec.rb +1 -1
  651. data/spec/mongo/collection/view/map_reduce_spec.rb +25 -2
  652. data/spec/mongo/collection/view/readable_spec.rb +744 -2
  653. data/spec/mongo/collection/view/writable_spec.rb +145 -33
  654. data/spec/mongo/collection/view_spec.rb +1 -1
  655. data/spec/mongo/collection_crud_spec.rb +121 -15
  656. data/spec/mongo/collection_ddl_spec.rb +116 -66
  657. data/spec/mongo/collection_spec.rb +48 -2
  658. data/spec/mongo/condition_variable_spec.rb +104 -0
  659. data/spec/mongo/config/options_spec.rb +76 -0
  660. data/spec/mongo/config_spec.rb +74 -0
  661. data/spec/mongo/crypt/auto_decryption_context_spec.rb +18 -2
  662. data/spec/mongo/crypt/auto_encrypter_spec.rb +264 -6
  663. data/spec/mongo/crypt/auto_encryption_context_spec.rb +18 -2
  664. data/spec/mongo/crypt/binary_spec.rb +1 -1
  665. data/spec/mongo/crypt/binding/binary_spec.rb +1 -1
  666. data/spec/mongo/crypt/binding/context_spec.rb +68 -18
  667. data/spec/mongo/crypt/binding/helpers_spec.rb +1 -1
  668. data/spec/mongo/crypt/binding/mongocrypt_spec.rb +18 -47
  669. data/spec/mongo/crypt/binding/status_spec.rb +1 -1
  670. data/spec/mongo/crypt/binding/version_spec.rb +48 -1
  671. data/spec/mongo/crypt/binding_unloaded_spec.rb +15 -1
  672. data/spec/mongo/crypt/data_key_context_spec.rb +43 -115
  673. data/spec/mongo/crypt/encryption_io_spec.rb +3 -1
  674. data/spec/mongo/crypt/explicit_decryption_context_spec.rb +33 -2
  675. data/spec/mongo/crypt/explicit_encryption_context_spec.rb +95 -2
  676. data/spec/mongo/crypt/handle_spec.rb +187 -156
  677. data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +1 -1
  678. data/spec/mongo/crypt/hooks_spec.rb +30 -0
  679. data/spec/mongo/crypt/kms/azure/credentials_retriever_spec.rb +86 -0
  680. data/spec/mongo/crypt/kms/credentials_spec.rb +373 -0
  681. data/spec/mongo/crypt/kms_spec.rb +62 -0
  682. data/spec/mongo/crypt/status_spec.rb +1 -1
  683. data/spec/mongo/crypt_spec.rb +21 -0
  684. data/spec/mongo/cursor/builder/get_more_command_spec.rb +1 -1
  685. data/spec/mongo/cursor/builder/op_get_more_spec.rb +1 -1
  686. data/spec/mongo/cursor_spec.rb +148 -14
  687. data/spec/mongo/database_spec.rb +67 -2
  688. data/spec/mongo/distinguishing_semaphore_spec.rb +7 -7
  689. data/spec/mongo/error/bulk_write_error_spec.rb +1 -1
  690. data/spec/mongo/error/crypt_error_spec.rb +1 -1
  691. data/spec/mongo/error/max_bson_size_spec.rb +1 -1
  692. data/spec/mongo/error/no_server_available_spec.rb +1 -1
  693. data/spec/mongo/error/notable_spec.rb +1 -1
  694. data/spec/mongo/error/operation_failure_heavy_spec.rb +50 -1
  695. data/spec/mongo/error/operation_failure_spec.rb +1 -1
  696. data/spec/mongo/error/parser_spec.rb +1 -1
  697. data/spec/mongo/error/unsupported_option_spec.rb +1 -1
  698. data/spec/mongo/event/publisher_spec.rb +1 -1
  699. data/spec/mongo/event/subscriber_spec.rb +1 -1
  700. data/spec/mongo/grid/file/chunk_spec.rb +1 -1
  701. data/spec/mongo/grid/file/info_spec.rb +1 -1
  702. data/spec/mongo/grid/file_spec.rb +1 -1
  703. data/spec/mongo/grid/fs_bucket_spec.rb +1 -1
  704. data/spec/mongo/grid/stream/read_spec.rb +1 -1
  705. data/spec/mongo/grid/stream/write_spec.rb +1 -1
  706. data/spec/mongo/grid/stream_spec.rb +1 -1
  707. data/spec/mongo/id_spec.rb +2 -2
  708. data/spec/mongo/index/view_spec.rb +126 -1
  709. data/spec/mongo/lint_spec.rb +2 -2
  710. data/spec/mongo/logger_spec.rb +1 -1
  711. data/spec/mongo/monitoring/command_log_subscriber_spec.rb +1 -1
  712. data/spec/mongo/monitoring/event/cmap/connection_check_out_failed_spec.rb +2 -2
  713. data/spec/mongo/monitoring/event/cmap/connection_check_out_started_spec.rb +2 -2
  714. data/spec/mongo/monitoring/event/cmap/connection_checked_in_spec.rb +2 -2
  715. data/spec/mongo/monitoring/event/cmap/connection_checked_out_spec.rb +2 -2
  716. data/spec/mongo/monitoring/event/cmap/connection_closed_spec.rb +2 -2
  717. data/spec/mongo/monitoring/event/cmap/connection_created_spec.rb +2 -2
  718. data/spec/mongo/monitoring/event/cmap/connection_ready_spec.rb +2 -2
  719. data/spec/mongo/monitoring/event/cmap/pool_cleared_spec.rb +2 -2
  720. data/spec/mongo/monitoring/event/cmap/pool_closed_spec.rb +2 -2
  721. data/spec/mongo/monitoring/event/cmap/pool_created_spec.rb +2 -2
  722. data/spec/mongo/monitoring/event/command_failed_spec.rb +1 -1
  723. data/spec/mongo/monitoring/event/command_started_spec.rb +1 -1
  724. data/spec/mongo/monitoring/event/command_succeeded_spec.rb +1 -1
  725. data/spec/mongo/monitoring/event/secure_spec.rb +1 -1
  726. data/spec/mongo/monitoring/event/server_closed_spec.rb +1 -1
  727. data/spec/mongo/monitoring/event/server_description_changed_spec.rb +1 -1
  728. data/spec/mongo/monitoring/event/server_heartbeat_failed_spec.rb +1 -1
  729. data/spec/mongo/monitoring/event/server_heartbeat_started_spec.rb +1 -1
  730. data/spec/mongo/monitoring/event/server_heartbeat_succeeded_spec.rb +1 -1
  731. data/spec/mongo/monitoring/event/server_opening_spec.rb +1 -1
  732. data/spec/mongo/monitoring/event/topology_changed_spec.rb +1 -1
  733. data/spec/mongo/monitoring/event/topology_closed_spec.rb +1 -1
  734. data/spec/mongo/monitoring/event/topology_opening_spec.rb +1 -1
  735. data/spec/mongo/monitoring_spec.rb +1 -1
  736. data/spec/mongo/operation/aggregate/result_spec.rb +1 -1
  737. data/spec/mongo/operation/aggregate_spec.rb +1 -1
  738. data/spec/mongo/operation/collections_info_spec.rb +1 -1
  739. data/spec/mongo/operation/command_spec.rb +1 -1
  740. data/spec/mongo/operation/create/op_msg_spec.rb +244 -0
  741. data/spec/mongo/operation/create_index_spec.rb +1 -1
  742. data/spec/mongo/operation/create_user_spec.rb +1 -1
  743. data/spec/mongo/operation/delete/bulk_spec.rb +1 -1
  744. data/spec/mongo/operation/delete/op_msg_spec.rb +14 -5
  745. data/spec/mongo/operation/delete_spec.rb +1 -31
  746. data/spec/mongo/operation/drop_index_spec.rb +1 -1
  747. data/spec/mongo/operation/find/builder/flags_spec.rb +1 -1
  748. data/spec/mongo/operation/find/builder/modifiers_spec.rb +1 -1
  749. data/spec/mongo/operation/indexes_spec.rb +1 -1
  750. data/spec/mongo/operation/insert/bulk_spec.rb +1 -1
  751. data/spec/mongo/operation/insert/op_msg_spec.rb +19 -11
  752. data/spec/mongo/operation/insert_spec.rb +2 -34
  753. data/spec/mongo/operation/limited_spec.rb +1 -1
  754. data/spec/mongo/operation/map_reduce_spec.rb +1 -1
  755. data/spec/mongo/operation/read_preference_legacy_spec.rb +1 -1
  756. data/spec/mongo/operation/read_preference_op_msg_spec.rb +25 -2
  757. data/spec/mongo/operation/remove_user_spec.rb +1 -1
  758. data/spec/mongo/operation/result_spec.rb +21 -1
  759. data/spec/mongo/operation/specifiable_spec.rb +1 -1
  760. data/spec/mongo/operation/update/bulk_spec.rb +1 -1
  761. data/spec/mongo/operation/update/op_msg_spec.rb +14 -5
  762. data/spec/mongo/operation/update_spec.rb +1 -30
  763. data/spec/mongo/operation/update_user_spec.rb +1 -1
  764. data/spec/mongo/options/redacted_spec.rb +2 -2
  765. data/spec/mongo/protocol/caching_hash_spec.rb +37 -0
  766. data/spec/mongo/protocol/compressed_spec.rb +1 -1
  767. data/spec/mongo/protocol/get_more_spec.rb +1 -1
  768. data/spec/mongo/protocol/kill_cursors_spec.rb +1 -1
  769. data/spec/mongo/protocol/msg_spec.rb +45 -66
  770. data/spec/mongo/protocol/query_spec.rb +1 -1
  771. data/spec/mongo/protocol/registry_spec.rb +1 -1
  772. data/spec/mongo/protocol/reply_spec.rb +1 -1
  773. data/spec/mongo/query_cache_middleware_spec.rb +1 -1
  774. data/spec/mongo/query_cache_spec.rb +2 -1
  775. data/spec/mongo/retryable/write_worker_spec.rb +39 -0
  776. data/spec/mongo/retryable_spec.rb +37 -6
  777. data/spec/mongo/semaphore_spec.rb +7 -7
  778. data/spec/mongo/server/app_metadata/environment_spec.rb +344 -0
  779. data/spec/mongo/server/app_metadata/truncator_spec.rb +158 -0
  780. data/spec/mongo/server/app_metadata_spec.rb +53 -65
  781. data/spec/mongo/server/connection_auth_spec.rb +4 -2
  782. data/spec/mongo/server/connection_common_spec.rb +14 -2
  783. data/spec/mongo/server/connection_pool/populator_spec.rb +17 -3
  784. data/spec/mongo/server/connection_pool_spec.rb +567 -63
  785. data/spec/mongo/server/connection_spec.rb +71 -163
  786. data/spec/mongo/server/description/features_spec.rb +25 -1
  787. data/spec/mongo/server/description_query_methods_spec.rb +1 -1
  788. data/spec/mongo/server/description_spec.rb +1 -1
  789. data/spec/mongo/server/monitor/app_metadata_spec.rb +1 -1
  790. data/spec/mongo/server/monitor/connection_spec.rb +3 -3
  791. data/spec/mongo/server/monitor_spec.rb +6 -5
  792. data/spec/mongo/server/push_monitor_spec.rb +3 -9
  793. data/spec/mongo/server/round_trip_time_averager_spec.rb +1 -1
  794. data/spec/mongo/server_selector/nearest_spec.rb +1 -1
  795. data/spec/mongo/server_selector/primary_preferred_spec.rb +1 -1
  796. data/spec/mongo/server_selector/primary_spec.rb +1 -1
  797. data/spec/mongo/server_selector/secondary_preferred_spec.rb +1 -1
  798. data/spec/mongo/server_selector/secondary_spec.rb +1 -1
  799. data/spec/mongo/server_selector_spec.rb +137 -16
  800. data/spec/mongo/server_spec.rb +32 -5
  801. data/spec/mongo/session/server_session_spec.rb +1 -1
  802. data/spec/mongo/session/session_pool_spec.rb +2 -17
  803. data/spec/mongo/session_spec.rb +27 -7
  804. data/spec/mongo/session_transaction_spec.rb +19 -3
  805. data/spec/mongo/socket/ssl_spec.rb +45 -72
  806. data/spec/mongo/socket/tcp_spec.rb +1 -1
  807. data/spec/mongo/socket/unix_spec.rb +1 -1
  808. data/spec/mongo/socket_spec.rb +1 -1
  809. data/spec/mongo/srv/monitor_spec.rb +1 -1
  810. data/spec/mongo/srv/result_spec.rb +1 -1
  811. data/spec/mongo/timeout_spec.rb +1 -1
  812. data/spec/mongo/tls_context_hooks_spec.rb +1 -1
  813. data/spec/mongo/uri/options_mapper_spec.rb +1605 -0
  814. data/spec/mongo/uri/srv_protocol_spec.rb +263 -4
  815. data/spec/mongo/uri_option_parsing_spec.rb +1 -1
  816. data/spec/mongo/uri_spec.rb +168 -11
  817. data/spec/mongo/utils_spec.rb +1 -15
  818. data/spec/mongo/write_concern/acknowledged_spec.rb +1 -1
  819. data/spec/mongo/write_concern/unacknowledged_spec.rb +1 -1
  820. data/spec/mongo/write_concern_spec.rb +1 -1
  821. data/spec/runners/auth.rb +1 -1
  822. data/spec/runners/change_streams/outcome.rb +1 -1
  823. data/spec/runners/change_streams/spec.rb +1 -1
  824. data/spec/runners/change_streams/test.rb +1 -1
  825. data/spec/runners/cmap/verifier.rb +2 -2
  826. data/spec/runners/cmap.rb +188 -45
  827. data/spec/runners/command_monitoring.rb +1 -1
  828. data/spec/runners/connection_string.rb +9 -1
  829. data/spec/runners/crud/context.rb +1 -1
  830. data/spec/runners/crud/operation.rb +14 -5
  831. data/spec/runners/crud/outcome.rb +1 -1
  832. data/spec/runners/crud/requirement.rb +12 -7
  833. data/spec/runners/crud/spec.rb +6 -1
  834. data/spec/runners/crud/test.rb +2 -10
  835. data/spec/runners/crud/test_base.rb +2 -2
  836. data/spec/runners/crud/verifier.rb +10 -5
  837. data/spec/runners/crud.rb +2 -2
  838. data/spec/runners/gridfs.rb +1 -1
  839. data/spec/runners/read_write_concern_document.rb +1 -1
  840. data/spec/runners/sdam/verifier.rb +1 -1
  841. data/spec/runners/sdam.rb +1 -1
  842. data/spec/runners/server_selection.rb +1 -1
  843. data/spec/runners/server_selection_rtt.rb +1 -1
  844. data/spec/runners/transactions/operation.rb +15 -9
  845. data/spec/runners/transactions/spec.rb +3 -3
  846. data/spec/runners/transactions/test.rb +75 -22
  847. data/spec/runners/transactions.rb +12 -9
  848. data/spec/runners/unified/assertions.rb +162 -51
  849. data/spec/runners/unified/change_stream_operations.rb +26 -3
  850. data/spec/runners/unified/client_side_encryption_operations.rb +83 -0
  851. data/spec/runners/unified/crud_operations.rb +166 -28
  852. data/spec/runners/unified/ddl_operations.rb +152 -3
  853. data/spec/runners/unified/entity_map.rb +4 -4
  854. data/spec/runners/unified/error.rb +3 -2
  855. data/spec/runners/unified/event_subscriber.rb +9 -3
  856. data/spec/runners/unified/exceptions.rb +1 -1
  857. data/spec/runners/unified/grid_fs_operations.rb +22 -1
  858. data/spec/runners/unified/search_index_operations.rb +63 -0
  859. data/spec/runners/unified/support_operations.rb +78 -8
  860. data/spec/runners/unified/test.rb +199 -31
  861. data/spec/runners/unified/test_group.rb +1 -1
  862. data/spec/runners/unified/thread_operations.rb +73 -0
  863. data/spec/runners/unified.rb +15 -5
  864. data/spec/shared/lib/mrss/constraints.rb +10 -17
  865. data/spec/shared/lib/mrss/docker_runner.rb +30 -3
  866. data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
  867. data/spec/shared/lib/mrss/event_subscriber.rb +15 -5
  868. data/spec/shared/lib/mrss/lite_constraints.rb +48 -1
  869. data/spec/shared/lib/mrss/server_version_registry.rb +16 -23
  870. data/spec/shared/lib/mrss/session_registry.rb +69 -0
  871. data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
  872. data/spec/shared/lib/mrss/utils.rb +28 -6
  873. data/spec/shared/share/Dockerfile.erb +82 -124
  874. data/spec/shared/shlib/config.sh +27 -0
  875. data/spec/shared/shlib/distro.sh +2 -1
  876. data/spec/shared/shlib/server.sh +74 -24
  877. data/spec/shared/shlib/set_env.sh +45 -30
  878. data/spec/solo/clean_exit_spec.rb +5 -7
  879. data/spec/spec_helper.rb +2 -3
  880. data/spec/spec_tests/auth_spec.rb +1 -1
  881. data/spec/spec_tests/change_streams_unified_spec.rb +2 -1
  882. data/spec/spec_tests/client_side_encryption_spec.rb +25 -2
  883. data/spec/spec_tests/client_side_encryption_unified_spec.rb +26 -0
  884. data/spec/spec_tests/cmap_spec.rb +29 -15
  885. data/spec/spec_tests/collection_management_spec.rb +1 -1
  886. data/spec/spec_tests/command_monitoring_unified_spec.rb +1 -1
  887. data/spec/spec_tests/connection_string_spec.rb +1 -1
  888. data/spec/spec_tests/crud_spec.rb +1 -11
  889. data/spec/spec_tests/crud_unified_spec.rb +1 -1
  890. data/spec/spec_tests/data/change_streams_unified/change-streams-clusterTime.yml +41 -0
  891. data/spec/spec_tests/data/change_streams_unified/change-streams-disambiguatedPaths.yml +103 -0
  892. data/spec/spec_tests/data/change_streams_unified/change-streams-errors.yml +120 -0
  893. data/spec/spec_tests/data/change_streams_unified/change-streams-pre_and_post_images.yml +351 -0
  894. data/spec/spec_tests/data/change_streams_unified/change-streams-resume-allowlist.yml +1169 -0
  895. data/spec/spec_tests/data/change_streams_unified/change-streams-resume-errorLabels.yml +1069 -0
  896. data/spec/spec_tests/data/change_streams_unified/change-streams-showExpandedEvents.yml +307 -0
  897. data/spec/spec_tests/data/change_streams_unified/change-streams.yml +859 -4
  898. data/spec/spec_tests/data/client_side_encryption/aggregate.yml +3 -17
  899. data/spec/spec_tests/data/client_side_encryption/awsTemporary.yml +57 -0
  900. data/spec/spec_tests/data/client_side_encryption/azureKMS.yml +46 -0
  901. data/spec/spec_tests/data/client_side_encryption/badQueries.yml +12 -2
  902. data/spec/spec_tests/data/client_side_encryption/basic.yml +3 -17
  903. data/spec/spec_tests/data/client_side_encryption/bulk.yml +1 -8
  904. data/spec/spec_tests/data/client_side_encryption/bypassAutoEncryption.yml +2 -2
  905. data/spec/spec_tests/data/client_side_encryption/bypassedCommand.yml +5 -4
  906. data/spec/spec_tests/data/client_side_encryption/count.yml +1 -8
  907. data/spec/spec_tests/data/client_side_encryption/countDocuments.yml +1 -8
  908. data/spec/spec_tests/data/client_side_encryption/create-and-createIndexes.yml +58 -0
  909. data/spec/spec_tests/data/client_side_encryption/delete.yml +2 -16
  910. data/spec/spec_tests/data/client_side_encryption/distinct.yml +1 -8
  911. data/spec/spec_tests/data/client_side_encryption/explain.yml +3 -10
  912. data/spec/spec_tests/data/client_side_encryption/find.yml +2 -16
  913. data/spec/spec_tests/data/client_side_encryption/findOneAndDelete.yml +1 -8
  914. data/spec/spec_tests/data/client_side_encryption/findOneAndReplace.yml +1 -8
  915. data/spec/spec_tests/data/client_side_encryption/findOneAndUpdate.yml +1 -8
  916. data/spec/spec_tests/data/client_side_encryption/fle2v2-BypassQueryAnalysis.yml +89 -0
  917. data/spec/spec_tests/data/client_side_encryption/fle2v2-Compact.yml +82 -0
  918. data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection-OldServer.yml +61 -0
  919. data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection.yml +937 -0
  920. data/spec/spec_tests/data/client_side_encryption/fle2v2-DecryptExistingData.yml +66 -0
  921. data/spec/spec_tests/data/client_side_encryption/fle2v2-Delete.yml +100 -0
  922. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-EncryptedFieldsMap.yml +79 -0
  923. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-jsonSchema.yml +102 -0
  924. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFieldsMap-defaults.yml +58 -0
  925. data/spec/spec_tests/data/client_side_encryption/fle2v2-FindOneAndUpdate.yml +200 -0
  926. data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Indexed.yml +96 -0
  927. data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Unindexed.yml +89 -0
  928. data/spec/spec_tests/data/client_side_encryption/fle2v2-MissingKey.yml +43 -0
  929. data/spec/spec_tests/data/client_side_encryption/fle2v2-NoEncryption.yml +44 -0
  930. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Aggregate.yml +241 -0
  931. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Correctness.yml +422 -0
  932. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Delete.yml +182 -0
  933. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-FindOneAndUpdate.yml +239 -0
  934. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-InsertFind.yml +235 -0
  935. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Update.yml +252 -0
  936. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Aggregate.yml +1687 -0
  937. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Correctness.yml +293 -0
  938. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Delete.yml +905 -0
  939. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-FindOneAndUpdate.yml +1684 -0
  940. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-InsertFind.yml +1680 -0
  941. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Update.yml +1697 -0
  942. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Aggregate.yml +329 -0
  943. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Correctness.yml +424 -0
  944. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Delete.yml +226 -0
  945. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-FindOneAndUpdate.yml +327 -0
  946. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-InsertFind.yml +319 -0
  947. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Update.yml +336 -0
  948. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Aggregate.yml +913 -0
  949. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Correctness.yml +292 -0
  950. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Delete.yml +518 -0
  951. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-FindOneAndUpdate.yml +911 -0
  952. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-InsertFind.yml +907 -0
  953. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Update.yml +924 -0
  954. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Aggregate.yml +325 -0
  955. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Correctness.yml +424 -0
  956. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Delete.yml +224 -0
  957. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-FindOneAndUpdate.yml +323 -0
  958. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-InsertFind.yml +319 -0
  959. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Update.yml +338 -0
  960. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Aggregate.yml +241 -0
  961. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Correctness.yml +423 -0
  962. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Delete.yml +182 -0
  963. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-FindOneAndUpdate.yml +239 -0
  964. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-InsertFind.yml +235 -0
  965. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Update.yml +254 -0
  966. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Aggregate.yml +241 -0
  967. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Correctness.yml +422 -0
  968. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Delete.yml +182 -0
  969. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-FindOneAndUpdate.yml +239 -0
  970. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-InsertFind.yml +235 -0
  971. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Update.yml +254 -0
  972. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-WrongType.yml +43 -0
  973. data/spec/spec_tests/data/client_side_encryption/fle2v2-Update.yml +210 -0
  974. data/spec/spec_tests/data/client_side_encryption/fle2v2-validatorAndPartialFieldExpression.yml +169 -0
  975. data/spec/spec_tests/data/client_side_encryption/gcpKMS.yml +46 -0
  976. data/spec/spec_tests/data/client_side_encryption/getMore.yml +1 -8
  977. data/spec/spec_tests/data/client_side_encryption/insert.yml +2 -16
  978. data/spec/spec_tests/data/client_side_encryption/keyAltName.yml +1 -8
  979. data/spec/spec_tests/data/client_side_encryption/localKMS.yml +1 -8
  980. data/spec/spec_tests/data/client_side_encryption/localSchema.yml +1 -8
  981. data/spec/spec_tests/data/client_side_encryption/maxWireVersion.yml +3 -1
  982. data/spec/spec_tests/data/client_side_encryption/missingKey.yml +2 -9
  983. data/spec/spec_tests/data/client_side_encryption/noSchema.yml +39 -0
  984. data/spec/spec_tests/data/client_side_encryption/replaceOne.yml +1 -8
  985. data/spec/spec_tests/data/client_side_encryption/types.yml +44 -70
  986. data/spec/spec_tests/data/client_side_encryption/unified/addKeyAltName.yml +194 -0
  987. data/spec/spec_tests/data/client_side_encryption/unified/createDataKey-kms_providers-invalid.yml +67 -0
  988. data/spec/spec_tests/data/client_side_encryption/unified/createDataKey.yml +309 -0
  989. data/spec/spec_tests/data/client_side_encryption/unified/deleteKey.yml +159 -0
  990. data/spec/spec_tests/data/client_side_encryption/unified/getKey.yml +105 -0
  991. data/spec/spec_tests/data/client_side_encryption/unified/getKeyByAltName.yml +104 -0
  992. data/spec/spec_tests/data/client_side_encryption/unified/getKeys.yml +122 -0
  993. data/spec/spec_tests/data/client_side_encryption/unified/removeKeyAltName.yml +157 -0
  994. data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey-decrypt_failure.yml +69 -0
  995. data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey-encrypt_failure.yml +122 -0
  996. data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey.yml +432 -0
  997. data/spec/spec_tests/data/client_side_encryption/updateMany.yml +1 -8
  998. data/spec/spec_tests/data/client_side_encryption/updateOne.yml +1 -8
  999. data/spec/spec_tests/data/client_side_encryption/validatorAndPartialFieldExpression.yml +166 -0
  1000. data/spec/spec_tests/data/cmap/connection-must-have-id.yml +2 -0
  1001. data/spec/spec_tests/data/cmap/connection-must-order-ids.yml +2 -0
  1002. data/spec/spec_tests/data/cmap/pool-checkin-destroy-closed.yml +2 -0
  1003. data/spec/spec_tests/data/cmap/pool-checkin-destroy-stale.yml +2 -0
  1004. data/spec/spec_tests/data/cmap/pool-checkin-make-available.yml +3 -1
  1005. data/spec/spec_tests/data/cmap/pool-checkin.yml +5 -0
  1006. data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +2 -0
  1007. data/spec/spec_tests/data/cmap/pool-checkout-custom-maxConnecting-is-enforced.yml +50 -0
  1008. data/spec/spec_tests/data/cmap/pool-checkout-error-closed.yml +2 -0
  1009. data/spec/spec_tests/data/cmap/pool-checkout-maxConnecting-is-enforced.yml +81 -0
  1010. data/spec/spec_tests/data/cmap/pool-checkout-maxConnecting-timeout.yml +71 -0
  1011. data/spec/spec_tests/data/cmap/pool-checkout-minPoolSize-connection-maxConnecting.yml +64 -0
  1012. data/spec/spec_tests/data/cmap/pool-checkout-multiple.yml +2 -0
  1013. data/spec/spec_tests/data/cmap/pool-checkout-no-idle.yml +6 -0
  1014. data/spec/spec_tests/data/cmap/pool-checkout-no-stale.yml +8 -0
  1015. data/spec/spec_tests/data/cmap/pool-checkout-returned-connection-maxConnecting.yml +88 -0
  1016. data/spec/spec_tests/data/cmap/pool-clear-interrupting-pending-connections.yml +43 -0
  1017. data/spec/spec_tests/data/cmap/pool-clear-min-size.yml +41 -0
  1018. data/spec/spec_tests/data/cmap/pool-clear-paused.yml +18 -0
  1019. data/spec/spec_tests/data/cmap/pool-clear-ready.yml +39 -0
  1020. data/spec/spec_tests/data/cmap/pool-clear-schedule-run-interruptInUseConnections-false.yml +48 -0
  1021. data/spec/spec_tests/data/cmap/pool-close-destroy-conns.yml +2 -0
  1022. data/spec/spec_tests/data/cmap/pool-create-max-size.yml +2 -0
  1023. data/spec/spec_tests/data/cmap/pool-create-min-size-error.yml +43 -0
  1024. data/spec/spec_tests/data/cmap/pool-create-min-size.yml +9 -0
  1025. data/spec/spec_tests/data/cmap/pool-ready-ready.yml +22 -0
  1026. data/spec/spec_tests/data/cmap/pool-ready.yml +30 -0
  1027. data/spec/spec_tests/data/cmap/wait-queue-fairness.yml +2 -0
  1028. data/spec/spec_tests/data/cmap/wait-queue-timeout.yml +6 -1
  1029. data/spec/spec_tests/data/collection_management/clustered-indexes.yml +135 -0
  1030. data/spec/spec_tests/data/collection_management/createCollection-pre_and_post_images.yml +50 -0
  1031. data/spec/spec_tests/data/collection_management/modifyCollection-errorResponse.yml +59 -0
  1032. data/spec/spec_tests/data/collection_management/modifyCollection-pre_and_post_images.yml +58 -0
  1033. data/spec/spec_tests/data/collection_management/timeseries-collection.yml +35 -0
  1034. data/spec/spec_tests/data/command_monitoring_unified/bulkWrite.yml +68 -0
  1035. data/spec/spec_tests/data/command_monitoring_unified/command.yml +50 -0
  1036. data/spec/spec_tests/data/command_monitoring_unified/deleteMany.yml +79 -0
  1037. data/spec/spec_tests/data/command_monitoring_unified/deleteOne.yml +79 -0
  1038. data/spec/spec_tests/data/command_monitoring_unified/find.yml +254 -0
  1039. data/spec/spec_tests/data/command_monitoring_unified/insertMany.yml +79 -0
  1040. data/spec/spec_tests/data/command_monitoring_unified/insertOne.yml +77 -0
  1041. data/spec/spec_tests/data/command_monitoring_unified/pre-42-server-connection-id.yml +56 -0
  1042. data/spec/spec_tests/data/command_monitoring_unified/redacted-commands.yml +8 -0
  1043. data/spec/spec_tests/data/command_monitoring_unified/server-connection-id.yml +56 -0
  1044. data/spec/spec_tests/data/command_monitoring_unified/unacknowledgedBulkWrite.yml +55 -0
  1045. data/spec/spec_tests/data/command_monitoring_unified/updateMany.yml +87 -0
  1046. data/spec/spec_tests/data/command_monitoring_unified/updateOne.yml +118 -0
  1047. data/spec/spec_tests/data/command_monitoring_unified/writeConcernError.yml +80 -0
  1048. data/spec/spec_tests/data/connection_string/invalid-uris.yml +0 -10
  1049. data/spec/spec_tests/data/connection_string/valid-options.yml +13 -0
  1050. data/spec/spec_tests/data/crud/read/aggregate-collation.yml +1 -1
  1051. data/spec/spec_tests/data/crud/read/count-collation.yml +1 -1
  1052. data/spec/spec_tests/data/crud/read/distinct-collation.yml +1 -1
  1053. data/spec/spec_tests/data/crud/read/find-collation.yml +1 -1
  1054. data/spec/spec_tests/data/crud/write/bulkWrite-collation.yml +1 -1
  1055. data/spec/spec_tests/data/crud/write/deleteMany-collation.yml +1 -1
  1056. data/spec/spec_tests/data/crud/write/deleteOne-collation.yml +1 -1
  1057. data/spec/spec_tests/data/crud/write/findOneAndDelete-collation.yml +1 -1
  1058. data/spec/spec_tests/data/crud/write/findOneAndReplace-collation.yml +1 -1
  1059. data/spec/spec_tests/data/crud/write/findOneAndUpdate-collation.yml +1 -1
  1060. data/spec/spec_tests/data/crud/write/replaceOne-collation.yml +1 -1
  1061. data/spec/spec_tests/data/crud/write/updateMany-collation.yml +1 -1
  1062. data/spec/spec_tests/data/crud/write/updateOne-collation.yml +1 -1
  1063. data/spec/spec_tests/data/crud_unified/aggregate-allowdiskuse.yml +75 -0
  1064. data/spec/spec_tests/data/crud_unified/aggregate-let.yml +138 -0
  1065. data/spec/spec_tests/data/crud_unified/aggregate-merge-errorResponse.yml +42 -0
  1066. data/spec/spec_tests/data/crud_unified/aggregate-merge.yml +185 -0
  1067. data/spec/spec_tests/data/crud_unified/aggregate-out-readConcern.yml +171 -0
  1068. data/spec/spec_tests/data/crud_unified/aggregate-write-readPreference.yml +155 -0
  1069. data/spec/spec_tests/data/crud_unified/aggregate.yml +215 -0
  1070. data/spec/spec_tests/data/crud_unified/bulkWrite-arrayFilters-clientError.yml +98 -0
  1071. data/spec/spec_tests/data/crud_unified/bulkWrite-arrayFilters.yml +174 -0
  1072. data/spec/spec_tests/data/crud_unified/bulkWrite-comment.yml +189 -0
  1073. data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint-clientError.yml +113 -0
  1074. data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint-serverError.yml +142 -0
  1075. data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint.yml +154 -0
  1076. data/spec/spec_tests/data/crud_unified/bulkWrite-deleteMany-hint-unacknowledged.yml +98 -0
  1077. data/spec/spec_tests/data/crud_unified/bulkWrite-deleteMany-let.yml +86 -0
  1078. data/spec/spec_tests/data/crud_unified/bulkWrite-deleteOne-hint-unacknowledged.yml +97 -0
  1079. data/spec/spec_tests/data/crud_unified/bulkWrite-deleteOne-let.yml +86 -0
  1080. data/spec/spec_tests/data/crud_unified/bulkWrite-errorResponse.yml +50 -0
  1081. data/spec/spec_tests/data/crud_unified/bulkWrite-insertOne-dots_and_dollars.yml +138 -0
  1082. data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-dots_and_dollars.yml +165 -0
  1083. data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-hint-unacknowledged.yml +103 -0
  1084. data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-let.yml +93 -0
  1085. data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint-clientError.yml +148 -0
  1086. data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint-serverError.yml +239 -0
  1087. data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint.yml +256 -0
  1088. data/spec/spec_tests/data/crud_unified/bulkWrite-update-validation.yml +73 -0
  1089. data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-dots_and_dollars.yml +150 -0
  1090. data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-hint-unacknowledged.yml +104 -0
  1091. data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-let.yml +96 -0
  1092. data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-dots_and_dollars.yml +150 -0
  1093. data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-hint-unacknowledged.yml +103 -0
  1094. data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-let.yml +95 -0
  1095. data/spec/spec_tests/data/crud_unified/countDocuments-comment.yml +92 -0
  1096. data/spec/spec_tests/data/crud_unified/db-aggregate-write-readPreference.yml +151 -0
  1097. data/spec/spec_tests/data/crud_unified/db-aggregate.yml +73 -0
  1098. data/spec/spec_tests/data/crud_unified/deleteMany-comment.yml +97 -0
  1099. data/spec/spec_tests/data/crud_unified/deleteMany-hint-clientError.yml +87 -0
  1100. data/spec/spec_tests/data/crud_unified/deleteMany-hint-serverError.yml +107 -0
  1101. data/spec/spec_tests/data/crud_unified/deleteMany-hint-unacknowledged.yml +90 -0
  1102. data/spec/spec_tests/data/crud_unified/deleteMany-hint.yml +99 -0
  1103. data/spec/spec_tests/data/crud_unified/deleteMany-let.yml +93 -0
  1104. data/spec/spec_tests/data/crud_unified/deleteOne-comment.yml +98 -0
  1105. data/spec/spec_tests/data/crud_unified/deleteOne-errorResponse.yml +46 -0
  1106. data/spec/spec_tests/data/crud_unified/deleteOne-hint-clientError.yml +80 -0
  1107. data/spec/spec_tests/data/crud_unified/deleteOne-hint-serverError.yml +100 -0
  1108. data/spec/spec_tests/data/crud_unified/deleteOne-hint-unacknowledged.yml +89 -0
  1109. data/spec/spec_tests/data/crud_unified/deleteOne-hint.yml +95 -0
  1110. data/spec/spec_tests/data/crud_unified/deleteOne-let.yml +91 -0
  1111. data/spec/spec_tests/data/crud_unified/distinct-comment.yml +98 -0
  1112. data/spec/spec_tests/data/crud_unified/estimatedDocumentCount-comment.yml +95 -0
  1113. data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +49 -135
  1114. data/spec/spec_tests/data/crud_unified/find-allowdiskuse-clientError.yml +55 -0
  1115. data/spec/spec_tests/data/crud_unified/find-allowdiskuse-serverError.yml +68 -0
  1116. data/spec/spec_tests/data/crud_unified/find-allowdiskuse.yml +79 -0
  1117. data/spec/spec_tests/data/crud_unified/find-comment.yml +166 -0
  1118. data/spec/spec_tests/data/crud_unified/find-let.yml +71 -0
  1119. data/spec/spec_tests/data/crud_unified/find-test-all-options.yml +348 -0
  1120. data/spec/spec_tests/data/crud_unified/find.yml +68 -0
  1121. data/spec/spec_tests/data/crud_unified/findOneAndDelete-comment.yml +96 -0
  1122. data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-clientError.yml +91 -0
  1123. data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-serverError.yml +107 -0
  1124. data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-unacknowledged.yml +88 -0
  1125. data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint.yml +102 -0
  1126. data/spec/spec_tests/data/crud_unified/findOneAndDelete-let.yml +86 -0
  1127. data/spec/spec_tests/data/crud_unified/findOneAndReplace-comment.yml +101 -0
  1128. data/spec/spec_tests/data/crud_unified/findOneAndReplace-dots_and_dollars.yml +140 -0
  1129. data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-clientError.yml +83 -0
  1130. data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-serverError.yml +99 -0
  1131. data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-unacknowledged.yml +96 -0
  1132. data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint.yml +98 -0
  1133. data/spec/spec_tests/data/crud_unified/findOneAndReplace-let.yml +94 -0
  1134. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-comment.yml +95 -0
  1135. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-dots_and_dollars.yml +127 -0
  1136. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-errorResponse.yml +69 -0
  1137. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-clientError.yml +84 -0
  1138. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-serverError.yml +100 -0
  1139. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-unacknowledged.yml +92 -0
  1140. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint.yml +99 -0
  1141. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-let.yml +96 -0
  1142. data/spec/spec_tests/data/crud_unified/insertMany-comment.yml +93 -0
  1143. data/spec/spec_tests/data/crud_unified/insertMany-dots_and_dollars.yml +128 -0
  1144. data/spec/spec_tests/data/crud_unified/insertOne-comment.yml +91 -0
  1145. data/spec/spec_tests/data/crud_unified/insertOne-dots_and_dollars.yml +238 -0
  1146. data/spec/spec_tests/data/crud_unified/insertOne-errorResponse.yml +46 -0
  1147. data/spec/spec_tests/data/crud_unified/replaceOne-comment.yml +105 -0
  1148. data/spec/spec_tests/data/crud_unified/replaceOne-dots_and_dollars.yml +180 -0
  1149. data/spec/spec_tests/data/crud_unified/replaceOne-hint-unacknowledged.yml +95 -0
  1150. data/spec/spec_tests/data/crud_unified/replaceOne-hint.yml +108 -0
  1151. data/spec/spec_tests/data/crud_unified/replaceOne-let.yml +98 -0
  1152. data/spec/spec_tests/data/crud_unified/replaceOne-validation.yml +37 -0
  1153. data/spec/spec_tests/data/crud_unified/updateMany-comment.yml +104 -0
  1154. data/spec/spec_tests/data/crud_unified/updateMany-dots_and_dollars.yml +138 -0
  1155. data/spec/spec_tests/data/crud_unified/updateMany-hint-clientError.yml +91 -0
  1156. data/spec/spec_tests/data/crud_unified/updateMany-hint-serverError.yml +115 -0
  1157. data/spec/spec_tests/data/crud_unified/updateMany-hint-unacknowledged.yml +96 -0
  1158. data/spec/spec_tests/data/crud_unified/updateMany-hint.yml +115 -0
  1159. data/spec/spec_tests/data/crud_unified/updateMany-let.yml +107 -0
  1160. data/spec/spec_tests/data/crud_unified/updateMany-validation.yml +39 -0
  1161. data/spec/spec_tests/data/crud_unified/updateOne-comment.yml +104 -0
  1162. data/spec/spec_tests/data/crud_unified/updateOne-dots_and_dollars.yml +138 -0
  1163. data/spec/spec_tests/data/crud_unified/updateOne-errorResponse.yml +47 -0
  1164. data/spec/spec_tests/data/crud_unified/updateOne-hint-clientError.yml +85 -0
  1165. data/spec/spec_tests/data/crud_unified/updateOne-hint-serverError.yml +109 -0
  1166. data/spec/spec_tests/data/crud_unified/updateOne-hint-unacknowledged.yml +95 -0
  1167. data/spec/spec_tests/data/crud_unified/updateOne-hint.yml +109 -0
  1168. data/spec/spec_tests/data/crud_unified/updateOne-let.yml +102 -0
  1169. data/spec/spec_tests/data/crud_unified/updateOne-validation.yml +37 -0
  1170. data/spec/spec_tests/data/crud_unified/updateWithPipelines.yml +8 -14
  1171. data/spec/spec_tests/data/gridfs_unified/delete.yml +198 -0
  1172. data/spec/spec_tests/data/gridfs_unified/download.yml +241 -0
  1173. data/spec/spec_tests/data/gridfs_unified/downloadByName.yml +159 -0
  1174. data/spec/spec_tests/data/gridfs_unified/upload-disableMD5.yml +92 -0
  1175. data/spec/spec_tests/data/gridfs_unified/upload.yml +288 -0
  1176. data/spec/spec_tests/data/index_management/createSearchIndex.yml +64 -0
  1177. data/spec/spec_tests/data/index_management/createSearchIndexes.yml +86 -0
  1178. data/spec/spec_tests/data/index_management/dropSearchIndex.yml +43 -0
  1179. data/spec/spec_tests/data/index_management/listSearchIndexes.yml +91 -0
  1180. data/spec/spec_tests/data/index_management/updateSearchIndex.yml +46 -0
  1181. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/DefaultNoMaxStaleness.yml +2 -2
  1182. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/LastUpdateTime.yml +3 -3
  1183. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest.yml +3 -3
  1184. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest2.yml +3 -3
  1185. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred.yml +2 -2
  1186. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred_tags.yml +2 -2
  1187. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Secondary.yml +4 -4
  1188. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred.yml +2 -2
  1189. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred_tags.yml +4 -4
  1190. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/ZeroMaxStaleness.yml +2 -2
  1191. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/DefaultNoMaxStaleness.yml +2 -2
  1192. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LastUpdateTime.yml +3 -3
  1193. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat.yml +2 -2
  1194. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat2.yml +2 -2
  1195. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessTooSmall.yml +2 -2
  1196. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessWithModePrimary.yml +2 -2
  1197. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest.yml +3 -3
  1198. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest2.yml +3 -3
  1199. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest_tags.yml +2 -2
  1200. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred.yml +2 -2
  1201. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred.yml +2 -2
  1202. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags.yml +5 -5
  1203. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags2.yml +3 -3
  1204. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags.yml +5 -5
  1205. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags2.yml +3 -3
  1206. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/ZeroMaxStaleness.yml +2 -2
  1207. data/spec/spec_tests/data/max_staleness/Sharded/SmallMaxStaleness.yml +2 -2
  1208. data/spec/spec_tests/data/max_staleness/Single/SmallMaxStaleness.yml +1 -1
  1209. data/spec/spec_tests/data/max_staleness/Unknown/SmallMaxStaleness.yml +1 -1
  1210. data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount-serverErrors-pre4.9.yml → legacy/estimatedDocumentCount-serverErrors.yml} +0 -2
  1211. data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount-pre4.9.yml → legacy/estimatedDocumentCount.yml} +0 -2
  1212. data/spec/spec_tests/data/retryable_reads/unified/handshakeError.yml +1342 -0
  1213. data/spec/spec_tests/data/retryable_writes/{bulkWrite-serverErrors.yml → legacy/bulkWrite-serverErrors.yml} +1 -1
  1214. data/spec/spec_tests/data/retryable_writes/{deleteOne-serverErrors.yml → legacy/deleteOne-serverErrors.yml} +1 -1
  1215. data/spec/spec_tests/data/retryable_writes/{findOneAndDelete-serverErrors.yml → legacy/findOneAndDelete-serverErrors.yml} +1 -1
  1216. data/spec/spec_tests/data/retryable_writes/{findOneAndReplace-serverErrors.yml → legacy/findOneAndReplace-serverErrors.yml} +1 -1
  1217. data/spec/spec_tests/data/retryable_writes/{findOneAndUpdate-serverErrors.yml → legacy/findOneAndUpdate-serverErrors.yml} +1 -1
  1218. data/spec/spec_tests/data/retryable_writes/{insertMany-serverErrors.yml → legacy/insertMany-serverErrors.yml} +1 -1
  1219. data/spec/spec_tests/data/retryable_writes/{insertOne-serverErrors.yml → legacy/insertOne-serverErrors.yml} +5 -5
  1220. data/spec/spec_tests/data/retryable_writes/{replaceOne-serverErrors.yml → legacy/replaceOne-serverErrors.yml} +1 -1
  1221. data/spec/spec_tests/data/retryable_writes/{updateOne-serverErrors.yml → legacy/updateOne-serverErrors.yml} +1 -1
  1222. data/spec/spec_tests/data/retryable_writes/unified/bulkWrite-serverErrors.yml +93 -0
  1223. data/spec/spec_tests/data/retryable_writes/unified/handshakeError.yml +785 -0
  1224. data/spec/spec_tests/data/retryable_writes/unified/insertOne-noWritesPerformedError.yml +54 -0
  1225. data/spec/spec_tests/data/retryable_writes/unified/insertOne-serverErrors.yml +75 -0
  1226. data/spec/spec_tests/data/run_command_unified/runCommand.yml +319 -0
  1227. data/spec/spec_tests/data/sdam/errors/prefer-error-code.yml +2 -2
  1228. data/spec/spec_tests/data/sdam/rs/electionId_precedence_setVersion.yml +62 -0
  1229. data/spec/spec_tests/data/sdam/rs/null_election_id-pre-6.0.yml +175 -0
  1230. data/spec/spec_tests/data/sdam/rs/null_election_id.yml +20 -18
  1231. data/spec/spec_tests/data/sdam/rs/secondary_ignore_ok_0-pre-6.0.yml +87 -0
  1232. data/spec/spec_tests/data/sdam/rs/secondary_ignore_ok_0.yml +1 -1
  1233. data/spec/spec_tests/data/sdam/rs/set_version_can_rollback.yml +101 -0
  1234. data/spec/spec_tests/data/sdam/rs/setversion_equal_max_without_electionid.yml +78 -0
  1235. data/spec/spec_tests/data/sdam/rs/setversion_greaterthan_max_without_electionid.yml +79 -0
  1236. data/spec/spec_tests/data/sdam/rs/setversion_without_electionid-pre-6.0.yml +79 -0
  1237. data/spec/spec_tests/data/sdam/rs/setversion_without_electionid.yml +9 -10
  1238. data/spec/spec_tests/data/sdam/rs/use_setversion_without_electionid-pre-6.0.yml +117 -0
  1239. data/spec/spec_tests/data/sdam/rs/use_setversion_without_electionid.yml +23 -21
  1240. data/spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml +1 -1
  1241. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_no_primary.yml +38 -39
  1242. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_primary.yml +38 -39
  1243. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml +1 -1
  1244. data/spec/spec_tests/data/sdam_monitoring/required_replica_set.yml +1 -1
  1245. data/spec/spec_tests/data/sdam_monitoring/standalone.yml +1 -1
  1246. data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +2 -2
  1247. data/spec/spec_tests/data/sdam_unified/auth-error.yml +130 -0
  1248. data/spec/spec_tests/data/sdam_unified/auth-misc-command-error.yml +132 -0
  1249. data/spec/spec_tests/data/sdam_unified/auth-network-error.yml +132 -0
  1250. data/spec/spec_tests/data/sdam_unified/auth-network-timeout-error.yml +138 -0
  1251. data/spec/spec_tests/data/sdam_unified/auth-shutdown-error.yml +133 -0
  1252. data/spec/spec_tests/data/sdam_unified/cancel-server-check.yml +143 -0
  1253. data/spec/spec_tests/data/sdam_unified/connectTimeoutMS.yml +130 -0
  1254. data/spec/spec_tests/data/sdam_unified/find-network-error.yml +135 -0
  1255. data/spec/spec_tests/data/sdam_unified/find-network-timeout-error.yml +119 -0
  1256. data/spec/spec_tests/data/sdam_unified/find-shutdown-error.yml +163 -0
  1257. data/spec/spec_tests/data/sdam_unified/hello-command-error.yml +233 -0
  1258. data/spec/spec_tests/data/sdam_unified/hello-network-error.yml +228 -0
  1259. data/spec/spec_tests/data/sdam_unified/hello-timeout.yml +318 -0
  1260. data/spec/spec_tests/data/sdam_unified/insert-network-error.yml +137 -0
  1261. data/spec/spec_tests/data/sdam_unified/insert-shutdown-error.yml +162 -0
  1262. data/spec/spec_tests/data/sdam_unified/interruptInUse-pool-clear.yml +340 -0
  1263. data/spec/spec_tests/data/sdam_unified/minPoolSize-error.yml +125 -0
  1264. data/spec/spec_tests/data/sdam_unified/pool-cleared-error.yml +239 -0
  1265. data/spec/spec_tests/data/sdam_unified/rediscover-quickly-after-step-down.yml +144 -0
  1266. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-directConnection.yml +6 -5
  1267. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-no-results.yml +5 -0
  1268. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-replicaSet-errors.yml +2 -2
  1269. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-true-txt.yml +5 -4
  1270. data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-conflicts_with_loadBalanced-true-txt.yml +5 -0
  1271. data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-conflicts_with_loadBalanced-true.yml +5 -0
  1272. data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero-txt.yml +11 -0
  1273. data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero.yml +11 -0
  1274. data/spec/spec_tests/data/seed_list_discovery/replica-set/srv-service-name.yml +11 -0
  1275. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-conflicts_with_replicaSet-txt.yml +5 -0
  1276. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-conflicts_with_replicaSet.yml +5 -0
  1277. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-equal_to_srv_records.yml +16 -0
  1278. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-greater_than_srv_records.yml +15 -0
  1279. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-less_than_srv_records.yml +15 -0
  1280. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-zero-txt.yml +15 -0
  1281. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-zero.yml +15 -0
  1282. data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-equal_to_srv_records.yml +13 -0
  1283. data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-greater_than_srv_records.yml +12 -0
  1284. data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-less_than_srv_records.yml +10 -0
  1285. data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-zero.yml +11 -0
  1286. data/spec/spec_tests/data/server_selection/Unknown/read/ghost.yml +11 -0
  1287. data/spec/spec_tests/data/server_selection/Unknown/write/ghost.yml +11 -0
  1288. data/spec/spec_tests/data/sessions_unified/driver-sessions-dirty-session-errors.yml +351 -0
  1289. data/spec/spec_tests/data/sessions_unified/driver-sessions-server-support.yml +123 -0
  1290. data/spec/spec_tests/data/sessions_unified/implicit-sessions-default-causal-consistency.yml +119 -0
  1291. data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-client-error.yml +75 -0
  1292. data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-server-error.yml +102 -0
  1293. data/spec/spec_tests/data/sessions_unified/snapshot-sessions-unsupported-ops.yml +258 -0
  1294. data/spec/spec_tests/data/sessions_unified/snapshot-sessions.yml +482 -0
  1295. data/spec/spec_tests/data/transactions/error-labels.yml +1 -1
  1296. data/spec/spec_tests/data/transactions/errors-client.yml +8 -9
  1297. data/spec/spec_tests/data/transactions/mongos-recovery-token.yml +1 -1
  1298. data/spec/spec_tests/data/transactions/retryable-abort-errorLabels.yml +0 -2
  1299. data/spec/spec_tests/data/transactions/retryable-abort.yml +7 -9
  1300. data/spec/spec_tests/data/transactions/retryable-commit-errorLabels.yml +0 -2
  1301. data/spec/spec_tests/data/transactions/retryable-commit.yml +7 -9
  1302. data/spec/spec_tests/data/transactions/retryable-writes.yml +0 -2
  1303. data/spec/spec_tests/data/transactions_unified/do-not-retry-read-in-transaction.yml +64 -0
  1304. data/spec/spec_tests/data/transactions_unified/mongos-unpin.yml +1 -1
  1305. data/spec/spec_tests/data/transactions_unified/retryable-abort-handshake.yml +118 -0
  1306. data/spec/spec_tests/data/transactions_unified/retryable-commit-handshake.yml +118 -0
  1307. data/spec/spec_tests/data/unified/valid-fail/entity-findCursor-malformed.yml +31 -0
  1308. data/spec/spec_tests/data/unified/valid-fail/entity-findCursor.yml +31 -0
  1309. data/spec/spec_tests/data/unified/valid-fail/ignoreResultAndError-malformed.yml +34 -0
  1310. data/spec/spec_tests/data/unified/valid-fail/ignoreResultAndError.yml +35 -0
  1311. data/spec/spec_tests/data/unified/valid-fail/operation-unsupported.yml +13 -0
  1312. data/spec/spec_tests/data/unified/valid-pass/assertNumberConnectionsCheckedOut.yml +17 -0
  1313. data/spec/spec_tests/data/unified/valid-pass/collectionData-createOptions.yml +37 -0
  1314. data/spec/spec_tests/data/unified/valid-pass/entity-client-cmap-events.yml +40 -0
  1315. data/spec/spec_tests/data/unified/valid-pass/entity-client-storeEventsAsEntities.yml +37 -0
  1316. data/spec/spec_tests/data/unified/valid-pass/expectedError-errorResponse.yml +39 -0
  1317. data/spec/spec_tests/data/unified/valid-pass/expectedEventsForClient-eventType.yml +66 -0
  1318. data/spec/spec_tests/data/unified/valid-pass/expectedEventsForClient-ignoreExtraEvents.yml +78 -0
  1319. data/spec/spec_tests/data/unified/valid-pass/ignoreResultAndError.yml +34 -0
  1320. data/spec/spec_tests/data/unified/valid-pass/observeSensitiveCommands.yml +255 -0
  1321. data/spec/spec_tests/data/unified/valid-pass/poc-change-streams.yml +22 -1
  1322. data/spec/spec_tests/data/unified/valid-pass/poc-command-monitoring.yml +3 -3
  1323. data/spec/spec_tests/data/unified/valid-pass/poc-crud.yml +19 -13
  1324. data/spec/spec_tests/data/unified/valid-pass/poc-retryable-reads.yml +3 -3
  1325. data/spec/spec_tests/data/unified/valid-pass/poc-retryable-writes.yml +9 -9
  1326. data/spec/spec_tests/data/unified/valid-pass/poc-sessions.yml +3 -4
  1327. data/spec/spec_tests/data/unified/valid-pass/poc-transactions-convenient-api.yml +1 -1
  1328. data/spec/spec_tests/data/unified/valid-pass/poc-transactions-mongos-pin-auto.yml +1 -1
  1329. data/spec/spec_tests/data/unified/valid-pass/poc-transactions.yml +6 -5
  1330. data/spec/spec_tests/data/uri_options/srv-options.yml +96 -0
  1331. data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +6 -4
  1332. data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +7 -5
  1333. data/spec/spec_tests/data/versioned_api/transaction-handling.yml +4 -4
  1334. data/spec/spec_tests/gridfs_spec.rb +1 -1
  1335. data/spec/spec_tests/gridfs_unified_spec.rb +13 -0
  1336. data/spec/spec_tests/index_management_unified_spec.rb +13 -0
  1337. data/spec/spec_tests/load_balancers_spec.rb +1 -1
  1338. data/spec/spec_tests/max_staleness_spec.rb +1 -1
  1339. data/spec/spec_tests/read_write_concern_connection_string_spec.rb +1 -1
  1340. data/spec/spec_tests/read_write_concern_document_spec.rb +1 -1
  1341. data/spec/spec_tests/read_write_concern_operaton_spec.rb +1 -1
  1342. data/spec/spec_tests/retryable_reads_spec.rb +7 -2
  1343. data/spec/spec_tests/retryable_reads_unified_spec.rb +22 -0
  1344. data/spec/spec_tests/retryable_writes_spec.rb +5 -2
  1345. data/spec/spec_tests/retryable_writes_unified_spec.rb +21 -0
  1346. data/spec/spec_tests/run_command_unified_spec.rb +13 -0
  1347. data/spec/spec_tests/sdam_monitoring_spec.rb +1 -1
  1348. data/spec/spec_tests/sdam_spec.rb +5 -1
  1349. data/spec/spec_tests/sdam_unified_spec.rb +15 -0
  1350. data/spec/spec_tests/seed_list_discovery_spec.rb +11 -2
  1351. data/spec/spec_tests/server_selection_rtt_spec.rb +1 -1
  1352. data/spec/spec_tests/server_selection_spec.rb +1 -1
  1353. data/spec/spec_tests/sessions_unified_spec.rb +13 -0
  1354. data/spec/spec_tests/transactions_api_spec.rb +1 -1
  1355. data/spec/spec_tests/transactions_spec.rb +1 -1
  1356. data/spec/spec_tests/transactions_unified_spec.rb +1 -1
  1357. data/spec/spec_tests/unified_spec.rb +2 -2
  1358. data/spec/spec_tests/uri_options_spec.rb +1 -1
  1359. data/spec/spec_tests/versioned_api_spec.rb +1 -1
  1360. data/spec/stress/cleanup_spec.rb +1 -1
  1361. data/spec/stress/connection_pool_stress_spec.rb +1 -62
  1362. data/spec/stress/connection_pool_timing_spec.rb +12 -36
  1363. data/spec/stress/fork_reconnect_stress_spec.rb +10 -10
  1364. data/spec/stress/push_monitor_close_spec.rb +1 -1
  1365. data/spec/support/authorization.rb +2 -2
  1366. data/spec/support/aws_utils/base.rb +1 -1
  1367. data/spec/support/aws_utils/inspector.rb +1 -1
  1368. data/spec/support/aws_utils/orchestrator.rb +20 -8
  1369. data/spec/support/aws_utils/provisioner.rb +1 -1
  1370. data/spec/support/aws_utils.rb +4 -3
  1371. data/spec/support/background_thread_registry.rb +4 -14
  1372. data/spec/support/certificates/atlas-ocsp-ca.crt +67 -67
  1373. data/spec/support/certificates/atlas-ocsp.crt +103 -103
  1374. data/spec/support/certificates/retrieve-atlas-cert +40 -0
  1375. data/spec/support/client_registry.rb +6 -2
  1376. data/spec/support/client_registry_macros.rb +1 -1
  1377. data/spec/support/cluster_tools.rb +14 -9
  1378. data/spec/support/common_shortcuts.rb +52 -5
  1379. data/spec/support/constraints.rb +21 -1
  1380. data/spec/support/crypt/corpus/corpus-encrypted.json +9515 -0
  1381. data/spec/support/crypt/corpus/corpus-key-aws.json +32 -32
  1382. data/spec/support/crypt/corpus/corpus-key-azure.json +33 -0
  1383. data/spec/support/crypt/corpus/corpus-key-gcp.json +35 -0
  1384. data/spec/support/crypt/corpus/corpus-key-kmip.json +32 -0
  1385. data/spec/support/crypt/corpus/corpus-key-local.json +30 -30
  1386. data/spec/support/crypt/corpus/corpus-schema.json +4399 -121
  1387. data/spec/support/crypt/corpus/corpus.json +4999 -37
  1388. data/spec/support/crypt/data_keys/key_document_azure.json +33 -0
  1389. data/spec/support/crypt/data_keys/key_document_gcp.json +37 -0
  1390. data/spec/support/crypt/data_keys/key_document_kmip.json +32 -0
  1391. data/spec/support/crypt/encrypted_fields/encryptedFields.json +32 -0
  1392. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Date.json +30 -0
  1393. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalNoPrecision.json +21 -0
  1394. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalPrecision.json +29 -0
  1395. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoubleNoPrecision.json +21 -0
  1396. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoublePrecision.json +30 -0
  1397. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Int.json +27 -0
  1398. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Long.json +27 -0
  1399. data/spec/support/crypt/keys/key1-document.json +30 -0
  1400. data/spec/support/crypt/schema_maps/schema_map_azure.json +17 -0
  1401. data/spec/support/crypt/schema_maps/schema_map_azure_key_alt_names.json +12 -0
  1402. data/spec/support/crypt/schema_maps/schema_map_gcp.json +17 -0
  1403. data/spec/support/crypt/schema_maps/schema_map_gcp_key_alt_names.json +12 -0
  1404. data/spec/support/crypt/schema_maps/schema_map_kmip.json +17 -0
  1405. data/spec/support/crypt/schema_maps/schema_map_kmip_key_alt_names.json +12 -0
  1406. data/spec/support/crypt.rb +269 -14
  1407. data/spec/support/dns.rb +1 -1
  1408. data/spec/support/faas/app/aws_lambda/mongodb/Gemfile.lock +19 -0
  1409. data/spec/support/json_ext_formatter.rb +1 -1
  1410. data/spec/support/keyword_struct.rb +1 -1
  1411. data/spec/support/local_resource_registry.rb +1 -1
  1412. data/spec/support/macros.rb +29 -0
  1413. data/spec/support/matchers.rb +5 -5
  1414. data/spec/support/mongos_macros.rb +24 -0
  1415. data/spec/support/monitoring_ext.rb +1 -1
  1416. data/spec/support/ocsp +1 -1
  1417. data/spec/support/primary_socket.rb +1 -1
  1418. data/spec/support/recording_logger.rb +27 -0
  1419. data/spec/support/sdam_formatter_integration.rb +1 -1
  1420. data/spec/support/shared/app_metadata.rb +15 -3
  1421. data/spec/support/shared/auth_context.rb +1 -0
  1422. data/spec/support/shared/protocol.rb +1 -1
  1423. data/spec/support/shared/scram_conversation.rb +3 -2
  1424. data/spec/support/shared/server_selector.rb +1 -1
  1425. data/spec/support/shared/session.rb +14 -8
  1426. data/spec/support/spec_config.rb +133 -2
  1427. data/spec/support/spec_setup.rb +1 -1
  1428. data/spec/support/using_hash.rb +11 -2
  1429. data/spec/support/utils.rb +277 -228
  1430. data.tar.gz.sig +0 -0
  1431. metadata +1868 -1248
  1432. metadata.gz.sig +0 -0
  1433. data/lib/mongo/operation/aggregate/command.rb +0 -55
  1434. data/lib/mongo/operation/collections_info/command.rb +0 -48
  1435. data/lib/mongo/operation/count/command.rb +0 -47
  1436. data/lib/mongo/operation/create/command.rb +0 -47
  1437. data/lib/mongo/operation/create_index/command.rb +0 -61
  1438. data/lib/mongo/operation/delete/command.rb +0 -52
  1439. data/lib/mongo/operation/delete/legacy.rb +0 -64
  1440. data/lib/mongo/operation/distinct/command.rb +0 -47
  1441. data/lib/mongo/operation/drop_database/command.rb +0 -41
  1442. data/lib/mongo/operation/explain/command.rb +0 -58
  1443. data/lib/mongo/operation/explain/legacy.rb +0 -52
  1444. data/lib/mongo/operation/find/builder/legacy.rb +0 -123
  1445. data/lib/mongo/operation/find/command.rb +0 -51
  1446. data/lib/mongo/operation/find/legacy/result.rb +0 -46
  1447. data/lib/mongo/operation/find/legacy.rb +0 -52
  1448. data/lib/mongo/operation/indexes/command.rb +0 -42
  1449. data/lib/mongo/operation/indexes/legacy.rb +0 -48
  1450. data/lib/mongo/operation/insert/command.rb +0 -59
  1451. data/lib/mongo/operation/insert/legacy.rb +0 -68
  1452. data/lib/mongo/operation/kill_cursors/command.rb +0 -48
  1453. data/lib/mongo/operation/list_collections/command.rb +0 -46
  1454. data/lib/mongo/operation/map_reduce/command.rb +0 -51
  1455. data/lib/mongo/operation/parallel_scan/command.rb +0 -57
  1456. data/lib/mongo/operation/remove_user/command.rb +0 -46
  1457. data/lib/mongo/operation/shared/op_msg_or_find_command.rb +0 -44
  1458. data/lib/mongo/operation/update/command.rb +0 -53
  1459. data/lib/mongo/operation/update/legacy/result.rb +0 -112
  1460. data/lib/mongo/operation/update/legacy.rb +0 -76
  1461. data/lib/mongo/operation/users_info/command.rb +0 -46
  1462. data/lib/mongo/operation/write_command/command.rb +0 -51
  1463. data/lib/mongo/protocol/delete.rb +0 -172
  1464. data/lib/mongo/protocol/insert.rb +0 -181
  1465. data/lib/mongo/protocol/update.rb +0 -214
  1466. data/spec/mongo/dbref_spec.rb +0 -152
  1467. data/spec/mongo/operation/delete/command_spec.rb +0 -115
  1468. data/spec/mongo/operation/find/legacy_spec.rb +0 -131
  1469. data/spec/mongo/operation/get_more_spec.rb +0 -63
  1470. data/spec/mongo/operation/insert/command_spec.rb +0 -118
  1471. data/spec/mongo/operation/kill_cursors_spec.rb +0 -47
  1472. data/spec/mongo/operation/update/command_spec.rb +0 -122
  1473. data/spec/mongo/protocol/delete_spec.rb +0 -185
  1474. data/spec/mongo/protocol/insert_spec.rb +0 -179
  1475. data/spec/mongo/protocol/update_spec.rb +0 -204
  1476. data/spec/spec_tests/change_streams_spec.rb +0 -93
  1477. data/spec/spec_tests/command_monitoring_spec.rb +0 -71
  1478. data/spec/spec_tests/data/change_streams/change-streams-errors.yml +0 -101
  1479. data/spec/spec_tests/data/change_streams/change-streams-resume-allowlist.yml +0 -1173
  1480. data/spec/spec_tests/data/change_streams/change-streams-resume-errorLabels.yml +0 -1105
  1481. data/spec/spec_tests/data/change_streams/change-streams.yml +0 -535
  1482. data/spec/spec_tests/data/command_monitoring/bulkWrite.yml +0 -49
  1483. data/spec/spec_tests/data/command_monitoring/command.yml +0 -61
  1484. data/spec/spec_tests/data/command_monitoring/deleteMany.yml +0 -55
  1485. data/spec/spec_tests/data/command_monitoring/deleteOne.yml +0 -55
  1486. data/spec/spec_tests/data/command_monitoring/find.yml +0 -266
  1487. data/spec/spec_tests/data/command_monitoring/insertMany.yml +0 -75
  1488. data/spec/spec_tests/data/command_monitoring/insertOne.yml +0 -51
  1489. data/spec/spec_tests/data/command_monitoring/unacknowledgedBulkWrite.yml +0 -34
  1490. data/spec/spec_tests/data/command_monitoring/updateMany.yml +0 -65
  1491. data/spec/spec_tests/data/command_monitoring/updateOne.yml +0 -90
  1492. data/spec/spec_tests/data/crud_v2/aggregate-merge.yml +0 -103
  1493. data/spec/spec_tests/data/crud_v2/aggregate-out-readConcern.yml +0 -111
  1494. data/spec/spec_tests/data/crud_v2/bulkWrite-arrayFilters.yml +0 -103
  1495. data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint-clientError.yml +0 -63
  1496. data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint-serverError.yml +0 -92
  1497. data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint.yml +0 -103
  1498. data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint-clientError.yml +0 -90
  1499. data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint-serverError.yml +0 -147
  1500. data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint.yml +0 -164
  1501. data/spec/spec_tests/data/crud_v2/db-aggregate.yml +0 -39
  1502. data/spec/spec_tests/data/crud_v2/deleteMany-hint-clientError.yml +0 -43
  1503. data/spec/spec_tests/data/crud_v2/deleteMany-hint-serverError.yml +0 -62
  1504. data/spec/spec_tests/data/crud_v2/deleteMany-hint.yml +0 -58
  1505. data/spec/spec_tests/data/crud_v2/deleteOne-hint-clientError.yml +0 -41
  1506. data/spec/spec_tests/data/crud_v2/deleteOne-hint-serverError.yml +0 -60
  1507. data/spec/spec_tests/data/crud_v2/deleteOne-hint.yml +0 -57
  1508. data/spec/spec_tests/data/crud_v2/find-allowdiskuse-clientError.yml +0 -28
  1509. data/spec/spec_tests/data/crud_v2/find-allowdiskuse-serverError.yml +0 -44
  1510. data/spec/spec_tests/data/crud_v2/find-allowdiskuse.yml +0 -50
  1511. data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint-clientError.yml +0 -45
  1512. data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint-serverError.yml +0 -60
  1513. data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint.yml +0 -56
  1514. data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint-clientError.yml +0 -40
  1515. data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint-serverError.yml +0 -59
  1516. data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint.yml +0 -55
  1517. data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint-clientError.yml +0 -40
  1518. data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint-serverError.yml +0 -58
  1519. data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint.yml +0 -55
  1520. data/spec/spec_tests/data/crud_v2/replaceOne-hint.yml +0 -61
  1521. data/spec/spec_tests/data/crud_v2/unacknowledged-bulkWrite-delete-hint-clientError.yml +0 -60
  1522. data/spec/spec_tests/data/crud_v2/unacknowledged-bulkWrite-update-hint-clientError.yml +0 -88
  1523. data/spec/spec_tests/data/crud_v2/unacknowledged-deleteMany-hint-clientError.yml +0 -40
  1524. data/spec/spec_tests/data/crud_v2/unacknowledged-deleteOne-hint-clientError.yml +0 -38
  1525. data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndDelete-hint-clientError.yml +0 -42
  1526. data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndReplace-hint-clientError.yml +0 -40
  1527. data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndUpdate-hint-clientError.yml +0 -40
  1528. data/spec/spec_tests/data/crud_v2/unacknowledged-replaceOne-hint-clientError.yml +0 -40
  1529. data/spec/spec_tests/data/crud_v2/unacknowledged-updateMany-hint-clientError.yml +0 -43
  1530. data/spec/spec_tests/data/crud_v2/unacknowledged-updateOne-hint-clientError.yml +0 -40
  1531. data/spec/spec_tests/data/crud_v2/updateMany-hint-clientError.yml +0 -45
  1532. data/spec/spec_tests/data/crud_v2/updateMany-hint-serverError.yml +0 -66
  1533. data/spec/spec_tests/data/crud_v2/updateMany-hint.yml +0 -65
  1534. data/spec/spec_tests/data/crud_v2/updateOne-hint-clientError.yml +0 -43
  1535. data/spec/spec_tests/data/crud_v2/updateOne-hint-serverError.yml +0 -62
  1536. data/spec/spec_tests/data/crud_v2/updateOne-hint.yml +0 -61
  1537. data/spec/spec_tests/data/crud_v2/updateWithPipelines.yml +0 -157
  1538. data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-4.9.yml +0 -60
  1539. data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors-4.9.yml +0 -146
  1540. data/spec/spec_tests/data/sdam_integration/cancel-server-check.yml +0 -96
  1541. data/spec/spec_tests/data/sdam_integration/connectTimeoutMS.yml +0 -88
  1542. data/spec/spec_tests/data/sdam_integration/find-network-error.yml +0 -85
  1543. data/spec/spec_tests/data/sdam_integration/find-shutdown-error.yml +0 -118
  1544. data/spec/spec_tests/data/sdam_integration/hello-command-error.yml +0 -160
  1545. data/spec/spec_tests/data/sdam_integration/hello-network-error.yml +0 -158
  1546. data/spec/spec_tests/data/sdam_integration/hello-timeout.yml +0 -225
  1547. data/spec/spec_tests/data/sdam_integration/insert-network-error.yml +0 -88
  1548. data/spec/spec_tests/data/sdam_integration/insert-shutdown-error.yml +0 -117
  1549. data/spec/spec_tests/data/sdam_integration/rediscover-quickly-after-step-down.yml +0 -98
  1550. data/spec/spec_tests/sdam_integration_spec.rb +0 -16
  1551. data/spec/support/crypt/corpus/corpus_encrypted.json +0 -4152
  1552. data/spec/support/session_registry.rb +0 -55
  1553. /data/spec/spec_tests/data/retryable_reads/{aggregate-merge.yml → legacy/aggregate-merge.yml} +0 -0
  1554. /data/spec/spec_tests/data/retryable_reads/{aggregate-serverErrors.yml → legacy/aggregate-serverErrors.yml} +0 -0
  1555. /data/spec/spec_tests/data/retryable_reads/{aggregate.yml → legacy/aggregate.yml} +0 -0
  1556. /data/spec/spec_tests/data/retryable_reads/{changeStreams-client.watch-serverErrors.yml → legacy/changeStreams-client.watch-serverErrors.yml} +0 -0
  1557. /data/spec/spec_tests/data/retryable_reads/{changeStreams-client.watch.yml → legacy/changeStreams-client.watch.yml} +0 -0
  1558. /data/spec/spec_tests/data/retryable_reads/{changeStreams-db.coll.watch-serverErrors.yml → legacy/changeStreams-db.coll.watch-serverErrors.yml} +0 -0
  1559. /data/spec/spec_tests/data/retryable_reads/{changeStreams-db.coll.watch.yml → legacy/changeStreams-db.coll.watch.yml} +0 -0
  1560. /data/spec/spec_tests/data/retryable_reads/{changeStreams-db.watch-serverErrors.yml → legacy/changeStreams-db.watch-serverErrors.yml} +0 -0
  1561. /data/spec/spec_tests/data/retryable_reads/{changeStreams-db.watch.yml → legacy/changeStreams-db.watch.yml} +0 -0
  1562. /data/spec/spec_tests/data/retryable_reads/{count-serverErrors.yml → legacy/count-serverErrors.yml} +0 -0
  1563. /data/spec/spec_tests/data/retryable_reads/{count.yml → legacy/count.yml} +0 -0
  1564. /data/spec/spec_tests/data/retryable_reads/{countDocuments-serverErrors.yml → legacy/countDocuments-serverErrors.yml} +0 -0
  1565. /data/spec/spec_tests/data/retryable_reads/{countDocuments.yml → legacy/countDocuments.yml} +0 -0
  1566. /data/spec/spec_tests/data/retryable_reads/{distinct-serverErrors.yml → legacy/distinct-serverErrors.yml} +0 -0
  1567. /data/spec/spec_tests/data/retryable_reads/{distinct.yml → legacy/distinct.yml} +0 -0
  1568. /data/spec/spec_tests/data/retryable_reads/{find-serverErrors.yml → legacy/find-serverErrors.yml} +0 -0
  1569. /data/spec/spec_tests/data/retryable_reads/{find.yml → legacy/find.yml} +0 -0
  1570. /data/spec/spec_tests/data/retryable_reads/{findOne-serverErrors.yml → legacy/findOne-serverErrors.yml} +0 -0
  1571. /data/spec/spec_tests/data/retryable_reads/{findOne.yml → legacy/findOne.yml} +0 -0
  1572. /data/spec/spec_tests/data/retryable_reads/{gridfs-download-serverErrors.yml → legacy/gridfs-download-serverErrors.yml} +0 -0
  1573. /data/spec/spec_tests/data/retryable_reads/{gridfs-download.yml → legacy/gridfs-download.yml} +0 -0
  1574. /data/spec/spec_tests/data/retryable_reads/{gridfs-downloadByName-serverErrors.yml → legacy/gridfs-downloadByName-serverErrors.yml} +0 -0
  1575. /data/spec/spec_tests/data/retryable_reads/{gridfs-downloadByName.yml → legacy/gridfs-downloadByName.yml} +0 -0
  1576. /data/spec/spec_tests/data/retryable_reads/{listCollectionNames-serverErrors.yml → legacy/listCollectionNames-serverErrors.yml} +0 -0
  1577. /data/spec/spec_tests/data/retryable_reads/{listCollectionNames.yml → legacy/listCollectionNames.yml} +0 -0
  1578. /data/spec/spec_tests/data/retryable_reads/{listCollectionObjects-serverErrors.yml → legacy/listCollectionObjects-serverErrors.yml} +0 -0
  1579. /data/spec/spec_tests/data/retryable_reads/{listCollectionObjects.yml → legacy/listCollectionObjects.yml} +0 -0
  1580. /data/spec/spec_tests/data/retryable_reads/{listCollections-serverErrors.yml → legacy/listCollections-serverErrors.yml} +0 -0
  1581. /data/spec/spec_tests/data/retryable_reads/{listCollections.yml → legacy/listCollections.yml} +0 -0
  1582. /data/spec/spec_tests/data/retryable_reads/{listDatabaseNames-serverErrors.yml → legacy/listDatabaseNames-serverErrors.yml} +0 -0
  1583. /data/spec/spec_tests/data/retryable_reads/{listDatabaseNames.yml → legacy/listDatabaseNames.yml} +0 -0
  1584. /data/spec/spec_tests/data/retryable_reads/{listDatabaseObjects-serverErrors.yml → legacy/listDatabaseObjects-serverErrors.yml} +0 -0
  1585. /data/spec/spec_tests/data/retryable_reads/{listDatabaseObjects.yml → legacy/listDatabaseObjects.yml} +0 -0
  1586. /data/spec/spec_tests/data/retryable_reads/{listDatabases-serverErrors.yml → legacy/listDatabases-serverErrors.yml} +0 -0
  1587. /data/spec/spec_tests/data/retryable_reads/{listDatabases.yml → legacy/listDatabases.yml} +0 -0
  1588. /data/spec/spec_tests/data/retryable_reads/{listIndexNames-serverErrors.yml → legacy/listIndexNames-serverErrors.yml} +0 -0
  1589. /data/spec/spec_tests/data/retryable_reads/{listIndexNames.yml → legacy/listIndexNames.yml} +0 -0
  1590. /data/spec/spec_tests/data/retryable_reads/{listIndexes-serverErrors.yml → legacy/listIndexes-serverErrors.yml} +0 -0
  1591. /data/spec/spec_tests/data/retryable_reads/{listIndexes.yml → legacy/listIndexes.yml} +0 -0
  1592. /data/spec/spec_tests/data/retryable_reads/{mapReduce.yml → legacy/mapReduce.yml} +0 -0
  1593. /data/spec/spec_tests/data/retryable_writes/{bulkWrite-errorLabels.yml → legacy/bulkWrite-errorLabels.yml} +0 -0
  1594. /data/spec/spec_tests/data/retryable_writes/{bulkWrite.yml → legacy/bulkWrite.yml} +0 -0
  1595. /data/spec/spec_tests/data/retryable_writes/{deleteMany.yml → legacy/deleteMany.yml} +0 -0
  1596. /data/spec/spec_tests/data/retryable_writes/{deleteOne-errorLabels.yml → legacy/deleteOne-errorLabels.yml} +0 -0
  1597. /data/spec/spec_tests/data/retryable_writes/{deleteOne.yml → legacy/deleteOne.yml} +0 -0
  1598. /data/spec/spec_tests/data/retryable_writes/{findOneAndDelete-errorLabels.yml → legacy/findOneAndDelete-errorLabels.yml} +0 -0
  1599. /data/spec/spec_tests/data/retryable_writes/{findOneAndDelete.yml → legacy/findOneAndDelete.yml} +0 -0
  1600. /data/spec/spec_tests/data/retryable_writes/{findOneAndReplace-errorLabels.yml → legacy/findOneAndReplace-errorLabels.yml} +0 -0
  1601. /data/spec/spec_tests/data/retryable_writes/{findOneAndReplace.yml → legacy/findOneAndReplace.yml} +0 -0
  1602. /data/spec/spec_tests/data/retryable_writes/{findOneAndUpdate-errorLabels.yml → legacy/findOneAndUpdate-errorLabels.yml} +0 -0
  1603. /data/spec/spec_tests/data/retryable_writes/{findOneAndUpdate.yml → legacy/findOneAndUpdate.yml} +0 -0
  1604. /data/spec/spec_tests/data/retryable_writes/{insertMany-errorLabels.yml → legacy/insertMany-errorLabels.yml} +0 -0
  1605. /data/spec/spec_tests/data/retryable_writes/{insertMany.yml → legacy/insertMany.yml} +0 -0
  1606. /data/spec/spec_tests/data/retryable_writes/{insertOne-errorLabels.yml → legacy/insertOne-errorLabels.yml} +0 -0
  1607. /data/spec/spec_tests/data/retryable_writes/{insertOne.yml → legacy/insertOne.yml} +0 -0
  1608. /data/spec/spec_tests/data/retryable_writes/{replaceOne-errorLabels.yml → legacy/replaceOne-errorLabels.yml} +0 -0
  1609. /data/spec/spec_tests/data/retryable_writes/{replaceOne.yml → legacy/replaceOne.yml} +0 -0
  1610. /data/spec/spec_tests/data/retryable_writes/{updateMany.yml → legacy/updateMany.yml} +0 -0
  1611. /data/spec/spec_tests/data/retryable_writes/{updateOne-errorLabels.yml → legacy/updateOne-errorLabels.yml} +0 -0
  1612. /data/spec/spec_tests/data/retryable_writes/{updateOne.yml → legacy/updateOne.yml} +0 -0
@@ -0,0 +1,937 @@
1
+ # Requires libmongocrypt 1.8.0.
2
+ runOn:
3
+ - minServerVersion: "7.0.0"
4
+ # Skip QEv2 (also referred to as FLE2v2) tests on Serverless. Unskip once Serverless enables the QEv2 protocol.
5
+ # FLE 2 Encrypted collections are not supported on standalone.
6
+ topology: [ "replicaset", "sharded", "load-balanced" ]
7
+
8
+ database_name: &database_name "default"
9
+ collection_name: &collection_name "default"
10
+
11
+ tests:
12
+ - description: "state collections and index are created"
13
+ clientOptions:
14
+ autoEncryptOpts:
15
+ kmsProviders:
16
+ aws: {} # Credentials filled in from environment.
17
+ encryptedFieldsMap:
18
+ default.encryptedCollection: &encrypted_fields {
19
+ "fields": [
20
+ {
21
+ "path": "firstName",
22
+ "bsonType": "string",
23
+ "keyId": { "$binary": { "subType": "04", "base64": "AAAAAAAAAAAAAAAAAAAAAA==" }}
24
+ }
25
+ ]
26
+ }
27
+
28
+ operations:
29
+ # Do an initial drop to remove collections that may exist from previous test runs.
30
+ - name: dropCollection
31
+ object: database
32
+ arguments:
33
+ collection: &encrypted_collection_name "encryptedCollection"
34
+ - name: createCollection
35
+ object: database
36
+ arguments:
37
+ collection: *encrypted_collection_name
38
+ - name: assertCollectionExists
39
+ object: testRunner
40
+ arguments:
41
+ database: *database_name
42
+ collection: &esc_collection_name "enxcol_.encryptedCollection.esc"
43
+ # ecc collection is no longer created for QEv2
44
+ - name: assertCollectionNotExists
45
+ object: testRunner
46
+ arguments:
47
+ database: *database_name
48
+ collection: &ecc_collection_name "enxcol_.encryptedCollection.ecc"
49
+ - name: assertCollectionExists
50
+ object: testRunner
51
+ arguments:
52
+ database: *database_name
53
+ collection: &ecoc_collection_name "enxcol_.encryptedCollection.ecoc"
54
+ - name: assertCollectionExists
55
+ object: testRunner
56
+ arguments:
57
+ database: *database_name
58
+ collection: *encrypted_collection_name
59
+ - name: assertIndexExists
60
+ object: testRunner
61
+ arguments:
62
+ database: *database_name
63
+ collection: *encrypted_collection_name
64
+ index: __safeContent___1
65
+
66
+ expectations:
67
+ # events from dropCollection ... begin
68
+ - command_started_event:
69
+ command:
70
+ drop: *esc_collection_name
71
+ command_name: drop
72
+ database_name: *database_name
73
+ - command_started_event:
74
+ command:
75
+ drop: *ecoc_collection_name
76
+ command_name: drop
77
+ database_name: *database_name
78
+ - command_started_event:
79
+ command:
80
+ drop: *encrypted_collection_name
81
+ command_name: drop
82
+ database_name: *database_name
83
+ # events from dropCollection ... end
84
+ # events from createCollection ... begin
85
+ # State collections are created first.
86
+ - command_started_event:
87
+ command:
88
+ create: *esc_collection_name
89
+ clusteredIndex: {key: {_id: 1}, unique: true}
90
+ command_name: create
91
+ database_name: *database_name
92
+ - command_started_event:
93
+ command:
94
+ create: *ecoc_collection_name
95
+ clusteredIndex: {key: {_id: 1}, unique: true}
96
+ command_name: create
97
+ database_name: *database_name
98
+ # Data collection is created after.
99
+ - command_started_event:
100
+ command:
101
+ create: *encrypted_collection_name
102
+ encryptedFields: &encrypted_fields_expectation {
103
+ "fields": [
104
+ {
105
+ "path": "firstName",
106
+ "bsonType": "string",
107
+ "keyId": { "$binary": { "subType": "04", "base64": "AAAAAAAAAAAAAAAAAAAAAA==" }}
108
+ }
109
+ ]
110
+ }
111
+ command_name: create
112
+ database_name: *database_name
113
+ # Index on __safeContents__ is then created.
114
+ - command_started_event:
115
+ command:
116
+ createIndexes: *encrypted_collection_name
117
+ indexes:
118
+ - name: __safeContent___1
119
+ key: { __safeContent__: 1 }
120
+ command_name: createIndexes
121
+ database_name: *database_name
122
+ # events from createCollection ... end
123
+ - description: "default state collection names are applied"
124
+ clientOptions:
125
+ autoEncryptOpts:
126
+ kmsProviders:
127
+ aws: {} # Credentials filled in from environment.
128
+ encryptedFieldsMap:
129
+ default.encryptedCollection: *encrypted_fields
130
+
131
+ operations:
132
+ # Do an initial drop to remove collections that may exist from previous test runs.
133
+ - name: dropCollection
134
+ object: database
135
+ arguments:
136
+ collection: *encrypted_collection_name
137
+ - name: createCollection
138
+ object: database
139
+ arguments:
140
+ collection: *encrypted_collection_name
141
+ - name: assertCollectionExists
142
+ object: testRunner
143
+ arguments:
144
+ database: *database_name
145
+ collection: *esc_collection_name
146
+ # ecc collection is no longer created for QEv2
147
+ - name: assertCollectionNotExists
148
+ object: testRunner
149
+ arguments:
150
+ database: *database_name
151
+ collection: *ecc_collection_name
152
+ - name: assertCollectionExists
153
+ object: testRunner
154
+ arguments:
155
+ database: *database_name
156
+ collection: *ecoc_collection_name
157
+ - name: assertCollectionExists
158
+ object: testRunner
159
+ arguments:
160
+ database: *database_name
161
+ collection: *encrypted_collection_name
162
+ - name: assertIndexExists
163
+ object: testRunner
164
+ arguments:
165
+ database: *database_name
166
+ collection: *encrypted_collection_name
167
+ index: __safeContent___1
168
+
169
+ expectations:
170
+ # events from dropCollection ... begin
171
+ - command_started_event:
172
+ command:
173
+ drop: *esc_collection_name
174
+ command_name: drop
175
+ database_name: *database_name
176
+ - command_started_event:
177
+ command:
178
+ drop: *ecoc_collection_name
179
+ command_name: drop
180
+ database_name: *database_name
181
+ - command_started_event:
182
+ command:
183
+ drop: *encrypted_collection_name
184
+ command_name: drop
185
+ database_name: *database_name
186
+ # events from dropCollection ... end
187
+ # events from createCollection ... begin
188
+ # State collections are created first.
189
+ - command_started_event:
190
+ command:
191
+ create: *esc_collection_name
192
+ clusteredIndex: {key: {_id: 1}, unique: true}
193
+ command_name: create
194
+ database_name: *database_name
195
+ - command_started_event:
196
+ command:
197
+ create: *ecoc_collection_name
198
+ clusteredIndex: {key: {_id: 1}, unique: true}
199
+ command_name: create
200
+ database_name: *database_name
201
+ # Data collection is created after.
202
+ - command_started_event:
203
+ command:
204
+ create: *encrypted_collection_name
205
+ encryptedFields: *encrypted_fields_expectation
206
+ command_name: create
207
+ database_name: *database_name
208
+ # Index on __safeContents__ is then created.
209
+ - command_started_event:
210
+ command:
211
+ createIndexes: *encrypted_collection_name
212
+ indexes:
213
+ - name: __safeContent___1
214
+ key: { __safeContent__: 1 }
215
+ command_name: createIndexes
216
+ database_name: *database_name
217
+ # events from createCollection ... end
218
+ - description: "drop removes all state collections"
219
+ clientOptions:
220
+ autoEncryptOpts:
221
+ kmsProviders:
222
+ aws: {} # Credentials filled in from environment.
223
+ encryptedFieldsMap:
224
+ default.encryptedCollection: *encrypted_fields
225
+
226
+ operations:
227
+ # Do an initial drop to remove collections that may exist from previous test runs.
228
+ - name: dropCollection
229
+ object: database
230
+ arguments:
231
+ collection: *encrypted_collection_name
232
+ - name: createCollection
233
+ object: database
234
+ arguments:
235
+ collection: *encrypted_collection_name
236
+ - name: assertCollectionExists
237
+ object: testRunner
238
+ arguments:
239
+ database: *database_name
240
+ collection: *esc_collection_name
241
+ # ecc collection is no longer created for QEv2
242
+ - name: assertCollectionNotExists
243
+ object: testRunner
244
+ arguments:
245
+ database: *database_name
246
+ collection: *ecc_collection_name
247
+ - name: assertCollectionExists
248
+ object: testRunner
249
+ arguments:
250
+ database: *database_name
251
+ collection: *ecoc_collection_name
252
+ - name: assertCollectionExists
253
+ object: testRunner
254
+ arguments:
255
+ database: *database_name
256
+ collection: *encrypted_collection_name
257
+ - name: assertIndexExists
258
+ object: testRunner
259
+ arguments:
260
+ database: *database_name
261
+ collection: *encrypted_collection_name
262
+ index: __safeContent___1
263
+ - name: dropCollection
264
+ object: database
265
+ arguments:
266
+ collection: *encrypted_collection_name
267
+ # ecc collection is no longer created for QEv2
268
+ - name: assertCollectionNotExists
269
+ object: testRunner
270
+ arguments:
271
+ database: *database_name
272
+ collection: *ecoc_collection_name
273
+ # ecc collection is no longer created for QEv2
274
+ - name: assertCollectionNotExists
275
+ object: testRunner
276
+ arguments:
277
+ database: *database_name
278
+ collection: *encrypted_collection_name
279
+ - name: assertIndexNotExists
280
+ object: testRunner
281
+ arguments:
282
+ database: *database_name
283
+ collection: *encrypted_collection_name
284
+ index: __safeContent___1
285
+
286
+ expectations:
287
+ # events from dropCollection ... begin
288
+ - command_started_event:
289
+ command:
290
+ drop: *esc_collection_name
291
+ command_name: drop
292
+ database_name: *database_name
293
+ - command_started_event:
294
+ command:
295
+ drop: *ecoc_collection_name
296
+ command_name: drop
297
+ database_name: *database_name
298
+ - command_started_event:
299
+ command:
300
+ drop: *encrypted_collection_name
301
+ command_name: drop
302
+ database_name: *database_name
303
+ # events from dropCollection ... end
304
+ # events from createCollection ... begin
305
+ # State collections are created first.
306
+ - command_started_event:
307
+ command:
308
+ create: *esc_collection_name
309
+ clusteredIndex: {key: {_id: 1}, unique: true}
310
+ command_name: create
311
+ database_name: *database_name
312
+ - command_started_event:
313
+ command:
314
+ create: *ecoc_collection_name
315
+ clusteredIndex: {key: {_id: 1}, unique: true}
316
+ command_name: create
317
+ database_name: *database_name
318
+ # Data collection is created after.
319
+ - command_started_event:
320
+ command:
321
+ create: *encrypted_collection_name
322
+ encryptedFields: *encrypted_fields
323
+ command_name: create
324
+ database_name: *database_name
325
+ # Index on __safeContents__ is then created.
326
+ - command_started_event:
327
+ command:
328
+ createIndexes: *encrypted_collection_name
329
+ indexes:
330
+ - name: __safeContent___1
331
+ key: { __safeContent__: 1 }
332
+ command_name: createIndexes
333
+ database_name: *database_name
334
+ # events from createCollection ... end
335
+ # events from dropCollection ... begin
336
+ - command_started_event:
337
+ command:
338
+ drop: *esc_collection_name
339
+ command_name: drop
340
+ database_name: *database_name
341
+ - command_started_event:
342
+ command:
343
+ drop: *ecoc_collection_name
344
+ command_name: drop
345
+ database_name: *database_name
346
+ - command_started_event:
347
+ command:
348
+ drop: *encrypted_collection_name
349
+ command_name: drop
350
+ database_name: *database_name
351
+ # events from dropCollection ... end
352
+ - description: "CreateCollection without encryptedFields."
353
+ clientOptions:
354
+ autoEncryptOpts:
355
+ kmsProviders:
356
+ aws: {} # Credentials filled in from environment.
357
+ encryptedFieldsMap:
358
+ default.encryptedCollection: *encrypted_fields
359
+ operations:
360
+ # Do an initial drop to remove collections that may exist from previous test runs.
361
+ - name: dropCollection
362
+ object: database
363
+ arguments:
364
+ collection: "plaintextCollection"
365
+ - name: createCollection
366
+ object: database
367
+ arguments:
368
+ collection: "plaintextCollection"
369
+ - name: assertCollectionExists
370
+ object: testRunner
371
+ arguments:
372
+ database: *database_name
373
+ collection: "plaintextCollection"
374
+
375
+ expectations:
376
+ # events from dropCollection ... begin
377
+ # expect listCollections to be sent on drop to check for remote encryptedFields.
378
+ - command_started_event:
379
+ command:
380
+ listCollections: 1
381
+ filter: { name: "plaintextCollection" }
382
+ command_name: listCollections
383
+ database_name: *database_name
384
+ - command_started_event:
385
+ command:
386
+ drop: "plaintextCollection"
387
+ command_name: drop
388
+ database_name: *database_name
389
+ # events from dropCollection ... end
390
+ - command_started_event:
391
+ command:
392
+ create: "plaintextCollection"
393
+ command_name: create
394
+ database_name: *database_name
395
+ - description: "CreateCollection from encryptedFieldsMap."
396
+ clientOptions:
397
+ autoEncryptOpts:
398
+ kmsProviders:
399
+ aws: {} # Credentials filled in from environment.
400
+ encryptedFieldsMap:
401
+ default.encryptedCollection: *encrypted_fields
402
+ operations:
403
+ # Do an initial drop to remove collections that may exist from previous test runs.
404
+ - name: dropCollection
405
+ object: database
406
+ arguments:
407
+ collection: *encrypted_collection_name
408
+ - name: createCollection
409
+ object: database
410
+ arguments:
411
+ collection: *encrypted_collection_name
412
+ - name: assertCollectionExists
413
+ object: testRunner
414
+ arguments:
415
+ database: *database_name
416
+ collection: *esc_collection_name
417
+ # ecc collection is no longer created for QEv2
418
+ - name: assertCollectionNotExists
419
+ object: testRunner
420
+ arguments:
421
+ database: *database_name
422
+ collection: *ecc_collection_name
423
+ - name: assertCollectionExists
424
+ object: testRunner
425
+ arguments:
426
+ database: *database_name
427
+ collection: *ecoc_collection_name
428
+ - name: assertCollectionExists
429
+ object: testRunner
430
+ arguments:
431
+ database: *database_name
432
+ collection: *encrypted_collection_name
433
+ - name: assertIndexExists
434
+ object: testRunner
435
+ arguments:
436
+ database: *database_name
437
+ collection: *encrypted_collection_name
438
+ index: __safeContent___1
439
+
440
+ expectations:
441
+ # events from dropCollection ... begin
442
+ - command_started_event:
443
+ command:
444
+ drop: *esc_collection_name
445
+ command_name: drop
446
+ database_name: *database_name
447
+ - command_started_event:
448
+ command:
449
+ drop: *ecoc_collection_name
450
+ command_name: drop
451
+ database_name: *database_name
452
+ - command_started_event:
453
+ command:
454
+ drop: *encrypted_collection_name
455
+ command_name: drop
456
+ database_name: *database_name
457
+ # events from dropCollection ... end
458
+ # events from createCollection ... begin
459
+ # State collections are created first.
460
+ - command_started_event:
461
+ command:
462
+ create: *esc_collection_name
463
+ clusteredIndex: {key: {_id: 1}, unique: true}
464
+ command_name: create
465
+ database_name: *database_name
466
+ - command_started_event:
467
+ command:
468
+ create: *ecoc_collection_name
469
+ clusteredIndex: {key: {_id: 1}, unique: true}
470
+ command_name: create
471
+ database_name: *database_name
472
+ # Data collection is created after.
473
+ - command_started_event:
474
+ command:
475
+ create: *encrypted_collection_name
476
+ encryptedFields: *encrypted_fields_expectation
477
+ command_name: create
478
+ database_name: *database_name
479
+ # Index on __safeContents__ is then created.
480
+ - command_started_event:
481
+ command:
482
+ createIndexes: *encrypted_collection_name
483
+ indexes:
484
+ - name: __safeContent___1
485
+ key: { __safeContent__: 1 }
486
+ command_name: createIndexes
487
+ database_name: *database_name
488
+ # events from createCollection ... end
489
+ - description: "CreateCollection from encryptedFields."
490
+ clientOptions:
491
+ autoEncryptOpts:
492
+ kmsProviders:
493
+ aws: {} # Credentials filled in from environment.
494
+ operations:
495
+ # Do initial drops to remove collections that may exist from previous test runs.
496
+ - name: dropCollection
497
+ object: database
498
+ arguments:
499
+ collection: *encrypted_collection_name
500
+ encryptedFields: *encrypted_fields
501
+ - name: createCollection
502
+ object: database
503
+ arguments:
504
+ collection: *encrypted_collection_name
505
+ encryptedFields: *encrypted_fields
506
+ - name: assertCollectionExists
507
+ object: testRunner
508
+ arguments:
509
+ database: *database_name
510
+ collection: *esc_collection_name
511
+ # ecc collection is no longer created for QEv2
512
+ - name: assertCollectionNotExists
513
+ object: testRunner
514
+ arguments:
515
+ database: *database_name
516
+ collection: *ecc_collection_name
517
+ - name: assertCollectionExists
518
+ object: testRunner
519
+ arguments:
520
+ database: *database_name
521
+ collection: *ecoc_collection_name
522
+ - name: assertCollectionExists
523
+ object: testRunner
524
+ arguments:
525
+ database: *database_name
526
+ collection: *encrypted_collection_name
527
+ - name: assertIndexExists
528
+ object: testRunner
529
+ arguments:
530
+ database: *database_name
531
+ collection: *encrypted_collection_name
532
+ index: __safeContent___1
533
+
534
+ expectations:
535
+ # events from dropCollection ... begin
536
+ - command_started_event:
537
+ command:
538
+ drop: *esc_collection_name
539
+ command_name: drop
540
+ database_name: *database_name
541
+ - command_started_event:
542
+ command:
543
+ drop: *ecoc_collection_name
544
+ command_name: drop
545
+ database_name: *database_name
546
+ - command_started_event:
547
+ command:
548
+ drop: *encrypted_collection_name
549
+ command_name: drop
550
+ database_name: *database_name
551
+ # events from dropCollection ... end
552
+ # events from createCollection ... begin
553
+ # State collections are created first.
554
+ - command_started_event:
555
+ command:
556
+ create: *esc_collection_name
557
+ clusteredIndex: {key: {_id: 1}, unique: true}
558
+ command_name: create
559
+ database_name: *database_name
560
+ - command_started_event:
561
+ command:
562
+ create: *ecoc_collection_name
563
+ clusteredIndex: {key: {_id: 1}, unique: true}
564
+ command_name: create
565
+ database_name: *database_name
566
+ # Data collection is created after.
567
+ - command_started_event:
568
+ command:
569
+ create: *encrypted_collection_name
570
+ encryptedFields: *encrypted_fields_expectation
571
+ command_name: create
572
+ database_name: *database_name
573
+ # libmongocrypt requests listCollections to get a schema for the "createIndexes" command.
574
+ - command_started_event:
575
+ command:
576
+ listCollections: 1
577
+ filter: { name: *encrypted_collection_name }
578
+ command_name: listCollections
579
+ database_name: *database_name
580
+ # Index on __safeContents__ is then created.
581
+ - command_started_event:
582
+ command:
583
+ createIndexes: *encrypted_collection_name
584
+ indexes:
585
+ - name: __safeContent___1
586
+ key: { __safeContent__: 1 }
587
+ command_name: createIndexes
588
+ database_name: *database_name
589
+ # events from createCollection ... end
590
+
591
+ - description: "DropCollection from encryptedFieldsMap"
592
+ clientOptions:
593
+ autoEncryptOpts:
594
+ kmsProviders:
595
+ aws: {} # Credentials filled in from environment.
596
+ encryptedFieldsMap:
597
+ default.encryptedCollection: *encrypted_fields
598
+ operations:
599
+ - name: dropCollection
600
+ object: database
601
+ arguments:
602
+ collection: *encrypted_collection_name
603
+ expectations:
604
+ # events from dropCollection ... begin
605
+ - command_started_event:
606
+ command:
607
+ drop: *esc_collection_name
608
+ command_name: drop
609
+ database_name: *database_name
610
+ - command_started_event:
611
+ command:
612
+ drop: *ecoc_collection_name
613
+ command_name: drop
614
+ database_name: *database_name
615
+ - command_started_event:
616
+ command:
617
+ drop: *encrypted_collection_name
618
+ command_name: drop
619
+ database_name: *database_name
620
+ # events from dropCollection ... end
621
+ - description: "DropCollection from encryptedFields"
622
+ clientOptions:
623
+ autoEncryptOpts:
624
+ kmsProviders:
625
+ aws: {} # Credentials filled in from environment.
626
+ encryptedFieldsMap: {}
627
+ operations:
628
+ # Do initial drops to remove collections that may exist from previous test runs.
629
+ - name: dropCollection
630
+ object: database
631
+ arguments:
632
+ collection: *encrypted_collection_name
633
+ encryptedFields: *encrypted_fields
634
+ - name: createCollection
635
+ object: database
636
+ arguments:
637
+ collection: *encrypted_collection_name
638
+ encryptedFields: *encrypted_fields
639
+ - name: assertCollectionExists
640
+ object: testRunner
641
+ arguments:
642
+ database: *database_name
643
+ collection: *esc_collection_name
644
+ # ecc collection is no longer created for QEv2
645
+ - name: assertCollectionNotExists
646
+ object: testRunner
647
+ arguments:
648
+ database: *database_name
649
+ collection: *ecc_collection_name
650
+ - name: assertCollectionExists
651
+ object: testRunner
652
+ arguments:
653
+ database: *database_name
654
+ collection: *ecoc_collection_name
655
+ - name: assertCollectionExists
656
+ object: testRunner
657
+ arguments:
658
+ database: *database_name
659
+ collection: *encrypted_collection_name
660
+ - name: assertIndexExists
661
+ object: testRunner
662
+ arguments:
663
+ database: *database_name
664
+ collection: *encrypted_collection_name
665
+ index: __safeContent___1
666
+ - name: dropCollection
667
+ object: database
668
+ arguments:
669
+ collection: *encrypted_collection_name
670
+ encryptedFields: *encrypted_fields
671
+ # ecc collection is no longer created for QEv2
672
+ - name: assertCollectionNotExists
673
+ object: testRunner
674
+ arguments:
675
+ database: *database_name
676
+ collection: *esc_collection_name
677
+ # ecc collection is no longer created for QEv2
678
+ - name: assertCollectionNotExists
679
+ object: testRunner
680
+ arguments:
681
+ database: *database_name
682
+ collection: *ecoc_collection_name
683
+ # ecc collection is no longer created for QEv2
684
+ - name: assertCollectionNotExists
685
+ object: testRunner
686
+ arguments:
687
+ database: *database_name
688
+ collection: *encrypted_collection_name
689
+ expectations:
690
+ # events from dropCollection ... begin
691
+ - command_started_event:
692
+ command:
693
+ drop: *esc_collection_name
694
+ command_name: drop
695
+ database_name: *database_name
696
+ - command_started_event:
697
+ command:
698
+ drop: *ecoc_collection_name
699
+ command_name: drop
700
+ database_name: *database_name
701
+ - command_started_event:
702
+ command:
703
+ drop: *encrypted_collection_name
704
+ command_name: drop
705
+ database_name: *database_name
706
+ # events from dropCollection ... end
707
+ # events from createCollection ... begin
708
+ - command_started_event:
709
+ command:
710
+ create: *esc_collection_name
711
+ clusteredIndex: {key: {_id: 1}, unique: true}
712
+ command_name: create
713
+ database_name: *database_name
714
+ - command_started_event:
715
+ command:
716
+ create: *ecoc_collection_name
717
+ clusteredIndex: {key: {_id: 1}, unique: true}
718
+ command_name: create
719
+ database_name: *database_name
720
+ - command_started_event:
721
+ command:
722
+ create: *encrypted_collection_name
723
+ encryptedFields: *encrypted_fields_expectation
724
+ command_name: create
725
+ database_name: *database_name
726
+ # libmongocrypt requests listCollections to get a schema for the "createIndexes" command.
727
+ - command_started_event:
728
+ command:
729
+ listCollections: 1
730
+ filter: { name: *encrypted_collection_name }
731
+ command_name: listCollections
732
+ database_name: *database_name
733
+ # Index on __safeContents__ is then created.
734
+ - command_started_event:
735
+ command:
736
+ createIndexes: *encrypted_collection_name
737
+ indexes:
738
+ - name: __safeContent___1
739
+ key: { __safeContent__: 1 }
740
+ command_name: createIndexes
741
+ database_name: *database_name
742
+ # events from createCollection ... end
743
+ # events from dropCollection ... begin
744
+ - command_started_event:
745
+ command:
746
+ drop: *esc_collection_name
747
+ command_name: drop
748
+ database_name: *database_name
749
+ - command_started_event:
750
+ command:
751
+ drop: *ecoc_collection_name
752
+ command_name: drop
753
+ database_name: *database_name
754
+ - command_started_event:
755
+ command:
756
+ drop: *encrypted_collection_name
757
+ command_name: drop
758
+ database_name: *database_name
759
+ # events from dropCollection ... end
760
+
761
+ - description: "DropCollection from remote encryptedFields"
762
+ clientOptions:
763
+ autoEncryptOpts:
764
+ kmsProviders:
765
+ aws: {} # Credentials filled in from environment.
766
+ encryptedFieldsMap: {}
767
+
768
+ operations:
769
+ # Do initial drops to remove collections that may exist from previous test runs.
770
+ - name: dropCollection
771
+ object: database
772
+ arguments:
773
+ collection: *encrypted_collection_name
774
+ encryptedFields: *encrypted_fields
775
+ - name: createCollection
776
+ object: database
777
+ arguments:
778
+ collection: *encrypted_collection_name
779
+ encryptedFields: *encrypted_fields
780
+ - name: assertCollectionExists
781
+ object: testRunner
782
+ arguments:
783
+ database: *database_name
784
+ collection: *esc_collection_name
785
+ # ecc collection is no longer created for QEv2
786
+ - name: assertCollectionNotExists
787
+ object: testRunner
788
+ arguments:
789
+ database: *database_name
790
+ collection: *ecc_collection_name
791
+ - name: assertCollectionExists
792
+ object: testRunner
793
+ arguments:
794
+ database: *database_name
795
+ collection: *ecoc_collection_name
796
+ - name: assertCollectionExists
797
+ object: testRunner
798
+ arguments:
799
+ database: *database_name
800
+ collection: *encrypted_collection_name
801
+ - name: assertIndexExists
802
+ object: testRunner
803
+ arguments:
804
+ database: *database_name
805
+ collection: *encrypted_collection_name
806
+ index: __safeContent___1
807
+ - name: dropCollection
808
+ object: database
809
+ arguments:
810
+ collection: *encrypted_collection_name
811
+ # ecc collection is no longer created for QEv2
812
+ - name: assertCollectionNotExists
813
+ object: testRunner
814
+ arguments:
815
+ database: *database_name
816
+ collection: *esc_collection_name
817
+ # ecc collection is no longer created for QEv2
818
+ - name: assertCollectionNotExists
819
+ object: testRunner
820
+ arguments:
821
+ database: *database_name
822
+ collection: *ecoc_collection_name
823
+ # ecc collection is no longer created for QEv2
824
+ - name: assertCollectionNotExists
825
+ object: testRunner
826
+ arguments:
827
+ database: *database_name
828
+ collection: *encrypted_collection_name
829
+
830
+ expectations:
831
+ # events from dropCollection ... begin
832
+ - command_started_event:
833
+ command:
834
+ drop: *esc_collection_name
835
+ command_name: drop
836
+ database_name: *database_name
837
+ - command_started_event:
838
+ command:
839
+ drop: *ecoc_collection_name
840
+ command_name: drop
841
+ database_name: *database_name
842
+ - command_started_event:
843
+ command:
844
+ drop: *encrypted_collection_name
845
+ command_name: drop
846
+ database_name: *database_name
847
+ # events from dropCollection ... end
848
+ # events from createCollection ... begin
849
+ - command_started_event:
850
+ command:
851
+ create: *esc_collection_name
852
+ clusteredIndex: {key: {_id: 1}, unique: true}
853
+ command_name: create
854
+ database_name: *database_name
855
+ - command_started_event:
856
+ command:
857
+ create: *ecoc_collection_name
858
+ clusteredIndex: {key: {_id: 1}, unique: true}
859
+ command_name: create
860
+ database_name: *database_name
861
+ - command_started_event:
862
+ command:
863
+ create: *encrypted_collection_name
864
+ encryptedFields: *encrypted_fields_expectation
865
+ command_name: create
866
+ database_name: *database_name
867
+ # libmongocrypt requests listCollections to get a schema for the "createIndexes" command.
868
+ - command_started_event:
869
+ command:
870
+ listCollections: 1
871
+ filter: { name: *encrypted_collection_name }
872
+ command_name: listCollections
873
+ database_name: *database_name
874
+ # Index on __safeContents__ is then created.
875
+ - command_started_event:
876
+ command:
877
+ createIndexes: *encrypted_collection_name
878
+ indexes:
879
+ - name: __safeContent___1
880
+ key: { __safeContent__: 1 }
881
+ command_name: createIndexes
882
+ database_name: *database_name
883
+ # events from createCollection ... end
884
+ # events from dropCollection ... begin
885
+ - command_started_event:
886
+ command:
887
+ listCollections: 1
888
+ filter: { name: *encrypted_collection_name }
889
+ command_name: listCollections
890
+ database_name: *database_name
891
+ - command_started_event:
892
+ command:
893
+ drop: *esc_collection_name
894
+ command_name: drop
895
+ database_name: *database_name
896
+ - command_started_event:
897
+ command:
898
+ drop: *ecoc_collection_name
899
+ command_name: drop
900
+ database_name: *database_name
901
+ - command_started_event:
902
+ command:
903
+ drop: *encrypted_collection_name
904
+ command_name: drop
905
+ database_name: *database_name
906
+ # events from dropCollection ... end
907
+ - description: "encryptedFields are consulted for metadata collection names"
908
+ clientOptions:
909
+ autoEncryptOpts:
910
+ kmsProviders:
911
+ aws: {} # Credentials filled in from environment.
912
+ encryptedFieldsMap:
913
+ default.encryptedCollection: {
914
+ "escCollection": "invalid_esc_name",
915
+ "ecocCollection": "invalid_ecoc_name",
916
+ "fields": [
917
+ {
918
+ "path": "firstName",
919
+ "bsonType": "string",
920
+ "keyId": { "$binary": { "subType": "04", "base64": "AAAAAAAAAAAAAAAAAAAAAA==" }}
921
+ }
922
+ ]
923
+ }
924
+
925
+ operations:
926
+ # Do an initial drop to remove collections that may exist from previous test runs.
927
+ - name: dropCollection
928
+ object: database
929
+ arguments:
930
+ collection: *encrypted_collection_name
931
+ - name: createCollection
932
+ object: database
933
+ arguments:
934
+ collection: *encrypted_collection_name
935
+ result:
936
+ # Expect error due to server constraints added in SERVER-74069
937
+ errorContains: "Encrypted State Collection name should follow"