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