mongo 2.13.1 → 2.19.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1899) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +36 -39
  4. data/Rakefile +49 -20
  5. data/bin/mongo_console +2 -0
  6. data/lib/mongo/active_support.rb +3 -0
  7. data/lib/mongo/address/ipv4.rb +4 -1
  8. data/lib/mongo/address/ipv6.rb +4 -1
  9. data/lib/mongo/address/unix.rb +3 -0
  10. data/lib/mongo/address/validator.rb +3 -0
  11. data/lib/mongo/address.rb +4 -1
  12. data/lib/mongo/auth/aws/conversation.rb +4 -8
  13. data/lib/mongo/auth/aws/credentials.rb +38 -0
  14. data/lib/mongo/auth/aws/credentials_cache.rb +75 -0
  15. data/lib/mongo/auth/aws/credentials_retriever.rb +174 -36
  16. data/lib/mongo/auth/aws/request.rb +3 -2
  17. data/lib/mongo/auth/aws.rb +8 -5
  18. data/lib/mongo/auth/base.rb +25 -9
  19. data/lib/mongo/auth/conversation_base.rb +35 -0
  20. data/lib/mongo/auth/cr/conversation.rb +9 -29
  21. data/lib/mongo/auth/cr.rb +3 -0
  22. data/lib/mongo/auth/credential_cache.rb +3 -0
  23. data/lib/mongo/auth/gssapi/conversation.rb +7 -15
  24. data/lib/mongo/auth/gssapi.rb +3 -0
  25. data/lib/mongo/auth/ldap/conversation.rb +6 -14
  26. data/lib/mongo/auth/ldap.rb +3 -0
  27. data/lib/mongo/auth/roles.rb +19 -16
  28. data/lib/mongo/auth/sasl_conversation_base.rb +4 -13
  29. data/lib/mongo/auth/scram/conversation.rb +3 -0
  30. data/lib/mongo/auth/scram.rb +5 -2
  31. data/lib/mongo/auth/scram256/conversation.rb +3 -0
  32. data/lib/mongo/auth/scram256.rb +3 -0
  33. data/lib/mongo/auth/scram_conversation_base.rb +10 -34
  34. data/lib/mongo/auth/stringprep/profiles/sasl.rb +3 -0
  35. data/lib/mongo/auth/stringprep/tables.rb +3 -0
  36. data/lib/mongo/auth/stringprep/unicode_normalize/normalize.rb +2 -2
  37. data/lib/mongo/auth/stringprep/unicode_normalize/tables.rb +2 -1
  38. data/lib/mongo/auth/stringprep.rb +4 -1
  39. data/lib/mongo/auth/user/view.rb +19 -9
  40. data/lib/mongo/auth/user.rb +3 -0
  41. data/lib/mongo/auth/x509/conversation.rb +7 -25
  42. data/lib/mongo/auth/x509.rb +3 -0
  43. data/lib/mongo/auth.rb +16 -2
  44. data/lib/mongo/background_thread.rb +16 -2
  45. data/lib/mongo/bson.rb +3 -0
  46. data/lib/mongo/bulk_write/combineable.rb +3 -0
  47. data/lib/mongo/bulk_write/ordered_combiner.rb +3 -0
  48. data/lib/mongo/bulk_write/result.rb +13 -1
  49. data/lib/mongo/bulk_write/result_combiner.rb +5 -4
  50. data/lib/mongo/bulk_write/transformable.rb +3 -0
  51. data/lib/mongo/bulk_write/unordered_combiner.rb +3 -0
  52. data/lib/mongo/bulk_write/validatable.rb +3 -0
  53. data/lib/mongo/bulk_write.rb +156 -45
  54. data/lib/mongo/caching_cursor.rb +77 -0
  55. data/lib/mongo/client.rb +367 -41
  56. data/lib/mongo/client_encryption.rb +217 -10
  57. data/lib/mongo/cluster/periodic_executor.rb +7 -3
  58. data/lib/mongo/cluster/reapers/cursor_reaper.rb +101 -43
  59. data/lib/mongo/cluster/reapers/socket_reaper.rb +4 -1
  60. data/lib/mongo/cluster/sdam_flow.rb +67 -17
  61. data/lib/mongo/cluster/topology/base.rb +16 -9
  62. data/lib/mongo/cluster/topology/load_balanced.rb +102 -0
  63. data/lib/mongo/cluster/topology/no_replica_set_options.rb +3 -0
  64. data/lib/mongo/cluster/topology/replica_set_no_primary.rb +3 -0
  65. data/lib/mongo/cluster/topology/replica_set_with_primary.rb +3 -0
  66. data/lib/mongo/cluster/topology/sharded.rb +3 -0
  67. data/lib/mongo/cluster/topology/single.rb +4 -1
  68. data/lib/mongo/cluster/topology/unknown.rb +3 -0
  69. data/lib/mongo/cluster/topology.rb +31 -8
  70. data/lib/mongo/cluster.rb +210 -116
  71. data/lib/mongo/cluster_time.rb +3 -0
  72. data/lib/mongo/collection/helpers.rb +43 -0
  73. data/lib/mongo/collection/queryable_encryption.rb +162 -0
  74. data/lib/mongo/collection/view/aggregation.rb +94 -24
  75. data/lib/mongo/collection/view/builder/aggregation.rb +19 -17
  76. data/lib/mongo/collection/view/builder/map_reduce.rb +18 -49
  77. data/lib/mongo/collection/view/builder.rb +3 -4
  78. data/lib/mongo/collection/view/change_stream/retryable.rb +3 -0
  79. data/lib/mongo/collection/view/change_stream.rb +71 -22
  80. data/lib/mongo/collection/view/explainable.rb +30 -8
  81. data/lib/mongo/collection/view/immutable.rb +3 -0
  82. data/lib/mongo/collection/view/iterable.rb +121 -24
  83. data/lib/mongo/collection/view/map_reduce.rb +76 -25
  84. data/lib/mongo/collection/view/readable.rb +147 -67
  85. data/lib/mongo/collection/view/writable.rb +296 -162
  86. data/lib/mongo/collection/view.rb +42 -41
  87. data/lib/mongo/collection.rb +356 -89
  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 +3 -0
  93. data/lib/mongo/crypt/auto_encrypter.rb +142 -15
  94. data/lib/mongo/crypt/auto_encryption_context.rb +3 -0
  95. data/lib/mongo/crypt/binary.rb +3 -0
  96. data/lib/mongo/crypt/binding.rb +717 -151
  97. data/lib/mongo/crypt/context.rb +74 -5
  98. data/lib/mongo/crypt/data_key_context.rb +15 -104
  99. data/lib/mongo/crypt/encryption_io.rb +101 -64
  100. data/lib/mongo/crypt/explicit_decryption_context.rb +3 -0
  101. data/lib/mongo/crypt/explicit_encrypter.rb +235 -29
  102. data/lib/mongo/crypt/explicit_encryption_context.rb +78 -21
  103. data/lib/mongo/crypt/explicit_encryption_expression_context.rb +30 -0
  104. data/lib/mongo/crypt/handle.rb +171 -86
  105. data/lib/mongo/crypt/hooks.rb +28 -2
  106. data/lib/mongo/crypt/kms/aws/credentials.rb +83 -0
  107. data/lib/mongo/crypt/kms/aws/master_document.rb +78 -0
  108. data/lib/mongo/crypt/kms/aws.rb +20 -0
  109. data/lib/mongo/crypt/kms/azure/access_token.rb +54 -0
  110. data/lib/mongo/crypt/kms/azure/credentials.rb +103 -0
  111. data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +122 -0
  112. data/lib/mongo/crypt/kms/azure/master_document.rb +79 -0
  113. data/lib/mongo/crypt/kms/azure.rb +21 -0
  114. data/lib/mongo/crypt/kms/credentials.rb +96 -0
  115. data/lib/mongo/crypt/kms/gcp/credentials.rb +127 -0
  116. data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +58 -0
  117. data/lib/mongo/crypt/kms/gcp/master_document.rb +99 -0
  118. data/lib/mongo/crypt/kms/gcp.rb +21 -0
  119. data/lib/mongo/crypt/kms/kmip/credentials.rb +68 -0
  120. data/lib/mongo/crypt/kms/kmip/master_document.rb +74 -0
  121. data/lib/mongo/crypt/kms/kmip.rb +19 -0
  122. data/lib/mongo/crypt/kms/local/credentials.rb +65 -0
  123. data/lib/mongo/crypt/kms/local/master_document.rb +43 -0
  124. data/lib/mongo/crypt/kms/local.rb +19 -0
  125. data/lib/mongo/crypt/kms/master_key_document.rb +65 -0
  126. data/lib/mongo/crypt/kms.rb +122 -0
  127. data/lib/mongo/crypt/kms_context.rb +3 -0
  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 +11 -2
  131. data/lib/mongo/crypt.rb +18 -0
  132. data/lib/mongo/cursor/kill_spec.rb +76 -0
  133. data/lib/mongo/cursor.rb +150 -43
  134. data/lib/mongo/database/view.rb +55 -10
  135. data/lib/mongo/database.rb +95 -25
  136. data/lib/mongo/dbref.rb +4 -105
  137. data/lib/mongo/distinguishing_semaphore.rb +4 -1
  138. data/lib/mongo/error/auth_error.rb +3 -0
  139. data/lib/mongo/error/bad_load_balancer_target.rb +26 -0
  140. data/lib/mongo/error/bulk_write_error.rb +49 -5
  141. data/lib/mongo/error/change_stream_resumable.rb +3 -0
  142. data/lib/mongo/error/client_closed.rb +24 -0
  143. data/lib/mongo/error/closed_stream.rb +3 -0
  144. data/lib/mongo/error/connection_check_out_timeout.rb +3 -0
  145. data/lib/mongo/error/connection_perished.rb +5 -0
  146. data/lib/mongo/error/connection_unavailable.rb +27 -0
  147. data/lib/mongo/error/credential_check_error.rb +3 -0
  148. data/lib/mongo/error/crypt_error.rb +3 -0
  149. data/lib/mongo/error/extra_file_chunk.rb +3 -0
  150. data/lib/mongo/error/failed_string_prep_validation.rb +3 -0
  151. data/lib/mongo/error/file_not_found.rb +3 -0
  152. data/lib/mongo/error/handshake_error.rb +3 -0
  153. data/lib/mongo/error/insufficient_iteration_count.rb +3 -0
  154. data/lib/mongo/error/internal_driver_error.rb +25 -0
  155. data/lib/mongo/error/invalid_address.rb +3 -0
  156. data/lib/mongo/error/invalid_application_name.rb +3 -0
  157. data/lib/mongo/error/invalid_bulk_operation.rb +3 -0
  158. data/lib/mongo/error/invalid_bulk_operation_type.rb +3 -0
  159. data/lib/mongo/error/invalid_collection_name.rb +3 -0
  160. data/lib/mongo/error/invalid_config_option.rb +21 -0
  161. data/lib/mongo/error/invalid_cursor_operation.rb +3 -0
  162. data/lib/mongo/error/invalid_database_name.rb +3 -0
  163. data/lib/mongo/error/invalid_document.rb +3 -0
  164. data/lib/mongo/error/invalid_file.rb +3 -0
  165. data/lib/mongo/error/invalid_file_revision.rb +3 -0
  166. data/lib/mongo/error/invalid_max_connecting.rb +28 -0
  167. data/lib/mongo/error/invalid_min_pool_size.rb +3 -0
  168. data/lib/mongo/error/invalid_nonce.rb +3 -0
  169. data/lib/mongo/error/invalid_read_concern.rb +31 -0
  170. data/lib/mongo/error/invalid_read_option.rb +4 -1
  171. data/lib/mongo/error/invalid_replacement_document.rb +30 -9
  172. data/lib/mongo/error/invalid_server_auth_host.rb +3 -0
  173. data/lib/mongo/error/invalid_server_auth_response.rb +3 -0
  174. data/lib/mongo/error/invalid_server_preference.rb +3 -0
  175. data/lib/mongo/error/invalid_session.rb +3 -0
  176. data/lib/mongo/error/invalid_signature.rb +3 -0
  177. data/lib/mongo/error/invalid_transaction_operation.rb +3 -0
  178. data/lib/mongo/error/invalid_txt_record.rb +3 -0
  179. data/lib/mongo/error/invalid_update_document.rb +30 -7
  180. data/lib/mongo/error/invalid_uri.rb +3 -0
  181. data/lib/mongo/error/invalid_write_concern.rb +3 -0
  182. data/lib/mongo/error/kms_error.rb +3 -0
  183. data/lib/mongo/error/labelable.rb +72 -0
  184. data/lib/mongo/error/lint_error.rb +3 -0
  185. data/lib/mongo/error/max_bson_size.rb +3 -0
  186. data/lib/mongo/error/max_message_size.rb +3 -0
  187. data/lib/mongo/error/mismatched_domain.rb +3 -0
  188. data/lib/mongo/error/missing_connection.rb +27 -0
  189. data/lib/mongo/error/missing_file_chunk.rb +11 -2
  190. data/lib/mongo/error/missing_password.rb +3 -0
  191. data/lib/mongo/error/missing_resume_token.rb +3 -0
  192. data/lib/mongo/error/missing_scram_server_signature.rb +3 -0
  193. data/lib/mongo/error/missing_service_id.rb +26 -0
  194. data/lib/mongo/error/mongocryptd_spawn_error.rb +3 -0
  195. data/lib/mongo/error/multi_index_drop.rb +3 -0
  196. data/lib/mongo/error/need_primary_server.rb +3 -0
  197. data/lib/mongo/error/no_server_available.rb +3 -0
  198. data/lib/mongo/error/no_service_connection_available.rb +49 -0
  199. data/lib/mongo/error/no_srv_records.rb +3 -0
  200. data/lib/mongo/error/notable.rb +24 -0
  201. data/lib/mongo/error/operation_failure.rb +57 -87
  202. data/lib/mongo/error/parser.rb +69 -13
  203. data/lib/mongo/error/pool_cleared_error.rb +40 -0
  204. data/lib/mongo/error/pool_closed_error.rb +6 -16
  205. data/lib/mongo/error/pool_error.rb +45 -0
  206. data/lib/mongo/error/pool_paused_error.rb +40 -0
  207. data/lib/mongo/error/raise_original_error.rb +3 -0
  208. data/lib/mongo/error/read_write_retryable.rb +108 -0
  209. data/lib/mongo/error/sdam_error_detection.rb +16 -5
  210. data/lib/mongo/error/server_api_conflict.rb +26 -0
  211. data/lib/mongo/error/server_api_not_supported.rb +27 -0
  212. data/lib/mongo/error/server_certificate_revoked.rb +25 -0
  213. data/lib/mongo/error/server_not_usable.rb +36 -0
  214. data/lib/mongo/error/session_ended.rb +3 -0
  215. data/lib/mongo/error/session_not_materialized.rb +29 -0
  216. data/lib/mongo/error/sessions_not_supported.rb +3 -0
  217. data/lib/mongo/error/snapshot_session_invalid_server_version.rb +31 -0
  218. data/lib/mongo/error/snapshot_session_transaction_prohibited.rb +30 -0
  219. data/lib/mongo/error/socket_error.rb +3 -0
  220. data/lib/mongo/error/socket_timeout_error.rb +3 -0
  221. data/lib/mongo/error/unchangeable_collection_option.rb +3 -0
  222. data/lib/mongo/error/unexpected_chunk_length.rb +3 -0
  223. data/lib/mongo/error/unexpected_response.rb +3 -0
  224. data/lib/mongo/error/unknown_payload_type.rb +3 -0
  225. data/lib/mongo/error/unmet_dependency.rb +24 -0
  226. data/lib/mongo/error/unsupported_array_filters.rb +3 -0
  227. data/lib/mongo/error/unsupported_collation.rb +3 -0
  228. data/lib/mongo/error/unsupported_features.rb +3 -0
  229. data/lib/mongo/error/unsupported_message_type.rb +3 -0
  230. data/lib/mongo/error/unsupported_option.rb +17 -12
  231. data/lib/mongo/error/write_retryable.rb +3 -0
  232. data/lib/mongo/error.rb +31 -38
  233. data/lib/mongo/event/base.rb +3 -0
  234. data/lib/mongo/event/listeners.rb +3 -0
  235. data/lib/mongo/event/publisher.rb +3 -0
  236. data/lib/mongo/event/subscriber.rb +3 -0
  237. data/lib/mongo/event.rb +3 -0
  238. data/lib/mongo/grid/file/chunk.rb +6 -2
  239. data/lib/mongo/grid/file/info.rb +5 -1
  240. data/lib/mongo/grid/file.rb +3 -0
  241. data/lib/mongo/grid/fs_bucket.rb +86 -46
  242. data/lib/mongo/grid/stream/read.rb +28 -7
  243. data/lib/mongo/grid/stream/write.rb +3 -0
  244. data/lib/mongo/grid/stream.rb +3 -0
  245. data/lib/mongo/grid.rb +3 -0
  246. data/lib/mongo/id.rb +10 -5
  247. data/lib/mongo/index/view.rb +68 -58
  248. data/lib/mongo/index.rb +3 -0
  249. data/lib/mongo/lint.rb +5 -1
  250. data/lib/mongo/loggable.rb +5 -2
  251. data/lib/mongo/logger.rb +6 -3
  252. data/lib/mongo/monitoring/cmap_log_subscriber.rb +3 -0
  253. data/lib/mongo/monitoring/command_log_subscriber.rb +3 -0
  254. data/lib/mongo/monitoring/event/cmap/base.rb +3 -0
  255. data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +3 -0
  256. data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +3 -0
  257. data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +3 -0
  258. data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +3 -0
  259. data/lib/mongo/monitoring/event/cmap/connection_closed.rb +3 -0
  260. data/lib/mongo/monitoring/event/cmap/connection_created.rb +3 -0
  261. data/lib/mongo/monitoring/event/cmap/connection_ready.rb +3 -0
  262. data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +17 -4
  263. data/lib/mongo/monitoring/event/cmap/pool_closed.rb +3 -0
  264. data/lib/mongo/monitoring/event/cmap/pool_created.rb +3 -0
  265. data/lib/mongo/monitoring/event/cmap/pool_ready.rb +67 -0
  266. data/lib/mongo/monitoring/event/cmap.rb +4 -0
  267. data/lib/mongo/monitoring/event/command_failed.rb +38 -5
  268. data/lib/mongo/monitoring/event/command_started.rb +23 -3
  269. data/lib/mongo/monitoring/event/command_succeeded.rb +36 -3
  270. data/lib/mongo/monitoring/event/secure.rb +39 -5
  271. data/lib/mongo/monitoring/event/server_closed.rb +3 -0
  272. data/lib/mongo/monitoring/event/server_description_changed.rb +4 -1
  273. data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +32 -18
  274. data/lib/mongo/monitoring/event/server_heartbeat_started.rb +3 -0
  275. data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +30 -16
  276. data/lib/mongo/monitoring/event/server_opening.rb +3 -0
  277. data/lib/mongo/monitoring/event/topology_changed.rb +3 -0
  278. data/lib/mongo/monitoring/event/topology_closed.rb +3 -0
  279. data/lib/mongo/monitoring/event/topology_opening.rb +3 -0
  280. data/lib/mongo/monitoring/event.rb +3 -0
  281. data/lib/mongo/monitoring/publishable.rb +38 -12
  282. data/lib/mongo/monitoring/sdam_log_subscriber.rb +3 -0
  283. data/lib/mongo/monitoring/server_closed_log_subscriber.rb +3 -0
  284. data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +3 -0
  285. data/lib/mongo/monitoring/server_opening_log_subscriber.rb +3 -0
  286. data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +3 -0
  287. data/lib/mongo/monitoring/topology_closed_log_subscriber.rb +3 -0
  288. data/lib/mongo/monitoring/topology_opening_log_subscriber.rb +3 -0
  289. data/lib/mongo/monitoring/unified_sdam_log_subscriber.rb +3 -0
  290. data/lib/mongo/monitoring.rb +20 -8
  291. data/lib/mongo/operation/aggregate/op_msg.rb +3 -0
  292. data/lib/mongo/operation/aggregate/result.rb +12 -8
  293. data/lib/mongo/operation/aggregate.rb +4 -2
  294. data/lib/mongo/operation/collections_info/result.rb +24 -1
  295. data/lib/mongo/operation/collections_info.rb +10 -2
  296. data/lib/mongo/operation/command/op_msg.rb +9 -0
  297. data/lib/mongo/operation/command.rb +4 -2
  298. data/lib/mongo/operation/context.rb +138 -0
  299. data/lib/mongo/operation/count/op_msg.rb +12 -0
  300. data/lib/mongo/operation/count.rb +4 -2
  301. data/lib/mongo/operation/create/op_msg.rb +13 -0
  302. data/lib/mongo/operation/create.rb +4 -2
  303. data/lib/mongo/operation/create_index/op_msg.rb +21 -4
  304. data/lib/mongo/operation/create_index.rb +4 -2
  305. data/lib/mongo/operation/create_user/op_msg.rb +3 -0
  306. data/lib/mongo/operation/create_user.rb +4 -2
  307. data/lib/mongo/operation/delete/bulk_result.rb +5 -0
  308. data/lib/mongo/operation/delete/op_msg.rb +13 -1
  309. data/lib/mongo/operation/delete/result.rb +6 -0
  310. data/lib/mongo/operation/delete.rb +3 -2
  311. data/lib/mongo/operation/distinct/op_msg.rb +13 -0
  312. data/lib/mongo/operation/distinct.rb +4 -2
  313. data/lib/mongo/operation/drop/op_msg.rb +3 -0
  314. data/lib/mongo/operation/drop.rb +4 -2
  315. data/lib/mongo/operation/drop_database/op_msg.rb +3 -0
  316. data/lib/mongo/operation/drop_database.rb +4 -2
  317. data/lib/mongo/operation/drop_index/op_msg.rb +8 -1
  318. data/lib/mongo/operation/drop_index.rb +4 -2
  319. data/lib/mongo/operation/explain/op_msg.rb +17 -0
  320. data/lib/mongo/operation/explain/result.rb +6 -0
  321. data/lib/mongo/operation/explain.rb +4 -3
  322. data/lib/mongo/operation/find/builder/command.rb +111 -0
  323. data/lib/mongo/operation/find/builder/flags.rb +61 -0
  324. data/lib/mongo/operation/find/builder/modifiers.rb +89 -0
  325. data/lib/mongo/operation/find/builder.rb +20 -0
  326. data/lib/mongo/operation/find/op_msg.rb +15 -0
  327. data/lib/mongo/operation/find/result.rb +16 -0
  328. data/lib/mongo/operation/find.rb +5 -3
  329. data/lib/mongo/operation/get_more/command_builder.rb +42 -0
  330. data/lib/mongo/operation/get_more/op_msg.rb +4 -0
  331. data/lib/mongo/operation/get_more/result.rb +6 -0
  332. data/lib/mongo/operation/get_more.rb +5 -3
  333. data/lib/mongo/operation/indexes/op_msg.rb +3 -0
  334. data/lib/mongo/operation/indexes/result.rb +8 -0
  335. data/lib/mongo/operation/indexes.rb +4 -3
  336. data/lib/mongo/operation/insert/bulk_result.rb +13 -1
  337. data/lib/mongo/operation/insert/op_msg.rb +11 -5
  338. data/lib/mongo/operation/insert/result.rb +14 -3
  339. data/lib/mongo/operation/insert.rb +3 -2
  340. data/lib/mongo/operation/kill_cursors/command_builder.rb +35 -0
  341. data/lib/mongo/operation/kill_cursors/op_msg.rb +13 -0
  342. data/lib/mongo/operation/kill_cursors.rb +5 -3
  343. data/lib/mongo/operation/list_collections/op_msg.rb +7 -1
  344. data/lib/mongo/operation/list_collections/result.rb +12 -1
  345. data/lib/mongo/operation/list_collections.rb +4 -2
  346. data/lib/mongo/operation/map_reduce/op_msg.rb +4 -1
  347. data/lib/mongo/operation/map_reduce/result.rb +29 -0
  348. data/lib/mongo/operation/map_reduce.rb +4 -2
  349. data/lib/mongo/operation/op_msg_base.rb +3 -0
  350. data/lib/mongo/operation/parallel_scan/op_msg.rb +3 -0
  351. data/lib/mongo/operation/parallel_scan/result.rb +7 -0
  352. data/lib/mongo/operation/parallel_scan.rb +4 -2
  353. data/lib/mongo/operation/remove_user/op_msg.rb +3 -0
  354. data/lib/mongo/operation/remove_user.rb +4 -2
  355. data/lib/mongo/operation/result.rb +67 -11
  356. data/lib/mongo/operation/shared/bypass_document_validation.rb +4 -0
  357. data/lib/mongo/operation/shared/causal_consistency_supported.rb +4 -0
  358. data/lib/mongo/operation/shared/executable.rb +61 -17
  359. data/lib/mongo/operation/shared/executable_no_validate.rb +5 -2
  360. data/lib/mongo/operation/shared/executable_transaction_label.rb +3 -0
  361. data/lib/mongo/operation/shared/idable.rb +5 -1
  362. data/lib/mongo/operation/shared/limited.rb +4 -0
  363. data/lib/mongo/operation/shared/object_id_generator.rb +4 -0
  364. data/lib/mongo/operation/shared/op_msg_executable.rb +59 -0
  365. data/lib/mongo/operation/shared/polymorphic_lookup.rb +3 -0
  366. data/lib/mongo/operation/shared/polymorphic_result.rb +3 -0
  367. data/lib/mongo/operation/shared/read_preference_supported.rb +44 -37
  368. data/lib/mongo/operation/shared/response_handling.rb +32 -27
  369. data/lib/mongo/operation/shared/result/aggregatable.rb +4 -0
  370. data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +3 -0
  371. data/lib/mongo/operation/shared/sessions_supported.rb +55 -20
  372. data/lib/mongo/operation/shared/specifiable.rb +15 -29
  373. data/lib/mongo/operation/shared/validatable.rb +87 -0
  374. data/lib/mongo/operation/shared/write.rb +28 -28
  375. data/lib/mongo/operation/shared/write_concern_supported.rb +4 -0
  376. data/lib/mongo/operation/update/bulk_result.rb +3 -0
  377. data/lib/mongo/operation/update/op_msg.rb +12 -4
  378. data/lib/mongo/operation/update/result.rb +11 -0
  379. data/lib/mongo/operation/update.rb +3 -2
  380. data/lib/mongo/operation/update_user/op_msg.rb +3 -0
  381. data/lib/mongo/operation/update_user.rb +4 -2
  382. data/lib/mongo/operation/users_info/op_msg.rb +3 -0
  383. data/lib/mongo/operation/users_info/result.rb +6 -0
  384. data/lib/mongo/operation/users_info.rb +4 -2
  385. data/lib/mongo/operation/write_command/op_msg.rb +43 -0
  386. data/lib/mongo/operation/write_command.rb +31 -0
  387. data/lib/mongo/operation.rb +17 -4
  388. data/lib/mongo/options/mapper.rb +3 -0
  389. data/lib/mongo/options/redacted.rb +3 -0
  390. data/lib/mongo/options.rb +3 -0
  391. data/lib/mongo/protocol/bit_vector.rb +6 -1
  392. data/lib/mongo/protocol/caching_hash.rb +52 -0
  393. data/lib/mongo/protocol/compressed.rb +54 -5
  394. data/lib/mongo/protocol/get_more.rb +3 -0
  395. data/lib/mongo/protocol/kill_cursors.rb +3 -0
  396. data/lib/mongo/protocol/message.rb +27 -10
  397. data/lib/mongo/protocol/msg.rb +61 -17
  398. data/lib/mongo/protocol/query.rb +53 -32
  399. data/lib/mongo/protocol/registry.rb +3 -0
  400. data/lib/mongo/protocol/reply.rb +3 -0
  401. data/lib/mongo/protocol/serializers.rb +27 -17
  402. data/lib/mongo/protocol.rb +4 -3
  403. data/lib/mongo/query_cache.rb +300 -0
  404. data/lib/mongo/retryable/base_worker.rb +91 -0
  405. data/lib/mongo/retryable/read_worker.rb +296 -0
  406. data/lib/mongo/retryable/write_worker.rb +364 -0
  407. data/lib/mongo/retryable.rb +33 -446
  408. data/lib/mongo/semaphore.rb +4 -1
  409. data/lib/mongo/server/app_metadata/environment.rb +259 -0
  410. data/lib/mongo/server/app_metadata/platform.rb +114 -0
  411. data/lib/mongo/server/app_metadata/truncator.rb +142 -0
  412. data/lib/mongo/server/app_metadata.rb +117 -94
  413. data/lib/mongo/server/connection.rb +126 -22
  414. data/lib/mongo/server/connection_base.rb +49 -21
  415. data/lib/mongo/server/connection_common.rb +76 -3
  416. data/lib/mongo/server/connection_pool/generation_manager.rb +115 -0
  417. data/lib/mongo/server/connection_pool/populator.rb +35 -30
  418. data/lib/mongo/server/connection_pool.rb +776 -206
  419. data/lib/mongo/server/description/features.rb +34 -25
  420. data/lib/mongo/server/description/load_balancer.rb +33 -0
  421. data/lib/mongo/server/description.rb +126 -17
  422. data/lib/mongo/server/monitor/app_metadata.rb +4 -1
  423. data/lib/mongo/server/monitor/connection.rb +66 -50
  424. data/lib/mongo/server/monitor.rb +62 -32
  425. data/lib/mongo/server/pending_connection.rb +77 -44
  426. data/lib/mongo/server/push_monitor/connection.rb +3 -0
  427. data/lib/mongo/server/push_monitor.rb +54 -20
  428. data/lib/mongo/server/round_trip_time_averager.rb +6 -3
  429. data/lib/mongo/server.rb +197 -67
  430. data/lib/mongo/server_selector/base.rb +65 -11
  431. data/lib/mongo/server_selector/nearest.rb +6 -4
  432. data/lib/mongo/server_selector/primary.rb +6 -4
  433. data/lib/mongo/server_selector/primary_preferred.rb +6 -4
  434. data/lib/mongo/server_selector/secondary.rb +6 -4
  435. data/lib/mongo/server_selector/secondary_preferred.rb +8 -11
  436. data/lib/mongo/server_selector.rb +3 -0
  437. data/lib/mongo/session/server_session.rb +3 -0
  438. data/lib/mongo/session/session_pool.rb +26 -2
  439. data/lib/mongo/session.rb +164 -38
  440. data/lib/mongo/socket/ocsp_cache.rb +99 -0
  441. data/lib/mongo/socket/ocsp_verifier.rb +344 -0
  442. data/lib/mongo/socket/ssl.rb +56 -24
  443. data/lib/mongo/socket/tcp.rb +6 -0
  444. data/lib/mongo/socket/unix.rb +3 -0
  445. data/lib/mongo/socket.rb +71 -16
  446. data/lib/mongo/srv/monitor.rb +10 -26
  447. data/lib/mongo/srv/resolver.rb +41 -13
  448. data/lib/mongo/srv/result.rb +3 -0
  449. data/lib/mongo/srv.rb +3 -0
  450. data/lib/mongo/timeout.rb +6 -1
  451. data/lib/mongo/topology_version.rb +4 -1
  452. data/lib/mongo/uri/options_mapper.rb +867 -0
  453. data/lib/mongo/uri/srv_protocol.rb +13 -11
  454. data/lib/mongo/uri.rb +100 -400
  455. data/lib/mongo/utils.rb +44 -1
  456. data/lib/mongo/version.rb +4 -1
  457. data/lib/mongo/write_concern/acknowledged.rb +3 -0
  458. data/lib/mongo/write_concern/base.rb +3 -0
  459. data/lib/mongo/write_concern/unacknowledged.rb +3 -0
  460. data/lib/mongo/write_concern.rb +3 -0
  461. data/lib/mongo.rb +58 -0
  462. data/mongo.gemspec +16 -7
  463. data/spec/NOTES.aws-auth.md +12 -7
  464. data/spec/README.md +106 -3
  465. data/spec/atlas/atlas_connectivity_spec.rb +3 -0
  466. data/spec/atlas/operations_spec.rb +5 -7
  467. data/spec/integration/auth_spec.rb +58 -15
  468. data/spec/integration/awaited_ismaster_spec.rb +9 -6
  469. data/spec/integration/aws_auth_credentials_cache_spec.rb +51 -0
  470. data/spec/integration/aws_auth_request_spec.rb +4 -1
  471. data/spec/integration/aws_credentials_retriever_spec.rb +34 -1
  472. data/spec/integration/aws_lambda_examples_spec.rb +68 -0
  473. data/spec/integration/bson_symbol_spec.rb +8 -3
  474. data/spec/integration/bulk_insert_spec.rb +3 -0
  475. data/spec/integration/bulk_write_error_message_spec.rb +74 -0
  476. data/spec/integration/bulk_write_spec.rb +67 -0
  477. data/spec/integration/change_stream_examples_spec.rb +3 -0
  478. data/spec/integration/change_stream_spec.rb +18 -9
  479. data/spec/integration/check_clean_slate_spec.rb +3 -0
  480. data/spec/integration/client_authentication_options_spec.rb +76 -36
  481. data/spec/integration/client_connectivity_spec.rb +4 -1
  482. data/spec/integration/client_construction_aws_auth_spec.rb +14 -2
  483. data/spec/integration/client_construction_spec.rb +153 -8
  484. data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +13 -10
  485. data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +172 -169
  486. data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +3 -1
  487. data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +3 -0
  488. data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +43 -4
  489. data/spec/integration/client_side_encryption/auto_encryption_spec.rb +148 -2
  490. data/spec/integration/client_side_encryption/automatic_data_encryption_keys_prose_spec.rb +153 -0
  491. data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +6 -3
  492. data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +6 -3
  493. data/spec/integration/client_side_encryption/client_close_spec.rb +4 -1
  494. data/spec/integration/client_side_encryption/corpus_spec.rb +67 -35
  495. data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +42 -42
  496. data/spec/integration/client_side_encryption/data_key_spec.rb +101 -8
  497. data/spec/integration/client_side_encryption/decryption_events_prose_spec.rb +159 -0
  498. data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +62 -0
  499. data/spec/integration/client_side_encryption/explicit_queryable_encryption_spec.rb +150 -0
  500. data/spec/integration/client_side_encryption/external_key_vault_spec.rb +9 -6
  501. data/spec/integration/client_side_encryption/kms_tls_options_spec.rb +436 -0
  502. data/spec/integration/client_side_encryption/kms_tls_spec.rb +92 -0
  503. data/spec/integration/client_side_encryption/mongocryptd_prose_spec.rb +105 -0
  504. data/spec/integration/client_side_encryption/on_demand_aws_credentials_spec.rb +49 -0
  505. data/spec/integration/client_side_encryption/on_demand_azure_credentials_spec.rb +46 -0
  506. data/spec/integration/client_side_encryption/on_demand_gcp_credentials_spec.rb +47 -0
  507. data/spec/integration/client_side_encryption/queryable_encryption_examples_spec.rb +114 -0
  508. data/spec/integration/client_side_encryption/range_explicit_encryption_prose_spec.rb +536 -0
  509. data/spec/integration/client_side_encryption/rewrap_prose_spec.rb +114 -0
  510. data/spec/integration/client_side_encryption/unique_index_on_key_alt_names_prose_spec.rb +89 -0
  511. data/spec/integration/client_side_encryption/views_spec.rb +4 -1
  512. data/spec/integration/client_spec.rb +14 -4
  513. data/spec/integration/client_update_spec.rb +9 -2
  514. data/spec/integration/collection_indexes_prose_spec.rb +3 -0
  515. data/spec/integration/command_monitoring_spec.rb +64 -26
  516. data/spec/integration/command_spec.rb +5 -24
  517. data/spec/integration/connect_single_rs_name_spec.rb +6 -3
  518. data/spec/integration/connection/faas_env_spec.rb +62 -0
  519. data/spec/integration/connection_pool_populator_spec.rb +33 -8
  520. data/spec/integration/connection_spec.rb +58 -36
  521. data/spec/integration/crud_spec.rb +217 -1
  522. data/spec/integration/cursor_pinning_spec.rb +125 -0
  523. data/spec/integration/cursor_reaping_spec.rb +62 -19
  524. data/spec/integration/docs_examples_spec.rb +12 -2
  525. data/spec/integration/error_detection_spec.rb +3 -0
  526. data/spec/integration/fork_reconnect_spec.rb +73 -9
  527. data/spec/integration/get_more_spec.rb +4 -1
  528. data/spec/integration/grid_fs_bucket_spec.rb +7 -4
  529. data/spec/integration/heartbeat_events_spec.rb +8 -5
  530. data/spec/integration/map_reduce_spec.rb +81 -0
  531. data/spec/integration/mmapv1_spec.rb +3 -0
  532. data/spec/integration/mongos_pinning_spec.rb +3 -0
  533. data/spec/integration/ocsp_connectivity_spec.rb +29 -0
  534. data/spec/integration/ocsp_verifier_cache_spec.rb +191 -0
  535. data/spec/integration/ocsp_verifier_spec.rb +358 -0
  536. data/spec/integration/operation_failure_code_spec.rb +4 -1
  537. data/spec/integration/operation_failure_message_spec.rb +91 -0
  538. data/spec/integration/query_cache_spec.rb +1343 -0
  539. data/spec/integration/query_cache_transactions_spec.rb +193 -0
  540. data/spec/integration/read_concern_spec.rb +4 -1
  541. data/spec/integration/read_preference_spec.rb +20 -13
  542. data/spec/integration/reconnect_spec.rb +39 -13
  543. data/spec/integration/retryable_errors_spec.rb +4 -1
  544. data/spec/integration/retryable_reads_errors_spec.rb +110 -0
  545. data/spec/integration/retryable_writes/retryable_writes_36_and_older_spec.rb +5 -2
  546. data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +5 -1
  547. data/spec/integration/retryable_writes/shared/adds_diagnostics.rb +3 -0
  548. data/spec/integration/retryable_writes/shared/does_not_support_retries.rb +3 -0
  549. data/spec/integration/retryable_writes/shared/only_supports_legacy_retries.rb +3 -0
  550. data/spec/integration/retryable_writes/shared/performs_legacy_retries.rb +5 -0
  551. data/spec/integration/retryable_writes/shared/performs_modern_retries.rb +3 -0
  552. data/spec/integration/retryable_writes/shared/performs_no_retries.rb +3 -0
  553. data/spec/integration/retryable_writes/shared/supports_legacy_retries.rb +3 -0
  554. data/spec/integration/retryable_writes/shared/supports_modern_retries.rb +3 -0
  555. data/spec/integration/retryable_writes/shared/supports_retries.rb +3 -0
  556. data/spec/integration/retryable_writes_errors_spec.rb +162 -1
  557. data/spec/integration/sdam_error_handling_spec.rb +159 -8
  558. data/spec/integration/sdam_events_spec.rb +94 -31
  559. data/spec/integration/sdam_prose_spec.rb +7 -4
  560. data/spec/integration/secondary_reads_spec.rb +103 -0
  561. data/spec/integration/server_description_spec.rb +3 -0
  562. data/spec/integration/server_monitor_spec.rb +7 -2
  563. data/spec/integration/server_selection_spec.rb +39 -0
  564. data/spec/integration/server_selector_spec.rb +29 -7
  565. data/spec/integration/server_spec.rb +27 -25
  566. data/spec/integration/shell_examples_spec.rb +3 -0
  567. data/spec/integration/size_limit_spec.rb +7 -1
  568. data/spec/integration/snappy_compression_spec.rb +28 -0
  569. data/spec/integration/snapshot_query_examples_spec.rb +129 -0
  570. data/spec/integration/srv_monitoring_spec.rb +82 -5
  571. data/spec/integration/srv_spec.rb +60 -0
  572. data/spec/integration/ssl_uri_options_spec.rb +3 -0
  573. data/spec/integration/step_down_spec.rb +28 -7
  574. data/spec/integration/time_zone_querying_spec.rb +3 -0
  575. data/spec/integration/transaction_pinning_spec.rb +134 -0
  576. data/spec/integration/transactions_api_examples_spec.rb +3 -0
  577. data/spec/integration/transactions_examples_spec.rb +26 -7
  578. data/spec/integration/truncated_utf8_spec.rb +26 -0
  579. data/spec/integration/versioned_api_examples_spec.rb +120 -0
  580. data/spec/integration/x509_auth_spec.rb +5 -2
  581. data/spec/integration/zlib_compression_spec.rb +4 -1
  582. data/spec/integration/zstd_compression_spec.rb +29 -0
  583. data/spec/kerberos/kerberos_spec.rb +3 -0
  584. data/spec/lite_spec_helper.rb +59 -16
  585. data/spec/mongo/address/ipv4_spec.rb +3 -0
  586. data/spec/mongo/address/ipv6_spec.rb +10 -0
  587. data/spec/mongo/address/unix_spec.rb +4 -0
  588. data/spec/mongo/address/validator_spec.rb +3 -0
  589. data/spec/mongo/address_spec.rb +33 -13
  590. data/spec/mongo/auth/aws/credential_cache_spec.rb +63 -0
  591. data/spec/mongo/auth/aws/credentials_retriever_spec.rb +90 -0
  592. data/spec/mongo/auth/aws/credentials_spec.rb +46 -0
  593. data/spec/mongo/auth/aws/request_region_spec.rb +3 -0
  594. data/spec/mongo/auth/aws/request_spec.rb +3 -0
  595. data/spec/mongo/auth/cr_spec.rb +6 -24
  596. data/spec/mongo/auth/gssapi/conversation_spec.rb +3 -0
  597. data/spec/mongo/auth/invalid_mechanism_spec.rb +3 -0
  598. data/spec/mongo/auth/ldap/conversation_spec.rb +4 -1
  599. data/spec/mongo/auth/ldap_spec.rb +10 -4
  600. data/spec/mongo/auth/scram/conversation_spec.rb +26 -23
  601. data/spec/mongo/auth/scram256/conversation_spec.rb +23 -20
  602. data/spec/mongo/auth/scram_negotiation_spec.rb +5 -1
  603. data/spec/mongo/auth/scram_spec.rb +5 -3
  604. data/spec/mongo/auth/stringprep/profiles/sasl_spec.rb +3 -0
  605. data/spec/mongo/auth/stringprep_spec.rb +3 -0
  606. data/spec/mongo/auth/user/view_spec.rb +99 -1
  607. data/spec/mongo/auth/user_spec.rb +4 -1
  608. data/spec/mongo/auth/x509/conversation_spec.rb +6 -3
  609. data/spec/mongo/auth/x509_spec.rb +5 -3
  610. data/spec/mongo/auth_spec.rb +3 -0
  611. data/spec/mongo/bson_spec.rb +3 -0
  612. data/spec/mongo/bulk_write/ordered_combiner_spec.rb +3 -0
  613. data/spec/mongo/bulk_write/result_spec.rb +18 -1
  614. data/spec/mongo/bulk_write/unordered_combiner_spec.rb +3 -0
  615. data/spec/mongo/bulk_write_spec.rb +149 -25
  616. data/spec/mongo/caching_cursor_spec.rb +73 -0
  617. data/spec/mongo/client_construction_spec.rb +1112 -546
  618. data/spec/mongo/client_encryption_spec.rb +27 -30
  619. data/spec/mongo/client_spec.rb +445 -139
  620. data/spec/mongo/cluster/cursor_reaper_spec.rb +66 -23
  621. data/spec/mongo/cluster/periodic_executor_spec.rb +6 -1
  622. data/spec/mongo/cluster/socket_reaper_spec.rb +3 -0
  623. data/spec/mongo/cluster/topology/replica_set_spec.rb +13 -10
  624. data/spec/mongo/cluster/topology/sharded_spec.rb +6 -3
  625. data/spec/mongo/cluster/topology/single_spec.rb +20 -8
  626. data/spec/mongo/cluster/topology/unknown_spec.rb +4 -1
  627. data/spec/mongo/cluster/topology_spec.rb +4 -1
  628. data/spec/mongo/cluster_spec.rb +183 -192
  629. data/spec/mongo/cluster_time_spec.rb +3 -0
  630. data/spec/mongo/collection/view/aggregation_spec.rb +181 -83
  631. data/spec/mongo/collection/view/builder/find_command_spec.rb +7 -0
  632. data/spec/mongo/collection/view/builder/op_query_spec.rb +7 -0
  633. data/spec/mongo/collection/view/change_stream_resume_spec.rb +8 -3
  634. data/spec/mongo/collection/view/change_stream_spec.rb +18 -2
  635. data/spec/mongo/collection/view/explainable_spec.rb +90 -4
  636. data/spec/mongo/collection/view/immutable_spec.rb +3 -0
  637. data/spec/mongo/collection/view/iterable_spec.rb +3 -0
  638. data/spec/mongo/collection/view/map_reduce_spec.rb +46 -2
  639. data/spec/mongo/collection/view/readable_spec.rb +868 -1
  640. data/spec/mongo/collection/view/writable_spec.rb +147 -32
  641. data/spec/mongo/collection/view_spec.rb +3 -0
  642. data/spec/mongo/collection_crud_spec.rb +4471 -0
  643. data/spec/mongo/collection_ddl_spec.rb +587 -0
  644. data/spec/mongo/collection_spec.rb +106 -4839
  645. data/spec/mongo/condition_variable_spec.rb +104 -0
  646. data/spec/mongo/config/options_spec.rb +76 -0
  647. data/spec/mongo/config_spec.rb +74 -0
  648. data/spec/mongo/crypt/auto_decryption_context_spec.rb +21 -2
  649. data/spec/mongo/crypt/auto_encrypter_spec.rb +266 -5
  650. data/spec/mongo/crypt/auto_encryption_context_spec.rb +21 -2
  651. data/spec/mongo/crypt/binary_spec.rb +3 -5
  652. data/spec/mongo/crypt/binding/binary_spec.rb +3 -5
  653. data/spec/mongo/crypt/binding/context_spec.rb +71 -23
  654. data/spec/mongo/crypt/binding/helpers_spec.rb +3 -5
  655. data/spec/mongo/crypt/binding/mongocrypt_spec.rb +21 -52
  656. data/spec/mongo/crypt/binding/status_spec.rb +3 -5
  657. data/spec/mongo/crypt/binding/version_spec.rb +50 -5
  658. data/spec/mongo/crypt/binding_unloaded_spec.rb +17 -0
  659. data/spec/mongo/crypt/data_key_context_spec.rb +45 -114
  660. data/spec/mongo/crypt/encryption_io_spec.rb +5 -0
  661. data/spec/mongo/crypt/explicit_decryption_context_spec.rb +36 -2
  662. data/spec/mongo/crypt/explicit_encryption_context_spec.rb +98 -2
  663. data/spec/mongo/crypt/handle_spec.rb +189 -155
  664. data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +3 -0
  665. data/spec/mongo/crypt/hooks_spec.rb +30 -0
  666. data/spec/mongo/crypt/kms/azure/credentials_retriever_spec.rb +86 -0
  667. data/spec/mongo/crypt/kms/credentials_spec.rb +373 -0
  668. data/spec/mongo/crypt/kms_spec.rb +62 -0
  669. data/spec/mongo/crypt/status_spec.rb +3 -5
  670. data/spec/mongo/crypt_spec.rb +21 -0
  671. data/spec/mongo/cursor/builder/get_more_command_spec.rb +11 -2
  672. data/spec/mongo/cursor/builder/op_get_more_spec.rb +11 -2
  673. data/spec/mongo/cursor_spec.rb +230 -19
  674. data/spec/mongo/database_spec.rb +263 -25
  675. data/spec/mongo/distinguishing_semaphore_spec.rb +9 -6
  676. data/spec/mongo/error/bulk_write_error_spec.rb +6 -3
  677. data/spec/mongo/error/crypt_error_spec.rb +3 -0
  678. data/spec/mongo/error/max_bson_size_spec.rb +3 -0
  679. data/spec/mongo/error/no_server_available_spec.rb +4 -1
  680. data/spec/mongo/error/notable_spec.rb +3 -0
  681. data/spec/mongo/error/operation_failure_heavy_spec.rb +53 -1
  682. data/spec/mongo/error/operation_failure_spec.rb +94 -31
  683. data/spec/mongo/error/parser_spec.rb +40 -6
  684. data/spec/mongo/error/unsupported_option_spec.rb +3 -0
  685. data/spec/mongo/event/publisher_spec.rb +3 -0
  686. data/spec/mongo/event/subscriber_spec.rb +3 -0
  687. data/spec/mongo/grid/file/chunk_spec.rb +7 -4
  688. data/spec/mongo/grid/file/info_spec.rb +3 -0
  689. data/spec/mongo/grid/file_spec.rb +4 -1
  690. data/spec/mongo/grid/fs_bucket_spec.rb +40 -17
  691. data/spec/mongo/grid/stream/read_spec.rb +33 -10
  692. data/spec/mongo/grid/stream/write_spec.rb +6 -9
  693. data/spec/mongo/grid/stream_spec.rb +4 -1
  694. data/spec/mongo/id_spec.rb +4 -1
  695. data/spec/mongo/index/view_spec.rb +138 -4
  696. data/spec/mongo/lint_spec.rb +4 -1
  697. data/spec/mongo/logger_spec.rb +16 -11
  698. data/spec/mongo/monitoring/command_log_subscriber_spec.rb +3 -0
  699. data/spec/mongo/monitoring/event/cmap/connection_check_out_failed_spec.rb +4 -1
  700. data/spec/mongo/monitoring/event/cmap/connection_check_out_started_spec.rb +4 -1
  701. data/spec/mongo/monitoring/event/cmap/connection_checked_in_spec.rb +4 -1
  702. data/spec/mongo/monitoring/event/cmap/connection_checked_out_spec.rb +4 -1
  703. data/spec/mongo/monitoring/event/cmap/connection_closed_spec.rb +4 -1
  704. data/spec/mongo/monitoring/event/cmap/connection_created_spec.rb +4 -1
  705. data/spec/mongo/monitoring/event/cmap/connection_ready_spec.rb +4 -1
  706. data/spec/mongo/monitoring/event/cmap/pool_cleared_spec.rb +4 -1
  707. data/spec/mongo/monitoring/event/cmap/pool_closed_spec.rb +4 -1
  708. data/spec/mongo/monitoring/event/cmap/pool_created_spec.rb +4 -1
  709. data/spec/mongo/monitoring/event/command_failed_spec.rb +59 -2
  710. data/spec/mongo/monitoring/event/command_started_spec.rb +3 -0
  711. data/spec/mongo/monitoring/event/command_succeeded_spec.rb +46 -6
  712. data/spec/mongo/monitoring/event/secure_spec.rb +28 -4
  713. data/spec/mongo/monitoring/event/server_closed_spec.rb +4 -1
  714. data/spec/mongo/monitoring/event/server_description_changed_spec.rb +3 -0
  715. data/spec/mongo/monitoring/event/server_heartbeat_failed_spec.rb +4 -1
  716. data/spec/mongo/monitoring/event/server_heartbeat_started_spec.rb +3 -0
  717. data/spec/mongo/monitoring/event/server_heartbeat_succeeded_spec.rb +4 -1
  718. data/spec/mongo/monitoring/event/server_opening_spec.rb +4 -1
  719. data/spec/mongo/monitoring/event/topology_changed_spec.rb +4 -1
  720. data/spec/mongo/monitoring/event/topology_closed_spec.rb +4 -1
  721. data/spec/mongo/monitoring/event/topology_opening_spec.rb +4 -1
  722. data/spec/mongo/monitoring_spec.rb +3 -0
  723. data/spec/mongo/operation/aggregate/result_spec.rb +7 -2
  724. data/spec/mongo/operation/aggregate_spec.rb +5 -1
  725. data/spec/mongo/operation/collections_info_spec.rb +7 -1
  726. data/spec/mongo/operation/command_spec.rb +11 -5
  727. data/spec/mongo/operation/create/op_msg_spec.rb +244 -0
  728. data/spec/mongo/operation/create_index_spec.rb +9 -3
  729. data/spec/mongo/operation/create_user_spec.rb +9 -3
  730. data/spec/mongo/operation/delete/bulk_spec.rb +12 -6
  731. data/spec/mongo/operation/delete/op_msg_spec.rb +20 -8
  732. data/spec/mongo/operation/delete_spec.rb +13 -36
  733. data/spec/mongo/operation/drop_index_spec.rb +9 -2
  734. data/spec/mongo/operation/find/builder/flags_spec.rb +109 -0
  735. data/spec/mongo/operation/find/builder/modifiers_spec.rb +213 -0
  736. data/spec/mongo/operation/indexes_spec.rb +8 -1
  737. data/spec/mongo/operation/insert/bulk_spec.rb +14 -8
  738. data/spec/mongo/operation/insert/op_msg_spec.rb +25 -14
  739. data/spec/mongo/operation/insert_spec.rb +17 -43
  740. data/spec/mongo/operation/limited_spec.rb +3 -0
  741. data/spec/mongo/operation/map_reduce_spec.rb +8 -2
  742. data/spec/mongo/operation/read_preference_legacy_spec.rb +39 -42
  743. data/spec/mongo/operation/read_preference_op_msg_spec.rb +33 -5
  744. data/spec/mongo/operation/remove_user_spec.rb +9 -3
  745. data/spec/mongo/operation/result_spec.rb +30 -5
  746. data/spec/mongo/operation/specifiable_spec.rb +3 -0
  747. data/spec/mongo/operation/update/bulk_spec.rb +13 -7
  748. data/spec/mongo/operation/update/op_msg_spec.rb +20 -8
  749. data/spec/mongo/operation/update_spec.rb +12 -35
  750. data/spec/mongo/operation/update_user_spec.rb +7 -1
  751. data/spec/mongo/options/redacted_spec.rb +4 -1
  752. data/spec/mongo/protocol/caching_hash_spec.rb +37 -0
  753. data/spec/mongo/protocol/compressed_spec.rb +29 -12
  754. data/spec/mongo/protocol/get_more_spec.rb +3 -0
  755. data/spec/mongo/protocol/kill_cursors_spec.rb +3 -0
  756. data/spec/mongo/protocol/msg_spec.rb +48 -66
  757. data/spec/mongo/protocol/query_spec.rb +6 -3
  758. data/spec/mongo/protocol/registry_spec.rb +3 -0
  759. data/spec/mongo/protocol/reply_spec.rb +3 -0
  760. data/spec/mongo/query_cache_middleware_spec.rb +55 -0
  761. data/spec/mongo/query_cache_spec.rb +453 -0
  762. data/spec/mongo/retryable_spec.rb +42 -7
  763. data/spec/mongo/semaphore_spec.rb +9 -6
  764. data/spec/mongo/server/app_metadata/environment_spec.rb +209 -0
  765. data/spec/mongo/server/app_metadata/truncator_spec.rb +158 -0
  766. data/spec/mongo/server/app_metadata_spec.rb +55 -52
  767. data/spec/mongo/server/connection_auth_spec.rb +9 -10
  768. data/spec/mongo/server/connection_common_spec.rb +87 -0
  769. data/spec/mongo/server/connection_pool/populator_spec.rb +22 -3
  770. data/spec/mongo/server/connection_pool_spec.rb +635 -58
  771. data/spec/mongo/server/connection_spec.rb +226 -204
  772. data/spec/mongo/server/description/features_spec.rb +27 -0
  773. data/spec/mongo/server/description_query_methods_spec.rb +4 -1
  774. data/spec/mongo/server/description_spec.rb +625 -594
  775. data/spec/mongo/server/monitor/app_metadata_spec.rb +3 -1
  776. data/spec/mongo/server/monitor/connection_spec.rb +81 -9
  777. data/spec/mongo/server/monitor_spec.rb +31 -18
  778. data/spec/mongo/server/push_monitor_spec.rb +95 -0
  779. data/spec/mongo/server/round_trip_time_averager_spec.rb +3 -0
  780. data/spec/mongo/server_selector/nearest_spec.rb +8 -2
  781. data/spec/mongo/server_selector/primary_preferred_spec.rb +8 -2
  782. data/spec/mongo/server_selector/primary_spec.rb +8 -2
  783. data/spec/mongo/server_selector/secondary_preferred_spec.rb +14 -8
  784. data/spec/mongo/server_selector/secondary_spec.rb +8 -2
  785. data/spec/mongo/server_selector_spec.rb +143 -18
  786. data/spec/mongo/server_spec.rb +49 -6
  787. data/spec/mongo/session/server_session_spec.rb +3 -0
  788. data/spec/mongo/session/session_pool_spec.rb +45 -10
  789. data/spec/mongo/session_spec.rb +29 -6
  790. data/spec/mongo/session_transaction_spec.rb +17 -36
  791. data/spec/mongo/socket/ssl_spec.rb +91 -75
  792. data/spec/mongo/socket/tcp_spec.rb +3 -0
  793. data/spec/mongo/socket/unix_spec.rb +4 -0
  794. data/spec/mongo/socket_spec.rb +5 -2
  795. data/spec/mongo/srv/monitor_spec.rb +3 -0
  796. data/spec/mongo/srv/result_spec.rb +3 -0
  797. data/spec/mongo/timeout_spec.rb +3 -0
  798. data/spec/mongo/tls_context_hooks_spec.rb +40 -0
  799. data/spec/mongo/uri/options_mapper_spec.rb +1605 -0
  800. data/spec/mongo/uri/srv_protocol_spec.rb +330 -36
  801. data/spec/mongo/uri_option_parsing_spec.rb +52 -16
  802. data/spec/mongo/uri_spec.rb +238 -42
  803. data/spec/mongo/utils_spec.rb +42 -0
  804. data/spec/mongo/write_concern/acknowledged_spec.rb +3 -0
  805. data/spec/mongo/write_concern/unacknowledged_spec.rb +3 -0
  806. data/spec/mongo/write_concern_spec.rb +3 -0
  807. data/spec/runners/auth.rb +26 -2
  808. data/spec/runners/change_streams/outcome.rb +3 -0
  809. data/spec/runners/change_streams/spec.rb +4 -1
  810. data/spec/runners/change_streams/test.rb +5 -2
  811. data/spec/runners/cmap/verifier.rb +4 -1
  812. data/spec/runners/cmap.rb +192 -46
  813. data/spec/runners/command_monitoring.rb +4 -1
  814. data/spec/runners/connection_string.rb +48 -126
  815. data/spec/runners/crud/context.rb +3 -0
  816. data/spec/runners/crud/operation.rb +21 -7
  817. data/spec/runners/crud/outcome.rb +3 -0
  818. data/spec/runners/crud/requirement.rb +76 -6
  819. data/spec/runners/crud/spec.rb +9 -3
  820. data/spec/runners/crud/test.rb +4 -1
  821. data/spec/runners/crud/test_base.rb +4 -20
  822. data/spec/runners/crud/verifier.rb +20 -4
  823. data/spec/runners/crud.rb +23 -1
  824. data/spec/runners/gridfs.rb +4 -1
  825. data/spec/runners/read_write_concern_document.rb +4 -1
  826. data/spec/runners/sdam/verifier.rb +3 -0
  827. data/spec/runners/sdam.rb +9 -5
  828. data/spec/runners/server_selection.rb +5 -2
  829. data/spec/runners/server_selection_rtt.rb +5 -2
  830. data/spec/runners/transactions/operation.rb +30 -10
  831. data/spec/runners/transactions/spec.rb +5 -2
  832. data/spec/runners/transactions/test.rb +69 -21
  833. data/spec/runners/transactions.rb +14 -8
  834. data/spec/runners/unified/assertions.rb +379 -0
  835. data/spec/runners/unified/change_stream_operations.rb +52 -0
  836. data/spec/runners/unified/client_side_encryption_operations.rb +83 -0
  837. data/spec/runners/unified/crud_operations.rb +332 -0
  838. data/spec/runners/unified/ddl_operations.rb +255 -0
  839. data/spec/runners/unified/entity_map.rb +42 -0
  840. data/spec/runners/unified/error.rb +29 -0
  841. data/spec/runners/unified/event_subscriber.rb +110 -0
  842. data/spec/runners/unified/exceptions.rb +24 -0
  843. data/spec/runners/unified/grid_fs_operations.rb +79 -0
  844. data/spec/runners/unified/support_operations.rb +333 -0
  845. data/spec/runners/unified/test.rb +585 -0
  846. data/spec/runners/unified/test_group.rb +31 -0
  847. data/spec/runners/unified/thread_operations.rb +73 -0
  848. data/spec/runners/unified.rb +109 -0
  849. data/spec/shared/LICENSE +20 -0
  850. data/spec/shared/bin/get-mongodb-download-url +17 -0
  851. data/spec/shared/bin/s3-copy +45 -0
  852. data/spec/shared/bin/s3-upload +69 -0
  853. data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
  854. data/spec/shared/lib/mrss/cluster_config.rb +231 -0
  855. data/spec/shared/lib/mrss/constraints.rb +378 -0
  856. data/spec/shared/lib/mrss/docker_runner.rb +295 -0
  857. data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
  858. data/spec/shared/lib/mrss/event_subscriber.rb +210 -0
  859. data/spec/shared/lib/mrss/lite_constraints.rb +238 -0
  860. data/spec/shared/lib/mrss/server_version_registry.rb +113 -0
  861. data/spec/shared/lib/mrss/session_registry.rb +69 -0
  862. data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
  863. data/spec/shared/lib/mrss/spec_organizer.rb +179 -0
  864. data/spec/shared/lib/mrss/utils.rb +37 -0
  865. data/spec/shared/share/Dockerfile.erb +330 -0
  866. data/spec/shared/share/haproxy-1.conf +16 -0
  867. data/spec/shared/share/haproxy-2.conf +17 -0
  868. data/spec/shared/shlib/config.sh +27 -0
  869. data/spec/shared/shlib/distro.sh +74 -0
  870. data/spec/shared/shlib/server.sh +416 -0
  871. data/spec/shared/shlib/set_env.sh +169 -0
  872. data/spec/solo/clean_exit_spec.rb +22 -0
  873. data/spec/spec_helper.rb +11 -5
  874. data/spec/spec_tests/auth_spec.rb +30 -13
  875. data/spec/spec_tests/change_streams_unified_spec.rb +14 -0
  876. data/spec/spec_tests/client_side_encryption_spec.rb +27 -1
  877. data/spec/spec_tests/client_side_encryption_unified_spec.rb +26 -0
  878. data/spec/spec_tests/cmap_spec.rb +41 -17
  879. data/spec/spec_tests/collection_management_spec.rb +13 -0
  880. data/spec/spec_tests/command_monitoring_unified_spec.rb +13 -0
  881. data/spec/spec_tests/connection_string_spec.rb +3 -0
  882. data/spec/spec_tests/crud_spec.rb +3 -10
  883. data/spec/spec_tests/crud_unified_spec.rb +13 -0
  884. data/spec/spec_tests/data/change_streams_unified/change-streams-clusterTime.yml +41 -0
  885. data/spec/spec_tests/data/change_streams_unified/change-streams-disambiguatedPaths.yml +103 -0
  886. data/spec/spec_tests/data/change_streams_unified/change-streams-errors.yml +120 -0
  887. data/spec/spec_tests/data/change_streams_unified/change-streams-pre_and_post_images.yml +351 -0
  888. data/spec/spec_tests/data/change_streams_unified/change-streams-resume-allowlist.yml +1169 -0
  889. data/spec/spec_tests/data/change_streams_unified/change-streams-resume-errorLabels.yml +1069 -0
  890. data/spec/spec_tests/data/change_streams_unified/change-streams-showExpandedEvents.yml +307 -0
  891. data/spec/spec_tests/data/change_streams_unified/change-streams.yml +927 -0
  892. data/spec/spec_tests/data/client_side_encryption/aggregate.yml +3 -17
  893. data/spec/spec_tests/data/client_side_encryption/awsTemporary.yml +57 -0
  894. data/spec/spec_tests/data/client_side_encryption/azureKMS.yml +46 -0
  895. data/spec/spec_tests/data/client_side_encryption/badQueries.yml +12 -2
  896. data/spec/spec_tests/data/client_side_encryption/basic.yml +3 -17
  897. data/spec/spec_tests/data/client_side_encryption/bulk.yml +1 -8
  898. data/spec/spec_tests/data/client_side_encryption/bypassAutoEncryption.yml +2 -2
  899. data/spec/spec_tests/data/client_side_encryption/bypassedCommand.yml +5 -4
  900. data/spec/spec_tests/data/client_side_encryption/count.yml +1 -8
  901. data/spec/spec_tests/data/client_side_encryption/countDocuments.yml +1 -8
  902. data/spec/spec_tests/data/client_side_encryption/create-and-createIndexes.yml +58 -0
  903. data/spec/spec_tests/data/client_side_encryption/delete.yml +2 -16
  904. data/spec/spec_tests/data/client_side_encryption/distinct.yml +1 -8
  905. data/spec/spec_tests/data/client_side_encryption/explain.yml +1 -8
  906. data/spec/spec_tests/data/client_side_encryption/find.yml +2 -16
  907. data/spec/spec_tests/data/client_side_encryption/findOneAndDelete.yml +1 -8
  908. data/spec/spec_tests/data/client_side_encryption/findOneAndReplace.yml +1 -8
  909. data/spec/spec_tests/data/client_side_encryption/findOneAndUpdate.yml +1 -8
  910. data/spec/spec_tests/data/client_side_encryption/fle2v2-BypassQueryAnalysis.yml +89 -0
  911. data/spec/spec_tests/data/client_side_encryption/fle2v2-Compact.yml +82 -0
  912. data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection-OldServer.yml +61 -0
  913. data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection.yml +937 -0
  914. data/spec/spec_tests/data/client_side_encryption/fle2v2-DecryptExistingData.yml +66 -0
  915. data/spec/spec_tests/data/client_side_encryption/fle2v2-Delete.yml +100 -0
  916. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-EncryptedFieldsMap.yml +79 -0
  917. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-jsonSchema.yml +102 -0
  918. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFieldsMap-defaults.yml +58 -0
  919. data/spec/spec_tests/data/client_side_encryption/fle2v2-FindOneAndUpdate.yml +200 -0
  920. data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Indexed.yml +96 -0
  921. data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Unindexed.yml +89 -0
  922. data/spec/spec_tests/data/client_side_encryption/fle2v2-MissingKey.yml +43 -0
  923. data/spec/spec_tests/data/client_side_encryption/fle2v2-NoEncryption.yml +44 -0
  924. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Aggregate.yml +241 -0
  925. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Correctness.yml +422 -0
  926. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Delete.yml +182 -0
  927. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-FindOneAndUpdate.yml +239 -0
  928. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-InsertFind.yml +235 -0
  929. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Update.yml +252 -0
  930. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Aggregate.yml +1687 -0
  931. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Correctness.yml +293 -0
  932. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Delete.yml +905 -0
  933. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-FindOneAndUpdate.yml +1684 -0
  934. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-InsertFind.yml +1680 -0
  935. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Update.yml +1697 -0
  936. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Aggregate.yml +329 -0
  937. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Correctness.yml +424 -0
  938. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Delete.yml +226 -0
  939. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-FindOneAndUpdate.yml +327 -0
  940. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-InsertFind.yml +319 -0
  941. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Update.yml +336 -0
  942. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Aggregate.yml +913 -0
  943. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Correctness.yml +292 -0
  944. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Delete.yml +518 -0
  945. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-FindOneAndUpdate.yml +911 -0
  946. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-InsertFind.yml +907 -0
  947. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Update.yml +924 -0
  948. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Aggregate.yml +325 -0
  949. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Correctness.yml +424 -0
  950. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Delete.yml +224 -0
  951. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-FindOneAndUpdate.yml +323 -0
  952. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-InsertFind.yml +319 -0
  953. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Update.yml +338 -0
  954. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Aggregate.yml +241 -0
  955. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Correctness.yml +423 -0
  956. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Delete.yml +182 -0
  957. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-FindOneAndUpdate.yml +239 -0
  958. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-InsertFind.yml +235 -0
  959. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Update.yml +254 -0
  960. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Aggregate.yml +241 -0
  961. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Correctness.yml +422 -0
  962. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Delete.yml +182 -0
  963. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-FindOneAndUpdate.yml +239 -0
  964. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-InsertFind.yml +235 -0
  965. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Update.yml +254 -0
  966. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-WrongType.yml +43 -0
  967. data/spec/spec_tests/data/client_side_encryption/fle2v2-Update.yml +210 -0
  968. data/spec/spec_tests/data/client_side_encryption/fle2v2-validatorAndPartialFieldExpression.yml +169 -0
  969. data/spec/spec_tests/data/client_side_encryption/gcpKMS.yml +46 -0
  970. data/spec/spec_tests/data/client_side_encryption/getMore.yml +1 -8
  971. data/spec/spec_tests/data/client_side_encryption/insert.yml +2 -16
  972. data/spec/spec_tests/data/client_side_encryption/keyAltName.yml +1 -8
  973. data/spec/spec_tests/data/client_side_encryption/localKMS.yml +1 -8
  974. data/spec/spec_tests/data/client_side_encryption/localSchema.yml +1 -8
  975. data/spec/spec_tests/data/client_side_encryption/maxWireVersion.yml +3 -1
  976. data/spec/spec_tests/data/client_side_encryption/missingKey.yml +2 -9
  977. data/spec/spec_tests/data/client_side_encryption/noSchema.yml +39 -0
  978. data/spec/spec_tests/data/client_side_encryption/replaceOne.yml +1 -8
  979. data/spec/spec_tests/data/client_side_encryption/types.yml +44 -70
  980. data/spec/spec_tests/data/client_side_encryption/unified/addKeyAltName.yml +194 -0
  981. data/spec/spec_tests/data/client_side_encryption/unified/createDataKey-kms_providers-invalid.yml +67 -0
  982. data/spec/spec_tests/data/client_side_encryption/unified/createDataKey.yml +309 -0
  983. data/spec/spec_tests/data/client_side_encryption/unified/deleteKey.yml +159 -0
  984. data/spec/spec_tests/data/client_side_encryption/unified/getKey.yml +105 -0
  985. data/spec/spec_tests/data/client_side_encryption/unified/getKeyByAltName.yml +104 -0
  986. data/spec/spec_tests/data/client_side_encryption/unified/getKeys.yml +122 -0
  987. data/spec/spec_tests/data/client_side_encryption/unified/removeKeyAltName.yml +157 -0
  988. data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey-decrypt_failure.yml +69 -0
  989. data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey-encrypt_failure.yml +122 -0
  990. data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey.yml +432 -0
  991. data/spec/spec_tests/data/client_side_encryption/updateMany.yml +1 -8
  992. data/spec/spec_tests/data/client_side_encryption/updateOne.yml +1 -8
  993. data/spec/spec_tests/data/client_side_encryption/validatorAndPartialFieldExpression.yml +166 -0
  994. data/spec/spec_tests/data/cmap/connection-must-have-id.yml +2 -0
  995. data/spec/spec_tests/data/cmap/connection-must-order-ids.yml +2 -0
  996. data/spec/spec_tests/data/cmap/pool-checkin-destroy-closed.yml +2 -0
  997. data/spec/spec_tests/data/cmap/pool-checkin-destroy-stale.yml +2 -0
  998. data/spec/spec_tests/data/cmap/pool-checkin-make-available.yml +3 -1
  999. data/spec/spec_tests/data/cmap/pool-checkin.yml +5 -0
  1000. data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +8 -2
  1001. data/spec/spec_tests/data/cmap/pool-checkout-custom-maxConnecting-is-enforced.yml +50 -0
  1002. data/spec/spec_tests/data/cmap/pool-checkout-error-closed.yml +2 -0
  1003. data/spec/spec_tests/data/cmap/pool-checkout-maxConnecting-is-enforced.yml +81 -0
  1004. data/spec/spec_tests/data/cmap/pool-checkout-maxConnecting-timeout.yml +71 -0
  1005. data/spec/spec_tests/data/cmap/pool-checkout-minPoolSize-connection-maxConnecting.yml +64 -0
  1006. data/spec/spec_tests/data/cmap/pool-checkout-multiple.yml +2 -0
  1007. data/spec/spec_tests/data/cmap/pool-checkout-no-idle.yml +6 -0
  1008. data/spec/spec_tests/data/cmap/pool-checkout-no-stale.yml +8 -0
  1009. data/spec/spec_tests/data/cmap/pool-checkout-returned-connection-maxConnecting.yml +88 -0
  1010. data/spec/spec_tests/data/cmap/pool-clear-interrupt-immediately.yml +49 -0
  1011. data/spec/spec_tests/data/cmap/pool-clear-interrupting-pending-connections.yml +43 -0
  1012. data/spec/spec_tests/data/cmap/pool-clear-min-size.yml +41 -0
  1013. data/spec/spec_tests/data/cmap/pool-clear-paused.yml +18 -0
  1014. data/spec/spec_tests/data/cmap/pool-clear-ready.yml +39 -0
  1015. data/spec/spec_tests/data/cmap/pool-clear-schedule-run-interruptInUseConnections-false.yml +48 -0
  1016. data/spec/spec_tests/data/cmap/pool-close-destroy-conns.yml +2 -0
  1017. data/spec/spec_tests/data/cmap/pool-create-max-size.yml +2 -0
  1018. data/spec/spec_tests/data/cmap/pool-create-min-size-error.yml +43 -0
  1019. data/spec/spec_tests/data/cmap/pool-create-min-size.yml +12 -0
  1020. data/spec/spec_tests/data/cmap/pool-ready-ready.yml +22 -0
  1021. data/spec/spec_tests/data/cmap/pool-ready.yml +30 -0
  1022. data/spec/spec_tests/data/cmap/wait-queue-fairness.yml +2 -0
  1023. data/spec/spec_tests/data/cmap/wait-queue-timeout.yml +6 -1
  1024. data/spec/spec_tests/data/collection_management/clustered-indexes.yml +135 -0
  1025. data/spec/spec_tests/data/collection_management/createCollection-pre_and_post_images.yml +50 -0
  1026. data/spec/spec_tests/data/collection_management/modifyCollection-errorResponse.yml +59 -0
  1027. data/spec/spec_tests/data/collection_management/modifyCollection-pre_and_post_images.yml +58 -0
  1028. data/spec/spec_tests/data/collection_management/timeseries-collection.yml +164 -0
  1029. data/spec/spec_tests/data/command_monitoring_unified/bulkWrite.yml +68 -0
  1030. data/spec/spec_tests/data/command_monitoring_unified/command.yml +50 -0
  1031. data/spec/spec_tests/data/command_monitoring_unified/deleteMany.yml +79 -0
  1032. data/spec/spec_tests/data/command_monitoring_unified/deleteOne.yml +79 -0
  1033. data/spec/spec_tests/data/command_monitoring_unified/find.yml +254 -0
  1034. data/spec/spec_tests/data/command_monitoring_unified/insertMany.yml +79 -0
  1035. data/spec/spec_tests/data/command_monitoring_unified/insertOne.yml +77 -0
  1036. data/spec/spec_tests/data/command_monitoring_unified/pre-42-server-connection-id.yml +56 -0
  1037. data/spec/spec_tests/data/command_monitoring_unified/redacted-commands.yml +348 -0
  1038. data/spec/spec_tests/data/command_monitoring_unified/server-connection-id.yml +56 -0
  1039. data/spec/spec_tests/data/command_monitoring_unified/unacknowledgedBulkWrite.yml +55 -0
  1040. data/spec/spec_tests/data/command_monitoring_unified/updateMany.yml +87 -0
  1041. data/spec/spec_tests/data/command_monitoring_unified/updateOne.yml +118 -0
  1042. data/spec/spec_tests/data/command_monitoring_unified/writeConcernError.yml +80 -0
  1043. data/spec/spec_tests/data/connection_string/valid-warnings.yml +24 -0
  1044. data/spec/spec_tests/data/crud/read/aggregate-collation.yml +2 -1
  1045. data/spec/spec_tests/data/crud/read/aggregate-out.yml +1 -0
  1046. data/spec/spec_tests/data/crud/read/count-collation.yml +2 -1
  1047. data/spec/spec_tests/data/crud/read/distinct-collation.yml +2 -1
  1048. data/spec/spec_tests/data/crud/read/find-collation.yml +2 -1
  1049. data/spec/spec_tests/data/crud/write/bulkWrite-collation.yml +2 -1
  1050. data/spec/spec_tests/data/crud/write/bulkWrite.yml +26 -22
  1051. data/spec/spec_tests/data/crud/write/deleteMany-collation.yml +2 -1
  1052. data/spec/spec_tests/data/crud/write/deleteOne-collation.yml +2 -1
  1053. data/spec/spec_tests/data/crud/write/findOneAndDelete-collation.yml +3 -2
  1054. data/spec/spec_tests/data/crud/write/findOneAndReplace-collation.yml +2 -1
  1055. data/spec/spec_tests/data/crud/write/findOneAndUpdate-collation.yml +3 -2
  1056. data/spec/spec_tests/data/crud/write/insertMany.yml +26 -22
  1057. data/spec/spec_tests/data/crud/write/replaceOne-collation.yml +3 -2
  1058. data/spec/spec_tests/data/crud/write/updateMany-collation.yml +2 -1
  1059. data/spec/spec_tests/data/crud/write/updateOne-collation.yml +2 -1
  1060. data/spec/spec_tests/data/crud_unified/aggregate-allowdiskuse.yml +75 -0
  1061. data/spec/spec_tests/data/crud_unified/aggregate-let.yml +138 -0
  1062. data/spec/spec_tests/data/crud_unified/aggregate-merge-errorResponse.yml +42 -0
  1063. data/spec/spec_tests/data/crud_unified/aggregate-merge.yml +185 -0
  1064. data/spec/spec_tests/data/crud_unified/aggregate-out-readConcern.yml +171 -0
  1065. data/spec/spec_tests/data/crud_unified/aggregate-write-readPreference.yml +155 -0
  1066. data/spec/spec_tests/data/crud_unified/aggregate.yml +215 -0
  1067. data/spec/spec_tests/data/crud_unified/bulkWrite-arrayFilters-clientError.yml +98 -0
  1068. data/spec/spec_tests/data/crud_unified/bulkWrite-arrayFilters.yml +174 -0
  1069. data/spec/spec_tests/data/crud_unified/bulkWrite-comment.yml +189 -0
  1070. data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint-clientError.yml +113 -0
  1071. data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint-serverError.yml +142 -0
  1072. data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint.yml +154 -0
  1073. data/spec/spec_tests/data/crud_unified/bulkWrite-deleteMany-hint-unacknowledged.yml +98 -0
  1074. data/spec/spec_tests/data/crud_unified/bulkWrite-deleteMany-let.yml +86 -0
  1075. data/spec/spec_tests/data/crud_unified/bulkWrite-deleteOne-hint-unacknowledged.yml +97 -0
  1076. data/spec/spec_tests/data/crud_unified/bulkWrite-deleteOne-let.yml +86 -0
  1077. data/spec/spec_tests/data/crud_unified/bulkWrite-errorResponse.yml +50 -0
  1078. data/spec/spec_tests/data/crud_unified/bulkWrite-insertOne-dots_and_dollars.yml +138 -0
  1079. data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-dots_and_dollars.yml +165 -0
  1080. data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-hint-unacknowledged.yml +103 -0
  1081. data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-let.yml +93 -0
  1082. data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint-clientError.yml +148 -0
  1083. data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint-serverError.yml +239 -0
  1084. data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint.yml +256 -0
  1085. data/spec/spec_tests/data/crud_unified/bulkWrite-update-validation.yml +73 -0
  1086. data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-dots_and_dollars.yml +150 -0
  1087. data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-hint-unacknowledged.yml +104 -0
  1088. data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-let.yml +96 -0
  1089. data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-dots_and_dollars.yml +150 -0
  1090. data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-hint-unacknowledged.yml +103 -0
  1091. data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-let.yml +95 -0
  1092. data/spec/spec_tests/data/crud_unified/countDocuments-comment.yml +92 -0
  1093. data/spec/spec_tests/data/crud_unified/db-aggregate-write-readPreference.yml +151 -0
  1094. data/spec/spec_tests/data/crud_unified/db-aggregate.yml +73 -0
  1095. data/spec/spec_tests/data/crud_unified/deleteMany-comment.yml +97 -0
  1096. data/spec/spec_tests/data/crud_unified/deleteMany-hint-clientError.yml +87 -0
  1097. data/spec/spec_tests/data/crud_unified/deleteMany-hint-serverError.yml +107 -0
  1098. data/spec/spec_tests/data/crud_unified/deleteMany-hint-unacknowledged.yml +90 -0
  1099. data/spec/spec_tests/data/crud_unified/deleteMany-hint.yml +99 -0
  1100. data/spec/spec_tests/data/crud_unified/deleteMany-let.yml +93 -0
  1101. data/spec/spec_tests/data/crud_unified/deleteOne-comment.yml +98 -0
  1102. data/spec/spec_tests/data/crud_unified/deleteOne-errorResponse.yml +46 -0
  1103. data/spec/spec_tests/data/crud_unified/deleteOne-hint-clientError.yml +80 -0
  1104. data/spec/spec_tests/data/crud_unified/deleteOne-hint-serverError.yml +100 -0
  1105. data/spec/spec_tests/data/crud_unified/deleteOne-hint-unacknowledged.yml +89 -0
  1106. data/spec/spec_tests/data/crud_unified/deleteOne-hint.yml +95 -0
  1107. data/spec/spec_tests/data/crud_unified/deleteOne-let.yml +91 -0
  1108. data/spec/spec_tests/data/crud_unified/distinct-comment.yml +98 -0
  1109. data/spec/spec_tests/data/crud_unified/estimatedDocumentCount-comment.yml +95 -0
  1110. data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +181 -0
  1111. data/spec/spec_tests/data/crud_unified/find-allowdiskuse-clientError.yml +55 -0
  1112. data/spec/spec_tests/data/crud_unified/find-allowdiskuse-serverError.yml +68 -0
  1113. data/spec/spec_tests/data/crud_unified/find-allowdiskuse.yml +79 -0
  1114. data/spec/spec_tests/data/crud_unified/find-comment.yml +166 -0
  1115. data/spec/spec_tests/data/crud_unified/find-let.yml +71 -0
  1116. data/spec/spec_tests/data/crud_unified/find.yml +68 -0
  1117. data/spec/spec_tests/data/crud_unified/findOneAndDelete-comment.yml +96 -0
  1118. data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-clientError.yml +91 -0
  1119. data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-serverError.yml +107 -0
  1120. data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-unacknowledged.yml +88 -0
  1121. data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint.yml +102 -0
  1122. data/spec/spec_tests/data/crud_unified/findOneAndDelete-let.yml +86 -0
  1123. data/spec/spec_tests/data/crud_unified/findOneAndReplace-comment.yml +101 -0
  1124. data/spec/spec_tests/data/crud_unified/findOneAndReplace-dots_and_dollars.yml +140 -0
  1125. data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-clientError.yml +83 -0
  1126. data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-serverError.yml +99 -0
  1127. data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-unacknowledged.yml +96 -0
  1128. data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint.yml +98 -0
  1129. data/spec/spec_tests/data/crud_unified/findOneAndReplace-let.yml +94 -0
  1130. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-comment.yml +95 -0
  1131. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-dots_and_dollars.yml +127 -0
  1132. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-errorResponse.yml +69 -0
  1133. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-clientError.yml +84 -0
  1134. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-serverError.yml +100 -0
  1135. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-unacknowledged.yml +92 -0
  1136. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint.yml +99 -0
  1137. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-let.yml +96 -0
  1138. data/spec/spec_tests/data/crud_unified/insertMany-comment.yml +93 -0
  1139. data/spec/spec_tests/data/crud_unified/insertMany-dots_and_dollars.yml +128 -0
  1140. data/spec/spec_tests/data/crud_unified/insertOne-comment.yml +91 -0
  1141. data/spec/spec_tests/data/crud_unified/insertOne-dots_and_dollars.yml +238 -0
  1142. data/spec/spec_tests/data/crud_unified/insertOne-errorResponse.yml +46 -0
  1143. data/spec/spec_tests/data/crud_unified/replaceOne-comment.yml +105 -0
  1144. data/spec/spec_tests/data/crud_unified/replaceOne-dots_and_dollars.yml +180 -0
  1145. data/spec/spec_tests/data/crud_unified/replaceOne-hint-unacknowledged.yml +95 -0
  1146. data/spec/spec_tests/data/crud_unified/replaceOne-hint.yml +108 -0
  1147. data/spec/spec_tests/data/crud_unified/replaceOne-let.yml +98 -0
  1148. data/spec/spec_tests/data/crud_unified/replaceOne-validation.yml +37 -0
  1149. data/spec/spec_tests/data/crud_unified/updateMany-comment.yml +104 -0
  1150. data/spec/spec_tests/data/crud_unified/updateMany-dots_and_dollars.yml +138 -0
  1151. data/spec/spec_tests/data/crud_unified/updateMany-hint-clientError.yml +91 -0
  1152. data/spec/spec_tests/data/crud_unified/updateMany-hint-serverError.yml +115 -0
  1153. data/spec/spec_tests/data/crud_unified/updateMany-hint-unacknowledged.yml +96 -0
  1154. data/spec/spec_tests/data/crud_unified/updateMany-hint.yml +115 -0
  1155. data/spec/spec_tests/data/crud_unified/updateMany-let.yml +107 -0
  1156. data/spec/spec_tests/data/crud_unified/updateMany-validation.yml +39 -0
  1157. data/spec/spec_tests/data/crud_unified/updateOne-comment.yml +104 -0
  1158. data/spec/spec_tests/data/crud_unified/updateOne-dots_and_dollars.yml +138 -0
  1159. data/spec/spec_tests/data/crud_unified/updateOne-errorResponse.yml +47 -0
  1160. data/spec/spec_tests/data/crud_unified/updateOne-hint-clientError.yml +85 -0
  1161. data/spec/spec_tests/data/crud_unified/updateOne-hint-serverError.yml +109 -0
  1162. data/spec/spec_tests/data/crud_unified/updateOne-hint-unacknowledged.yml +95 -0
  1163. data/spec/spec_tests/data/crud_unified/updateOne-hint.yml +109 -0
  1164. data/spec/spec_tests/data/crud_unified/updateOne-let.yml +102 -0
  1165. data/spec/spec_tests/data/crud_unified/updateOne-validation.yml +37 -0
  1166. data/spec/spec_tests/data/crud_unified/updateWithPipelines.yml +299 -0
  1167. data/spec/spec_tests/data/gridfs_unified/delete.yml +198 -0
  1168. data/spec/spec_tests/data/gridfs_unified/download.yml +241 -0
  1169. data/spec/spec_tests/data/gridfs_unified/downloadByName.yml +159 -0
  1170. data/spec/spec_tests/data/gridfs_unified/upload-disableMD5.yml +92 -0
  1171. data/spec/spec_tests/data/gridfs_unified/upload.yml +288 -0
  1172. data/spec/spec_tests/data/load_balancers/event-monitoring.yml +99 -0
  1173. data/spec/spec_tests/data/load_balancers/lb-connection-establishment.yml +36 -0
  1174. data/spec/spec_tests/data/load_balancers/non-lb-connection-establishment.yml +56 -0
  1175. data/spec/spec_tests/data/load_balancers/server-selection.yml +50 -0
  1176. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/DefaultNoMaxStaleness.yml +2 -2
  1177. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/LastUpdateTime.yml +3 -3
  1178. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest.yml +3 -3
  1179. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest2.yml +3 -3
  1180. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred.yml +2 -2
  1181. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred_tags.yml +2 -2
  1182. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Secondary.yml +4 -4
  1183. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred.yml +2 -2
  1184. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred_tags.yml +4 -4
  1185. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/ZeroMaxStaleness.yml +2 -2
  1186. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/DefaultNoMaxStaleness.yml +2 -2
  1187. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LastUpdateTime.yml +3 -3
  1188. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat.yml +2 -2
  1189. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat2.yml +2 -2
  1190. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessTooSmall.yml +2 -2
  1191. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessWithModePrimary.yml +2 -2
  1192. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest.yml +3 -3
  1193. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest2.yml +3 -3
  1194. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest_tags.yml +2 -2
  1195. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred.yml +2 -2
  1196. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred.yml +2 -2
  1197. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags.yml +5 -5
  1198. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags2.yml +3 -3
  1199. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags.yml +5 -5
  1200. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags2.yml +3 -3
  1201. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/ZeroMaxStaleness.yml +2 -2
  1202. data/spec/spec_tests/data/max_staleness/Sharded/SmallMaxStaleness.yml +2 -2
  1203. data/spec/spec_tests/data/max_staleness/Single/SmallMaxStaleness.yml +1 -1
  1204. data/spec/spec_tests/data/max_staleness/Unknown/SmallMaxStaleness.yml +1 -1
  1205. data/spec/spec_tests/data/retryable_reads/legacy/aggregate-serverErrors.yml +157 -0
  1206. data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-client.watch-serverErrors.yml +150 -0
  1207. data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-client.watch.yml +62 -0
  1208. data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.coll.watch-serverErrors.yml +150 -0
  1209. data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.coll.watch.yml +66 -0
  1210. data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.watch-serverErrors.yml +154 -0
  1211. data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.watch.yml +62 -0
  1212. data/spec/spec_tests/data/retryable_reads/legacy/count-serverErrors.yml +150 -0
  1213. data/spec/spec_tests/data/retryable_reads/legacy/countDocuments-serverErrors.yml +150 -0
  1214. data/spec/spec_tests/data/retryable_reads/legacy/distinct-serverErrors.yml +156 -0
  1215. data/spec/spec_tests/data/retryable_reads/legacy/estimatedDocumentCount-serverErrors.yml +148 -0
  1216. data/spec/spec_tests/data/retryable_reads/legacy/find-serverErrors.yml +160 -0
  1217. data/spec/spec_tests/data/retryable_reads/legacy/findOne-serverErrors.yml +154 -0
  1218. data/spec/spec_tests/data/retryable_reads/legacy/gridfs-download-serverErrors.yml +173 -0
  1219. data/spec/spec_tests/data/retryable_reads/legacy/gridfs-downloadByName-serverErrors.yml +174 -0
  1220. data/spec/spec_tests/data/retryable_reads/legacy/listCollectionNames-serverErrors.yml +143 -0
  1221. data/spec/spec_tests/data/retryable_reads/legacy/listCollectionObjects-serverErrors.yml +144 -0
  1222. data/spec/spec_tests/data/retryable_reads/legacy/listCollections-serverErrors.yml +143 -0
  1223. data/spec/spec_tests/data/retryable_reads/legacy/listDatabaseNames-serverErrors.yml +143 -0
  1224. data/spec/spec_tests/data/retryable_reads/legacy/listDatabaseObjects-serverErrors.yml +144 -0
  1225. data/spec/spec_tests/data/retryable_reads/legacy/listDatabases-serverErrors.yml +144 -0
  1226. data/spec/spec_tests/data/retryable_reads/legacy/listIndexNames-serverErrors.yml +144 -0
  1227. data/spec/spec_tests/data/retryable_reads/legacy/listIndexNames.yml +60 -0
  1228. data/spec/spec_tests/data/retryable_reads/legacy/listIndexes-serverErrors.yml +145 -0
  1229. data/spec/spec_tests/data/retryable_reads/legacy/mapReduce.yml +62 -0
  1230. data/spec/spec_tests/data/retryable_reads/unified/handshakeError.yml +1342 -0
  1231. data/spec/spec_tests/data/retryable_writes/legacy/bulkWrite-serverErrors.yml +130 -0
  1232. data/spec/spec_tests/data/retryable_writes/legacy/bulkWrite.yml +402 -0
  1233. data/spec/spec_tests/data/retryable_writes/legacy/deleteOne-serverErrors.yml +73 -0
  1234. data/spec/spec_tests/data/retryable_writes/legacy/findOneAndDelete-serverErrors.yml +74 -0
  1235. data/spec/spec_tests/data/retryable_writes/legacy/findOneAndReplace-serverErrors.yml +80 -0
  1236. data/spec/spec_tests/data/retryable_writes/legacy/findOneAndUpdate-serverErrors.yml +79 -0
  1237. data/spec/spec_tests/data/retryable_writes/legacy/insertMany-serverErrors.yml +84 -0
  1238. data/spec/spec_tests/data/retryable_writes/legacy/insertOne-serverErrors.yml +527 -0
  1239. data/spec/spec_tests/data/retryable_writes/legacy/replaceOne-serverErrors.yml +82 -0
  1240. data/spec/spec_tests/data/retryable_writes/legacy/updateOne-serverErrors.yml +82 -0
  1241. data/spec/spec_tests/data/retryable_writes/unified/bulkWrite-serverErrors.yml +96 -0
  1242. data/spec/spec_tests/data/retryable_writes/unified/handshakeError.yml +785 -0
  1243. data/spec/spec_tests/data/retryable_writes/unified/insertOne-noWritesPerformedError.yml +54 -0
  1244. data/spec/spec_tests/data/retryable_writes/unified/insertOne-serverErrors.yml +78 -0
  1245. data/spec/spec_tests/data/sdam/errors/error_handling_handshake.yml +2 -1
  1246. data/spec/spec_tests/data/sdam/errors/non-stale-network-error.yml +2 -1
  1247. data/spec/spec_tests/data/sdam/errors/non-stale-network-timeout-error.yml +2 -1
  1248. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-InterruptedAtShutdown.yml +2 -1
  1249. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-InterruptedDueToReplStateChange.yml +2 -1
  1250. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-LegacyNotPrimary.yml +61 -0
  1251. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotPrimaryNoSecondaryOk.yml +61 -0
  1252. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotPrimaryOrSecondary.yml +61 -0
  1253. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotWritablePrimary.yml +61 -0
  1254. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-PrimarySteppedDown.yml +2 -1
  1255. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-ShutdownInProgress.yml +2 -1
  1256. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-InterruptedAtShutdown.yml +2 -1
  1257. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-InterruptedDueToReplStateChange.yml +2 -1
  1258. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-LegacyNotPrimary.yml +52 -0
  1259. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotPrimaryNoSecondaryOk.yml +52 -0
  1260. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotPrimaryOrSecondary.yml +52 -0
  1261. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotWritablePrimary.yml +52 -0
  1262. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-PrimarySteppedDown.yml +2 -1
  1263. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-ShutdownInProgress.yml +2 -1
  1264. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-InterruptedAtShutdown.yml +2 -1
  1265. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-InterruptedDueToReplStateChange.yml +2 -1
  1266. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-LegacyNotPrimary.yml +61 -0
  1267. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotPrimaryNoSecondaryOk.yml +61 -0
  1268. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotPrimaryOrSecondary.yml +61 -0
  1269. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotWritablePrimary.yml +61 -0
  1270. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-PrimarySteppedDown.yml +2 -1
  1271. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-ShutdownInProgress.yml +2 -1
  1272. data/spec/spec_tests/data/sdam/errors/post-42-InterruptedAtShutdown.yml +2 -1
  1273. data/spec/spec_tests/data/sdam/errors/post-42-InterruptedDueToReplStateChange.yml +2 -1
  1274. data/spec/spec_tests/data/sdam/errors/post-42-LegacyNotPrimary.yml +47 -0
  1275. data/spec/spec_tests/data/sdam/errors/post-42-NotPrimaryNoSecondaryOk.yml +47 -0
  1276. data/spec/spec_tests/data/sdam/errors/post-42-NotPrimaryOrSecondary.yml +47 -0
  1277. data/spec/spec_tests/data/sdam/errors/post-42-NotWritablePrimary.yml +47 -0
  1278. data/spec/spec_tests/data/sdam/errors/post-42-PrimarySteppedDown.yml +2 -1
  1279. data/spec/spec_tests/data/sdam/errors/post-42-ShutdownInProgress.yml +2 -1
  1280. data/spec/spec_tests/data/sdam/errors/pre-42-InterruptedAtShutdown.yml +2 -1
  1281. data/spec/spec_tests/data/sdam/errors/pre-42-InterruptedDueToReplStateChange.yml +2 -1
  1282. data/spec/spec_tests/data/sdam/errors/pre-42-LegacyNotPrimary.yml +47 -0
  1283. data/spec/spec_tests/data/sdam/errors/pre-42-NotPrimaryNoSecondaryOk.yml +47 -0
  1284. data/spec/spec_tests/data/sdam/errors/pre-42-NotPrimaryOrSecondary.yml +47 -0
  1285. data/spec/spec_tests/data/sdam/errors/pre-42-NotWritablePrimary.yml +47 -0
  1286. data/spec/spec_tests/data/sdam/errors/pre-42-PrimarySteppedDown.yml +2 -1
  1287. data/spec/spec_tests/data/sdam/errors/pre-42-ShutdownInProgress.yml +2 -1
  1288. data/spec/spec_tests/data/sdam/errors/prefer-error-code.yml +54 -0
  1289. data/spec/spec_tests/data/sdam/errors/stale-generation-InterruptedAtShutdown.yml +4 -2
  1290. data/spec/spec_tests/data/sdam/errors/stale-generation-InterruptedDueToReplStateChange.yml +4 -2
  1291. data/spec/spec_tests/data/sdam/errors/stale-generation-NotPrimaryNoSecondaryOk.yml +91 -0
  1292. data/spec/spec_tests/data/sdam/errors/stale-generation-NotPrimaryOrSecondary.yml +91 -0
  1293. data/spec/spec_tests/data/sdam/errors/stale-generation-NotWritablePrimary.yml +91 -0
  1294. data/spec/spec_tests/data/sdam/errors/stale-generation-PrimarySteppedDown.yml +4 -2
  1295. data/spec/spec_tests/data/sdam/errors/stale-generation-ShutdownInProgress.yml +4 -2
  1296. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-InterruptedAtShutdown.yml +4 -2
  1297. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-InterruptedDueToReplStateChange.yml +4 -2
  1298. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-LegacyNotPrimary.yml +91 -0
  1299. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotPrimaryNoSecondaryOk.yml +91 -0
  1300. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotPrimaryOrSecondary.yml +91 -0
  1301. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotWritablePrimary.yml +91 -0
  1302. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-PrimarySteppedDown.yml +4 -2
  1303. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-ShutdownInProgress.yml +4 -2
  1304. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-network.yml +6 -4
  1305. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-timeout.yml +6 -4
  1306. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-InterruptedAtShutdown.yml +4 -2
  1307. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-InterruptedDueToReplStateChange.yml +4 -2
  1308. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-LegacyNotPrimary.yml +91 -0
  1309. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotPrimaryNoSecondaryOk.yml +91 -0
  1310. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotPrimaryOrSecondary.yml +91 -0
  1311. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotWritablePrimary.yml +91 -0
  1312. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-PrimarySteppedDown.yml +4 -2
  1313. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-ShutdownInProgress.yml +4 -2
  1314. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-network.yml +6 -4
  1315. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-timeout.yml +6 -4
  1316. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-InterruptedAtShutdown.yml +2 -1
  1317. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-InterruptedDueToReplStateChange.yml +2 -1
  1318. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-LegacyNotPrimary.yml +65 -0
  1319. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotPrimaryNoSecondaryOk.yml +65 -0
  1320. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotPrimaryOrSecondary.yml +65 -0
  1321. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotWritablePrimary.yml +65 -0
  1322. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-PrimarySteppedDown.yml +2 -1
  1323. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-ShutdownInProgress.yml +2 -1
  1324. data/spec/spec_tests/data/sdam/errors/write_errors_ignored.yml +42 -0
  1325. data/spec/spec_tests/data/sdam/load-balanced/discover_load_balancer.yml +25 -0
  1326. data/spec/spec_tests/data/sdam/rs/compatible.yml +4 -2
  1327. data/spec/spec_tests/data/sdam/rs/compatible_unknown.yml +2 -1
  1328. data/spec/spec_tests/data/sdam/rs/discover_arbiters.yml +2 -1
  1329. data/spec/spec_tests/data/sdam/rs/discover_arbiters_replicaset.yml +2 -1
  1330. data/spec/spec_tests/data/sdam/rs/discover_ghost.yml +2 -1
  1331. data/spec/spec_tests/data/sdam/rs/discover_ghost_replicaset.yml +2 -1
  1332. data/spec/spec_tests/data/sdam/rs/discover_hidden.yml +2 -1
  1333. data/spec/spec_tests/data/sdam/rs/discover_hidden_replicaset.yml +2 -1
  1334. data/spec/spec_tests/data/sdam/rs/discover_passives.yml +4 -2
  1335. data/spec/spec_tests/data/sdam/rs/discover_passives_replicaset.yml +4 -2
  1336. data/spec/spec_tests/data/sdam/rs/discover_primary.yml +2 -1
  1337. data/spec/spec_tests/data/sdam/rs/discover_primary_replicaset.yml +2 -1
  1338. data/spec/spec_tests/data/sdam/rs/discover_rsother.yml +2 -1
  1339. data/spec/spec_tests/data/sdam/rs/discover_rsother_replicaset.yml +4 -2
  1340. data/spec/spec_tests/data/sdam/rs/discover_secondary.yml +2 -1
  1341. data/spec/spec_tests/data/sdam/rs/discover_secondary_replicaset.yml +2 -1
  1342. data/spec/spec_tests/data/sdam/rs/discovery.yml +8 -4
  1343. data/spec/spec_tests/data/sdam/rs/electionId_precedence_setVersion.yml +62 -0
  1344. data/spec/spec_tests/data/sdam/rs/equal_electionids.yml +4 -2
  1345. data/spec/spec_tests/data/sdam/rs/hosts_differ_from_seeds.yml +2 -1
  1346. data/spec/spec_tests/data/sdam/rs/incompatible_arbiter.yml +3 -1
  1347. data/spec/spec_tests/data/sdam/rs/incompatible_ghost.yml +3 -1
  1348. data/spec/spec_tests/data/sdam/rs/incompatible_other.yml +3 -1
  1349. data/spec/spec_tests/data/sdam/rs/ls_timeout.yml +12 -6
  1350. data/spec/spec_tests/data/sdam/rs/member_reconfig.yml +4 -2
  1351. data/spec/spec_tests/data/sdam/rs/member_standalone.yml +4 -2
  1352. data/spec/spec_tests/data/sdam/rs/new_primary.yml +4 -2
  1353. data/spec/spec_tests/data/sdam/rs/new_primary_new_electionid.yml +6 -3
  1354. data/spec/spec_tests/data/sdam/rs/new_primary_new_setversion.yml +6 -3
  1355. data/spec/spec_tests/data/sdam/rs/new_primary_wrong_set_name.yml +4 -2
  1356. data/spec/spec_tests/data/sdam/rs/non_rs_member.yml +1 -0
  1357. data/spec/spec_tests/data/sdam/rs/normalize_case.yml +2 -1
  1358. data/spec/spec_tests/data/sdam/rs/normalize_case_me.yml +4 -2
  1359. data/spec/spec_tests/data/sdam/rs/null_election_id-pre-6.0.yml +175 -0
  1360. data/spec/spec_tests/data/sdam/rs/null_election_id.yml +28 -22
  1361. data/spec/spec_tests/data/sdam/rs/primary_becomes_ghost.yml +4 -2
  1362. data/spec/spec_tests/data/sdam/rs/primary_becomes_mongos.yml +4 -2
  1363. data/spec/spec_tests/data/sdam/rs/primary_becomes_standalone.yml +2 -1
  1364. data/spec/spec_tests/data/sdam/rs/primary_changes_set_name.yml +4 -2
  1365. data/spec/spec_tests/data/sdam/rs/primary_disconnect.yml +2 -1
  1366. data/spec/spec_tests/data/sdam/rs/primary_disconnect_electionid.yml +10 -5
  1367. data/spec/spec_tests/data/sdam/rs/primary_disconnect_setversion.yml +10 -5
  1368. data/spec/spec_tests/data/sdam/rs/primary_hint_from_secondary_with_mismatched_me.yml +4 -2
  1369. data/spec/spec_tests/data/sdam/rs/primary_mismatched_me.yml +2 -1
  1370. data/spec/spec_tests/data/sdam/rs/primary_mismatched_me_not_removed.yml +5 -3
  1371. data/spec/spec_tests/data/sdam/rs/primary_reports_new_member.yml +8 -4
  1372. data/spec/spec_tests/data/sdam/rs/primary_to_no_primary_mismatched_me.yml +4 -2
  1373. data/spec/spec_tests/data/sdam/rs/primary_wrong_set_name.yml +2 -1
  1374. data/spec/spec_tests/data/sdam/rs/repeated.yml +9 -5
  1375. data/spec/spec_tests/data/sdam/rs/replicaset_rsnp.yml +2 -1
  1376. data/spec/spec_tests/data/sdam/rs/response_from_removed.yml +4 -2
  1377. data/spec/spec_tests/data/sdam/rs/sec_not_auth.yml +4 -2
  1378. data/spec/spec_tests/data/sdam/rs/secondary_ignore_ok_0-pre-6.0.yml +87 -0
  1379. data/spec/spec_tests/data/sdam/rs/secondary_ignore_ok_0.yml +5 -3
  1380. data/spec/spec_tests/data/sdam/rs/secondary_mismatched_me.yml +2 -1
  1381. data/spec/spec_tests/data/sdam/rs/secondary_wrong_set_name.yml +2 -1
  1382. data/spec/spec_tests/data/sdam/rs/secondary_wrong_set_name_with_primary.yml +4 -2
  1383. data/spec/spec_tests/data/sdam/rs/set_version_can_rollback.yml +101 -0
  1384. data/spec/spec_tests/data/sdam/rs/setversion_equal_max_without_electionid.yml +78 -0
  1385. data/spec/spec_tests/data/sdam/rs/setversion_greaterthan_max_without_electionid.yml +79 -0
  1386. data/spec/spec_tests/data/sdam/rs/setversion_without_electionid-pre-6.0.yml +79 -0
  1387. data/spec/spec_tests/data/sdam/rs/setversion_without_electionid.yml +13 -12
  1388. data/spec/spec_tests/data/sdam/rs/stepdown_change_set_name.yml +4 -2
  1389. data/spec/spec_tests/data/sdam/rs/too_new.yml +4 -2
  1390. data/spec/spec_tests/data/sdam/rs/too_old.yml +4 -2
  1391. data/spec/spec_tests/data/sdam/rs/topology_version_equal.yml +4 -2
  1392. data/spec/spec_tests/data/sdam/rs/topology_version_greater.yml +10 -5
  1393. data/spec/spec_tests/data/sdam/rs/topology_version_less.yml +4 -2
  1394. data/spec/spec_tests/data/sdam/rs/unexpected_mongos.yml +2 -1
  1395. data/spec/spec_tests/data/sdam/rs/use_setversion_without_electionid-pre-6.0.yml +117 -0
  1396. data/spec/spec_tests/data/sdam/rs/use_setversion_without_electionid.yml +29 -24
  1397. data/spec/spec_tests/data/sdam/rs/wrong_set_name.yml +2 -1
  1398. data/spec/spec_tests/data/sdam/sharded/compatible.yml +4 -2
  1399. data/spec/spec_tests/data/sdam/sharded/discover_single_mongos.yml +2 -1
  1400. data/spec/spec_tests/data/sdam/sharded/ls_timeout_mongos.yml +9 -5
  1401. data/spec/spec_tests/data/sdam/sharded/mongos_disconnect.yml +6 -3
  1402. data/spec/spec_tests/data/sdam/sharded/multiple_mongoses.yml +4 -2
  1403. data/spec/spec_tests/data/sdam/sharded/non_mongos_removed.yml +4 -2
  1404. data/spec/spec_tests/data/sdam/sharded/too_new.yml +4 -2
  1405. data/spec/spec_tests/data/sdam/sharded/too_old.yml +4 -2
  1406. data/spec/spec_tests/data/sdam/single/compatible.yml +2 -1
  1407. data/spec/spec_tests/data/sdam/single/direct_connection_external_ip.yml +2 -1
  1408. data/spec/spec_tests/data/sdam/single/direct_connection_mongos.yml +2 -1
  1409. data/spec/spec_tests/data/sdam/single/direct_connection_replicaset.yml +2 -1
  1410. data/spec/spec_tests/data/sdam/single/direct_connection_rsarbiter.yml +2 -1
  1411. data/spec/spec_tests/data/sdam/single/direct_connection_rsprimary.yml +2 -1
  1412. data/spec/spec_tests/data/sdam/single/direct_connection_rssecondary.yml +2 -1
  1413. data/spec/spec_tests/data/sdam/single/direct_connection_standalone.yml +2 -1
  1414. data/spec/spec_tests/data/sdam/single/direct_connection_wrong_set_name.yml +4 -2
  1415. data/spec/spec_tests/data/sdam/single/discover_standalone.yml +2 -1
  1416. data/spec/spec_tests/data/sdam/single/ls_timeout_standalone.yml +2 -1
  1417. data/spec/spec_tests/data/sdam/single/not_ok_response.yml +5 -3
  1418. data/spec/spec_tests/data/sdam/single/standalone_removed.yml +2 -1
  1419. data/spec/spec_tests/data/sdam/single/standalone_using_legacy_hello.yml +34 -0
  1420. data/spec/spec_tests/data/sdam/single/too_new.yml +2 -1
  1421. data/spec/spec_tests/data/sdam/single/too_old.yml +2 -1
  1422. data/spec/spec_tests/data/sdam/single/too_old_then_upgraded.yml +4 -2
  1423. data/spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml +2 -4
  1424. data/spec/spec_tests/data/sdam_monitoring/load_balancer.yml +65 -0
  1425. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_no_primary.yml +40 -40
  1426. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_primary.yml +40 -40
  1427. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml +4 -3
  1428. data/spec/spec_tests/data/sdam_monitoring/required_replica_set.yml +3 -2
  1429. data/spec/spec_tests/data/sdam_monitoring/standalone.yml +3 -3
  1430. data/spec/spec_tests/data/sdam_monitoring/standalone_repeated.yml +2 -2
  1431. data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +4 -4
  1432. data/spec/spec_tests/data/sdam_monitoring/standalone_to_rs_with_me_mismatch.yml +2 -2
  1433. data/spec/spec_tests/data/sdam_unified/auth-error.yml +130 -0
  1434. data/spec/spec_tests/data/sdam_unified/auth-misc-command-error.yml +132 -0
  1435. data/spec/spec_tests/data/sdam_unified/auth-network-error.yml +132 -0
  1436. data/spec/spec_tests/data/sdam_unified/auth-network-timeout-error.yml +138 -0
  1437. data/spec/spec_tests/data/sdam_unified/auth-shutdown-error.yml +133 -0
  1438. data/spec/spec_tests/data/sdam_unified/cancel-server-check.yml +143 -0
  1439. data/spec/spec_tests/data/sdam_unified/connectTimeoutMS.yml +130 -0
  1440. data/spec/spec_tests/data/sdam_unified/find-network-error.yml +135 -0
  1441. data/spec/spec_tests/data/sdam_unified/find-network-timeout-error.yml +119 -0
  1442. data/spec/spec_tests/data/sdam_unified/find-shutdown-error.yml +163 -0
  1443. data/spec/spec_tests/data/sdam_unified/hello-command-error.yml +233 -0
  1444. data/spec/spec_tests/data/sdam_unified/hello-network-error.yml +228 -0
  1445. data/spec/spec_tests/data/sdam_unified/hello-timeout.yml +318 -0
  1446. data/spec/spec_tests/data/sdam_unified/insert-network-error.yml +137 -0
  1447. data/spec/spec_tests/data/sdam_unified/insert-shutdown-error.yml +162 -0
  1448. data/spec/spec_tests/data/sdam_unified/interruptInUse-pool-clear.yml +340 -0
  1449. data/spec/spec_tests/data/sdam_unified/minPoolSize-error.yml +125 -0
  1450. data/spec/spec_tests/data/sdam_unified/pool-cleared-error.yml +239 -0
  1451. data/spec/spec_tests/data/sdam_unified/rediscover-quickly-after-step-down.yml +144 -0
  1452. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-directConnection.yml +14 -0
  1453. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-no-results.yml +5 -0
  1454. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-replicaSet-errors.yml +6 -0
  1455. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-true-multiple-hosts.yml +5 -0
  1456. data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-true-txt.yml +11 -0
  1457. data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-conflicts_with_loadBalanced-true-txt.yml +5 -0
  1458. data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-conflicts_with_loadBalanced-true.yml +5 -0
  1459. data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero-txt.yml +11 -0
  1460. data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero.yml +11 -0
  1461. data/spec/spec_tests/data/seed_list_discovery/replica-set/encoded-userinfo-and-db.yml +15 -0
  1462. data/spec/spec_tests/data/seed_list_discovery/replica-set/loadBalanced-false-txt.yml +10 -0
  1463. data/spec/spec_tests/data/seed_list_discovery/replica-set/srv-service-name.yml +11 -0
  1464. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-conflicts_with_replicaSet-txt.yml +5 -0
  1465. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-conflicts_with_replicaSet.yml +5 -0
  1466. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-equal_to_srv_records.yml +16 -0
  1467. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-greater_than_srv_records.yml +15 -0
  1468. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-less_than_srv_records.yml +15 -0
  1469. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-zero-txt.yml +15 -0
  1470. data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-zero.yml +15 -0
  1471. data/spec/spec_tests/data/seed_list_discovery/replica-set/uri-with-admin-database.yml +13 -0
  1472. data/spec/spec_tests/data/seed_list_discovery/replica-set/uri-with-auth.yml +12 -0
  1473. data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-equal_to_srv_records.yml +13 -0
  1474. data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-greater_than_srv_records.yml +12 -0
  1475. data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-less_than_srv_records.yml +10 -0
  1476. data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-zero.yml +11 -0
  1477. data/spec/spec_tests/data/server_selection/Unknown/read/ghost.yml +11 -0
  1478. data/spec/spec_tests/data/server_selection/Unknown/write/ghost.yml +11 -0
  1479. data/spec/spec_tests/data/sessions_unified/driver-sessions-server-support.yml +123 -0
  1480. data/spec/spec_tests/data/sessions_unified/implicit-sessions-default-causal-consistency.yml +119 -0
  1481. data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-client-error.yml +75 -0
  1482. data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-server-error.yml +102 -0
  1483. data/spec/spec_tests/data/sessions_unified/snapshot-sessions-unsupported-ops.yml +258 -0
  1484. data/spec/spec_tests/data/sessions_unified/snapshot-sessions.yml +482 -0
  1485. data/spec/spec_tests/data/transactions/error-labels.yml +4 -1
  1486. data/spec/spec_tests/data/transactions/errors-client.yml +8 -9
  1487. data/spec/spec_tests/data/transactions/mongos-pin-auto.yml +3 -0
  1488. data/spec/spec_tests/data/transactions/mongos-recovery-token.yml +3 -1
  1489. data/spec/spec_tests/data/transactions/pin-mongos.yml +6 -3
  1490. data/spec/spec_tests/data/transactions/retryable-abort.yml +7 -7
  1491. data/spec/spec_tests/data/transactions/retryable-commit.yml +7 -7
  1492. data/spec/spec_tests/data/transactions_unified/do-not-retry-read-in-transaction.yml +64 -0
  1493. data/spec/spec_tests/data/transactions_unified/mongos-unpin.yml +172 -0
  1494. data/spec/spec_tests/data/transactions_unified/retryable-abort-handshake.yml +118 -0
  1495. data/spec/spec_tests/data/transactions_unified/retryable-commit-handshake.yml +118 -0
  1496. data/spec/spec_tests/data/unified/valid-fail/entity-findCursor-malformed.yml +31 -0
  1497. data/spec/spec_tests/data/unified/valid-fail/entity-findCursor.yml +31 -0
  1498. data/spec/spec_tests/data/unified/valid-fail/ignoreResultAndError-malformed.yml +34 -0
  1499. data/spec/spec_tests/data/unified/valid-fail/ignoreResultAndError.yml +35 -0
  1500. data/spec/spec_tests/data/unified/valid-fail/operation-failure.yml +31 -0
  1501. data/spec/spec_tests/data/unified/valid-fail/operation-unsupported.yml +13 -0
  1502. data/spec/spec_tests/data/unified/valid-pass/assertNumberConnectionsCheckedOut.yml +17 -0
  1503. data/spec/spec_tests/data/unified/valid-pass/collectionData-createOptions.yml +37 -0
  1504. data/spec/spec_tests/data/unified/valid-pass/entity-client-cmap-events.yml +40 -0
  1505. data/spec/spec_tests/data/unified/valid-pass/entity-client-storeEventsAsEntities.yml +37 -0
  1506. data/spec/spec_tests/data/unified/valid-pass/expectedError-errorResponse.yml +39 -0
  1507. data/spec/spec_tests/data/unified/valid-pass/expectedEventsForClient-eventType.yml +66 -0
  1508. data/spec/spec_tests/data/unified/valid-pass/expectedEventsForClient-ignoreExtraEvents.yml +78 -0
  1509. data/spec/spec_tests/data/unified/valid-pass/ignoreResultAndError.yml +34 -0
  1510. data/spec/spec_tests/data/unified/valid-pass/observeSensitiveCommands.yml +255 -0
  1511. data/spec/spec_tests/data/unified/valid-pass/poc-change-streams.yml +241 -0
  1512. data/spec/spec_tests/data/unified/valid-pass/poc-command-monitoring.yml +102 -0
  1513. data/spec/spec_tests/data/unified/valid-pass/poc-crud.yml +190 -0
  1514. data/spec/spec_tests/data/unified/valid-pass/poc-gridfs.yml +155 -0
  1515. data/spec/spec_tests/data/unified/valid-pass/poc-retryable-reads.yml +193 -0
  1516. data/spec/spec_tests/data/unified/valid-pass/poc-retryable-writes.yml +210 -0
  1517. data/spec/spec_tests/data/unified/valid-pass/poc-sessions.yml +215 -0
  1518. data/spec/spec_tests/data/unified/valid-pass/poc-transactions-convenient-api.yml +235 -0
  1519. data/spec/spec_tests/data/unified/valid-pass/poc-transactions-mongos-pin-auto.yml +169 -0
  1520. data/spec/spec_tests/data/unified/valid-pass/poc-transactions.yml +171 -0
  1521. data/spec/spec_tests/data/uri_options/auth-options.yml +25 -0
  1522. data/spec/spec_tests/data/uri_options/compression-options.yml +7 -4
  1523. data/spec/spec_tests/data/uri_options/connection-options.yml +60 -0
  1524. data/spec/spec_tests/data/uri_options/read-preference-options.yml +24 -0
  1525. data/spec/spec_tests/data/uri_options/ruby-connection-options.yml +1 -0
  1526. data/spec/spec_tests/data/uri_options/srv-options.yml +96 -0
  1527. data/spec/spec_tests/data/uri_options/tls-options.yml +160 -4
  1528. data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +419 -0
  1529. data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +413 -0
  1530. data/spec/spec_tests/data/versioned_api/runcommand-helper-no-api-version-declared.yml +75 -0
  1531. data/spec/spec_tests/data/versioned_api/test-commands-deprecation-errors.yml +47 -0
  1532. data/spec/spec_tests/data/versioned_api/test-commands-strict-mode.yml +46 -0
  1533. data/spec/spec_tests/data/versioned_api/transaction-handling.yml +128 -0
  1534. data/spec/spec_tests/gridfs_spec.rb +3 -0
  1535. data/spec/spec_tests/gridfs_unified_spec.rb +13 -0
  1536. data/spec/spec_tests/load_balancers_spec.rb +15 -0
  1537. data/spec/spec_tests/max_staleness_spec.rb +3 -0
  1538. data/spec/spec_tests/read_write_concern_connection_string_spec.rb +3 -0
  1539. data/spec/spec_tests/read_write_concern_document_spec.rb +3 -0
  1540. data/spec/spec_tests/read_write_concern_operaton_spec.rb +3 -0
  1541. data/spec/spec_tests/retryable_reads_spec.rb +11 -3
  1542. data/spec/spec_tests/retryable_reads_unified_spec.rb +22 -0
  1543. data/spec/spec_tests/retryable_writes_spec.rb +14 -8
  1544. data/spec/spec_tests/retryable_writes_unified_spec.rb +21 -0
  1545. data/spec/spec_tests/sdam_monitoring_spec.rb +14 -6
  1546. data/spec/spec_tests/sdam_spec.rb +9 -2
  1547. data/spec/spec_tests/sdam_unified_spec.rb +13 -0
  1548. data/spec/spec_tests/seed_list_discovery_spec.rb +127 -0
  1549. data/spec/spec_tests/server_selection_rtt_spec.rb +3 -0
  1550. data/spec/spec_tests/server_selection_spec.rb +3 -0
  1551. data/spec/spec_tests/sessions_unified_spec.rb +13 -0
  1552. data/spec/spec_tests/transactions_api_spec.rb +3 -0
  1553. data/spec/spec_tests/transactions_spec.rb +3 -0
  1554. data/spec/spec_tests/transactions_unified_spec.rb +13 -0
  1555. data/spec/spec_tests/unified_spec.rb +18 -0
  1556. data/spec/spec_tests/uri_options_spec.rb +50 -33
  1557. data/spec/spec_tests/versioned_api_spec.rb +13 -0
  1558. data/spec/stress/cleanup_spec.rb +3 -0
  1559. data/spec/stress/connection_pool_stress_spec.rb +3 -61
  1560. data/spec/stress/connection_pool_timing_spec.rb +14 -35
  1561. data/spec/stress/fork_reconnect_stress_spec.rb +17 -18
  1562. data/spec/stress/push_monitor_close_spec.rb +44 -0
  1563. data/spec/support/authorization.rb +4 -1
  1564. data/spec/support/aws_utils/base.rb +3 -0
  1565. data/spec/support/aws_utils/inspector.rb +3 -0
  1566. data/spec/support/aws_utils/orchestrator.rb +22 -7
  1567. data/spec/support/aws_utils/provisioner.rb +3 -0
  1568. data/spec/support/aws_utils.rb +6 -2
  1569. data/spec/support/background_thread_registry.rb +7 -14
  1570. data/spec/support/certificates/README.md +3 -2
  1571. data/spec/support/certificates/atlas-ocsp-ca.crt +103 -0
  1572. data/spec/support/certificates/atlas-ocsp.crt +152 -0
  1573. data/spec/support/certificates/retrieve-atlas-cert +40 -0
  1574. data/spec/support/client_registry.rb +17 -6
  1575. data/spec/support/client_registry_macros.rb +17 -5
  1576. data/spec/support/cluster_tools.rb +17 -9
  1577. data/spec/support/common_shortcuts.rb +134 -10
  1578. data/spec/support/constraints.rb +16 -246
  1579. data/spec/support/crypt/corpus/corpus-encrypted.json +9515 -0
  1580. data/spec/support/crypt/corpus/corpus-key-aws.json +32 -32
  1581. data/spec/support/crypt/corpus/corpus-key-azure.json +33 -0
  1582. data/spec/support/crypt/corpus/corpus-key-gcp.json +35 -0
  1583. data/spec/support/crypt/corpus/corpus-key-kmip.json +32 -0
  1584. data/spec/support/crypt/corpus/corpus-key-local.json +30 -30
  1585. data/spec/support/crypt/corpus/corpus-schema.json +4399 -121
  1586. data/spec/support/crypt/corpus/corpus.json +4999 -37
  1587. data/spec/support/crypt/data_keys/key_document_azure.json +33 -0
  1588. data/spec/support/crypt/data_keys/key_document_gcp.json +37 -0
  1589. data/spec/support/crypt/data_keys/key_document_kmip.json +32 -0
  1590. data/spec/support/crypt/encrypted_fields/encryptedFields.json +32 -0
  1591. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Date.json +30 -0
  1592. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalNoPrecision.json +21 -0
  1593. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalPrecision.json +29 -0
  1594. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoubleNoPrecision.json +21 -0
  1595. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoublePrecision.json +30 -0
  1596. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Int.json +27 -0
  1597. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Long.json +27 -0
  1598. data/spec/support/crypt/keys/key1-document.json +30 -0
  1599. data/spec/support/crypt/schema_maps/schema_map_azure.json +17 -0
  1600. data/spec/support/crypt/schema_maps/schema_map_azure_key_alt_names.json +12 -0
  1601. data/spec/support/crypt/schema_maps/schema_map_gcp.json +17 -0
  1602. data/spec/support/crypt/schema_maps/schema_map_gcp_key_alt_names.json +12 -0
  1603. data/spec/support/crypt/schema_maps/schema_map_kmip.json +17 -0
  1604. data/spec/support/crypt/schema_maps/schema_map_kmip_key_alt_names.json +12 -0
  1605. data/spec/support/crypt.rb +271 -13
  1606. data/spec/support/dns.rb +3 -0
  1607. data/spec/support/json_ext_formatter.rb +3 -0
  1608. data/spec/support/keyword_struct.rb +3 -0
  1609. data/spec/support/local_resource_registry.rb +3 -0
  1610. data/spec/support/macros.rb +29 -0
  1611. data/spec/support/matchers.rb +33 -1
  1612. data/spec/support/mongos_macros.rb +24 -0
  1613. data/spec/support/monitoring_ext.rb +3 -0
  1614. data/spec/support/ocsp +1 -0
  1615. data/spec/support/primary_socket.rb +3 -0
  1616. data/spec/support/sdam_formatter_integration.rb +3 -0
  1617. data/spec/support/shared/app_metadata.rb +179 -0
  1618. data/spec/support/shared/auth_context.rb +17 -0
  1619. data/spec/support/shared/protocol.rb +3 -0
  1620. data/spec/support/shared/scram_conversation.rb +5 -1
  1621. data/spec/support/shared/server_selector.rb +6 -3
  1622. data/spec/support/shared/session.rb +20 -11
  1623. data/spec/support/spec_config.rb +248 -24
  1624. data/spec/support/spec_setup.rb +51 -38
  1625. data/spec/support/using_hash.rb +40 -0
  1626. data/spec/support/utils.rb +353 -172
  1627. data.tar.gz.sig +0 -0
  1628. metadata +2052 -1217
  1629. metadata.gz.sig +0 -0
  1630. data/lib/mongo/collection/view/builder/find_command.rb +0 -150
  1631. data/lib/mongo/collection/view/builder/flags.rb +0 -62
  1632. data/lib/mongo/collection/view/builder/modifiers.rb +0 -80
  1633. data/lib/mongo/collection/view/builder/op_query.rb +0 -91
  1634. data/lib/mongo/cursor/builder/get_more_command.rb +0 -77
  1635. data/lib/mongo/cursor/builder/kill_cursors_command.rb +0 -108
  1636. data/lib/mongo/cursor/builder/op_get_more.rb +0 -61
  1637. data/lib/mongo/cursor/builder/op_kill_cursors.rb +0 -103
  1638. data/lib/mongo/cursor/builder.rb +0 -18
  1639. data/lib/mongo/operation/aggregate/command.rb +0 -44
  1640. data/lib/mongo/operation/collections_info/command.rb +0 -40
  1641. data/lib/mongo/operation/command/command.rb +0 -38
  1642. data/lib/mongo/operation/count/command.rb +0 -38
  1643. data/lib/mongo/operation/create/command.rb +0 -38
  1644. data/lib/mongo/operation/create_index/command.rb +0 -42
  1645. data/lib/mongo/operation/create_user/command.rb +0 -43
  1646. data/lib/mongo/operation/delete/command.rb +0 -46
  1647. data/lib/mongo/operation/delete/legacy.rb +0 -54
  1648. data/lib/mongo/operation/distinct/command.rb +0 -38
  1649. data/lib/mongo/operation/drop/command.rb +0 -38
  1650. data/lib/mongo/operation/drop_database/command.rb +0 -38
  1651. data/lib/mongo/operation/drop_index/command.rb +0 -42
  1652. data/lib/mongo/operation/explain/command.rb +0 -39
  1653. data/lib/mongo/operation/explain/legacy.rb +0 -38
  1654. data/lib/mongo/operation/find/command.rb +0 -39
  1655. data/lib/mongo/operation/find/legacy/result.rb +0 -41
  1656. data/lib/mongo/operation/find/legacy.rb +0 -40
  1657. data/lib/mongo/operation/get_more/command.rb +0 -39
  1658. data/lib/mongo/operation/get_more/legacy.rb +0 -36
  1659. data/lib/mongo/operation/indexes/command.rb +0 -39
  1660. data/lib/mongo/operation/indexes/legacy.rb +0 -45
  1661. data/lib/mongo/operation/insert/command.rb +0 -56
  1662. data/lib/mongo/operation/insert/legacy.rb +0 -65
  1663. data/lib/mongo/operation/kill_cursors/command.rb +0 -37
  1664. data/lib/mongo/operation/kill_cursors/legacy.rb +0 -37
  1665. data/lib/mongo/operation/list_collections/command.rb +0 -43
  1666. data/lib/mongo/operation/map_reduce/command.rb +0 -40
  1667. data/lib/mongo/operation/parallel_scan/command.rb +0 -55
  1668. data/lib/mongo/operation/remove_user/command.rb +0 -43
  1669. data/lib/mongo/operation/shared/collections_info_or_list_collections.rb +0 -56
  1670. data/lib/mongo/operation/shared/op_msg_or_command.rb +0 -44
  1671. data/lib/mongo/operation/shared/op_msg_or_find_command.rb +0 -47
  1672. data/lib/mongo/operation/shared/op_msg_or_list_indexes_command.rb +0 -47
  1673. data/lib/mongo/operation/update/command.rb +0 -47
  1674. data/lib/mongo/operation/update/legacy/result.rb +0 -102
  1675. data/lib/mongo/operation/update/legacy.rb +0 -65
  1676. data/lib/mongo/operation/update_user/command.rb +0 -42
  1677. data/lib/mongo/operation/users_info/command.rb +0 -43
  1678. data/lib/mongo/protocol/delete.rb +0 -169
  1679. data/lib/mongo/protocol/insert.rb +0 -178
  1680. data/lib/mongo/protocol/update.rb +0 -211
  1681. data/lib/mongo/server/context.rb +0 -69
  1682. data/spec/mongo/collection/view/builder/flags_spec.rb +0 -106
  1683. data/spec/mongo/collection/view/builder/modifiers_spec.rb +0 -210
  1684. data/spec/mongo/cursor/builder/op_kill_cursors_spec.rb +0 -61
  1685. data/spec/mongo/dbref_spec.rb +0 -149
  1686. data/spec/mongo/operation/delete/command_spec.rb +0 -112
  1687. data/spec/mongo/operation/find/legacy_spec.rb +0 -125
  1688. data/spec/mongo/operation/get_more_spec.rb +0 -58
  1689. data/spec/mongo/operation/insert/command_spec.rb +0 -115
  1690. data/spec/mongo/operation/kill_cursors_spec.rb +0 -41
  1691. data/spec/mongo/operation/update/command_spec.rb +0 -119
  1692. data/spec/mongo/protocol/delete_spec.rb +0 -182
  1693. data/spec/mongo/protocol/insert_spec.rb +0 -176
  1694. data/spec/mongo/protocol/update_spec.rb +0 -201
  1695. data/spec/mongo/server/app_metadata_shared.rb +0 -136
  1696. data/spec/spec_tests/change_streams_spec.rb +0 -90
  1697. data/spec/spec_tests/command_monitoring_spec.rb +0 -66
  1698. data/spec/spec_tests/data/change_streams/change-streams-errors.yml +0 -102
  1699. data/spec/spec_tests/data/change_streams/change-streams-resume-errorLabels.yml +0 -1105
  1700. data/spec/spec_tests/data/change_streams/change-streams-resume-whitelist.yml +0 -1173
  1701. data/spec/spec_tests/data/change_streams/change-streams.yml +0 -537
  1702. data/spec/spec_tests/data/command_monitoring/bulkWrite.yml +0 -49
  1703. data/spec/spec_tests/data/command_monitoring/command.yml +0 -61
  1704. data/spec/spec_tests/data/command_monitoring/deleteMany.yml +0 -55
  1705. data/spec/spec_tests/data/command_monitoring/deleteOne.yml +0 -55
  1706. data/spec/spec_tests/data/command_monitoring/find.yml +0 -266
  1707. data/spec/spec_tests/data/command_monitoring/insertMany.yml +0 -75
  1708. data/spec/spec_tests/data/command_monitoring/insertOne.yml +0 -51
  1709. data/spec/spec_tests/data/command_monitoring/unacknowledgedBulkWrite.yml +0 -34
  1710. data/spec/spec_tests/data/command_monitoring/updateMany.yml +0 -65
  1711. data/spec/spec_tests/data/command_monitoring/updateOne.yml +0 -90
  1712. data/spec/spec_tests/data/crud_v2/aggregate-merge.yml +0 -103
  1713. data/spec/spec_tests/data/crud_v2/aggregate-out-readConcern.yml +0 -110
  1714. data/spec/spec_tests/data/crud_v2/bulkWrite-arrayFilters.yml +0 -103
  1715. data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint-clientError.yml +0 -63
  1716. data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint-serverError.yml +0 -92
  1717. data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint.yml +0 -103
  1718. data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint-clientError.yml +0 -90
  1719. data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint-serverError.yml +0 -147
  1720. data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint.yml +0 -164
  1721. data/spec/spec_tests/data/crud_v2/db-aggregate.yml +0 -38
  1722. data/spec/spec_tests/data/crud_v2/deleteMany-hint-clientError.yml +0 -43
  1723. data/spec/spec_tests/data/crud_v2/deleteMany-hint-serverError.yml +0 -62
  1724. data/spec/spec_tests/data/crud_v2/deleteMany-hint.yml +0 -58
  1725. data/spec/spec_tests/data/crud_v2/deleteOne-hint-clientError.yml +0 -41
  1726. data/spec/spec_tests/data/crud_v2/deleteOne-hint-serverError.yml +0 -60
  1727. data/spec/spec_tests/data/crud_v2/deleteOne-hint.yml +0 -57
  1728. data/spec/spec_tests/data/crud_v2/find-allowdiskuse-clientError.yml +0 -28
  1729. data/spec/spec_tests/data/crud_v2/find-allowdiskuse-serverError.yml +0 -44
  1730. data/spec/spec_tests/data/crud_v2/find-allowdiskuse.yml +0 -50
  1731. data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint-clientError.yml +0 -45
  1732. data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint-serverError.yml +0 -60
  1733. data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint.yml +0 -56
  1734. data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint-clientError.yml +0 -40
  1735. data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint-serverError.yml +0 -59
  1736. data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint.yml +0 -55
  1737. data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint-clientError.yml +0 -40
  1738. data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint-serverError.yml +0 -58
  1739. data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint.yml +0 -55
  1740. data/spec/spec_tests/data/crud_v2/replaceOne-hint.yml +0 -61
  1741. data/spec/spec_tests/data/crud_v2/unacknowledged-bulkWrite-delete-hint-clientError.yml +0 -60
  1742. data/spec/spec_tests/data/crud_v2/unacknowledged-bulkWrite-update-hint-clientError.yml +0 -88
  1743. data/spec/spec_tests/data/crud_v2/unacknowledged-deleteMany-hint-clientError.yml +0 -40
  1744. data/spec/spec_tests/data/crud_v2/unacknowledged-deleteOne-hint-clientError.yml +0 -38
  1745. data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndDelete-hint-clientError.yml +0 -42
  1746. data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndReplace-hint-clientError.yml +0 -40
  1747. data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndUpdate-hint-clientError.yml +0 -40
  1748. data/spec/spec_tests/data/crud_v2/unacknowledged-replaceOne-hint-clientError.yml +0 -40
  1749. data/spec/spec_tests/data/crud_v2/unacknowledged-updateMany-hint-clientError.yml +0 -43
  1750. data/spec/spec_tests/data/crud_v2/unacknowledged-updateOne-hint-clientError.yml +0 -40
  1751. data/spec/spec_tests/data/crud_v2/updateMany-hint-clientError.yml +0 -45
  1752. data/spec/spec_tests/data/crud_v2/updateMany-hint-serverError.yml +0 -66
  1753. data/spec/spec_tests/data/crud_v2/updateMany-hint.yml +0 -65
  1754. data/spec/spec_tests/data/crud_v2/updateOne-hint-clientError.yml +0 -43
  1755. data/spec/spec_tests/data/crud_v2/updateOne-hint-serverError.yml +0 -62
  1756. data/spec/spec_tests/data/crud_v2/updateOne-hint.yml +0 -61
  1757. data/spec/spec_tests/data/crud_v2/updateWithPipelines.yml +0 -157
  1758. data/spec/spec_tests/data/retryable_reads/aggregate-serverErrors.yml +0 -157
  1759. data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch-serverErrors.yml +0 -149
  1760. data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch.yml +0 -61
  1761. data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch-serverErrors.yml +0 -149
  1762. data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch.yml +0 -65
  1763. data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch-serverErrors.yml +0 -153
  1764. data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch.yml +0 -61
  1765. data/spec/spec_tests/data/retryable_reads/count-serverErrors.yml +0 -150
  1766. data/spec/spec_tests/data/retryable_reads/countDocuments-serverErrors.yml +0 -150
  1767. data/spec/spec_tests/data/retryable_reads/distinct-serverErrors.yml +0 -156
  1768. data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors.yml +0 -148
  1769. data/spec/spec_tests/data/retryable_reads/find-serverErrors.yml +0 -160
  1770. data/spec/spec_tests/data/retryable_reads/findOne-serverErrors.yml +0 -154
  1771. data/spec/spec_tests/data/retryable_reads/gridfs-download-serverErrors.yml +0 -173
  1772. data/spec/spec_tests/data/retryable_reads/gridfs-downloadByName-serverErrors.yml +0 -174
  1773. data/spec/spec_tests/data/retryable_reads/listCollectionNames-serverErrors.yml +0 -143
  1774. data/spec/spec_tests/data/retryable_reads/listCollectionObjects-serverErrors.yml +0 -144
  1775. data/spec/spec_tests/data/retryable_reads/listCollections-serverErrors.yml +0 -143
  1776. data/spec/spec_tests/data/retryable_reads/listDatabaseNames-serverErrors.yml +0 -143
  1777. data/spec/spec_tests/data/retryable_reads/listDatabaseObjects-serverErrors.yml +0 -144
  1778. data/spec/spec_tests/data/retryable_reads/listDatabases-serverErrors.yml +0 -144
  1779. data/spec/spec_tests/data/retryable_reads/listIndexNames-serverErrors.yml +0 -144
  1780. data/spec/spec_tests/data/retryable_reads/listIndexNames.yml +0 -60
  1781. data/spec/spec_tests/data/retryable_reads/listIndexes-serverErrors.yml +0 -145
  1782. data/spec/spec_tests/data/retryable_reads/mapReduce.yml +0 -60
  1783. data/spec/spec_tests/data/retryable_writes/bulkWrite-serverErrors.yml +0 -130
  1784. data/spec/spec_tests/data/retryable_writes/bulkWrite.yml +0 -396
  1785. data/spec/spec_tests/data/retryable_writes/deleteOne-serverErrors.yml +0 -73
  1786. data/spec/spec_tests/data/retryable_writes/findOneAndDelete-serverErrors.yml +0 -74
  1787. data/spec/spec_tests/data/retryable_writes/findOneAndReplace-serverErrors.yml +0 -80
  1788. data/spec/spec_tests/data/retryable_writes/findOneAndUpdate-serverErrors.yml +0 -79
  1789. data/spec/spec_tests/data/retryable_writes/insertMany-serverErrors.yml +0 -84
  1790. data/spec/spec_tests/data/retryable_writes/insertOne-serverErrors.yml +0 -526
  1791. data/spec/spec_tests/data/retryable_writes/replaceOne-serverErrors.yml +0 -82
  1792. data/spec/spec_tests/data/retryable_writes/updateOne-serverErrors.yml +0 -82
  1793. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotMaster.yml +0 -60
  1794. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotMasterNoSlaveOk.yml +0 -60
  1795. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotMasterOrSecondary.yml +0 -60
  1796. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotMaster.yml +0 -51
  1797. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotMasterNoSlaveOk.yml +0 -51
  1798. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotMasterOrSecondary.yml +0 -51
  1799. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotMaster.yml +0 -60
  1800. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotMasterNoSlaveOk.yml +0 -60
  1801. data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotMasterOrSecondary.yml +0 -60
  1802. data/spec/spec_tests/data/sdam/errors/post-42-NotMaster.yml +0 -46
  1803. data/spec/spec_tests/data/sdam/errors/post-42-NotMasterNoSlaveOk.yml +0 -46
  1804. data/spec/spec_tests/data/sdam/errors/post-42-NotMasterOrSecondary.yml +0 -46
  1805. data/spec/spec_tests/data/sdam/errors/pre-42-NotMaster.yml +0 -46
  1806. data/spec/spec_tests/data/sdam/errors/pre-42-NotMasterNoSlaveOk.yml +0 -46
  1807. data/spec/spec_tests/data/sdam/errors/pre-42-NotMasterOrSecondary.yml +0 -46
  1808. data/spec/spec_tests/data/sdam/errors/stale-generation-NotMaster.yml +0 -89
  1809. data/spec/spec_tests/data/sdam/errors/stale-generation-NotMasterNoSlaveOk.yml +0 -89
  1810. data/spec/spec_tests/data/sdam/errors/stale-generation-NotMasterOrSecondary.yml +0 -89
  1811. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotMaster.yml +0 -89
  1812. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotMasterNoSlaveOk.yml +0 -89
  1813. data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotMasterOrSecondary.yml +0 -89
  1814. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotMaster.yml +0 -89
  1815. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotMasterNoSlaveOk.yml +0 -89
  1816. data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotMasterOrSecondary.yml +0 -89
  1817. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotMaster.yml +0 -64
  1818. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotMasterNoSlaveOk.yml +0 -64
  1819. data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotMasterOrSecondary.yml +0 -64
  1820. data/spec/spec_tests/data/sdam/single/direct_connection_slave.yml +0 -34
  1821. data/spec/spec_tests/data/sdam_integration/cancel-server-check.yml +0 -96
  1822. data/spec/spec_tests/data/sdam_integration/connectTimeoutMS.yml +0 -88
  1823. data/spec/spec_tests/data/sdam_integration/find-network-error.yml +0 -83
  1824. data/spec/spec_tests/data/sdam_integration/find-shutdown-error.yml +0 -116
  1825. data/spec/spec_tests/data/sdam_integration/insert-network-error.yml +0 -86
  1826. data/spec/spec_tests/data/sdam_integration/insert-shutdown-error.yml +0 -115
  1827. data/spec/spec_tests/data/sdam_integration/isMaster-command-error.yml +0 -168
  1828. data/spec/spec_tests/data/sdam_integration/isMaster-network-error.yml +0 -162
  1829. data/spec/spec_tests/data/sdam_integration/isMaster-timeout.yml +0 -229
  1830. data/spec/spec_tests/data/sdam_integration/rediscover-quickly-after-step-down.yml +0 -87
  1831. data/spec/spec_tests/dns_seedlist_discovery_spec.rb +0 -68
  1832. data/spec/spec_tests/sdam_integration_spec.rb +0 -13
  1833. data/spec/support/child_process_helper.rb +0 -78
  1834. data/spec/support/cluster_config.rb +0 -207
  1835. data/spec/support/crypt/corpus/corpus_encrypted.json +0 -4152
  1836. data/spec/support/event_subscriber.rb +0 -212
  1837. data/spec/support/lite_constraints.rb +0 -141
  1838. data/spec/support/spec_organizer.rb +0 -129
  1839. /data/spec/spec_tests/data/retryable_reads/{aggregate-merge.yml → legacy/aggregate-merge.yml} +0 -0
  1840. /data/spec/spec_tests/data/retryable_reads/{aggregate.yml → legacy/aggregate.yml} +0 -0
  1841. /data/spec/spec_tests/data/retryable_reads/{count.yml → legacy/count.yml} +0 -0
  1842. /data/spec/spec_tests/data/retryable_reads/{countDocuments.yml → legacy/countDocuments.yml} +0 -0
  1843. /data/spec/spec_tests/data/retryable_reads/{distinct.yml → legacy/distinct.yml} +0 -0
  1844. /data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount.yml → legacy/estimatedDocumentCount.yml} +0 -0
  1845. /data/spec/spec_tests/data/retryable_reads/{find.yml → legacy/find.yml} +0 -0
  1846. /data/spec/spec_tests/data/retryable_reads/{findOne.yml → legacy/findOne.yml} +0 -0
  1847. /data/spec/spec_tests/data/retryable_reads/{gridfs-download.yml → legacy/gridfs-download.yml} +0 -0
  1848. /data/spec/spec_tests/data/retryable_reads/{gridfs-downloadByName.yml → legacy/gridfs-downloadByName.yml} +0 -0
  1849. /data/spec/spec_tests/data/retryable_reads/{listCollectionNames.yml → legacy/listCollectionNames.yml} +0 -0
  1850. /data/spec/spec_tests/data/retryable_reads/{listCollectionObjects.yml → legacy/listCollectionObjects.yml} +0 -0
  1851. /data/spec/spec_tests/data/retryable_reads/{listCollections.yml → legacy/listCollections.yml} +0 -0
  1852. /data/spec/spec_tests/data/retryable_reads/{listDatabaseNames.yml → legacy/listDatabaseNames.yml} +0 -0
  1853. /data/spec/spec_tests/data/retryable_reads/{listDatabaseObjects.yml → legacy/listDatabaseObjects.yml} +0 -0
  1854. /data/spec/spec_tests/data/retryable_reads/{listDatabases.yml → legacy/listDatabases.yml} +0 -0
  1855. /data/spec/spec_tests/data/retryable_reads/{listIndexes.yml → legacy/listIndexes.yml} +0 -0
  1856. /data/spec/spec_tests/data/retryable_writes/{bulkWrite-errorLabels.yml → legacy/bulkWrite-errorLabels.yml} +0 -0
  1857. /data/spec/spec_tests/data/retryable_writes/{deleteMany.yml → legacy/deleteMany.yml} +0 -0
  1858. /data/spec/spec_tests/data/retryable_writes/{deleteOne-errorLabels.yml → legacy/deleteOne-errorLabels.yml} +0 -0
  1859. /data/spec/spec_tests/data/retryable_writes/{deleteOne.yml → legacy/deleteOne.yml} +0 -0
  1860. /data/spec/spec_tests/data/retryable_writes/{findOneAndDelete-errorLabels.yml → legacy/findOneAndDelete-errorLabels.yml} +0 -0
  1861. /data/spec/spec_tests/data/retryable_writes/{findOneAndDelete.yml → legacy/findOneAndDelete.yml} +0 -0
  1862. /data/spec/spec_tests/data/retryable_writes/{findOneAndReplace-errorLabels.yml → legacy/findOneAndReplace-errorLabels.yml} +0 -0
  1863. /data/spec/spec_tests/data/retryable_writes/{findOneAndReplace.yml → legacy/findOneAndReplace.yml} +0 -0
  1864. /data/spec/spec_tests/data/retryable_writes/{findOneAndUpdate-errorLabels.yml → legacy/findOneAndUpdate-errorLabels.yml} +0 -0
  1865. /data/spec/spec_tests/data/retryable_writes/{findOneAndUpdate.yml → legacy/findOneAndUpdate.yml} +0 -0
  1866. /data/spec/spec_tests/data/retryable_writes/{insertMany-errorLabels.yml → legacy/insertMany-errorLabels.yml} +0 -0
  1867. /data/spec/spec_tests/data/retryable_writes/{insertMany.yml → legacy/insertMany.yml} +0 -0
  1868. /data/spec/spec_tests/data/retryable_writes/{insertOne-errorLabels.yml → legacy/insertOne-errorLabels.yml} +0 -0
  1869. /data/spec/spec_tests/data/retryable_writes/{insertOne.yml → legacy/insertOne.yml} +0 -0
  1870. /data/spec/spec_tests/data/retryable_writes/{replaceOne-errorLabels.yml → legacy/replaceOne-errorLabels.yml} +0 -0
  1871. /data/spec/spec_tests/data/retryable_writes/{replaceOne.yml → legacy/replaceOne.yml} +0 -0
  1872. /data/spec/spec_tests/data/retryable_writes/{updateMany.yml → legacy/updateMany.yml} +0 -0
  1873. /data/spec/spec_tests/data/retryable_writes/{updateOne-errorLabels.yml → legacy/updateOne-errorLabels.yml} +0 -0
  1874. /data/spec/spec_tests/data/retryable_writes/{updateOne.yml → legacy/updateOne.yml} +0 -0
  1875. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/direct-connection-false.yml +0 -0
  1876. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/direct-connection-true.yml +0 -0
  1877. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/longer-parent-in-return.yml +0 -0
  1878. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/misformatted-option.yml +0 -0
  1879. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/no-results.yml +0 -0
  1880. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/not-enough-parts.yml +0 -0
  1881. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/one-result-default-port.yml +0 -0
  1882. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/one-txt-record-multiple-strings.yml +0 -0
  1883. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/one-txt-record.yml +0 -0
  1884. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch1.yml +0 -0
  1885. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch2.yml +0 -0
  1886. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch3.yml +0 -0
  1887. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch4.yml +0 -0
  1888. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch5.yml +0 -0
  1889. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/returned-parent-too-short.yml +0 -0
  1890. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/returned-parent-wrong.yml +0 -0
  1891. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/two-results-default-port.yml +0 -0
  1892. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/two-results-nonstandard-port.yml +0 -0
  1893. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/two-txt-records.yml +0 -0
  1894. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-not-allowed-option.yml +0 -0
  1895. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-with-overridden-ssl-option.yml +0 -0
  1896. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-with-overridden-uri-option.yml +0 -0
  1897. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-with-unallowed-option.yml +0 -0
  1898. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/uri-with-port.yml +0 -0
  1899. /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/uri-with-two-hosts.yml +0 -0
