mongo 2.20.0 → 2.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +40 -1
  3. data/Rakefile +59 -23
  4. data/lib/mongo/address.rb +22 -3
  5. data/lib/mongo/auth/aws/credentials_retriever.rb +70 -17
  6. data/lib/mongo/auth/base.rb +1 -1
  7. data/lib/mongo/bulk_write.rb +35 -2
  8. data/lib/mongo/client.rb +38 -6
  9. data/lib/mongo/client_encryption.rb +6 -3
  10. data/lib/mongo/cluster/reapers/cursor_reaper.rb +6 -1
  11. data/lib/mongo/cluster/sdam_flow.rb +20 -7
  12. data/lib/mongo/cluster.rb +14 -4
  13. data/lib/mongo/collection/helpers.rb +1 -1
  14. data/lib/mongo/collection/view/aggregation/behavior.rb +131 -0
  15. data/lib/mongo/collection/view/aggregation.rb +33 -99
  16. data/lib/mongo/collection/view/builder/aggregation.rb +1 -7
  17. data/lib/mongo/collection/view/change_stream.rb +80 -27
  18. data/lib/mongo/collection/view/iterable.rb +76 -60
  19. data/lib/mongo/collection/view/map_reduce.rb +25 -8
  20. data/lib/mongo/collection/view/readable.rb +79 -30
  21. data/lib/mongo/collection/view/writable.rb +109 -48
  22. data/lib/mongo/collection/view.rb +43 -3
  23. data/lib/mongo/collection.rb +158 -23
  24. data/lib/mongo/config.rb +2 -2
  25. data/lib/mongo/crypt/auto_encrypter.rb +4 -6
  26. data/lib/mongo/crypt/binding.rb +4 -4
  27. data/lib/mongo/crypt/context.rb +20 -14
  28. data/lib/mongo/crypt/encryption_io.rb +56 -26
  29. data/lib/mongo/crypt/explicit_encrypter.rb +49 -20
  30. data/lib/mongo/crypt/explicit_encryption_context.rb +17 -11
  31. data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +22 -6
  32. data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +29 -4
  33. data/lib/mongo/csot_timeout_holder.rb +119 -0
  34. data/lib/mongo/cursor/kill_spec.rb +5 -2
  35. data/lib/mongo/cursor/nontailable.rb +27 -0
  36. data/lib/mongo/cursor.rb +86 -24
  37. data/lib/mongo/cursor_host.rb +82 -0
  38. data/lib/mongo/database/view.rb +81 -14
  39. data/lib/mongo/database.rb +88 -18
  40. data/lib/mongo/error/operation_failure.rb +209 -204
  41. data/lib/mongo/error/server_timeout_error.rb +12 -0
  42. data/lib/mongo/error/socket_timeout_error.rb +3 -1
  43. data/lib/mongo/error/timeout_error.rb +23 -0
  44. data/lib/mongo/error.rb +2 -0
  45. data/lib/mongo/grid/fs_bucket.rb +45 -12
  46. data/lib/mongo/grid/stream/read.rb +15 -1
  47. data/lib/mongo/grid/stream/write.rb +21 -4
  48. data/lib/mongo/index/view.rb +77 -16
  49. data/lib/mongo/operation/context.rb +40 -2
  50. data/lib/mongo/operation/create_search_indexes/op_msg.rb +2 -2
  51. data/lib/mongo/operation/delete/op_msg.rb +2 -1
  52. data/lib/mongo/operation/drop_search_index/op_msg.rb +2 -2
  53. data/lib/mongo/operation/find/op_msg.rb +45 -0
  54. data/lib/mongo/operation/get_more/op_msg.rb +33 -0
  55. data/lib/mongo/operation/insert/op_msg.rb +3 -2
  56. data/lib/mongo/operation/insert/result.rb +4 -2
  57. data/lib/mongo/operation/list_collections/result.rb +1 -1
  58. data/lib/mongo/operation/map_reduce/result.rb +1 -1
  59. data/lib/mongo/operation/op_msg_base.rb +3 -1
  60. data/lib/mongo/operation/result.rb +26 -5
  61. data/lib/mongo/operation/shared/executable.rb +12 -1
  62. data/lib/mongo/operation/shared/op_msg_executable.rb +4 -1
  63. data/lib/mongo/operation/shared/response_handling.rb +3 -3
  64. data/lib/mongo/operation/shared/sessions_supported.rb +1 -1
  65. data/lib/mongo/operation/shared/timed.rb +52 -0
  66. data/lib/mongo/operation/shared/write.rb +4 -1
  67. data/lib/mongo/operation/update/op_msg.rb +2 -1
  68. data/lib/mongo/operation/update_search_index/op_msg.rb +2 -2
  69. data/lib/mongo/operation.rb +1 -0
  70. data/lib/mongo/protocol/message.rb +1 -4
  71. data/lib/mongo/protocol/msg.rb +2 -2
  72. data/lib/mongo/retryable/base_worker.rb +28 -3
  73. data/lib/mongo/retryable/read_worker.rb +76 -35
  74. data/lib/mongo/retryable/write_worker.rb +53 -22
  75. data/lib/mongo/retryable.rb +8 -2
  76. data/lib/mongo/server/connection.rb +11 -5
  77. data/lib/mongo/server/connection_base.rb +22 -2
  78. data/lib/mongo/server/connection_pool.rb +32 -14
  79. data/lib/mongo/server/description/features.rb +1 -1
  80. data/lib/mongo/server/description.rb +18 -5
  81. data/lib/mongo/server/monitor.rb +7 -4
  82. data/lib/mongo/server/pending_connection.rb +25 -8
  83. data/lib/mongo/server/{round_trip_time_averager.rb → round_trip_time_calculator.rb} +25 -7
  84. data/lib/mongo/server.rb +11 -6
  85. data/lib/mongo/server_selector/base.rb +25 -9
  86. data/lib/mongo/session.rb +78 -9
  87. data/lib/mongo/socket/ssl.rb +131 -18
  88. data/lib/mongo/socket/tcp.rb +40 -6
  89. data/lib/mongo/socket.rb +154 -25
  90. data/lib/mongo/uri/options_mapper.rb +1 -0
  91. data/lib/mongo/version.rb +1 -5
  92. data/lib/mongo.rb +1 -0
  93. data/mongo.gemspec +8 -11
  94. data/spec/atlas/atlas_connectivity_spec.rb +4 -0
  95. data/spec/atlas/operations_spec.rb +4 -0
  96. data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +2 -1
  97. data/spec/integration/client_side_encryption/auto_encryption_spec.rb +494 -487
  98. data/spec/integration/client_side_encryption/on_demand_aws_credentials_spec.rb +1 -1
  99. data/spec/integration/client_side_encryption/range_explicit_encryption_prose_spec.rb +67 -20
  100. data/spec/integration/client_side_operations_timeout/encryption_prose_spec.rb +131 -0
  101. data/spec/integration/connection_pool_populator_spec.rb +2 -0
  102. data/spec/integration/cursor_pinning_spec.rb +15 -60
  103. data/spec/integration/cursor_reaping_spec.rb +1 -1
  104. data/spec/integration/docs_examples_spec.rb +1 -1
  105. data/spec/integration/operation_failure_code_spec.rb +1 -1
  106. data/spec/integration/operation_failure_message_spec.rb +3 -3
  107. data/spec/integration/retryable_errors_spec.rb +2 -2
  108. data/spec/integration/retryable_reads_errors_spec.rb +35 -23
  109. data/spec/integration/sdam_error_handling_spec.rb +4 -1
  110. data/spec/integration/search_indexes_prose_spec.rb +4 -0
  111. data/spec/integration/server_spec.rb +4 -3
  112. data/spec/integration/transactions_api_examples_spec.rb +2 -0
  113. data/spec/kerberos/kerberos_spec.rb +4 -0
  114. data/spec/lite_spec_helper.rb +3 -11
  115. data/spec/mongo/auth/user/view_spec.rb +1 -1
  116. data/spec/mongo/caching_cursor_spec.rb +1 -1
  117. data/spec/mongo/client_encryption_spec.rb +1 -0
  118. data/spec/mongo/client_spec.rb +158 -4
  119. data/spec/mongo/collection/view/aggregation_spec.rb +14 -39
  120. data/spec/mongo/collection/view/change_stream_spec.rb +3 -3
  121. data/spec/mongo/collection_crud_spec.rb +1 -0
  122. data/spec/mongo/collection_spec.rb +5 -6
  123. data/spec/mongo/crypt/auto_encrypter_spec.rb +14 -12
  124. data/spec/mongo/crypt/data_key_context_spec.rb +3 -1
  125. data/spec/mongo/crypt/explicit_encryption_context_spec.rb +2 -2
  126. data/spec/mongo/crypt/handle_spec.rb +1 -1
  127. data/spec/mongo/cursor_spec.rb +26 -9
  128. data/spec/mongo/error/operation_failure_heavy_spec.rb +2 -2
  129. data/spec/mongo/operation/context_spec.rb +79 -0
  130. data/spec/mongo/operation/create/op_msg_spec.rb +106 -110
  131. data/spec/mongo/operation/delete/op_msg_spec.rb +6 -5
  132. data/spec/mongo/operation/find/op_msg_spec.rb +66 -0
  133. data/spec/mongo/operation/get_more/op_msg_spec.rb +65 -0
  134. data/spec/mongo/operation/insert/op_msg_spec.rb +128 -131
  135. data/spec/mongo/operation/shared/csot/examples.rb +113 -0
  136. data/spec/mongo/query_cache_spec.rb +243 -225
  137. data/spec/mongo/retryable_spec.rb +1 -0
  138. data/spec/mongo/server/connection_spec.rb +22 -0
  139. data/spec/mongo/server/round_trip_time_calculator_spec.rb +120 -0
  140. data/spec/mongo/socket/ssl_spec.rb +0 -10
  141. data/spec/runners/change_streams/test.rb +2 -2
  142. data/spec/runners/crud/operation.rb +1 -1
  143. data/spec/runners/crud/verifier.rb +3 -1
  144. data/spec/runners/transactions/operation.rb +4 -6
  145. data/spec/runners/unified/ambiguous_operations.rb +13 -0
  146. data/spec/runners/unified/assertions.rb +4 -0
  147. data/spec/runners/unified/change_stream_operations.rb +14 -24
  148. data/spec/runners/unified/crud_operations.rb +82 -59
  149. data/spec/runners/unified/ddl_operations.rb +38 -7
  150. data/spec/runners/unified/grid_fs_operations.rb +37 -2
  151. data/spec/runners/unified/support_operations.rb +43 -4
  152. data/spec/runners/unified/test.rb +22 -10
  153. data/spec/runners/unified.rb +1 -1
  154. data/spec/solo/clean_exit_spec.rb +2 -0
  155. data/spec/spec_tests/client_side_operations_timeout_spec.rb +15 -0
  156. data/spec/spec_tests/data/change_streams_unified/change-streams-clusterTime.yml +3 -1
  157. data/spec/spec_tests/data/change_streams_unified/change-streams-disambiguatedPaths.yml +3 -1
  158. data/spec/spec_tests/data/change_streams_unified/change-streams-errors.yml +3 -1
  159. data/spec/spec_tests/data/change_streams_unified/change-streams-pre_and_post_images.yml +1 -1
  160. data/spec/spec_tests/data/change_streams_unified/change-streams-resume-allowlist.yml +1 -1
  161. data/spec/spec_tests/data/change_streams_unified/change-streams-resume-errorLabels.yml +1 -1
  162. data/spec/spec_tests/data/change_streams_unified/change-streams-showExpandedEvents.yml +1 -1
  163. data/spec/spec_tests/data/client_side_encryption/badQueries.yml +2 -1
  164. data/spec/spec_tests/data/client_side_encryption/fle2v2-BypassQueryAnalysis.yml +1 -0
  165. data/spec/spec_tests/data/client_side_encryption/fle2v2-Compact.yml +1 -0
  166. data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection.yml +1 -0
  167. data/spec/spec_tests/data/client_side_encryption/fle2v2-DecryptExistingData.yml +1 -0
  168. data/spec/spec_tests/data/client_side_encryption/fle2v2-Delete.yml +1 -0
  169. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-EncryptedFieldsMap.yml +1 -0
  170. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-jsonSchema.yml +1 -0
  171. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFieldsMap-defaults.yml +1 -0
  172. data/spec/spec_tests/data/client_side_encryption/fle2v2-FindOneAndUpdate.yml +1 -0
  173. data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Indexed.yml +1 -0
  174. data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Unindexed.yml +1 -0
  175. data/spec/spec_tests/data/client_side_encryption/fle2v2-MissingKey.yml +1 -0
  176. data/spec/spec_tests/data/client_side_encryption/fle2v2-NoEncryption.yml +1 -0
  177. data/spec/spec_tests/data/client_side_encryption/fle2v2-Update.yml +1 -0
  178. data/spec/spec_tests/data/client_side_encryption/fle2v2-validatorAndPartialFieldExpression.yml +2 -1
  179. data/spec/spec_tests/data/client_side_encryption/timeoutMS.yml +67 -0
  180. data/spec/spec_tests/data/client_side_operations_timeout/bulkWrite.yml +87 -0
  181. data/spec/spec_tests/data/client_side_operations_timeout/change-streams.yml +358 -0
  182. data/spec/spec_tests/data/client_side_operations_timeout/close-cursors.yml +129 -0
  183. data/spec/spec_tests/data/client_side_operations_timeout/command-execution.yml +250 -0
  184. data/spec/spec_tests/data/client_side_operations_timeout/convenient-transactions.yml +113 -0
  185. data/spec/spec_tests/data/client_side_operations_timeout/cursors.yml +70 -0
  186. data/spec/spec_tests/data/client_side_operations_timeout/deprecated-options.yml +3982 -0
  187. data/spec/spec_tests/data/client_side_operations_timeout/error-transformations.yml +96 -0
  188. data/spec/spec_tests/data/client_side_operations_timeout/global-timeoutMS.yml +3236 -0
  189. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-advanced.yml +207 -0
  190. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-delete.yml +152 -0
  191. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-download.yml +182 -0
  192. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-find.yml +100 -0
  193. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-upload.yml +249 -0
  194. data/spec/spec_tests/data/client_side_operations_timeout/legacy-timeouts.yml +204 -0
  195. data/spec/spec_tests/data/client_side_operations_timeout/non-tailable-cursors.yml +307 -0
  196. data/spec/spec_tests/data/client_side_operations_timeout/override-collection-timeoutMS.yml +1877 -0
  197. data/spec/spec_tests/data/client_side_operations_timeout/override-operation-timeoutMS.yml +1918 -0
  198. data/spec/spec_tests/data/client_side_operations_timeout/retryability-legacy-timeouts.yml +1676 -0
  199. data/spec/spec_tests/data/client_side_operations_timeout/retryability-timeoutMS.yml +2824 -0
  200. data/spec/spec_tests/data/client_side_operations_timeout/sessions-inherit-timeoutMS.yml +168 -0
  201. data/spec/spec_tests/data/client_side_operations_timeout/sessions-override-operation-timeoutMS.yml +171 -0
  202. data/spec/spec_tests/data/client_side_operations_timeout/sessions-override-timeoutMS.yml +168 -0
  203. data/spec/spec_tests/data/client_side_operations_timeout/tailable-awaitData.yml +247 -0
  204. data/spec/spec_tests/data/client_side_operations_timeout/tailable-non-awaitData.yml +181 -0
  205. data/spec/spec_tests/data/crud_unified/aggregate-write-readPreference.yml +6 -0
  206. data/spec/spec_tests/data/crud_unified/db-aggregate-write-readPreference.yml +6 -0
  207. data/spec/spec_tests/data/crud_unified/find-test-all-options.yml +29 -0
  208. data/spec/spec_tests/server_selection_rtt_spec.rb +6 -6
  209. data/spec/spec_tests/transactions_unified_spec.rb +2 -1
  210. data/spec/support/certificates/atlas-ocsp-ca.crt +89 -79
  211. data/spec/support/certificates/atlas-ocsp.crt +117 -122
  212. data/spec/support/certificates/retrieve-atlas-cert +1 -1
  213. data/spec/support/cluster_tools.rb +3 -3
  214. data/spec/support/common_shortcuts.rb +2 -2
  215. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Date.json +1 -1
  216. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalNoPrecision.json +1 -1
  217. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalPrecision.json +1 -1
  218. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoubleNoPrecision.json +1 -1
  219. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoublePrecision.json +1 -1
  220. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Int.json +1 -1
  221. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Long.json +1 -1
  222. data/spec/support/shared/session.rb +2 -2
  223. data/spec/support/spec_setup.rb +2 -2
  224. data/spec/support/utils.rb +3 -1
  225. metadata +88 -173
  226. checksums.yaml.gz.sig +0 -0
  227. data/spec/mongo/server/round_trip_time_averager_spec.rb +0 -48
  228. data/spec/shared/LICENSE +0 -20
  229. data/spec/shared/bin/get-mongodb-download-url +0 -17
  230. data/spec/shared/bin/s3-copy +0 -45
  231. data/spec/shared/bin/s3-upload +0 -69
  232. data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
  233. data/spec/shared/lib/mrss/cluster_config.rb +0 -231
  234. data/spec/shared/lib/mrss/constraints.rb +0 -378
  235. data/spec/shared/lib/mrss/docker_runner.rb +0 -298
  236. data/spec/shared/lib/mrss/eg_config_utils.rb +0 -51
  237. data/spec/shared/lib/mrss/event_subscriber.rb +0 -210
  238. data/spec/shared/lib/mrss/lite_constraints.rb +0 -238
  239. data/spec/shared/lib/mrss/server_version_registry.rb +0 -113
  240. data/spec/shared/lib/mrss/session_registry.rb +0 -69
  241. data/spec/shared/lib/mrss/session_registry_legacy.rb +0 -60
  242. data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
  243. data/spec/shared/lib/mrss/utils.rb +0 -37
  244. data/spec/shared/share/Dockerfile.erb +0 -281
  245. data/spec/shared/share/haproxy-1.conf +0 -16
  246. data/spec/shared/share/haproxy-2.conf +0 -17
  247. data/spec/shared/shlib/config.sh +0 -27
  248. data/spec/shared/shlib/distro.sh +0 -74
  249. data/spec/shared/shlib/server.sh +0 -417
  250. data/spec/shared/shlib/set_env.sh +0 -146
  251. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Aggregate.yml +0 -241
  252. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Correctness.yml +0 -422
  253. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Delete.yml +0 -182
  254. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-FindOneAndUpdate.yml +0 -239
  255. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-InsertFind.yml +0 -235
  256. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Update.yml +0 -252
  257. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Aggregate.yml +0 -1687
  258. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Correctness.yml +0 -293
  259. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Delete.yml +0 -905
  260. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-FindOneAndUpdate.yml +0 -1684
  261. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-InsertFind.yml +0 -1680
  262. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Update.yml +0 -1697
  263. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Aggregate.yml +0 -329
  264. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Correctness.yml +0 -424
  265. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Delete.yml +0 -226
  266. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-FindOneAndUpdate.yml +0 -327
  267. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-InsertFind.yml +0 -319
  268. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Update.yml +0 -336
  269. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Aggregate.yml +0 -913
  270. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Correctness.yml +0 -292
  271. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Delete.yml +0 -518
  272. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-FindOneAndUpdate.yml +0 -911
  273. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-InsertFind.yml +0 -907
  274. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Update.yml +0 -924
  275. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Aggregate.yml +0 -325
  276. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Correctness.yml +0 -424
  277. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Delete.yml +0 -224
  278. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-FindOneAndUpdate.yml +0 -323
  279. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-InsertFind.yml +0 -319
  280. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Update.yml +0 -338
  281. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Aggregate.yml +0 -241
  282. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Correctness.yml +0 -423
  283. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Delete.yml +0 -182
  284. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-FindOneAndUpdate.yml +0 -239
  285. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-InsertFind.yml +0 -235
  286. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Update.yml +0 -254
  287. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Aggregate.yml +0 -241
  288. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Correctness.yml +0 -422
  289. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Delete.yml +0 -182
  290. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-FindOneAndUpdate.yml +0 -239
  291. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-InsertFind.yml +0 -235
  292. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Update.yml +0 -254
  293. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-WrongType.yml +0 -43
  294. data/spec/support/faas/app/aws_lambda/mongodb/Gemfile.lock +0 -19
  295. data.tar.gz.sig +0 -0
  296. metadata.gz.sig +0 -3
