mongo 2.19.1 → 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 (356) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +40 -1
  3. data/Rakefile +83 -174
  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/topology/base.rb +16 -0
  13. data/lib/mongo/cluster.rb +41 -5
  14. data/lib/mongo/collection/helpers.rb +1 -1
  15. data/lib/mongo/collection/view/aggregation/behavior.rb +131 -0
  16. data/lib/mongo/collection/view/aggregation.rb +33 -99
  17. data/lib/mongo/collection/view/builder/aggregation.rb +1 -7
  18. data/lib/mongo/collection/view/change_stream.rb +80 -27
  19. data/lib/mongo/collection/view/iterable.rb +92 -60
  20. data/lib/mongo/collection/view/map_reduce.rb +25 -8
  21. data/lib/mongo/collection/view/readable.rb +79 -30
  22. data/lib/mongo/collection/view/writable.rb +109 -48
  23. data/lib/mongo/collection/view.rb +44 -3
  24. data/lib/mongo/collection.rb +185 -26
  25. data/lib/mongo/config.rb +2 -2
  26. data/lib/mongo/crypt/auto_encrypter.rb +4 -6
  27. data/lib/mongo/crypt/binding.rb +4 -4
  28. data/lib/mongo/crypt/context.rb +20 -14
  29. data/lib/mongo/crypt/encryption_io.rb +56 -26
  30. data/lib/mongo/crypt/explicit_encrypter.rb +49 -20
  31. data/lib/mongo/crypt/explicit_encryption_context.rb +17 -11
  32. data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +22 -6
  33. data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +29 -4
  34. data/lib/mongo/csot_timeout_holder.rb +119 -0
  35. data/lib/mongo/cursor/kill_spec.rb +5 -2
  36. data/lib/mongo/cursor/nontailable.rb +27 -0
  37. data/lib/mongo/cursor.rb +86 -24
  38. data/lib/mongo/cursor_host.rb +82 -0
  39. data/lib/mongo/database/view.rb +81 -14
  40. data/lib/mongo/database.rb +88 -18
  41. data/lib/mongo/error/operation_failure.rb +209 -204
  42. data/lib/mongo/error/server_timeout_error.rb +12 -0
  43. data/lib/mongo/error/socket_timeout_error.rb +3 -1
  44. data/lib/mongo/error/timeout_error.rb +23 -0
  45. data/lib/mongo/error/transactions_not_supported.rb +34 -0
  46. data/lib/mongo/error.rb +3 -0
  47. data/lib/mongo/grid/fs_bucket.rb +48 -9
  48. data/lib/mongo/grid/stream/read.rb +15 -1
  49. data/lib/mongo/grid/stream/write.rb +21 -4
  50. data/lib/mongo/index/view.rb +77 -16
  51. data/lib/mongo/monitoring/event/secure.rb +1 -1
  52. data/lib/mongo/operation/context.rb +40 -2
  53. data/lib/mongo/operation/create_search_indexes/op_msg.rb +31 -0
  54. data/lib/mongo/operation/create_search_indexes.rb +15 -0
  55. data/lib/mongo/operation/delete/op_msg.rb +2 -1
  56. data/lib/mongo/operation/drop_search_index/op_msg.rb +33 -0
  57. data/lib/mongo/operation/drop_search_index.rb +15 -0
  58. data/lib/mongo/operation/find/op_msg.rb +45 -0
  59. data/lib/mongo/operation/get_more/op_msg.rb +33 -0
  60. data/lib/mongo/operation/insert/op_msg.rb +3 -2
  61. data/lib/mongo/operation/insert/result.rb +4 -2
  62. data/lib/mongo/operation/list_collections/result.rb +1 -1
  63. data/lib/mongo/operation/map_reduce/result.rb +1 -1
  64. data/lib/mongo/operation/op_msg_base.rb +3 -1
  65. data/lib/mongo/operation/result.rb +26 -5
  66. data/lib/mongo/operation/shared/executable.rb +55 -28
  67. data/lib/mongo/operation/shared/op_msg_executable.rb +4 -1
  68. data/lib/mongo/operation/shared/response_handling.rb +25 -27
  69. data/lib/mongo/operation/shared/sessions_supported.rb +1 -1
  70. data/lib/mongo/operation/shared/specifiable.rb +7 -0
  71. data/lib/mongo/operation/shared/timed.rb +52 -0
  72. data/lib/mongo/operation/shared/write.rb +4 -1
  73. data/lib/mongo/operation/update/op_msg.rb +2 -1
  74. data/lib/mongo/operation/update_search_index/op_msg.rb +34 -0
  75. data/lib/mongo/operation/update_search_index.rb +15 -0
  76. data/lib/mongo/operation.rb +4 -0
  77. data/lib/mongo/protocol/message.rb +1 -4
  78. data/lib/mongo/protocol/msg.rb +2 -2
  79. data/lib/mongo/retryable/base_worker.rb +28 -3
  80. data/lib/mongo/retryable/read_worker.rb +78 -36
  81. data/lib/mongo/retryable/write_worker.rb +59 -25
  82. data/lib/mongo/retryable.rb +8 -2
  83. data/lib/mongo/search_index/view.rb +232 -0
  84. data/lib/mongo/server/app_metadata/environment.rb +64 -9
  85. data/lib/mongo/server/app_metadata.rb +5 -4
  86. data/lib/mongo/server/connection.rb +11 -5
  87. data/lib/mongo/server/connection_base.rb +22 -2
  88. data/lib/mongo/server/connection_pool.rb +32 -14
  89. data/lib/mongo/server/description/features.rb +2 -1
  90. data/lib/mongo/server/description.rb +18 -5
  91. data/lib/mongo/server/monitor.rb +7 -4
  92. data/lib/mongo/server/pending_connection.rb +25 -8
  93. data/lib/mongo/server/{round_trip_time_averager.rb → round_trip_time_calculator.rb} +25 -7
  94. data/lib/mongo/server.rb +11 -6
  95. data/lib/mongo/server_selector/base.rb +54 -12
  96. data/lib/mongo/session/server_session/dirtyable.rb +52 -0
  97. data/lib/mongo/session/server_session.rb +3 -0
  98. data/lib/mongo/session/session_pool.rb +12 -18
  99. data/lib/mongo/session.rb +110 -9
  100. data/lib/mongo/socket/ssl.rb +131 -18
  101. data/lib/mongo/socket/tcp.rb +40 -6
  102. data/lib/mongo/socket.rb +154 -25
  103. data/lib/mongo/uri/options_mapper.rb +1 -0
  104. data/lib/mongo/uri.rb +0 -4
  105. data/lib/mongo/version.rb +1 -5
  106. data/lib/mongo.rb +2 -0
  107. data/mongo.gemspec +9 -18
  108. data/spec/atlas/atlas_connectivity_spec.rb +9 -9
  109. data/spec/atlas/operations_spec.rb +5 -5
  110. data/spec/faas/ruby-sam-app/Gemfile +9 -0
  111. data/spec/faas/ruby-sam-app/mongodb/Gemfile +4 -0
  112. data/spec/faas/ruby-sam-app/mongodb/app.rb +149 -0
  113. data/spec/faas/ruby-sam-app/template.yaml +48 -0
  114. data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +2 -1
  115. data/spec/integration/client_side_encryption/auto_encryption_spec.rb +494 -487
  116. data/spec/integration/client_side_encryption/corpus_spec.rb +10 -2
  117. data/spec/integration/client_side_encryption/on_demand_aws_credentials_spec.rb +1 -1
  118. data/spec/integration/client_side_encryption/range_explicit_encryption_prose_spec.rb +67 -20
  119. data/spec/integration/client_side_operations_timeout/encryption_prose_spec.rb +131 -0
  120. data/spec/integration/connection_pool_populator_spec.rb +2 -0
  121. data/spec/integration/cursor_pinning_spec.rb +15 -60
  122. data/spec/integration/cursor_reaping_spec.rb +1 -1
  123. data/spec/integration/docs_examples_spec.rb +1 -1
  124. data/spec/integration/find_options_spec.rb +227 -0
  125. data/spec/integration/operation_failure_code_spec.rb +1 -1
  126. data/spec/integration/operation_failure_message_spec.rb +3 -3
  127. data/spec/integration/retryable_errors_spec.rb +2 -2
  128. data/spec/integration/retryable_reads_errors_spec.rb +196 -31
  129. data/spec/integration/retryable_writes_errors_spec.rb +156 -0
  130. data/spec/integration/sdam_error_handling_spec.rb +4 -1
  131. data/spec/integration/search_indexes_prose_spec.rb +172 -0
  132. data/spec/integration/server_spec.rb +4 -3
  133. data/spec/integration/transactions_api_examples_spec.rb +2 -0
  134. data/spec/kerberos/kerberos_spec.rb +4 -0
  135. data/spec/lite_spec_helper.rb +34 -20
  136. data/spec/mongo/auth/user/view_spec.rb +1 -1
  137. data/spec/mongo/caching_cursor_spec.rb +1 -1
  138. data/spec/mongo/client_encryption_spec.rb +1 -0
  139. data/spec/mongo/client_spec.rb +158 -4
  140. data/spec/mongo/cluster_spec.rb +36 -0
  141. data/spec/mongo/collection/view/aggregation_spec.rb +20 -40
  142. data/spec/mongo/collection/view/change_stream_spec.rb +3 -3
  143. data/spec/mongo/collection/view/explainable_spec.rb +2 -0
  144. data/spec/mongo/collection_crud_spec.rb +2 -1
  145. data/spec/mongo/collection_spec.rb +5 -6
  146. data/spec/mongo/crypt/auto_encrypter_spec.rb +14 -12
  147. data/spec/mongo/crypt/data_key_context_spec.rb +3 -1
  148. data/spec/mongo/crypt/explicit_encryption_context_spec.rb +2 -2
  149. data/spec/mongo/crypt/handle_spec.rb +1 -1
  150. data/spec/mongo/cursor_spec.rb +26 -9
  151. data/spec/mongo/error/operation_failure_heavy_spec.rb +2 -2
  152. data/spec/mongo/operation/context_spec.rb +79 -0
  153. data/spec/mongo/operation/create/op_msg_spec.rb +106 -110
  154. data/spec/mongo/operation/delete/op_msg_spec.rb +6 -5
  155. data/spec/mongo/operation/find/op_msg_spec.rb +66 -0
  156. data/spec/mongo/operation/get_more/op_msg_spec.rb +65 -0
  157. data/spec/mongo/operation/insert/op_msg_spec.rb +128 -131
  158. data/spec/mongo/operation/insert_spec.rb +1 -1
  159. data/spec/mongo/operation/shared/csot/examples.rb +113 -0
  160. data/spec/mongo/query_cache_spec.rb +243 -225
  161. data/spec/mongo/retryable/write_worker_spec.rb +39 -0
  162. data/spec/mongo/retryable_spec.rb +1 -0
  163. data/spec/mongo/server/app_metadata/environment_spec.rb +135 -0
  164. data/spec/mongo/server/app_metadata_spec.rb +12 -2
  165. data/spec/mongo/server/connection_spec.rb +26 -0
  166. data/spec/mongo/server/round_trip_time_calculator_spec.rb +120 -0
  167. data/spec/mongo/session/session_pool_spec.rb +1 -16
  168. data/spec/mongo/session_transaction_spec.rb +15 -0
  169. data/spec/mongo/socket/ssl_spec.rb +0 -10
  170. data/spec/mongo/uri_spec.rb +0 -9
  171. data/spec/runners/change_streams/test.rb +2 -2
  172. data/spec/runners/crud/operation.rb +1 -1
  173. data/spec/runners/crud/test.rb +0 -8
  174. data/spec/runners/crud/verifier.rb +3 -1
  175. data/spec/runners/crud.rb +1 -1
  176. data/spec/runners/transactions/operation.rb +4 -6
  177. data/spec/runners/transactions/test.rb +12 -3
  178. data/spec/runners/unified/ambiguous_operations.rb +13 -0
  179. data/spec/runners/unified/assertions.rb +20 -3
  180. data/spec/runners/unified/change_stream_operations.rb +14 -24
  181. data/spec/runners/unified/crud_operations.rb +82 -47
  182. data/spec/runners/unified/ddl_operations.rb +38 -7
  183. data/spec/runners/unified/grid_fs_operations.rb +37 -2
  184. data/spec/runners/unified/search_index_operations.rb +63 -0
  185. data/spec/runners/unified/support_operations.rb +46 -9
  186. data/spec/runners/unified/test.rb +33 -12
  187. data/spec/runners/unified.rb +1 -1
  188. data/spec/solo/clean_exit_spec.rb +2 -0
  189. data/spec/spec_helper.rb +1 -1
  190. data/spec/spec_tests/client_side_operations_timeout_spec.rb +15 -0
  191. data/spec/spec_tests/data/change_streams_unified/change-streams-clusterTime.yml +3 -1
  192. data/spec/spec_tests/data/change_streams_unified/change-streams-disambiguatedPaths.yml +3 -1
  193. data/spec/spec_tests/data/change_streams_unified/change-streams-errors.yml +3 -1
  194. data/spec/spec_tests/data/change_streams_unified/change-streams-pre_and_post_images.yml +1 -1
  195. data/spec/spec_tests/data/change_streams_unified/change-streams-resume-allowlist.yml +1 -1
  196. data/spec/spec_tests/data/change_streams_unified/change-streams-resume-errorLabels.yml +1 -1
  197. data/spec/spec_tests/data/change_streams_unified/change-streams-showExpandedEvents.yml +1 -1
  198. data/spec/spec_tests/data/client_side_encryption/badQueries.yml +2 -1
  199. data/spec/spec_tests/data/client_side_encryption/explain.yml +2 -2
  200. data/spec/spec_tests/data/client_side_encryption/fle2v2-BypassQueryAnalysis.yml +1 -0
  201. data/spec/spec_tests/data/client_side_encryption/fle2v2-Compact.yml +1 -0
  202. data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection.yml +1 -0
  203. data/spec/spec_tests/data/client_side_encryption/fle2v2-DecryptExistingData.yml +1 -0
  204. data/spec/spec_tests/data/client_side_encryption/fle2v2-Delete.yml +1 -0
  205. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-EncryptedFieldsMap.yml +1 -0
  206. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-jsonSchema.yml +1 -0
  207. data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFieldsMap-defaults.yml +1 -0
  208. data/spec/spec_tests/data/client_side_encryption/fle2v2-FindOneAndUpdate.yml +1 -0
  209. data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Indexed.yml +1 -0
  210. data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Unindexed.yml +1 -0
  211. data/spec/spec_tests/data/client_side_encryption/fle2v2-MissingKey.yml +1 -0
  212. data/spec/spec_tests/data/client_side_encryption/fle2v2-NoEncryption.yml +1 -0
  213. data/spec/spec_tests/data/client_side_encryption/fle2v2-Update.yml +1 -0
  214. data/spec/spec_tests/data/client_side_encryption/fle2v2-validatorAndPartialFieldExpression.yml +2 -1
  215. data/spec/spec_tests/data/client_side_encryption/timeoutMS.yml +67 -0
  216. data/spec/spec_tests/data/client_side_operations_timeout/bulkWrite.yml +87 -0
  217. data/spec/spec_tests/data/client_side_operations_timeout/change-streams.yml +358 -0
  218. data/spec/spec_tests/data/client_side_operations_timeout/close-cursors.yml +129 -0
  219. data/spec/spec_tests/data/client_side_operations_timeout/command-execution.yml +250 -0
  220. data/spec/spec_tests/data/client_side_operations_timeout/convenient-transactions.yml +113 -0
  221. data/spec/spec_tests/data/client_side_operations_timeout/cursors.yml +70 -0
  222. data/spec/spec_tests/data/client_side_operations_timeout/deprecated-options.yml +3982 -0
  223. data/spec/spec_tests/data/client_side_operations_timeout/error-transformations.yml +96 -0
  224. data/spec/spec_tests/data/client_side_operations_timeout/global-timeoutMS.yml +3236 -0
  225. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-advanced.yml +207 -0
  226. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-delete.yml +152 -0
  227. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-download.yml +182 -0
  228. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-find.yml +100 -0
  229. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-upload.yml +249 -0
  230. data/spec/spec_tests/data/client_side_operations_timeout/legacy-timeouts.yml +204 -0
  231. data/spec/spec_tests/data/client_side_operations_timeout/non-tailable-cursors.yml +307 -0
  232. data/spec/spec_tests/data/client_side_operations_timeout/override-collection-timeoutMS.yml +1877 -0
  233. data/spec/spec_tests/data/client_side_operations_timeout/override-operation-timeoutMS.yml +1918 -0
  234. data/spec/spec_tests/data/client_side_operations_timeout/retryability-legacy-timeouts.yml +1676 -0
  235. data/spec/spec_tests/data/client_side_operations_timeout/retryability-timeoutMS.yml +2824 -0
  236. data/spec/spec_tests/data/client_side_operations_timeout/sessions-inherit-timeoutMS.yml +168 -0
  237. data/spec/spec_tests/data/client_side_operations_timeout/sessions-override-operation-timeoutMS.yml +171 -0
  238. data/spec/spec_tests/data/client_side_operations_timeout/sessions-override-timeoutMS.yml +168 -0
  239. data/spec/spec_tests/data/client_side_operations_timeout/tailable-awaitData.yml +247 -0
  240. data/spec/spec_tests/data/client_side_operations_timeout/tailable-non-awaitData.yml +181 -0
  241. data/spec/spec_tests/data/connection_string/invalid-uris.yml +0 -10
  242. data/spec/spec_tests/data/connection_string/valid-options.yml +13 -0
  243. data/spec/spec_tests/data/crud_unified/aggregate-write-readPreference.yml +6 -0
  244. data/spec/spec_tests/data/crud_unified/db-aggregate-write-readPreference.yml +6 -0
  245. data/spec/spec_tests/data/crud_unified/find-test-all-options.yml +377 -0
  246. data/spec/spec_tests/data/index_management/createSearchIndex.yml +64 -0
  247. data/spec/spec_tests/data/index_management/createSearchIndexes.yml +86 -0
  248. data/spec/spec_tests/data/index_management/dropSearchIndex.yml +43 -0
  249. data/spec/spec_tests/data/index_management/listSearchIndexes.yml +91 -0
  250. data/spec/spec_tests/data/index_management/updateSearchIndex.yml +46 -0
  251. data/spec/spec_tests/data/retryable_writes/unified/bulkWrite-serverErrors.yml +3 -6
  252. data/spec/spec_tests/data/retryable_writes/unified/insertOne-serverErrors.yml +3 -6
  253. data/spec/spec_tests/data/run_command_unified/runCommand.yml +319 -0
  254. data/spec/spec_tests/data/sessions_unified/driver-sessions-dirty-session-errors.yml +351 -0
  255. data/spec/spec_tests/data/unified/valid-pass/poc-crud.yml +1 -1
  256. data/spec/spec_tests/data/unified/valid-pass/poc-retryable-writes.yml +7 -7
  257. data/spec/spec_tests/data/unified/valid-pass/poc-sessions.yml +3 -4
  258. data/spec/spec_tests/data/unified/valid-pass/poc-transactions-convenient-api.yml +1 -1
  259. data/spec/spec_tests/data/unified/valid-pass/poc-transactions-mongos-pin-auto.yml +1 -1
  260. data/spec/spec_tests/data/unified/valid-pass/poc-transactions.yml +3 -3
  261. data/spec/spec_tests/index_management_unified_spec.rb +13 -0
  262. data/spec/spec_tests/run_command_unified_spec.rb +13 -0
  263. data/spec/spec_tests/sdam_unified_spec.rb +2 -0
  264. data/spec/spec_tests/server_selection_rtt_spec.rb +6 -6
  265. data/spec/spec_tests/transactions_unified_spec.rb +2 -1
  266. data/spec/support/certificates/atlas-ocsp-ca.crt +89 -79
  267. data/spec/support/certificates/atlas-ocsp.crt +117 -122
  268. data/spec/support/certificates/retrieve-atlas-cert +1 -1
  269. data/spec/support/cluster_tools.rb +3 -3
  270. data/spec/support/common_shortcuts.rb +2 -2
  271. data/spec/support/constraints.rb +6 -0
  272. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Date.json +1 -1
  273. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalNoPrecision.json +1 -1
  274. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalPrecision.json +1 -1
  275. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoubleNoPrecision.json +1 -1
  276. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoublePrecision.json +1 -1
  277. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Int.json +1 -1
  278. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Long.json +1 -1
  279. data/spec/support/ocsp +1 -1
  280. data/spec/support/recording_logger.rb +27 -0
  281. data/spec/support/shared/session.rb +2 -2
  282. data/spec/support/spec_config.rb +5 -0
  283. data/spec/support/spec_setup.rb +2 -2
  284. data/spec/support/utils.rb +3 -1
  285. metadata +1329 -1368
  286. checksums.yaml.gz.sig +0 -0
  287. data/spec/mongo/server/round_trip_time_averager_spec.rb +0 -48
  288. data/spec/shared/LICENSE +0 -20
  289. data/spec/shared/bin/get-mongodb-download-url +0 -17
  290. data/spec/shared/bin/s3-copy +0 -45
  291. data/spec/shared/bin/s3-upload +0 -69
  292. data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
  293. data/spec/shared/lib/mrss/cluster_config.rb +0 -231
  294. data/spec/shared/lib/mrss/constraints.rb +0 -378
  295. data/spec/shared/lib/mrss/docker_runner.rb +0 -295
  296. data/spec/shared/lib/mrss/eg_config_utils.rb +0 -51
  297. data/spec/shared/lib/mrss/event_subscriber.rb +0 -210
  298. data/spec/shared/lib/mrss/lite_constraints.rb +0 -238
  299. data/spec/shared/lib/mrss/server_version_registry.rb +0 -113
  300. data/spec/shared/lib/mrss/session_registry.rb +0 -69
  301. data/spec/shared/lib/mrss/session_registry_legacy.rb +0 -60
  302. data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
  303. data/spec/shared/lib/mrss/utils.rb +0 -37
  304. data/spec/shared/share/Dockerfile.erb +0 -330
  305. data/spec/shared/share/haproxy-1.conf +0 -16
  306. data/spec/shared/share/haproxy-2.conf +0 -17
  307. data/spec/shared/shlib/config.sh +0 -27
  308. data/spec/shared/shlib/distro.sh +0 -74
  309. data/spec/shared/shlib/server.sh +0 -416
  310. data/spec/shared/shlib/set_env.sh +0 -169
  311. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Aggregate.yml +0 -241
  312. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Correctness.yml +0 -422
  313. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Delete.yml +0 -182
  314. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-FindOneAndUpdate.yml +0 -239
  315. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-InsertFind.yml +0 -235
  316. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Update.yml +0 -252
  317. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Aggregate.yml +0 -1687
  318. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Correctness.yml +0 -293
  319. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Delete.yml +0 -905
  320. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-FindOneAndUpdate.yml +0 -1684
  321. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-InsertFind.yml +0 -1680
  322. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Update.yml +0 -1697
  323. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Aggregate.yml +0 -329
  324. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Correctness.yml +0 -424
  325. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Delete.yml +0 -226
  326. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-FindOneAndUpdate.yml +0 -327
  327. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-InsertFind.yml +0 -319
  328. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Update.yml +0 -336
  329. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Aggregate.yml +0 -913
  330. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Correctness.yml +0 -292
  331. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Delete.yml +0 -518
  332. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-FindOneAndUpdate.yml +0 -911
  333. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-InsertFind.yml +0 -907
  334. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Update.yml +0 -924
  335. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Aggregate.yml +0 -325
  336. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Correctness.yml +0 -424
  337. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Delete.yml +0 -224
  338. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-FindOneAndUpdate.yml +0 -323
  339. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-InsertFind.yml +0 -319
  340. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Update.yml +0 -338
  341. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Aggregate.yml +0 -241
  342. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Correctness.yml +0 -423
  343. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Delete.yml +0 -182
  344. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-FindOneAndUpdate.yml +0 -239
  345. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-InsertFind.yml +0 -235
  346. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Update.yml +0 -254
  347. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Aggregate.yml +0 -241
  348. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Correctness.yml +0 -422
  349. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Delete.yml +0 -182
  350. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-FindOneAndUpdate.yml +0 -239
  351. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-InsertFind.yml +0 -235
  352. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Update.yml +0 -254
  353. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-WrongType.yml +0 -43
  354. data/spec/spec_tests/data/cmap/pool-clear-interrupt-immediately.yml +0 -49
  355. data.tar.gz.sig +0 -0
  356. metadata.gz.sig +0 -2