@@ -0,0 +1,1687 @@
1
+
2
+ # Requires libmongocrypt 1.8.0.
3
+ runOn:
4
+ - minServerVersion: "7.0.0"
5
+ # Skip QEv2 (also referred to as FLE2v2) tests on Serverless. Unskip once Serverless enables the QEv2 protocol.
6
+ # FLE 2 Encrypted collections are not supported on standalone.
7
+ # Tests for Decimal (without precision) must only run against a replica set. Decimal (without precision) queries are expected to take a long time and may exceed the default mongos timeout.
8
+ topology: [ "replicaset" ]
9
+ database_name: &database_name "default"
10
+ collection_name: &collection_name "default"
11
+ data: []
12
+ encrypted_fields: &encrypted_fields {'fields': [{'keyId': {'$binary': {'base64': 'EjRWeBI0mHYSNBI0VniQEg==', 'subType': '04'}}, 'path': 'encryptedDecimalNoPrecision', 'bsonType': 'decimal', 'queries': {'queryType': 'rangePreview', 'contention': {'$numberLong': '0'}, 'sparsity': {'$numberLong': '1'}}}]}
13
+ key_vault_data: [ {'_id': {'$binary': {'base64': 'EjRWeBI0mHYSNBI0VniQEg==', 'subType': '04'}}, 'keyMaterial': {'$binary': {'base64': 'sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==', 'subType': '00'}}, 'creationDate': {'$date': {'$numberLong': '1648914851981'}}, 'updateDate': {'$date': {'$numberLong': '1648914851981'}}, 'status': {'$numberInt': '0'}, 'masterKey': {'provider': 'local'}} ]
14
+ tests:
15
+ - description: "FLE2 Range Decimal. Aggregate."
16
+ clientOptions:
17
+ autoEncryptOpts:
18
+ kmsProviders:
19
+ local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
20
+ operations:
21
+ - name: insertOne
22
+ arguments:
23
+ document: &doc0 { _id: 0, encryptedDecimalNoPrecision: { $numberDecimal: "0" } }
24
+ - name: insertOne
25
+ arguments:
26
+ document: &doc1 { _id: 1, encryptedDecimalNoPrecision: { $numberDecimal: "1" } }
27
+ - name: aggregate
28
+ arguments:
29
+ pipeline: [{ $match: { "encryptedDecimalNoPrecision": { $gt: {$numberDecimal: "0" }} } }]
30
+ result: [*doc1]
31
+ expectations:
32
+ - command_started_event:
33
+ command:
34
+ listCollections: 1
35
+ filter:
36
+ name: *collection_name
37
+ command_name: listCollections
38
+ - command_started_event:
39
+ command:
40
+ find: datakeys
41
+ filter: {
42
+ "$or": [
43
+ {
44
+ "_id": {
45
+ "$in": [
46
+ {'$binary': {'base64': 'EjRWeBI0mHYSNBI0VniQEg==', 'subType': '04'}}
47
+ ]
48
+ }
49
+ },
50
+ {
51
+ "keyAltNames": {
52
+ "$in": []
53
+ }
54
+ }
55
+ ]
56
+ }
57
+ $db: keyvault
58
+ readConcern: { level: "majority" }
59
+ command_name: find
60
+ - command_started_event:
61
+ command:
62
+ insert: *collection_name
63
+ documents:
64
+ - &doc0_encrypted { "_id": 0, "encryptedDecimalNoPrecision": { $$type: "binData" } }
65
+ ordered: true
66
+ encryptionInformation:
67
+ type: 1
68
+ schema:
69
+ default.default:
70
+ # libmongocrypt applies escCollection and ecocCollection to outgoing command.
71
+ escCollection: "enxcol_.default.esc"
72
+ ecocCollection: "enxcol_.default.ecoc"
73
+ <<: *encrypted_fields
74
+ command_name: insert
75
+ - command_started_event:
76
+ command:
77
+ insert: *collection_name
78
+ documents:
79
+ - &doc1_encrypted { "_id": 1, "encryptedDecimalNoPrecision": { $$type: "binData" } }
80
+ ordered: true
81
+ encryptionInformation:
82
+ type: 1
83
+ schema:
84
+ default.default:
85
+ # libmongocrypt applies escCollection and ecocCollection to outgoing command.
86
+ escCollection: "enxcol_.default.esc"
87
+ ecocCollection: "enxcol_.default.ecoc"
88
+ <<: *encrypted_fields
89
+ command_name: insert
90
+ - command_started_event:
91
+ command:
92
+ aggregate: *collection_name
93
+ pipeline: [
94
+ {
95
+ "$match": {
96
+ "encryptedDecimalNoPrecision": {
97
+ "$gt": {
98
+ "$binary": {
99
+ "base64": "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",
100
+ "subType": "06"
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ ]
107
+ cursor: {}
108
+ encryptionInformation:
109
+ type: 1
110
+ schema:
111
+ default.default:
112
+ # libmongocrypt applies escCollection and ecocCollection to outgoing command.
113
+ escCollection: "enxcol_.default.esc"
114
+ ecocCollection: "enxcol_.default.ecoc"
115
+ <<: *encrypted_fields
116
+ command_name: aggregate
117
+ outcome:
118
+ collection:
119
+ # Outcome is checked using a separate MongoClient without auto encryption.
120
+ data:
121
+ -
122
+ {
123
+ "_id": {
124
+ "$numberInt": "0"
125
+ },
126
+ "encryptedDecimalNoPrecision": { $$type: "binData" },
127
+ "__safeContent__": [
128
+ {
129
+ "$binary": {
130
+ "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
131
+ "subType": "00"
132
+ }
133
+ },
134
+ {
135
+ "$binary": {
136
+ "base64": "rbf3AeBEv4wWFAKknqDxRW5cLNkFvbIs6iJjc6LShQY=",
137
+ "subType": "00"
138
+ }
139
+ },
140
+ {
141
+ "$binary": {
142
+ "base64": "n+XAuFnP8Dov9TnhGFxNx0K/MnVM9WbJ7RouEu0ndO0=",
143
+ "subType": "00"
144
+ }
145
+ },
146
+ {
147
+ "$binary": {
148
+ "base64": "yRXojuVdn5GQtD97qYlaCL6cOLmZ7Cvcb3wFjkLUIdM=",
149
+ "subType": "00"
150
+ }
151
+ },
152
+ {
153
+ "$binary": {
154
+ "base64": "DuIkdRPITRs55I4SZmgomAHCIsDQmXRhW8+MOznkzSk=",
155
+ "subType": "00"
156
+ }
157
+ },
158
+ {
159
+ "$binary": {
160
+ "base64": "SsBk+Et1lTbU+QRPx+xyJ/jMkmfG+QCvQEpip2YYrzA=",
161
+ "subType": "00"
162
+ }
163
+ },
164
+ {
165
+ "$binary": {
166
+ "base64": "crCIzOd8KhHvvUlX7M1v9bhvU4pLdTc+X2SuqoKU5Ek=",
167
+ "subType": "00"
168
+ }
169
+ },
170
+ {
171
+ "$binary": {
172
+ "base64": "YOWdCw4UrqnxkAaVjqmC4sKQDMVMHEpFGnlxpxdaU6E=",
173
+ "subType": "00"
174
+ }
175
+ },
176
+ {
177
+ "$binary": {
178
+ "base64": "M3SShp81Ff8tQ632qKbv9MUcN6wjDaBReI0VXNu6Xh4=",
179
+ "subType": "00"
180
+ }
181
+ },
182
+ {
183
+ "$binary": {
184
+ "base64": "gzHlSPxpM0hT75kQvWFzGlOxKvDoiKQZOr19V6l2zXI=",
185
+ "subType": "00"
186
+ }
187
+ },
188
+ {
189
+ "$binary": {
190
+ "base64": "s3JnppOGYw9SL2Q1kMAZs948v2F5PrpXjGei/HioDWs=",
191
+ "subType": "00"
192
+ }
193
+ },
194
+ {
195
+ "$binary": {
196
+ "base64": "cG6+3Gk/zEH68P/uuuwiAUVCuyJwa1LeV+t29FlPPAo=",
197
+ "subType": "00"
198
+ }
199
+ },
200
+ {
201
+ "$binary": {
202
+ "base64": "dupdvR3AyJtM+g9NDKiaLVOtGca387JQp8w+V03m7Ig=",
203
+ "subType": "00"
204
+ }
205
+ },
206
+ {
207
+ "$binary": {
208
+ "base64": "JqEQc5svj2jTvZ6LLA5ivE+kTb/0aRemSEmxk4G7Zrg=",
209
+ "subType": "00"
210
+ }
211
+ },
212
+ {
213
+ "$binary": {
214
+ "base64": "szcXXXKnob+p3SoM4yED2R920LeJ7cVsclPMFTe4CeI=",
215
+ "subType": "00"
216
+ }
217
+ },
218
+ {
219
+ "$binary": {
220
+ "base64": "o1QoGVXmuBdHwHm7aCtGMlMVKrjFdYvJXpoq6uhIAZ0=",
221
+ "subType": "00"
222
+ }
223
+ },
224
+ {
225
+ "$binary": {
226
+ "base64": "Jfm5wPlqqLCJRGQIqRq2NGmpn7s0Vrih2H3YAOoI2YU=",
227
+ "subType": "00"
228
+ }
229
+ },
230
+ {
231
+ "$binary": {
232
+ "base64": "zMHLb8ARbsYo8Ld05bqnGFf1Usha6EGb8QKwdSAyps0=",
233
+ "subType": "00"
234
+ }
235
+ },
236
+ {
237
+ "$binary": {
238
+ "base64": "yQdtq9lh5pugL7/i0Bj/PuZUUBUIzf+7wj1rl5y736w=",
239
+ "subType": "00"
240
+ }
241
+ },
242
+ {
243
+ "$binary": {
244
+ "base64": "wGWVZdO7qIuyDg/BqDgqjgoQ02h5YYgwXQB1oCin2NE=",
245
+ "subType": "00"
246
+ }
247
+ },
248
+ {
249
+ "$binary": {
250
+ "base64": "by9HMLj6NTEpgztZ5HSN6GxImkXPcaFINYDzgZY33X8=",
251
+ "subType": "00"
252
+ }
253
+ },
254
+ {
255
+ "$binary": {
256
+ "base64": "tWo0vbasi7bXmn/MsOx13VC1IsWtpx/nYp0uj4iMzdA=",
257
+ "subType": "00"
258
+ }
259
+ },
260
+ {
261
+ "$binary": {
262
+ "base64": "tQQpndUYd5O87lOtrGjH3wl9VsOK0ray7RMasL90sBM=",
263
+ "subType": "00"
264
+ }
265
+ },
266
+ {
267
+ "$binary": {
268
+ "base64": "cQjXEDCMsOpKLLf+vlTgIHA+cbSJdzqhbSX9Wvh95aA=",
269
+ "subType": "00"
270
+ }
271
+ },
272
+ {
273
+ "$binary": {
274
+ "base64": "7yMpU48IxK9SzP2cx3VnTownGEwFmeFofuuFT97SuuY=",
275
+ "subType": "00"
276
+ }
277
+ },
278
+ {
279
+ "$binary": {
280
+ "base64": "kSOx1kz0CmBgzKQHZlo65ZUY1DIv9A99JRm+Us2y6Ew=",
281
+ "subType": "00"
282
+ }
283
+ },
284
+ {
285
+ "$binary": {
286
+ "base64": "ubQpdPBe6/xvtr+AcXdfYLSvYCR4ot0tivehkCsupb4=",
287
+ "subType": "00"
288
+ }
289
+ },
290
+ {
291
+ "$binary": {
292
+ "base64": "xal+iCJ6FTefRQToyoNksc9NCZShyn04NDGi4IYrcoM=",
293
+ "subType": "00"
294
+ }
295
+ },
296
+ {
297
+ "$binary": {
298
+ "base64": "d7jU4iOK50xHxlkSifcxlZFCM46TSgQzoYivxG3HNLY=",
299
+ "subType": "00"
300
+ }
301
+ },
302
+ {
303
+ "$binary": {
304
+ "base64": "tJvl2nsBLBVzL3pp6sKWCL4UXeh3q/roYBJjSb74ve0=",
305
+ "subType": "00"
306
+ }
307
+ },
308
+ {
309
+ "$binary": {
310
+ "base64": "OIUCaKRvIx9t1w6Hxlz1IcQTdPNCfdRNwnnTm10W+X0=",
311
+ "subType": "00"
312
+ }
313
+ },
314
+ {
315
+ "$binary": {
316
+ "base64": "A9tvzsiElotOUVIB4CqfQp9mAwqvTM35YkmAR170aHA=",
317
+ "subType": "00"
318
+ }
319
+ },
320
+ {
321
+ "$binary": {
322
+ "base64": "lI8gpK7hpb7c9x4RQugsxMnQay5LZJmwslZdvMx/dcE=",
323
+ "subType": "00"
324
+ }
325
+ },
326
+ {
327
+ "$binary": {
328
+ "base64": "dNCzh40U0XvdKnSDi3HRQOWQftEsDVqc4uUvsVFGoq8=",
329
+ "subType": "00"
330
+ }
331
+ },
332
+ {
333
+ "$binary": {
334
+ "base64": "IP+iwEBWBwVVZIdpaMu8k5+soFCz+TZkYn3drKZ9grE=",
335
+ "subType": "00"
336
+ }
337
+ },
338
+ {
339
+ "$binary": {
340
+ "base64": "pnqyh6e0y5svHkJDShlN9CHV0WvMBE4QbtJpQw5ZCXc=",
341
+ "subType": "00"
342
+ }
343
+ },
344
+ {
345
+ "$binary": {
346
+ "base64": "elEl42tbVDoRTLjAhZUFEtXiut4b3PVhg/1ZLZSQdtE=",
347
+ "subType": "00"
348
+ }
349
+ },
350
+ {
351
+ "$binary": {
352
+ "base64": "vHuu2FxwclMHqyE6JBYbTYgbEkB0dqb/JuaxsvfwsmY=",
353
+ "subType": "00"
354
+ }
355
+ },
356
+ {
357
+ "$binary": {
358
+ "base64": "xTf7NCe3Gf8QpE78HR5OknlLTKfs9J+RN9UZpH6fnso=",
359
+ "subType": "00"
360
+ }
361
+ },
362
+ {
363
+ "$binary": {
364
+ "base64": "XiWSasRnJAulGR6+LCVD3mwRObXylqYWR9jvpywq12c=",
365
+ "subType": "00"
366
+ }
367
+ },
368
+ {
369
+ "$binary": {
370
+ "base64": "MZMxEQ5ikx0PG1YFIExv0UnTZogsvgeOEZTpzvBDn4w=",
371
+ "subType": "00"
372
+ }
373
+ },
374
+ {
375
+ "$binary": {
376
+ "base64": "yZMyMZBDrWbAhvnic7vvIYhmO9m5H2iuv0c8KNZrBzY=",
377
+ "subType": "00"
378
+ }
379
+ },
380
+ {
381
+ "$binary": {
382
+ "base64": "xxM14hTPY5j0vvcK2C7YAEjzdsfUTFHozHC0hEo1bxI=",
383
+ "subType": "00"
384
+ }
385
+ },
386
+ {
387
+ "$binary": {
388
+ "base64": "+01rqR1xVwkpGXcstbk1ItJqFVjH6Q8MGxEN3Cm9Y1A=",
389
+ "subType": "00"
390
+ }
391
+ },
392
+ {
393
+ "$binary": {
394
+ "base64": "xOpLV0Z2VTRJ3iWtnWZcsyjXubTIkYWo31cO+HV1o1k=",
395
+ "subType": "00"
396
+ }
397
+ },
398
+ {
399
+ "$binary": {
400
+ "base64": "BWUOLqgLBqc5NwxVlSV5H3KFQPXbCp7mdo+jF+8cJqY=",
401
+ "subType": "00"
402
+ }
403
+ },
404
+ {
405
+ "$binary": {
406
+ "base64": "fuQb1S6xZDGlrEbK+kI23aL53PP1PVNwqICnZNt9Yzg=",
407
+ "subType": "00"
408
+ }
409
+ },
410
+ {
411
+ "$binary": {
412
+ "base64": "SfscnoibFttahLdPVC4Ee+47ewGFKpDSU7M6HX19bKE=",
413
+ "subType": "00"
414
+ }
415
+ },
416
+ {
417
+ "$binary": {
418
+ "base64": "rpSW2awybNVeKtat91VFxqbINoTfNhPfQAu+d73Xtf8=",
419
+ "subType": "00"
420
+ }
421
+ },
422
+ {
423
+ "$binary": {
424
+ "base64": "9M/CP9ccOIIj2LLFmE0GFDO0Ban2wsNalEXfM6+h+1s=",
425
+ "subType": "00"
426
+ }
427
+ },
428
+ {
429
+ "$binary": {
430
+ "base64": "WrEMG49l1ye4MhXs5ZS9tz8P6h+hDvthIg/2wW9ne1Q=",
431
+ "subType": "00"
432
+ }
433
+ },
434
+ {
435
+ "$binary": {
436
+ "base64": "ImNhbfeyfH8qIEeA5ic0s3dAQBdzzTBS+CPsNih9vZ0=",
437
+ "subType": "00"
438
+ }
439
+ },
440
+ {
441
+ "$binary": {
442
+ "base64": "dWP33YDSn04UKJN2ogh2Rui0iW/0q2y18OCDRVcfyoo=",
443
+ "subType": "00"
444
+ }
445
+ },
446
+ {
447
+ "$binary": {
448
+ "base64": "lYv0isAtfGh6H9tdp3cp2eHU7q2J+uk7QrgcxtK3w7Y=",
449
+ "subType": "00"
450
+ }
451
+ },
452
+ {
453
+ "$binary": {
454
+ "base64": "VGMoamB/+7zTOYcY/pqJc96xlv2PdW4hwsIAEIslTDQ=",
455
+ "subType": "00"
456
+ }
457
+ },
458
+ {
459
+ "$binary": {
460
+ "base64": "yNeBWMF7BnD9wVwz2PgJsvWr77QiVvvWUvJF0+fqBug=",
461
+ "subType": "00"
462
+ }
463
+ },
464
+ {
465
+ "$binary": {
466
+ "base64": "SfpvObJ+tJBXSvqeN7vlOfmhYign635lciYAJIjUtY8=",
467
+ "subType": "00"
468
+ }
469
+ },
470
+ {
471
+ "$binary": {
472
+ "base64": "dsen4NqjzVGjpjufiTMs3+gqeD09EbnuogPgxrJECwg=",
473
+ "subType": "00"
474
+ }
475
+ },
476
+ {
477
+ "$binary": {
478
+ "base64": "pxCWVM3sn19NsFEpgHbgLa+PmYlhN3mMiP0Wk8kJhYw=",
479
+ "subType": "00"
480
+ }
481
+ },
482
+ {
483
+ "$binary": {
484
+ "base64": "q11KNvJszjYIB9n9HcC+N4uz11a3eRj1L3BH9scKMDQ=",
485
+ "subType": "00"
486
+ }
487
+ },
488
+ {
489
+ "$binary": {
490
+ "base64": "A1PmkgcEToWh1JiVWE6mI5jUu7poxWWuCUt/cgRUUDc=",
491
+ "subType": "00"
492
+ }
493
+ },
494
+ {
495
+ "$binary": {
496
+ "base64": "qJo3Hu4PJeanL7XEaWXO/n3YsodhZyd+MJOOmB9Kpd8=",
497
+ "subType": "00"
498
+ }
499
+ },
500
+ {
501
+ "$binary": {
502
+ "base64": "BkBKLO8URFscfRY9Bav/1+L9mLohDgNr/MkZtGiraIs=",
503
+ "subType": "00"
504
+ }
505
+ },
506
+ {
507
+ "$binary": {
508
+ "base64": "rZq5WA3Hx3xthOyHAJXK//f8pE2qbz7YKu3TIMp9GFY=",
509
+ "subType": "00"
510
+ }
511
+ },
512
+ {
513
+ "$binary": {
514
+ "base64": "X07a/Lm80p5xd4RFs1dNmw+90tmPDPdGiAKVZkxd4zY=",
515
+ "subType": "00"
516
+ }
517
+ },
518
+ {
519
+ "$binary": {
520
+ "base64": "6YrBn2ofIw1b5ooakrLOwF41BWrps8OO0H9WH4/rtlE=",
521
+ "subType": "00"
522
+ }
523
+ },
524
+ {
525
+ "$binary": {
526
+ "base64": "0l86Ag5OszXpa78SlOUV3K9nff5iC1p0mRXtLg9M1s4=",
527
+ "subType": "00"
528
+ }
529
+ },
530
+ {
531
+ "$binary": {
532
+ "base64": "Hn6yuxFHodeyu7ISlhYrbSf9pTiH4TDEvbYLWjTwFO0=",
533
+ "subType": "00"
534
+ }
535
+ },
536
+ {
537
+ "$binary": {
538
+ "base64": "zdf4y2etKBuIpkEU1zMwoCkCsdisfXZCh8QPamm+drY=",
539
+ "subType": "00"
540
+ }
541
+ },
542
+ {
543
+ "$binary": {
544
+ "base64": "rOQ9oMdiK5xxGH+jPzOvwVqdGGnF3+HkJXxn81s6hp4=",
545
+ "subType": "00"
546
+ }
547
+ },
548
+ {
549
+ "$binary": {
550
+ "base64": "61aKKsE3+BJHHWYvs3xSIBvlRmKswmaOo5rygQJguUg=",
551
+ "subType": "00"
552
+ }
553
+ },
554
+ {
555
+ "$binary": {
556
+ "base64": "KuDb/GIzqDM8wv7m7m8AECiWJbae5EKKtJRugZx7kR0=",
557
+ "subType": "00"
558
+ }
559
+ },
560
+ {
561
+ "$binary": {
562
+ "base64": "Q+t8t2TmNUiCIorVr9F3AlVnX+Mpt2ZYvN+s8UGict8=",
563
+ "subType": "00"
564
+ }
565
+ },
566
+ {
567
+ "$binary": {
568
+ "base64": "tJRZIpKxUgHyL83kW8cvfjkxN3z6WoNnUg+SQw+LK+k=",
569
+ "subType": "00"
570
+ }
571
+ },
572
+ {
573
+ "$binary": {
574
+ "base64": "pnUsYjip8SvW0+m9mR5WWTkpK+p6uwJ6yBUAlBnFKMk=",
575
+ "subType": "00"
576
+ }
577
+ },
578
+ {
579
+ "$binary": {
580
+ "base64": "PArHlz+yPRYDycAP/PgnI/AkP8Wgmfg++Vf4UG1Bf0E=",
581
+ "subType": "00"
582
+ }
583
+ },
584
+ {
585
+ "$binary": {
586
+ "base64": "wnIh53Q3jeK8jEBe1n8kJLa89/H0BxO26ZU8SRIAs9Q=",
587
+ "subType": "00"
588
+ }
589
+ },
590
+ {
591
+ "$binary": {
592
+ "base64": "4F8U59gzBLGhq58PEWQk2nch+R0Va7eTUoxMneReUIA=",
593
+ "subType": "00"
594
+ }
595
+ },
596
+ {
597
+ "$binary": {
598
+ "base64": "ihKagIW3uT1dm22ROr/g5QaCpxZVj2+Fs/YSdM2Noco=",
599
+ "subType": "00"
600
+ }
601
+ },
602
+ {
603
+ "$binary": {
604
+ "base64": "EJtUOOwjkrPUi9mavYAi+Gom9Y2DuFll7aDwo4mq0M0=",
605
+ "subType": "00"
606
+ }
607
+ },
608
+ {
609
+ "$binary": {
610
+ "base64": "dIkr8dbaVRQFskAVT6B286BbcBBt1pZPEOcTZqk4ZcI=",
611
+ "subType": "00"
612
+ }
613
+ },
614
+ {
615
+ "$binary": {
616
+ "base64": "aYVAcZYkH/Tieoa1XOjE/zCy5AJcVTHjS0NG2QB7muA=",
617
+ "subType": "00"
618
+ }
619
+ },
620
+ {
621
+ "$binary": {
622
+ "base64": "sBidL6y8TenseetpioIAAtn0lK/7C8MoW4JXpVYi3z8=",
623
+ "subType": "00"
624
+ }
625
+ },
626
+ {
627
+ "$binary": {
628
+ "base64": "0Dd2klU/t4R86c2WJcJDAd57k/N7OjvYSO5Vf8KH8sw=",
629
+ "subType": "00"
630
+ }
631
+ },
632
+ {
633
+ "$binary": {
634
+ "base64": "I3jZ92WEVmZmgaIkLbuWhBxl7EM6bEjiEttgBJunArA=",
635
+ "subType": "00"
636
+ }
637
+ },
638
+ {
639
+ "$binary": {
640
+ "base64": "aGHoQMlgJoGvArjfIbc3nnkoc8SWBxcrN7hSmjMRzos=",
641
+ "subType": "00"
642
+ }
643
+ },
644
+ {
645
+ "$binary": {
646
+ "base64": "bpiWPnF/KVBQr5F6MEwc5ZZayzIRvQOLDAm4ntwOi8g=",
647
+ "subType": "00"
648
+ }
649
+ },
650
+ {
651
+ "$binary": {
652
+ "base64": "tI7QVKbE6avWgDD9h4QKyFlnTxFCwd2iLySKakxNR/I=",
653
+ "subType": "00"
654
+ }
655
+ },
656
+ {
657
+ "$binary": {
658
+ "base64": "XGsge0CnoaXgE3rcpKm8AEeku5QVfokS3kcI+JKV1lk=",
659
+ "subType": "00"
660
+ }
661
+ },
662
+ {
663
+ "$binary": {
664
+ "base64": "JQxlryW2Q5WOwfrjAnaZxDvC83Dg6sjRVP5zegf2WiM=",
665
+ "subType": "00"
666
+ }
667
+ },
668
+ {
669
+ "$binary": {
670
+ "base64": "YFuHKJOfoqp1iGVxoFjx7bLYgVdsN4GuUFxEgO9HJ5s=",
671
+ "subType": "00"
672
+ }
673
+ },
674
+ {
675
+ "$binary": {
676
+ "base64": "Z6vUdiCR18ylKomf08uxcQHeRtmyav7/Ecvzz4av3k4=",
677
+ "subType": "00"
678
+ }
679
+ },
680
+ {
681
+ "$binary": {
682
+ "base64": "SPGo1Ib5AiP/tSllL7Z5PAypvnKdwJLzt8imfIMSEJQ=",
683
+ "subType": "00"
684
+ }
685
+ },
686
+ {
687
+ "$binary": {
688
+ "base64": "m94Nh6PFFQFLIib9Cu5LAKavhXnagSHG6F5EF8lD96I=",
689
+ "subType": "00"
690
+ }
691
+ },
692
+ {
693
+ "$binary": {
694
+ "base64": "pfEkQI98mB+gm1+JbmVurPAODMFPJ4E8DnqfVyUWbSo=",
695
+ "subType": "00"
696
+ }
697
+ },
698
+ {
699
+ "$binary": {
700
+ "base64": "DNj3OVRLbr43s0vd+rgWghOL3FqeO/60npdojC8Ry/M=",
701
+ "subType": "00"
702
+ }
703
+ },
704
+ {
705
+ "$binary": {
706
+ "base64": "kAYIQrjHVu49W8FTxyxJeiLVRWWjC9fPcBn+Hx1F+Ss=",
707
+ "subType": "00"
708
+ }
709
+ },
710
+ {
711
+ "$binary": {
712
+ "base64": "aCSO7UVOpoQvu/iridarxkxV1SVxU1i9HVSYXUAeXk4=",
713
+ "subType": "00"
714
+ }
715
+ },
716
+ {
717
+ "$binary": {
718
+ "base64": "Gh6hTP/yj1IKlXQ+Q69KTfMlGZjEcXoRLGbQHNFo/1s=",
719
+ "subType": "00"
720
+ }
721
+ },
722
+ {
723
+ "$binary": {
724
+ "base64": "/gDgIFQ4tAlJk3GN48IS5Qa5IPmErwGk8CHxAbp6gs0=",
725
+ "subType": "00"
726
+ }
727
+ },
728
+ {
729
+ "$binary": {
730
+ "base64": "PICyimwPjxpusyKxNssOOwUotAUbygpyEtORsVGXT8g=",
731
+ "subType": "00"
732
+ }
733
+ },
734
+ {
735
+ "$binary": {
736
+ "base64": "4lu+cBHyAUvuxC6JUNyHLzHsCogGSWFFnUCkDwfQdgI=",
737
+ "subType": "00"
738
+ }
739
+ },
740
+ {
741
+ "$binary": {
742
+ "base64": "pSndkmoNUJwXjgkbkgOrT5f9nSvuoMEZOkwAN9ElRaE=",
743
+ "subType": "00"
744
+ }
745
+ },
746
+ {
747
+ "$binary": {
748
+ "base64": "tyW+D4i26QihNM5MuBM+wnt5AdWGSJaJ4X5ydc9iWTU=",
749
+ "subType": "00"
750
+ }
751
+ },
752
+ {
753
+ "$binary": {
754
+ "base64": "9Syjr8RoxUgPKr+O5rsCu07AvcebA4P8IVKyS1NVLWc=",
755
+ "subType": "00"
756
+ }
757
+ },
758
+ {
759
+ "$binary": {
760
+ "base64": "67tPfDYnK2tmrioI51fOBG0ygajcV0pLo5+Zm/rEW7U=",
761
+ "subType": "00"
762
+ }
763
+ },
764
+ {
765
+ "$binary": {
766
+ "base64": "y0EiPRxYTuS1eVTIaPQUQBBxwkyxNckbePvKgChwd0M=",
767
+ "subType": "00"
768
+ }
769
+ },
770
+ {
771
+ "$binary": {
772
+ "base64": "NWd+2veAaeXQgR3vCvzlI4R1WW67D5YsVLdoXfdb8qg=",
773
+ "subType": "00"
774
+ }
775
+ },
776
+ {
777
+ "$binary": {
778
+ "base64": "PY5RQqKQsL2GqBBSPNOEVpojNFRX/NijCghIpxD6CZk=",
779
+ "subType": "00"
780
+ }
781
+ },
782
+ {
783
+ "$binary": {
784
+ "base64": "lcvwTyEjFlssCJtdjRpdN6oY+C7bxZY+WA+QAqzj9zg=",
785
+ "subType": "00"
786
+ }
787
+ },
788
+ {
789
+ "$binary": {
790
+ "base64": "CWE7XRNylvTwO/9Fv56dNqUaQWMmESNS/GNIwgBaEI0=",
791
+ "subType": "00"
792
+ }
793
+ },
794
+ {
795
+ "$binary": {
796
+ "base64": "ijwlrUeS8nRYqK1F8kiCYF0mNDolEZS+/lJO1Lg93C8=",
797
+ "subType": "00"
798
+ }
799
+ },
800
+ {
801
+ "$binary": {
802
+ "base64": "8KzV+qYGYuIjoNj8eEpnTuHrMYuhzphl80rS6wrODuU=",
803
+ "subType": "00"
804
+ }
805
+ },
806
+ {
807
+ "$binary": {
808
+ "base64": "wDyTLjSEFF895hSQsHvmoEQVS6KIkZOtq1c9dVogm9I=",
809
+ "subType": "00"
810
+ }
811
+ },
812
+ {
813
+ "$binary": {
814
+ "base64": "SGrtPuMYCjUrfKF0Pq/thdaQzmGBMUvlwN3ORIu9tHU=",
815
+ "subType": "00"
816
+ }
817
+ },
818
+ {
819
+ "$binary": {
820
+ "base64": "KySHON3hIoUk4xWcwTqk6IL0kgjzjxgMBObVIkCGvk4=",
821
+ "subType": "00"
822
+ }
823
+ },
824
+ {
825
+ "$binary": {
826
+ "base64": "hBIdS9j0XJPeT4ot73ngELkpUoSixvRBvdOL9z48jY8=",
827
+ "subType": "00"
828
+ }
829
+ },
830
+ {
831
+ "$binary": {
832
+ "base64": "Tx6um0q9HjS5ZvlFhvukpI6ORnyrXMWVW1OoxvgqII0=",
833
+ "subType": "00"
834
+ }
835
+ },
836
+ {
837
+ "$binary": {
838
+ "base64": "zFKlyfX5H81+d4A4J3FKn4T5JfG+OWtR06ddyX4Mxas=",
839
+ "subType": "00"
840
+ }
841
+ },
842
+ {
843
+ "$binary": {
844
+ "base64": "cGgCDuPV7MeMMYEDpgOupqyNP4BQ4H7rBnd2QygumgM=",
845
+ "subType": "00"
846
+ }
847
+ },
848
+ {
849
+ "$binary": {
850
+ "base64": "IPaUoy98v11EoglTpJ4kBlEawoZ8y7BPwzjLYBpkvHQ=",
851
+ "subType": "00"
852
+ }
853
+ },
854
+ {
855
+ "$binary": {
856
+ "base64": "Pfo4Am6tOWAyZNn8G9W5HWWGC3ZWmX0igI/RRB870Ro=",
857
+ "subType": "00"
858
+ }
859
+ },
860
+ {
861
+ "$binary": {
862
+ "base64": "fnTSjd7bC1Udoq6iM7UDnHAC/lsIXSHp/Gy332qw+/I=",
863
+ "subType": "00"
864
+ }
865
+ },
866
+ {
867
+ "$binary": {
868
+ "base64": "fApBgVRrTDyEumkeWs5p3ag9KB48SbU4Si0dl7Ns9rc=",
869
+ "subType": "00"
870
+ }
871
+ },
872
+ {
873
+ "$binary": {
874
+ "base64": "QxudfBItgoCnUj5NXVnSmWH3HK76YtKkMmzn4lyyUYY=",
875
+ "subType": "00"
876
+ }
877
+ },
878
+ {
879
+ "$binary": {
880
+ "base64": "sSOvwhKa29Wq94bZ5jGIiJQGbG1uBrKSBfOYBz/oZeI=",
881
+ "subType": "00"
882
+ }
883
+ },
884
+ {
885
+ "$binary": {
886
+ "base64": "FdaMgwwJ0NKsqmPZLC5oE+/0D74Dfpvig3LaI5yW5Fs=",
887
+ "subType": "00"
888
+ }
889
+ },
890
+ {
891
+ "$binary": {
892
+ "base64": "sRWBy12IERN43BSZIrnBfC9+zFBUdvjTlkqIH81NGt4=",
893
+ "subType": "00"
894
+ }
895
+ },
896
+ {
897
+ "$binary": {
898
+ "base64": "/4tIRpxKhoOwnXAiFn1Z7Xmric4USOIfKvTYQXk3QTc=",
899
+ "subType": "00"
900
+ }
901
+ }
902
+ ]
903
+ }
904
+ -
905
+ {
906
+ "_id": {
907
+ "$numberInt": "1"
908
+ },
909
+ "encryptedDecimalNoPrecision": { $$type: "binData" },
910
+ "__safeContent__": [
911
+ {
912
+ "$binary": {
913
+ "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
914
+ "subType": "00"
915
+ }
916
+ },
917
+ {
918
+ "$binary": {
919
+ "base64": "RGTjNVEsNJb+DG7DpPOam8rQWD5HZAMpRyiTQaw7tk8=",
920
+ "subType": "00"
921
+ }
922
+ },
923
+ {
924
+ "$binary": {
925
+ "base64": "I93Md7QNPGmEEGYU1+VVCqBPBEvXdqHPtTJtMOn06Yk=",
926
+ "subType": "00"
927
+ }
928
+ },
929
+ {
930
+ "$binary": {
931
+ "base64": "GecBFQ1PemlECWZWCl7f74vmsL6eB6mzQ9n6tK6FYfs=",
932
+ "subType": "00"
933
+ }
934
+ },
935
+ {
936
+ "$binary": {
937
+ "base64": "QpjhZl+O1ORifgtCZuWAdcP6OKL7IZ2cA46v8FJcV28=",
938
+ "subType": "00"
939
+ }
940
+ },
941
+ {
942
+ "$binary": {
943
+ "base64": "RlQWwhU+uVv0a+9IB5cUkEfvHBvOw3B1Sx6WfPWMqes=",
944
+ "subType": "00"
945
+ }
946
+ },
947
+ {
948
+ "$binary": {
949
+ "base64": "ubb81XTC7U+4tcNzf1oYvOY6gR5hC2Izqx54f4GuJ0E=",
950
+ "subType": "00"
951
+ }
952
+ },
953
+ {
954
+ "$binary": {
955
+ "base64": "6M4Q5NMQ9TqNnjzGOxIkiUIY8TEL0I3XD1QnhefQUqU=",
956
+ "subType": "00"
957
+ }
958
+ },
959
+ {
960
+ "$binary": {
961
+ "base64": "BtInzk9t2FFMCEY6AQ7zN8jwrrZEs2irSv6q0Q4NaIw=",
962
+ "subType": "00"
963
+ }
964
+ },
965
+ {
966
+ "$binary": {
967
+ "base64": "6vxXfETu9cuBIpRBo3jUUU04mJIH/aAhLX8K6VI5Xv0=",
968
+ "subType": "00"
969
+ }
970
+ },
971
+ {
972
+ "$binary": {
973
+ "base64": "wXPCdS+q23zi1bkPnaVG2j0PsVtxdeSLJ//h6J1x8RU=",
974
+ "subType": "00"
975
+ }
976
+ },
977
+ {
978
+ "$binary": {
979
+ "base64": "KY3KkfBAsN2l80wbpj41G0gwBR5KmmFnZcagg7D3ENk=",
980
+ "subType": "00"
981
+ }
982
+ },
983
+ {
984
+ "$binary": {
985
+ "base64": "tI8NFAxXCX4VOnY5X73K6KI/Yspd3aR94KV39MhJlAw=",
986
+ "subType": "00"
987
+ }
988
+ },
989
+ {
990
+ "$binary": {
991
+ "base64": "nFxH0UC3mATKA6Vboz+QX/hAjj19kF/SH6H5Cne7qC0=",
992
+ "subType": "00"
993
+ }
994
+ },
995
+ {
996
+ "$binary": {
997
+ "base64": "q8hYqIYaIi7nOdG/7qQZYnz8Bsacfi66M1nVku4SH08=",
998
+ "subType": "00"
999
+ }
1000
+ },
1001
+ {
1002
+ "$binary": {
1003
+ "base64": "4saA92R4arp4anvD9xFtze+sNcQqTEhPHyl1h70A8NE=",
1004
+ "subType": "00"
1005
+ }
1006
+ },
1007
+ {
1008
+ "$binary": {
1009
+ "base64": "DbIziOBRRyeQS6RtBR09E37LV+CTKrEjGoRMLSpG6eE=",
1010
+ "subType": "00"
1011
+ }
1012
+ },
1013
+ {
1014
+ "$binary": {
1015
+ "base64": "Fv80Plp/7w2gnVqrwawLd6qhJ10G4NCDm3re67cNq4Y=",
1016
+ "subType": "00"
1017
+ }
1018
+ },
1019
+ {
1020
+ "$binary": {
1021
+ "base64": "T/T2oiQCBBES4YN7EodzPRdabZSFlYIClHBym+bQUZE=",
1022
+ "subType": "00"
1023
+ }
1024
+ },
1025
+ {
1026
+ "$binary": {
1027
+ "base64": "ZQgHD3l46Ujqtbnj1VbbeM29C9wJzOhz+yZ/7XdSrxk=",
1028
+ "subType": "00"
1029
+ }
1030
+ },
1031
+ {
1032
+ "$binary": {
1033
+ "base64": "ltlFKzWvyZvHxDFOYDd/XXJ6kUiJj0ln2HTCEz2o4Z4=",
1034
+ "subType": "00"
1035
+ }
1036
+ },
1037
+ {
1038
+ "$binary": {
1039
+ "base64": "flW8A7bltC1u8bzx0WJtxosGJdOVsJFfbx33jxnpFGg=",
1040
+ "subType": "00"
1041
+ }
1042
+ },
1043
+ {
1044
+ "$binary": {
1045
+ "base64": "SXO+92QbMKwUSG2t27ciunV1c3VvFkUuDmSczpRe008=",
1046
+ "subType": "00"
1047
+ }
1048
+ },
1049
+ {
1050
+ "$binary": {
1051
+ "base64": "+KioGs1GM+xRBzFE67ePTWj04KMSE5/Y6qUF7nJ5kvU=",
1052
+ "subType": "00"
1053
+ }
1054
+ },
1055
+ {
1056
+ "$binary": {
1057
+ "base64": "L3xNVbh6YH+RzqABN+5Jgb7T234Efpn766DmUvxIxgg=",
1058
+ "subType": "00"
1059
+ }
1060
+ },
1061
+ {
1062
+ "$binary": {
1063
+ "base64": "hPF+60mBYPjh21dEmPlBhKgyc9S2qLtTkypYvnqP2Fc=",
1064
+ "subType": "00"
1065
+ }
1066
+ },
1067
+ {
1068
+ "$binary": {
1069
+ "base64": "EletRsETy2HcjaPIm2c8CkT7ch/P3pJJDC8hasepcSU=",
1070
+ "subType": "00"
1071
+ }
1072
+ },
1073
+ {
1074
+ "$binary": {
1075
+ "base64": "r5bMXUaNKqLPxZ+TG9HYTG4aSDgcpim27rN8rQFkM0w=",
1076
+ "subType": "00"
1077
+ }
1078
+ },
1079
+ {
1080
+ "$binary": {
1081
+ "base64": "0Q7Erdr8+/S0wUEDDIqlS5XjBVWvhZY65K0uUDb6+Ns=",
1082
+ "subType": "00"
1083
+ }
1084
+ },
1085
+ {
1086
+ "$binary": {
1087
+ "base64": "xEcnhXy35hbXNVBPOOt3TUHbxvKfQ48KjA9b6/rbMqQ=",
1088
+ "subType": "00"
1089
+ }
1090
+ },
1091
+ {
1092
+ "$binary": {
1093
+ "base64": "T8bEpiQNgsEudXvyKE9SZlSvbpV/LUaslsdqgSFltyo=",
1094
+ "subType": "00"
1095
+ }
1096
+ },
1097
+ {
1098
+ "$binary": {
1099
+ "base64": "hIoiaF2YjnxDbODfhFEB+JGZ5nf8suD3Shck5bwQ3N0=",
1100
+ "subType": "00"
1101
+ }
1102
+ },
1103
+ {
1104
+ "$binary": {
1105
+ "base64": "qnA6qzejeRJ0rsZaZ0zOvKAaXyxt5lpscKQNYFZNl4k=",
1106
+ "subType": "00"
1107
+ }
1108
+ },
1109
+ {
1110
+ "$binary": {
1111
+ "base64": "anAKCL2DN/le2VaP0n2ucYSEH/DaaEH/8Sa4OqTZsRA=",
1112
+ "subType": "00"
1113
+ }
1114
+ },
1115
+ {
1116
+ "$binary": {
1117
+ "base64": "JCZlBJaFm618oWYSnT9Jr1MtwFVw4BZjOzO+5yWgR90=",
1118
+ "subType": "00"
1119
+ }
1120
+ },
1121
+ {
1122
+ "$binary": {
1123
+ "base64": "yxyk4n9762WzcDVGnTn4jCqUnSMIVCrLDIjCX1QVj34=",
1124
+ "subType": "00"
1125
+ }
1126
+ },
1127
+ {
1128
+ "$binary": {
1129
+ "base64": "fDI6fdKvDJwim5/CQwWZEzcrXE3LHgy7FTtffcC7tXE=",
1130
+ "subType": "00"
1131
+ }
1132
+ },
1133
+ {
1134
+ "$binary": {
1135
+ "base64": "Vex+gcz5T+WkzsVZQrkqUR2ryyZbnaOGuWpYvjN0zCw=",
1136
+ "subType": "00"
1137
+ }
1138
+ },
1139
+ {
1140
+ "$binary": {
1141
+ "base64": "8TLEXz+Gbbp6llHpZXVjLsdlYY9f6hrKpHVpyfDe0RY=",
1142
+ "subType": "00"
1143
+ }
1144
+ },
1145
+ {
1146
+ "$binary": {
1147
+ "base64": "7fTyt5BrunypS65TfOzFW2E2qdIuT4SLeDeGlbQoJCs=",
1148
+ "subType": "00"
1149
+ }
1150
+ },
1151
+ {
1152
+ "$binary": {
1153
+ "base64": "8fKGrkqN0/KuSjyXgDBmRauDKrSa//JBKRWHEB9xBf4=",
1154
+ "subType": "00"
1155
+ }
1156
+ },
1157
+ {
1158
+ "$binary": {
1159
+ "base64": "s4codmG7uN4ss6P357jL21lazEe90M9GOK5WrOknSV0=",
1160
+ "subType": "00"
1161
+ }
1162
+ },
1163
+ {
1164
+ "$binary": {
1165
+ "base64": "RkSpua8XF+NUdxVDU90EbLUTTyZFX3tt3atBTroFaRk=",
1166
+ "subType": "00"
1167
+ }
1168
+ },
1169
+ {
1170
+ "$binary": {
1171
+ "base64": "LnTCuCDyAHK5B9KXzjtwGmWB+qergQk2OCjnIx9MI2A=",
1172
+ "subType": "00"
1173
+ }
1174
+ },
1175
+ {
1176
+ "$binary": {
1177
+ "base64": "cBFh0virAX4pVXf/udIGI2951i0+0aZAdJcBVGtYnT4=",
1178
+ "subType": "00"
1179
+ }
1180
+ },
1181
+ {
1182
+ "$binary": {
1183
+ "base64": "G54X6myQXWZ5fw/G31en3QbdgfXzL9+hFTtJpnWMqDI=",
1184
+ "subType": "00"
1185
+ }
1186
+ },
1187
+ {
1188
+ "$binary": {
1189
+ "base64": "EdsiiuezcsFJFnYIyGjCOhnqMj1BOwTB5EFxN+ERUkg=",
1190
+ "subType": "00"
1191
+ }
1192
+ },
1193
+ {
1194
+ "$binary": {
1195
+ "base64": "dVH9MXLtk0WTwGQ3xmrhOqfropMUkDW3o6paNPGl3NU=",
1196
+ "subType": "00"
1197
+ }
1198
+ },
1199
+ {
1200
+ "$binary": {
1201
+ "base64": "sB3HqXKWY3pKbuEH8BTbfNIGfbY+7/ZbOc3XC+JRNNI=",
1202
+ "subType": "00"
1203
+ }
1204
+ },
1205
+ {
1206
+ "$binary": {
1207
+ "base64": "WHyDk62Xhqbo4/iie2aLIM4x2uuAjv6102dJSHI58oM=",
1208
+ "subType": "00"
1209
+ }
1210
+ },
1211
+ {
1212
+ "$binary": {
1213
+ "base64": "pNUFuHpeNRDUZ/NrtII2c6sNc9eGR1lIUlIyXKERA+0=",
1214
+ "subType": "00"
1215
+ }
1216
+ },
1217
+ {
1218
+ "$binary": {
1219
+ "base64": "UPa+pdCqnN0bfAptdzldQOSd01gidrDKy8KhWrpSKAI=",
1220
+ "subType": "00"
1221
+ }
1222
+ },
1223
+ {
1224
+ "$binary": {
1225
+ "base64": "l+7dOAlo+HUffMqFYXL6pgUFeTbwOM9CjKQLxEoLtc4=",
1226
+ "subType": "00"
1227
+ }
1228
+ },
1229
+ {
1230
+ "$binary": {
1231
+ "base64": "SRnDXV/rN6C8xwMutv9E1luv3DOUio3VkgPr8Cpm7Ew=",
1232
+ "subType": "00"
1233
+ }
1234
+ },
1235
+ {
1236
+ "$binary": {
1237
+ "base64": "QcH6gl+gX7xZ7OWhUNQMbndJy0Piz49pDo6RsnLkVSA=",
1238
+ "subType": "00"
1239
+ }
1240
+ },
1241
+ {
1242
+ "$binary": {
1243
+ "base64": "t+uL4DnfsI/Zll/KXWW1cOKX3Hu8WIkm3pt9efCVSAQ=",
1244
+ "subType": "00"
1245
+ }
1246
+ },
1247
+ {
1248
+ "$binary": {
1249
+ "base64": "myutHDctku/+Uug/nD8gRbYvmx/IovtoAAC2/fz2oHA=",
1250
+ "subType": "00"
1251
+ }
1252
+ },
1253
+ {
1254
+ "$binary": {
1255
+ "base64": "6C+cjD0e0nSCP6cPqQYbNG7SlOd6Mfvi8hyfm7Ng+D8=",
1256
+ "subType": "00"
1257
+ }
1258
+ },
1259
+ {
1260
+ "$binary": {
1261
+ "base64": "zg01JSoOj9oBKT0S1ldJucXzY5AKgreS+h2xJreWTOs=",
1262
+ "subType": "00"
1263
+ }
1264
+ },
1265
+ {
1266
+ "$binary": {
1267
+ "base64": "7qQ80/FjodHl1m1py/Oii0/9C/xWbLdhaRXQ+kkCP10=",
1268
+ "subType": "00"
1269
+ }
1270
+ },
1271
+ {
1272
+ "$binary": {
1273
+ "base64": "YwWMNH07vL6c5Nhg+MRnVByhzUunu8y0VLM9z/XvR5U=",
1274
+ "subType": "00"
1275
+ }
1276
+ },
1277
+ {
1278
+ "$binary": {
1279
+ "base64": "Dle8bU98+fudAbc14SToZFkwvV3tcYVsjDug0NWljpc=",
1280
+ "subType": "00"
1281
+ }
1282
+ },
1283
+ {
1284
+ "$binary": {
1285
+ "base64": "J+eKL1vPJmlzltvhI6Li5Fz/TJmi3Ng+ehRTcs46API=",
1286
+ "subType": "00"
1287
+ }
1288
+ },
1289
+ {
1290
+ "$binary": {
1291
+ "base64": "zB3XzfFygLwC3WHkj0up+VbEd25KKoce1vOpG/5bwK4=",
1292
+ "subType": "00"
1293
+ }
1294
+ },
1295
+ {
1296
+ "$binary": {
1297
+ "base64": "vnVnmOnL+z2pqwE+A6cVKS0Iwy4F4/2IiElJca9bUQM=",
1298
+ "subType": "00"
1299
+ }
1300
+ },
1301
+ {
1302
+ "$binary": {
1303
+ "base64": "+lG5r/Fpqry3BtFuvY67+RntmHAMDoLVOSGc6ZoXPb0=",
1304
+ "subType": "00"
1305
+ }
1306
+ },
1307
+ {
1308
+ "$binary": {
1309
+ "base64": "L5MXQertqc6uj7ADe8aWKbd1sYHPCE7P1VYVg9Zc3VI=",
1310
+ "subType": "00"
1311
+ }
1312
+ },
1313
+ {
1314
+ "$binary": {
1315
+ "base64": "imKONuZgopt0bhM3GMX2WVPwQYMTobuUUEdhcLfHs4c=",
1316
+ "subType": "00"
1317
+ }
1318
+ },
1319
+ {
1320
+ "$binary": {
1321
+ "base64": "eOkU1J1uVbiVFWBerbXsSIVcF2nqiicTkFy4x7kFHB8=",
1322
+ "subType": "00"
1323
+ }
1324
+ },
1325
+ {
1326
+ "$binary": {
1327
+ "base64": "gI0uDhXeoH/UatDQKEf4qo8FHzWZDhb/wuWTqbq/ID4=",
1328
+ "subType": "00"
1329
+ }
1330
+ },
1331
+ {
1332
+ "$binary": {
1333
+ "base64": "cOkd5Aa3btYhtojE/smsF/PJnULqQ4NNqTkU6KXTFmo=",
1334
+ "subType": "00"
1335
+ }
1336
+ },
1337
+ {
1338
+ "$binary": {
1339
+ "base64": "AWNJMs1MTe294oFipp8Y6P0CjpkZ4qCZoClQF3XcHq8=",
1340
+ "subType": "00"
1341
+ }
1342
+ },
1343
+ {
1344
+ "$binary": {
1345
+ "base64": "6gJtlzXOFhGYrVbTuRMmvMlDTwXdNtR9aGBlHZPwIMw=",
1346
+ "subType": "00"
1347
+ }
1348
+ },
1349
+ {
1350
+ "$binary": {
1351
+ "base64": "LEmwVGA/xsEG7UrcOoYLFu6KCXgijzFznenknuDacm8=",
1352
+ "subType": "00"
1353
+ }
1354
+ },
1355
+ {
1356
+ "$binary": {
1357
+ "base64": "mIRFPTXRrGaPtp/Ydij2jgkRe4uoUvAKxW2d8b9zYL0=",
1358
+ "subType": "00"
1359
+ }
1360
+ },
1361
+ {
1362
+ "$binary": {
1363
+ "base64": "B+Uv2u48WALOO0L311z+eryjYQzKJVMfdHMZPhOAFmY=",
1364
+ "subType": "00"
1365
+ }
1366
+ },
1367
+ {
1368
+ "$binary": {
1369
+ "base64": "INXXp0wDyVCq+NtfIrrC2ciETmyW/dWB/48/u4yLEZ4=",
1370
+ "subType": "00"
1371
+ }
1372
+ },
1373
+ {
1374
+ "$binary": {
1375
+ "base64": "se7DGo8XrlrQDLEcco1tZrQt9kDe+0RTyl2bw/quG4w=",
1376
+ "subType": "00"
1377
+ }
1378
+ },
1379
+ {
1380
+ "$binary": {
1381
+ "base64": "vr0m2+Zk9lbN6UgWCyn8xJWJOokU3IDYab5U5q1+CgQ=",
1382
+ "subType": "00"
1383
+ }
1384
+ },
1385
+ {
1386
+ "$binary": {
1387
+ "base64": "XI+eJ8Gy2JktG1gICgoj1qpsfy1tKmH0kglWbaQH6DA=",
1388
+ "subType": "00"
1389
+ }
1390
+ },
1391
+ {
1392
+ "$binary": {
1393
+ "base64": "A+UCuNnuAUqnQzspA6TVqUPRmtZmpSex5HFw7THRxs0=",
1394
+ "subType": "00"
1395
+ }
1396
+ },
1397
+ {
1398
+ "$binary": {
1399
+ "base64": "xaH2Ehfljd19uo0Fvb3iwkdaiWEVQd2YPoitgEPkhSM=",
1400
+ "subType": "00"
1401
+ }
1402
+ },
1403
+ {
1404
+ "$binary": {
1405
+ "base64": "S/iZBJGcc8+qZxyMtab65MMBoSglybwk3x58Nb86gnY=",
1406
+ "subType": "00"
1407
+ }
1408
+ },
1409
+ {
1410
+ "$binary": {
1411
+ "base64": "w14ZE5qqY5YgkS4Zcs9YNbrQbY1XfGOOHNn9bOYnFVQ=",
1412
+ "subType": "00"
1413
+ }
1414
+ },
1415
+ {
1416
+ "$binary": {
1417
+ "base64": "0MhGd/jEF1vjkKGp+ZMn9SjLK54jkp9W4Hg+Sp/oxaI=",
1418
+ "subType": "00"
1419
+ }
1420
+ },
1421
+ {
1422
+ "$binary": {
1423
+ "base64": "92QZ73e/NRTYgCm4aifaKth6aAsKnLLccBc0zx/qUTY=",
1424
+ "subType": "00"
1425
+ }
1426
+ },
1427
+ {
1428
+ "$binary": {
1429
+ "base64": "WOjzemCgFJOiGIp81RSVh/tFlzSTj9eFWcBnsiv2Ycs=",
1430
+ "subType": "00"
1431
+ }
1432
+ },
1433
+ {
1434
+ "$binary": {
1435
+ "base64": "DrsP9CmfKPjw5yLL8bnSeAxfNzAwlb+Z8OqCiKgBY7o=",
1436
+ "subType": "00"
1437
+ }
1438
+ },
1439
+ {
1440
+ "$binary": {
1441
+ "base64": "lMogqg8veBv6mri3/drMe9afJiKMvevkmGcw9BedfLo=",
1442
+ "subType": "00"
1443
+ }
1444
+ },
1445
+ {
1446
+ "$binary": {
1447
+ "base64": "TxqwNcY8Tg2MPpNdkPBwvfpuTttSYRHU26DGECKYQ9o=",
1448
+ "subType": "00"
1449
+ }
1450
+ },
1451
+ {
1452
+ "$binary": {
1453
+ "base64": "l0u1b4b4vYACWIwfnB7PZac4oDEgjQZCzHruNPTgAIY=",
1454
+ "subType": "00"
1455
+ }
1456
+ },
1457
+ {
1458
+ "$binary": {
1459
+ "base64": "iVSGQ+cCfhbWIrY/v/WBORK92elu9gfRKyGhr6r/k00=",
1460
+ "subType": "00"
1461
+ }
1462
+ },
1463
+ {
1464
+ "$binary": {
1465
+ "base64": "yK1forG50diEXte8ECzjfpHeYsPyuQ/dgxbxn/nzY5k=",
1466
+ "subType": "00"
1467
+ }
1468
+ },
1469
+ {
1470
+ "$binary": {
1471
+ "base64": "gIfTLCD3VwnOwkC0zPXWTqaITxX6ZplA69PO2a6zolc=",
1472
+ "subType": "00"
1473
+ }
1474
+ },
1475
+ {
1476
+ "$binary": {
1477
+ "base64": "O/Zxlgh3WqpzJ7+Sd8XWMVID4/GXJUUWaSqfgDUi3b0=",
1478
+ "subType": "00"
1479
+ }
1480
+ },
1481
+ {
1482
+ "$binary": {
1483
+ "base64": "ZQ6yv368zwahUqSUYH/StL0Qgz/TwS1CzlMjVDvCciI=",
1484
+ "subType": "00"
1485
+ }
1486
+ },
1487
+ {
1488
+ "$binary": {
1489
+ "base64": "m2rPEYkjwyiKdonMrKlcF7hya4lFOAUwEePJ3SgrNx8=",
1490
+ "subType": "00"
1491
+ }
1492
+ },
1493
+ {
1494
+ "$binary": {
1495
+ "base64": "Mq0yl5iVKlq71bT/dT/fXOWf2n90bTnXFnOdGDN0JOc=",
1496
+ "subType": "00"
1497
+ }
1498
+ },
1499
+ {
1500
+ "$binary": {
1501
+ "base64": "6qDGMXipPLC2O6EAAMjO2F9xx4rdqZso4IkPpH2304U=",
1502
+ "subType": "00"
1503
+ }
1504
+ },
1505
+ {
1506
+ "$binary": {
1507
+ "base64": "jvQHRQQa2RIszE2LX2Hv2LbRhYawJ6qmtRt8HZzFQXg=",
1508
+ "subType": "00"
1509
+ }
1510
+ },
1511
+ {
1512
+ "$binary": {
1513
+ "base64": "ovJXQrkZlpeHRciKyE/WWNm5O389gRgzx1W+Dw596X4=",
1514
+ "subType": "00"
1515
+ }
1516
+ },
1517
+ {
1518
+ "$binary": {
1519
+ "base64": "a4kgRNvYctGYqyQv9qScL/WkljTYVylJ9pE9KDULlxU=",
1520
+ "subType": "00"
1521
+ }
1522
+ },
1523
+ {
1524
+ "$binary": {
1525
+ "base64": "qV4Q48vPiCJMTjljotzYKI/zfExWpkKOSHGcAjGyDig=",
1526
+ "subType": "00"
1527
+ }
1528
+ },
1529
+ {
1530
+ "$binary": {
1531
+ "base64": "jtI7zbBF+QW/aYYTkn90zzyHLXLgmy7l1bzgMb2oqic=",
1532
+ "subType": "00"
1533
+ }
1534
+ },
1535
+ {
1536
+ "$binary": {
1537
+ "base64": "q0KmJl9txPdn962UNvnfe6UFhdk9YaFZuTm33F+csso=",
1538
+ "subType": "00"
1539
+ }
1540
+ },
1541
+ {
1542
+ "$binary": {
1543
+ "base64": "ULNdEqeZJgtmNOhN/Y9INzsE9AnxWYwOMn+pIbRXIFs=",
1544
+ "subType": "00"
1545
+ }
1546
+ },
1547
+ {
1548
+ "$binary": {
1549
+ "base64": "R4oz9+wkdjpKe5tE1jpG7IURAnfvS5fLP4LrD5cZfTE=",
1550
+ "subType": "00"
1551
+ }
1552
+ },
1553
+ {
1554
+ "$binary": {
1555
+ "base64": "qG5Z7VhwSu/HT/YFTgDzyAAzJKq51xPw2HeEV5btYC4=",
1556
+ "subType": "00"
1557
+ }
1558
+ },
1559
+ {
1560
+ "$binary": {
1561
+ "base64": "OM/1DmIIZ5Qyhtq8TGkHTBEMVKjAnKRZMRXYtTG8ctc=",
1562
+ "subType": "00"
1563
+ }
1564
+ },
1565
+ {
1566
+ "$binary": {
1567
+ "base64": "2R5vZbljLXnDFA99YfGuRB7pAdPJVKsT25zLNMC0fUk=",
1568
+ "subType": "00"
1569
+ }
1570
+ },
1571
+ {
1572
+ "$binary": {
1573
+ "base64": "OMbavF2EmdAz1fHkLV3ctFEUDfriKhoT2gidwHZ9z1o=",
1574
+ "subType": "00"
1575
+ }
1576
+ },
1577
+ {
1578
+ "$binary": {
1579
+ "base64": "MWT4Zrw3/vVvTYMa1Is5Pjr3wEwnBfnEAPPUAHKQhNU=",
1580
+ "subType": "00"
1581
+ }
1582
+ },
1583
+ {
1584
+ "$binary": {
1585
+ "base64": "tBkRPfG9yxfKocQx5pAJX0oEHKPL0Tgtr+0UYe09InE=",
1586
+ "subType": "00"
1587
+ }
1588
+ },
1589
+ {
1590
+ "$binary": {
1591
+ "base64": "lqxpnDR/H0YgH7RcfKoNoaaRhe1SIazIeMbQ1fu9y3Q=",
1592
+ "subType": "00"
1593
+ }
1594
+ },
1595
+ {
1596
+ "$binary": {
1597
+ "base64": "utT1UdR22PWOTrOkZauztX613lAplV4eh/ejTRb7ZSk=",
1598
+ "subType": "00"
1599
+ }
1600
+ },
1601
+ {
1602
+ "$binary": {
1603
+ "base64": "S+Y2yFyKi/a6FXhih4yGo29X8I8OT6/zwEoX6NMKT4o=",
1604
+ "subType": "00"
1605
+ }
1606
+ },
1607
+ {
1608
+ "$binary": {
1609
+ "base64": "QSjVppg29x6oS5yBg8OFjrFt0tuTpWCuKxfIy0k8YnE=",
1610
+ "subType": "00"
1611
+ }
1612
+ },
1613
+ {
1614
+ "$binary": {
1615
+ "base64": "y3r6/Xsfvsl3HksXlVYkJgHUqpQGfICxg3x9f8Zw1qM=",
1616
+ "subType": "00"
1617
+ }
1618
+ },
1619
+ {
1620
+ "$binary": {
1621
+ "base64": "BSltHzEwDjFN4du9rDHAPvl22atlcTioEtt+gC5L1tk=",
1622
+ "subType": "00"
1623
+ }
1624
+ },
1625
+ {
1626
+ "$binary": {
1627
+ "base64": "0arGXjSN0006UnXbrWsGqhvBair569DeFDUME3Df3rA=",
1628
+ "subType": "00"
1629
+ }
1630
+ },
1631
+ {
1632
+ "$binary": {
1633
+ "base64": "s/DumaMad08S+PBUUcrS+v42K0z8HgcdiQtrFAEu2Qs=",
1634
+ "subType": "00"
1635
+ }
1636
+ },
1637
+ {
1638
+ "$binary": {
1639
+ "base64": "EzJ8Y8N0OQBTlnvrK82PdevDNZZO4E6CNgYVu8Cj6Ks=",
1640
+ "subType": "00"
1641
+ }
1642
+ },
1643
+ {
1644
+ "$binary": {
1645
+ "base64": "VA4vr8jBPI5QdiPrULzzZjBMIUbG3V7Slg5zm0bFcKc=",
1646
+ "subType": "00"
1647
+ }
1648
+ },
1649
+ {
1650
+ "$binary": {
1651
+ "base64": "YAOvEB2ZLtq9LQiFViBHWaxxWVVonC2rNYj9tN9s3L0=",
1652
+ "subType": "00"
1653
+ }
1654
+ },
1655
+ {
1656
+ "$binary": {
1657
+ "base64": "hgaHMo9aAGS+nBwvqnTjZO+YkiQPY1c1XcIYeaYKHyI=",
1658
+ "subType": "00"
1659
+ }
1660
+ },
1661
+ {
1662
+ "$binary": {
1663
+ "base64": "YvaoLt3ZpH0atB0tNzwMjpoxRYJXl0DqSjisMJiGVBE=",
1664
+ "subType": "00"
1665
+ }
1666
+ },
1667
+ {
1668
+ "$binary": {
1669
+ "base64": "EMmW6CptFsiLoPOi5/uAJQ2FmeLg6mCpuVLLrRWk7Mc=",
1670
+ "subType": "00"
1671
+ }
1672
+ },
1673
+ {
1674
+ "$binary": {
1675
+ "base64": "1jQsNMarSnarlYmXEuoFokeBMg/090qUD9wqo1Zn8Gs=",
1676
+ "subType": "00"
1677
+ }
1678
+ },
1679
+ {
1680
+ "$binary": {
1681
+ "base64": "hupXNKhRpJxpyDAAP1TgJ5JMZh9lhbMk6s7D7dMS3C8=",
1682
+ "subType": "00"
1683
+ }
1684
+ }
1685
+ ]
1686
+ }
1687
+