@@ -0,0 +1,168 @@
1
+ description: "sessions inherit timeoutMS from their parent MongoClient"
2
+
3
+ schemaVersion: "1.9"
4
+
5
+ runOnRequirements:
6
+ - minServerVersion: "4.4"
7
+ topologies: ["replicaset", "sharded"]
8
+
9
+ createEntities:
10
+ - client:
11
+ id: &failPointClient failPointClient
12
+ useMultipleMongoses: false
13
+ - client:
14
+ id: &client client
15
+ uriOptions:
16
+ timeoutMS: 50
17
+ useMultipleMongoses: false
18
+ observeEvents:
19
+ - commandStartedEvent
20
+ - commandSucceededEvent
21
+ - commandFailedEvent
22
+ - database:
23
+ id: &database database
24
+ client: *client
25
+ databaseName: &databaseName test
26
+ - collection:
27
+ id: &collection collection
28
+ database: *database
29
+ collectionName: &collectionName coll
30
+ - session:
31
+ id: &session session
32
+ client: *client
33
+
34
+ initialData:
35
+ - collectionName: *collectionName
36
+ databaseName: *databaseName
37
+ documents: []
38
+
39
+ tests:
40
+ # Drivers ignore errors from abortTransaction, so the tests in this file use commandSucceededEvent and
41
+ # commandFailedEvent events to assert success/failure.
42
+
43
+ - description: "timeoutMS applied to commitTransaction"
44
+ operations:
45
+ - name: failPoint
46
+ object: testRunner
47
+ arguments:
48
+ client: *failPointClient
49
+ failPoint:
50
+ configureFailPoint: failCommand
51
+ mode: { times: 1 }
52
+ data:
53
+ failCommands: ["commitTransaction"]
54
+ blockConnection: true
55
+ blockTimeMS: 60
56
+ - name: startTransaction
57
+ object: *session
58
+ - name: insertOne
59
+ object: *collection
60
+ arguments:
61
+ session: *session
62
+ document: { _id: 1 }
63
+ - name: commitTransaction
64
+ object: *session
65
+ expectError:
66
+ isTimeoutError: true
67
+ expectEvents:
68
+ - client: *client
69
+ events:
70
+ - commandStartedEvent:
71
+ commandName: insert
72
+ databaseName: *databaseName
73
+ command:
74
+ insert: *collectionName
75
+ - commandSucceededEvent:
76
+ commandName: insert
77
+ - commandStartedEvent:
78
+ commandName: commitTransaction
79
+ databaseName: admin
80
+ command:
81
+ commitTransaction: 1
82
+ maxTimeMS: { $$type: ["int", "long"] }
83
+ - commandFailedEvent:
84
+ commandName: commitTransaction
85
+
86
+ - description: "timeoutMS applied to abortTransaction"
87
+ operations:
88
+ - name: failPoint
89
+ object: testRunner
90
+ arguments:
91
+ client: *failPointClient
92
+ failPoint:
93
+ configureFailPoint: failCommand
94
+ mode: { times: 1 }
95
+ data:
96
+ failCommands: ["abortTransaction"]
97
+ blockConnection: true
98
+ blockTimeMS: 60
99
+ - name: startTransaction
100
+ object: *session
101
+ - name: insertOne
102
+ object: *collection
103
+ arguments:
104
+ session: *session
105
+ document: { _id: 1 }
106
+ - name: abortTransaction
107
+ object: *session
108
+ expectEvents:
109
+ - client: *client
110
+ events:
111
+ - commandStartedEvent:
112
+ commandName: insert
113
+ databaseName: *databaseName
114
+ command:
115
+ insert: *collectionName
116
+ - commandSucceededEvent:
117
+ commandName: insert
118
+ - commandStartedEvent:
119
+ commandName: abortTransaction
120
+ databaseName: admin
121
+ command:
122
+ abortTransaction: 1
123
+ maxTimeMS: { $$type: ["int", "long"] }
124
+ - commandFailedEvent:
125
+ commandName: abortTransaction
126
+
127
+ - description: "timeoutMS applied to withTransaction"
128
+ operations:
129
+ - name: failPoint
130
+ object: testRunner
131
+ arguments:
132
+ client: *failPointClient
133
+ failPoint:
134
+ configureFailPoint: failCommand
135
+ mode: { times: 1 }
136
+ data:
137
+ failCommands: ["insert"]
138
+ blockConnection: true
139
+ blockTimeMS: 60
140
+ - name: withTransaction
141
+ object: *session
142
+ arguments:
143
+ callback:
144
+ - name: insertOne
145
+ object: *collection
146
+ arguments:
147
+ session: *session
148
+ document: { _id: 1 }
149
+ expectError:
150
+ isTimeoutError: true
151
+ expectError:
152
+ isTimeoutError: true
153
+ expectEvents:
154
+ - client: *client
155
+ events:
156
+ # Because the insert expects an error and gets an error, it technically succeeds, so withTransaction will
157
+ # try to run commitTransaction. This will fail client-side, though, because the timeout has already expired,
158
+ # so no command is sent.
159
+ - commandStartedEvent:
160
+ commandName: insert
161
+ databaseName: *databaseName
162
+ command:
163
+ insert: *collectionName
164
+ # withTransaction specifies timeoutMS for each operation in the callback that uses the session, so the
165
+ # insert command should have a maxTimeMS field.
166
+ maxTimeMS: { $$type: ["int", "long"] }
167
+ - commandFailedEvent:
168
+ commandName: insert
@@ -0,0 +1,171 @@
1
+ description: "timeoutMS can be overridden for individual session operations"
2
+
3
+ schemaVersion: "1.9"
4
+
5
+ runOnRequirements:
6
+ - minServerVersion: "4.4"
7
+ topologies: ["replicaset", "sharded"]
8
+
9
+ createEntities:
10
+ - client:
11
+ id: &failPointClient failPointClient
12
+ useMultipleMongoses: false
13
+ - client:
14
+ id: &client client
15
+ useMultipleMongoses: false
16
+ observeEvents:
17
+ - commandStartedEvent
18
+ - commandSucceededEvent
19
+ - commandFailedEvent
20
+ - database:
21
+ id: &database database
22
+ client: *client
23
+ databaseName: &databaseName test
24
+ - collection:
25
+ id: &collection collection
26
+ database: *database
27
+ collectionName: &collectionName coll
28
+ - session:
29
+ id: &session session
30
+ client: *client
31
+
32
+ initialData:
33
+ - collectionName: *collectionName
34
+ databaseName: *databaseName
35
+ documents: []
36
+
37
+ tests:
38
+ # Drivers ignore errors from abortTransaction, so the tests in this file use commandSucceededEvent and
39
+ # commandFailedEvent events to assert success/failure.
40
+
41
+ - description: "timeoutMS can be overridden for commitTransaction"
42
+ operations:
43
+ - name: failPoint
44
+ object: testRunner
45
+ arguments:
46
+ client: *failPointClient
47
+ failPoint:
48
+ configureFailPoint: failCommand
49
+ mode: { times: 1 }
50
+ data:
51
+ failCommands: ["commitTransaction"]
52
+ blockConnection: true
53
+ blockTimeMS: 60
54
+ - name: startTransaction
55
+ object: *session
56
+ - name: insertOne
57
+ object: *collection
58
+ arguments:
59
+ session: *session
60
+ document: { _id: 1 }
61
+ - name: commitTransaction
62
+ object: *session
63
+ arguments:
64
+ timeoutMS: 50
65
+ expectError:
66
+ isTimeoutError: true
67
+ expectEvents:
68
+ - client: *client
69
+ events:
70
+ - commandStartedEvent:
71
+ commandName: insert
72
+ databaseName: *databaseName
73
+ command:
74
+ insert: *collectionName
75
+ - commandSucceededEvent:
76
+ commandName: insert
77
+ - commandStartedEvent:
78
+ commandName: commitTransaction
79
+ databaseName: admin
80
+ command:
81
+ commitTransaction: 1
82
+ maxTimeMS: { $$type: ["int", "long"] }
83
+ - commandFailedEvent:
84
+ commandName: commitTransaction
85
+
86
+ - description: "timeoutMS applied to abortTransaction"
87
+ operations:
88
+ - name: failPoint
89
+ object: testRunner
90
+ arguments:
91
+ client: *failPointClient
92
+ failPoint:
93
+ configureFailPoint: failCommand
94
+ mode: { times: 1 }
95
+ data:
96
+ failCommands: ["abortTransaction"]
97
+ blockConnection: true
98
+ blockTimeMS: 60
99
+ - name: startTransaction
100
+ object: *session
101
+ - name: insertOne
102
+ object: *collection
103
+ arguments:
104
+ session: *session
105
+ document: { _id: 1 }
106
+ - name: abortTransaction
107
+ object: *session
108
+ arguments:
109
+ timeoutMS: 50
110
+ expectEvents:
111
+ - client: *client
112
+ events:
113
+ - commandStartedEvent:
114
+ commandName: insert
115
+ databaseName: *databaseName
116
+ command:
117
+ insert: *collectionName
118
+ - commandSucceededEvent:
119
+ commandName: insert
120
+ - commandStartedEvent:
121
+ commandName: abortTransaction
122
+ databaseName: admin
123
+ command:
124
+ abortTransaction: 1
125
+ maxTimeMS: { $$type: ["int", "long"] }
126
+ - commandFailedEvent:
127
+ commandName: abortTransaction
128
+
129
+ - description: "timeoutMS applied to withTransaction"
130
+ operations:
131
+ - name: failPoint
132
+ object: testRunner
133
+ arguments:
134
+ client: *failPointClient
135
+ failPoint:
136
+ configureFailPoint: failCommand
137
+ mode: { times: 1 }
138
+ data:
139
+ failCommands: ["insert"]
140
+ blockConnection: true
141
+ blockTimeMS: 60
142
+ - name: withTransaction
143
+ object: *session
144
+ arguments:
145
+ timeoutMS: 50
146
+ callback:
147
+ - name: insertOne
148
+ object: *collection
149
+ arguments:
150
+ session: *session
151
+ document: { _id: 1 }
152
+ expectError:
153
+ isTimeoutError: true
154
+ expectError:
155
+ isTimeoutError: true
156
+ expectEvents:
157
+ - client: *client
158
+ events:
159
+ # Because the insert expects an error and gets an error, it technically succeeds, so withTransaction will
160
+ # try to run commitTransaction. This will fail client-side, though, because the timeout has already expired,
161
+ # so no command is sent.
162
+ - commandStartedEvent:
163
+ commandName: insert
164
+ databaseName: *databaseName
165
+ command:
166
+ insert: *collectionName
167
+ # withTransaction specifies timeoutMS for each operation in the callback that uses the session, so the
168
+ # insert command should have a maxTimeMS field.
169
+ maxTimeMS: { $$type: ["int", "long"] }
170
+ - commandFailedEvent:
171
+ commandName: insert
@@ -0,0 +1,168 @@
1
+ description: "timeoutMS can be overridden at the level of a ClientSession"
2
+
3
+ schemaVersion: "1.9"
4
+
5
+ runOnRequirements:
6
+ - minServerVersion: "4.4"
7
+ topologies: ["replicaset", "sharded"]
8
+
9
+ createEntities:
10
+ - client:
11
+ id: &failPointClient failPointClient
12
+ useMultipleMongoses: false
13
+ - client:
14
+ id: &client client
15
+ useMultipleMongoses: false
16
+ observeEvents:
17
+ - commandStartedEvent
18
+ - commandSucceededEvent
19
+ - commandFailedEvent
20
+ - database:
21
+ id: &database database
22
+ client: *client
23
+ databaseName: &databaseName test
24
+ - collection:
25
+ id: &collection collection
26
+ database: *database
27
+ collectionName: &collectionName coll
28
+ - session:
29
+ id: &session session
30
+ client: *client
31
+ sessionOptions:
32
+ defaultTimeoutMS: 50
33
+
34
+ initialData:
35
+ - collectionName: *collectionName
36
+ databaseName: *databaseName
37
+ documents: []
38
+
39
+ tests:
40
+ # Drivers ignore errors from abortTransaction, so the tests in this file use commandSucceededEvent and
41
+ # commandFailedEvent events to assert success/failure.
42
+
43
+ - description: "timeoutMS applied to commitTransaction"
44
+ operations:
45
+ - name: failPoint
46
+ object: testRunner
47
+ arguments:
48
+ client: *failPointClient
49
+ failPoint:
50
+ configureFailPoint: failCommand
51
+ mode: { times: 1 }
52
+ data:
53
+ failCommands: ["commitTransaction"]
54
+ blockConnection: true
55
+ blockTimeMS: 60
56
+ - name: startTransaction
57
+ object: *session
58
+ - name: insertOne
59
+ object: *collection
60
+ arguments:
61
+ session: *session
62
+ document: { _id: 1 }
63
+ - name: commitTransaction
64
+ object: *session
65
+ expectError:
66
+ isTimeoutError: true
67
+ expectEvents:
68
+ - client: *client
69
+ events:
70
+ - commandStartedEvent:
71
+ commandName: insert
72
+ databaseName: *databaseName
73
+ command:
74
+ insert: *collectionName
75
+ - commandSucceededEvent:
76
+ commandName: insert
77
+ - commandStartedEvent:
78
+ commandName: commitTransaction
79
+ databaseName: admin
80
+ command:
81
+ commitTransaction: 1
82
+ maxTimeMS: { $$type: ["int", "long"] }
83
+ - commandFailedEvent:
84
+ commandName: commitTransaction
85
+
86
+ - description: "timeoutMS applied to abortTransaction"
87
+ operations:
88
+ - name: failPoint
89
+ object: testRunner
90
+ arguments:
91
+ client: *failPointClient
92
+ failPoint:
93
+ configureFailPoint: failCommand
94
+ mode: { times: 1 }
95
+ data:
96
+ failCommands: ["abortTransaction"]
97
+ blockConnection: true
98
+ blockTimeMS: 60
99
+ - name: startTransaction
100
+ object: *session
101
+ - name: insertOne
102
+ object: *collection
103
+ arguments:
104
+ session: *session
105
+ document: { _id: 1 }
106
+ - name: abortTransaction
107
+ object: *session
108
+ expectEvents:
109
+ - client: *client
110
+ events:
111
+ - commandStartedEvent:
112
+ commandName: insert
113
+ databaseName: *databaseName
114
+ command:
115
+ insert: *collectionName
116
+ - commandSucceededEvent:
117
+ commandName: insert
118
+ - commandStartedEvent:
119
+ commandName: abortTransaction
120
+ databaseName: admin
121
+ command:
122
+ abortTransaction: 1
123
+ maxTimeMS: { $$type: ["int", "long"] }
124
+ - commandFailedEvent:
125
+ commandName: abortTransaction
126
+
127
+ - description: "timeoutMS applied to withTransaction"
128
+ operations:
129
+ - name: failPoint
130
+ object: testRunner
131
+ arguments:
132
+ client: *failPointClient
133
+ failPoint:
134
+ configureFailPoint: failCommand
135
+ mode: { times: 1 }
136
+ data:
137
+ failCommands: ["insert"]
138
+ blockConnection: true
139
+ blockTimeMS: 60
140
+ - name: withTransaction
141
+ object: *session
142
+ arguments:
143
+ callback:
144
+ - name: insertOne
145
+ object: *collection
146
+ arguments:
147
+ session: *session
148
+ document: { _id: 1 }
149
+ expectError:
150
+ isTimeoutError: true
151
+ expectError:
152
+ isTimeoutError: true
153
+ expectEvents:
154
+ - client: *client
155
+ events:
156
+ # Because the insert expects an error and gets an error, it technically succeeds, so withTransaction will
157
+ # try to run commitTransaction. This will fail client-side, though, because the timeout has already expired,
158
+ # so no command is sent.
159
+ - commandStartedEvent:
160
+ commandName: insert
161
+ databaseName: *databaseName
162
+ command:
163
+ insert: *collectionName
164
+ # withTransaction specifies timeoutMS for each operation in the callback that uses the session, so the
165
+ # insert command should have a maxTimeMS field.
166
+ maxTimeMS: { $$type: ["int", "long"] }
167
+ - commandFailedEvent:
168
+ commandName: insert