@@ -0,0 +1,207 @@
1
+ description: "timeoutMS behaves correctly for advanced GridFS API operations"
2
+
3
+ schemaVersion: "1.9"
4
+
5
+ runOnRequirements:
6
+ - minServerVersion: "4.4"
7
+ serverless: forbid # GridFS ops can be slow on serverless.
8
+
9
+ createEntities:
10
+ - client:
11
+ id: &failPointClient failPointClient
12
+ useMultipleMongoses: false
13
+ - client:
14
+ id: &client client
15
+ uriOptions:
16
+ timeoutMS: 75
17
+ useMultipleMongoses: false
18
+ observeEvents:
19
+ - commandStartedEvent
20
+ - database:
21
+ id: &database database
22
+ client: *client
23
+ databaseName: &databaseName test
24
+ - bucket:
25
+ id: &bucket bucket
26
+ database: *database
27
+ - collection:
28
+ id: &filesCollection filesCollection
29
+ database: *database
30
+ collectionName: &filesCollectionName fs.files
31
+ - collection:
32
+ id: &chunksCollection chunksCollection
33
+ database: *database
34
+ collectionName: &chunksCollectionName fs.chunks
35
+
36
+ initialData:
37
+ - collectionName: *filesCollectionName
38
+ databaseName: *databaseName
39
+ documents:
40
+ - _id: &fileDocumentId { $oid: "000000000000000000000005" }
41
+ length: 8
42
+ chunkSize: 4
43
+ uploadDate: { $date: "1970-01-01T00:00:00.000Z" }
44
+ filename: "length-8"
45
+ contentType: "application/octet-stream"
46
+ aliases: []
47
+ metadata: {}
48
+ - collectionName: *chunksCollectionName
49
+ databaseName: *databaseName
50
+ documents:
51
+ - _id: { $oid: "000000000000000000000005" }
52
+ files_id: *fileDocumentId
53
+ n: 0
54
+ data: { $binary: { base64: "ESIzRA==", subType: "00" } } # hex: 11223344
55
+ - _id: { $oid: "000000000000000000000006" }
56
+ files_id: *fileDocumentId
57
+ n: 1
58
+ data: { $binary: { base64: "ESIzRA==", subType: "00" } } # hex: 11223344
59
+
60
+ tests:
61
+ # Tests for the "rename" operation.
62
+ # Ruby driver does not support rename for GridFS bucket
63
+
64
+ # - description: "timeoutMS can be overridden for a rename"
65
+ # operations:
66
+ # - name: failPoint
67
+ # object: testRunner
68
+ # arguments:
69
+ # client: *failPointClient
70
+ # failPoint:
71
+ # configureFailPoint: failCommand
72
+ # mode: { times: 1 }
73
+ # data:
74
+ # failCommands: ["update"]
75
+ # blockConnection: true
76
+ # blockTimeMS: 100
77
+ # - name: rename
78
+ # object: *bucket
79
+ # arguments:
80
+ # id: *fileDocumentId
81
+ # newFilename: "foo"
82
+ # timeoutMS: 2000 # The client timeoutMS is 75ms and the operation blocks for 100ms, so 2000ms should let it succeed.
83
+ # expectEvents:
84
+ # - client: *client
85
+ # events:
86
+ # - commandStartedEvent:
87
+ # commandName: update
88
+ # databaseName: *databaseName
89
+ # command:
90
+ # update: *filesCollectionName
91
+ # maxTimeMS: { $$type: ["int", "long"] }
92
+
93
+ # - description: "timeoutMS applied to update during a rename"
94
+ # operations:
95
+ # - name: failPoint
96
+ # object: testRunner
97
+ # arguments:
98
+ # client: *failPointClient
99
+ # failPoint:
100
+ # configureFailPoint: failCommand
101
+ # mode: { times: 1 }
102
+ # data:
103
+ # failCommands: ["update"]
104
+ # blockConnection: true
105
+ # blockTimeMS: 100
106
+ # - name: rename
107
+ # object: *bucket
108
+ # arguments:
109
+ # id: *fileDocumentId
110
+ # newFilename: "foo"
111
+ # expectError:
112
+ # isTimeoutError: true
113
+ # expectEvents:
114
+ # - client: *client
115
+ # events:
116
+ # - commandStartedEvent:
117
+ # commandName: update
118
+ # databaseName: *databaseName
119
+ # command:
120
+ # update: *filesCollectionName
121
+ # maxTimeMS: { $$type: ["int", "long"] }
122
+
123
+ # Tests for the "drop" operation. Any tests that might result in multiple commands being sent do not have expectEvents
124
+ # assertions as these assertions reduce test robustness and can cause flaky failures.
125
+
126
+ - description: "timeoutMS can be overridden for drop"
127
+ operations:
128
+ - name: failPoint
129
+ object: testRunner
130
+ arguments:
131
+ client: *failPointClient
132
+ failPoint:
133
+ configureFailPoint: failCommand
134
+ mode: { times: 1 }
135
+ data:
136
+ failCommands: ["drop"]
137
+ blockConnection: true
138
+ blockTimeMS: 100
139
+ - name: drop
140
+ object: *bucket
141
+ arguments:
142
+ timeoutMS: 2000 # The client timeoutMS is 75ms and the operation blocks for 100ms, so 2000ms should let it succeed.
143
+
144
+ - description: "timeoutMS applied to files collection drop"
145
+ operations:
146
+ - name: failPoint
147
+ object: testRunner
148
+ arguments:
149
+ client: *failPointClient
150
+ failPoint:
151
+ configureFailPoint: failCommand
152
+ mode: { times: 1 }
153
+ data:
154
+ failCommands: ["drop"]
155
+ blockConnection: true
156
+ blockTimeMS: 100
157
+ - name: drop
158
+ object: *bucket
159
+ expectError:
160
+ isTimeoutError: true
161
+ expectEvents:
162
+ - client: *client
163
+ events:
164
+ - commandStartedEvent:
165
+ commandName: drop
166
+ databaseName: *databaseName
167
+ command:
168
+ drop: *filesCollectionName
169
+ maxTimeMS: { $$type: ["int", "long"] }
170
+
171
+ - description: "timeoutMS applied to chunks collection drop"
172
+ operations:
173
+ - name: failPoint
174
+ object: testRunner
175
+ arguments:
176
+ client: *failPointClient
177
+ failPoint:
178
+ configureFailPoint: failCommand
179
+ mode:
180
+ # Skip the drop for the files collection.
181
+ skip: 1
182
+ data:
183
+ failCommands: ["drop"]
184
+ blockConnection: true
185
+ blockTimeMS: 100
186
+ - name: drop
187
+ object: *bucket
188
+ expectError:
189
+ isTimeoutError: true
190
+
191
+ - description: "timeoutMS applied to drop as a whole, not individual parts"
192
+ operations:
193
+ - name: failPoint
194
+ object: testRunner
195
+ arguments:
196
+ client: *failPointClient
197
+ failPoint:
198
+ configureFailPoint: failCommand
199
+ mode: { times: 2 }
200
+ data:
201
+ failCommands: ["drop"]
202
+ blockConnection: true
203
+ blockTimeMS: 50
204
+ - name: drop
205
+ object: *bucket
206
+ expectError:
207
+ isTimeoutError: true
@@ -0,0 +1,152 @@
1
+ description: "timeoutMS behaves correctly for GridFS delete operations"
2
+
3
+ schemaVersion: "1.9"
4
+
5
+ runOnRequirements:
6
+ - minServerVersion: "4.4"
7
+ serverless: forbid # GridFS ops can be slow on serverless.
8
+
9
+ createEntities:
10
+ - client:
11
+ id: &failPointClient failPointClient
12
+ useMultipleMongoses: false
13
+ - client:
14
+ id: &client client
15
+ uriOptions:
16
+ timeoutMS: 75
17
+ useMultipleMongoses: false
18
+ observeEvents:
19
+ - commandStartedEvent
20
+ - database:
21
+ id: &database database
22
+ client: *client
23
+ databaseName: &databaseName test
24
+ - bucket:
25
+ id: &bucket bucket
26
+ database: *database
27
+ - collection:
28
+ id: &filesCollection filesCollection
29
+ database: *database
30
+ collectionName: &filesCollectionName fs.files
31
+ - collection:
32
+ id: &chunksCollection chunksCollection
33
+ database: *database
34
+ collectionName: &chunksCollectionName fs.chunks
35
+
36
+ initialData:
37
+ - collectionName: *filesCollectionName
38
+ databaseName: *databaseName
39
+ documents:
40
+ - _id: &fileDocumentId { $oid: "000000000000000000000005" }
41
+ length: 8
42
+ chunkSize: 4
43
+ uploadDate: { $date: "1970-01-01T00:00:00.000Z" }
44
+ filename: "length-8"
45
+ contentType: "application/octet-stream"
46
+ aliases: []
47
+ metadata: {}
48
+ - collectionName: *chunksCollectionName
49
+ databaseName: *databaseName
50
+ documents:
51
+ - _id: { $oid: "000000000000000000000005" }
52
+ files_id: *fileDocumentId
53
+ n: 0
54
+ data: { $binary: { base64: "ESIzRA==", subType: "00" } } # hex: 11223344
55
+ - _id: { $oid: "000000000000000000000006" }
56
+ files_id: *fileDocumentId
57
+ n: 1
58
+ data: { $binary: { base64: "ESIzRA==", subType: "00" } } # hex: 11223344
59
+
60
+ tests:
61
+ - description: "timeoutMS can be overridden for delete"
62
+ operations:
63
+ - name: failPoint
64
+ object: testRunner
65
+ arguments:
66
+ client: *failPointClient
67
+ failPoint:
68
+ configureFailPoint: failCommand
69
+ mode: { times: 1 }
70
+ data:
71
+ failCommands: ["delete"]
72
+ blockConnection: true
73
+ blockTimeMS: 100
74
+ - name: delete
75
+ object: *bucket
76
+ arguments:
77
+ id: *fileDocumentId
78
+ timeoutMS: 1000 # The client timeoutMS is 75ms and the operation blocks for 100ms, so 1000ms should let it succeed.
79
+
80
+ - description: "timeoutMS applied to delete against the files collection"
81
+ operations:
82
+ - name: failPoint
83
+ object: testRunner
84
+ arguments:
85
+ client: *failPointClient
86
+ failPoint:
87
+ configureFailPoint: failCommand
88
+ mode: { times: 1 }
89
+ data:
90
+ failCommands: ["delete"]
91
+ blockConnection: true
92
+ blockTimeMS: 100
93
+ - name: delete
94
+ object: *bucket
95
+ arguments:
96
+ id: *fileDocumentId
97
+ expectError:
98
+ isTimeoutError: true
99
+ expectEvents:
100
+ - client: *client
101
+ events:
102
+ - commandStartedEvent:
103
+ commandName: delete
104
+ databaseName: *databaseName
105
+ command:
106
+ delete: *filesCollectionName
107
+ maxTimeMS: { $$type: ["int", "long"] }
108
+
109
+ - description: "timeoutMS applied to delete against the chunks collection"
110
+ operations:
111
+ - name: failPoint
112
+ object: testRunner
113
+ arguments:
114
+ client: *failPointClient
115
+ failPoint:
116
+ configureFailPoint: failCommand
117
+ mode:
118
+ # The first "delete" will be against the files collection, so we skip it.
119
+ skip: 1
120
+ data:
121
+ failCommands: ["delete"]
122
+ blockConnection: true
123
+ blockTimeMS: 100
124
+ - name: delete
125
+ object: *bucket
126
+ arguments:
127
+ id: *fileDocumentId
128
+ expectError:
129
+ isTimeoutError: true
130
+
131
+ # Test that drivers are not refreshing the timeout between commands. We test this by blocking both "delete" commands
132
+ # for 50ms each. The delete should inherit timeoutMS=75 from the client/database and the server takes over 75ms
133
+ # total, so the operation should fail.
134
+ - description: "timeoutMS applied to entire delete, not individual parts"
135
+ operations:
136
+ - name: failPoint
137
+ object: testRunner
138
+ arguments:
139
+ client: *failPointClient
140
+ failPoint:
141
+ configureFailPoint: failCommand
142
+ mode: { times: 2 }
143
+ data:
144
+ failCommands: ["delete"]
145
+ blockConnection: true
146
+ blockTimeMS: 50
147
+ - name: delete
148
+ object: *bucket
149
+ arguments:
150
+ id: *fileDocumentId
151
+ expectError:
152
+ isTimeoutError: true
@@ -0,0 +1,182 @@
1
+ description: "timeoutMS behaves correctly for GridFS download operations"
2
+
3
+ schemaVersion: "1.9"
4
+
5
+ runOnRequirements:
6
+ - minServerVersion: "4.4"
7
+ serverless: forbid # GridFS ops can be slow on serverless.
8
+
9
+ createEntities:
10
+ - client:
11
+ id: &failPointClient failPointClient
12
+ useMultipleMongoses: false
13
+ - client:
14
+ id: &client client
15
+ uriOptions:
16
+ timeoutMS: 75
17
+ useMultipleMongoses: false
18
+ observeEvents:
19
+ - commandStartedEvent
20
+ - database:
21
+ id: &database database
22
+ client: *client
23
+ databaseName: &databaseName test
24
+ - bucket:
25
+ id: &bucket bucket
26
+ database: *database
27
+ - collection:
28
+ id: &filesCollection filesCollection
29
+ database: *database
30
+ collectionName: &filesCollectionName fs.files
31
+ - collection:
32
+ id: &chunksCollection chunksCollection
33
+ database: *database
34
+ collectionName: &chunksCollectionName fs.chunks
35
+
36
+ initialData:
37
+ - collectionName: *filesCollectionName
38
+ databaseName: *databaseName
39
+ documents:
40
+ - _id: &fileDocumentId { $oid: "000000000000000000000005" }
41
+ length: 8
42
+ chunkSize: 4
43
+ uploadDate: { $date: "1970-01-01T00:00:00.000Z" }
44
+ filename: "length-8"
45
+ contentType: "application/octet-stream"
46
+ aliases: []
47
+ metadata: {}
48
+ - collectionName: *chunksCollectionName
49
+ databaseName: *databaseName
50
+ documents:
51
+ - _id: { $oid: "000000000000000000000005" }
52
+ files_id: *fileDocumentId
53
+ n: 0
54
+ data: { $binary: { base64: "ESIzRA==", subType: "00" } } # hex: 11223344
55
+ - _id: { $oid: "000000000000000000000006" }
56
+ files_id: *fileDocumentId
57
+ n: 1
58
+ data: { $binary: { base64: "ESIzRA==", subType: "00" } } # hex: 11223344
59
+
60
+ tests:
61
+ - description: "timeoutMS can be overridden for download"
62
+ operations:
63
+ - name: failPoint
64
+ object: testRunner
65
+ arguments:
66
+ client: *failPointClient
67
+ failPoint:
68
+ configureFailPoint: failCommand
69
+ mode: { times: 1 }
70
+ data:
71
+ failCommands: ["find"]
72
+ blockConnection: true
73
+ blockTimeMS: 100
74
+ - name: download
75
+ object: *bucket
76
+ arguments:
77
+ id: *fileDocumentId
78
+ timeoutMS: 1000 # The client timeoutMS is 75ms and the operation blocks for 100ms, so 1000ms should let it succeed.
79
+
80
+ - description: "timeoutMS applied to find to get files document"
81
+ operations:
82
+ - name: failPoint
83
+ object: testRunner
84
+ arguments:
85
+ client: *failPointClient
86
+ failPoint:
87
+ configureFailPoint: failCommand
88
+ mode: { times: 1 }
89
+ data:
90
+ failCommands: ["find"]
91
+ blockConnection: true
92
+ blockTimeMS: 100
93
+ - name: download
94
+ object: *bucket
95
+ arguments:
96
+ id: *fileDocumentId
97
+ expectError:
98
+ isTimeoutError: true
99
+ expectEvents:
100
+ - client: *client
101
+ events:
102
+ - commandStartedEvent:
103
+ commandName: find
104
+ databaseName: *databaseName
105
+ command:
106
+ find: *filesCollectionName
107
+ maxTimeMS: { $$type: ["int", "long"] }
108
+
109
+ - description: "timeoutMS applied to find to get chunks"
110
+ operations:
111
+ - name: failPoint
112
+ object: testRunner
113
+ arguments:
114
+ client: *failPointClient
115
+ failPoint:
116
+ configureFailPoint: failCommand
117
+ mode:
118
+ # The first "find" will be against the files collection, so we skip it.
119
+ skip: 1
120
+ data:
121
+ failCommands: ["find"]
122
+ blockConnection: true
123
+ blockTimeMS: 100
124
+ - name: download
125
+ object: *bucket
126
+ arguments:
127
+ id: *fileDocumentId
128
+ expectError:
129
+ isTimeoutError: true
130
+ expectEvents:
131
+ - client: *client
132
+ events:
133
+ - commandStartedEvent:
134
+ commandName: find
135
+ databaseName: *databaseName
136
+ command:
137
+ find: *filesCollectionName
138
+ maxTimeMS: { $$type: ["int", "long"] }
139
+ - commandStartedEvent:
140
+ commandName: find
141
+ databaseName: *databaseName
142
+ command:
143
+ find: *chunksCollectionName
144
+ maxTimeMS: { $$type: ["int", "long"] }
145
+
146
+ # Test that drivers are not refreshing the timeout between commands. We test this by blocking both "find" commands
147
+ # for 50ms each. The download should inherit timeoutMS=75 from the client/database and the server takes over 75ms
148
+ # total, so the operation should fail.
149
+ - description: "timeoutMS applied to entire download, not individual parts"
150
+ operations:
151
+ - name: failPoint
152
+ object: testRunner
153
+ arguments:
154
+ client: *failPointClient
155
+ failPoint:
156
+ configureFailPoint: failCommand
157
+ mode: { times: 2 }
158
+ data:
159
+ failCommands: ["find"]
160
+ blockConnection: true
161
+ blockTimeMS: 50
162
+ - name: download
163
+ object: *bucket
164
+ arguments:
165
+ id: *fileDocumentId
166
+ expectError:
167
+ isTimeoutError: true
168
+ expectEvents:
169
+ - client: *client
170
+ events:
171
+ - commandStartedEvent:
172
+ commandName: find
173
+ databaseName: *databaseName
174
+ command:
175
+ find: *filesCollectionName
176
+ maxTimeMS: { $$type: ["int", "long"] }
177
+ - commandStartedEvent:
178
+ commandName: find
179
+ databaseName: *databaseName
180
+ command:
181
+ find: *chunksCollectionName
182
+ maxTimeMS: { $$type: ["int", "long"] }
@@ -0,0 +1,100 @@
1
+ description: "timeoutMS behaves correctly for GridFS find operations"
2
+
3
+ schemaVersion: "1.9"
4
+
5
+ runOnRequirements:
6
+ - minServerVersion: "4.4"
7
+ serverless: forbid # GridFS ops can be slow on serverless.
8
+
9
+ createEntities:
10
+ - client:
11
+ id: &failPointClient failPointClient
12
+ useMultipleMongoses: false
13
+ - client:
14
+ id: &client client
15
+ uriOptions:
16
+ timeoutMS: 75
17
+ useMultipleMongoses: false
18
+ observeEvents:
19
+ - commandStartedEvent
20
+ - database:
21
+ id: &database database
22
+ client: *client
23
+ databaseName: &databaseName test
24
+ - bucket:
25
+ id: &bucket bucket
26
+ database: *database
27
+ - collection:
28
+ id: &filesCollection filesCollection
29
+ database: *database
30
+ collectionName: &filesCollectionName fs.files
31
+ - collection:
32
+ id: &chunksCollection chunksCollection
33
+ database: *database
34
+ collectionName: &chunksCollectionName fs.chunks
35
+
36
+ initialData:
37
+ - collectionName: *filesCollectionName
38
+ databaseName: *databaseName
39
+ documents: []
40
+ - collectionName: *chunksCollectionName
41
+ databaseName: *databaseName
42
+ documents: []
43
+
44
+ tests:
45
+ - description: "timeoutMS can be overridden for a find"
46
+ operations:
47
+ - name: failPoint
48
+ object: testRunner
49
+ arguments:
50
+ client: *failPointClient
51
+ failPoint:
52
+ configureFailPoint: failCommand
53
+ mode: { times: 1 }
54
+ data:
55
+ failCommands: ["find"]
56
+ blockConnection: true
57
+ blockTimeMS: 100
58
+ - name: find
59
+ object: *bucket
60
+ arguments:
61
+ filter: {}
62
+ timeoutMS: 1000 # The client timeoutMS is 75ms and the operation blocks for 100ms, so 1000ms should let it succeed.
63
+ expectEvents:
64
+ - client: *client
65
+ events:
66
+ - commandStartedEvent:
67
+ commandName: find
68
+ databaseName: *databaseName
69
+ command:
70
+ find: *filesCollectionName
71
+ maxTimeMS: { $$type: ["int", "long"] }
72
+
73
+ - description: "timeoutMS applied to find command"
74
+ operations:
75
+ - name: failPoint
76
+ object: testRunner
77
+ arguments:
78
+ client: *failPointClient
79
+ failPoint:
80
+ configureFailPoint: failCommand
81
+ mode: { times: 1 }
82
+ data:
83
+ failCommands: ["find"]
84
+ blockConnection: true
85
+ blockTimeMS: 100
86
+ - name: find
87
+ object: *bucket
88
+ arguments:
89
+ filter: {}
90
+ expectError:
91
+ isTimeoutError: true
92
+ expectEvents:
93
+ - client: *client
94
+ events:
95
+ - commandStartedEvent:
96
+ commandName: find
97
+ databaseName: *databaseName
98
+ command:
99
+ find: *filesCollectionName
100
+ maxTimeMS: { $$type: ["int", "long"] }