mongo 2.20.0 → 2.21.0

Sign up to get free protection for your applications and to get access to all the features.
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,3236 @@
1
+ # Tests in this file are generated from global-timeoutMS.yml.template.
2
+
3
+ description: "timeoutMS can be configured on a MongoClient"
4
+
5
+ schemaVersion: "1.9"
6
+
7
+ runOnRequirements:
8
+ - minServerVersion: "4.4"
9
+ topologies: ["replicaset", "sharded"]
10
+
11
+ createEntities:
12
+ - client:
13
+ id: &failPointClient failPointClient
14
+ useMultipleMongoses: false
15
+
16
+ initialData:
17
+ - collectionName: &collectionName coll
18
+ databaseName: &databaseName test
19
+ documents: []
20
+
21
+ tests:
22
+ # For each operation, we execute two tests:
23
+ #
24
+ # 1. timeoutMS can be configured to a non-zero value on a MongoClient and is inherited by the operation. Each test
25
+ # constructs a client entity with timeoutMS=250 and configures a fail point to block the operation for 350ms so
26
+ # execution results in a timeout error.
27
+ #
28
+ # 2. timeoutMS can be set to 0 for a MongoClient. Each test constructs a client entity with timeoutMS=0 and
29
+ # configures a fail point to block the operation for 15ms. The tests expect the operation to succeed and the command
30
+ # sent to not contain a maxTimeMS field.
31
+
32
+ - description: "timeoutMS can be configured on a MongoClient - listDatabases on client"
33
+ operations:
34
+ - name: createEntities
35
+ object: testRunner
36
+ arguments:
37
+ entities:
38
+ - client:
39
+ id: &client client
40
+ uriOptions:
41
+ timeoutMS: 250
42
+ useMultipleMongoses: false
43
+ observeEvents:
44
+ - commandStartedEvent
45
+ - database:
46
+ id: &database database
47
+ client: *client
48
+ databaseName: *databaseName
49
+ - collection:
50
+ id: &collection collection
51
+ database: *database
52
+ collectionName: *collectionName
53
+ - name: failPoint
54
+ object: testRunner
55
+ arguments:
56
+ client: *failPointClient
57
+ failPoint:
58
+ configureFailPoint: failCommand
59
+ # Use "times: 2" to workaround a quirk in Python on Windows where
60
+ # socket I/O can timeout ~20ms earlier than expected. With
61
+ # "times: 1" the retry would succeed within the remaining ~20ms.
62
+ mode: { times: 2 }
63
+ data:
64
+ failCommands: ["listDatabases"]
65
+ blockConnection: true
66
+ blockTimeMS: 350
67
+ - name: listDatabases
68
+ object: *client
69
+ arguments:
70
+ filter: {}
71
+
72
+ expectError:
73
+ isTimeoutError: true
74
+ expectEvents:
75
+ - client: *client
76
+ events:
77
+ - commandStartedEvent:
78
+ commandName: listDatabases
79
+ databaseName: admin
80
+ command:
81
+ listDatabases: 1
82
+ maxTimeMS: { $$type: ["int", "long"] }
83
+ - description: "timeoutMS can be set to 0 on a MongoClient - listDatabases on client"
84
+ operations:
85
+ - name: createEntities
86
+ object: testRunner
87
+ arguments:
88
+ entities:
89
+ - client:
90
+ id: &client client
91
+ uriOptions:
92
+ timeoutMS: 0
93
+ useMultipleMongoses: false
94
+ observeEvents:
95
+ - commandStartedEvent
96
+ ignoreCommandMonitoringEvents:
97
+ - killCursors
98
+ - database:
99
+ id: &database database
100
+ client: *client
101
+ databaseName: *databaseName
102
+ - collection:
103
+ id: &collection collection
104
+ database: *database
105
+ collectionName: *collectionName
106
+ - name: failPoint
107
+ object: testRunner
108
+ arguments:
109
+ client: *failPointClient
110
+ failPoint:
111
+ configureFailPoint: failCommand
112
+ mode: { times: 1 }
113
+ data:
114
+ failCommands: ["listDatabases"]
115
+ blockConnection: true
116
+ blockTimeMS: 15
117
+ - name: listDatabases
118
+ object: *client
119
+ arguments:
120
+ filter: {}
121
+
122
+
123
+ expectEvents:
124
+ - client: *client
125
+ events:
126
+ - commandStartedEvent:
127
+ commandName: listDatabases
128
+ databaseName: admin
129
+ command:
130
+ listDatabases: 1
131
+ maxTimeMS: { $$exists: false }
132
+ - description: "timeoutMS can be configured on a MongoClient - listDatabaseNames on client"
133
+ operations:
134
+ - name: createEntities
135
+ object: testRunner
136
+ arguments:
137
+ entities:
138
+ - client:
139
+ id: &client client
140
+ uriOptions:
141
+ timeoutMS: 250
142
+ useMultipleMongoses: false
143
+ observeEvents:
144
+ - commandStartedEvent
145
+ - database:
146
+ id: &database database
147
+ client: *client
148
+ databaseName: *databaseName
149
+ - collection:
150
+ id: &collection collection
151
+ database: *database
152
+ collectionName: *collectionName
153
+ - name: failPoint
154
+ object: testRunner
155
+ arguments:
156
+ client: *failPointClient
157
+ failPoint:
158
+ configureFailPoint: failCommand
159
+ # Use "times: 2" to workaround a quirk in Python on Windows where
160
+ # socket I/O can timeout ~20ms earlier than expected. With
161
+ # "times: 1" the retry would succeed within the remaining ~20ms.
162
+ mode: { times: 2 }
163
+ data:
164
+ failCommands: ["listDatabases"]
165
+ blockConnection: true
166
+ blockTimeMS: 350
167
+ - name: listDatabaseNames
168
+ object: *client
169
+
170
+ expectError:
171
+ isTimeoutError: true
172
+ expectEvents:
173
+ - client: *client
174
+ events:
175
+ - commandStartedEvent:
176
+ commandName: listDatabases
177
+ databaseName: admin
178
+ command:
179
+ listDatabases: 1
180
+ maxTimeMS: { $$type: ["int", "long"] }
181
+ - description: "timeoutMS can be set to 0 on a MongoClient - listDatabaseNames on client"
182
+ operations:
183
+ - name: createEntities
184
+ object: testRunner
185
+ arguments:
186
+ entities:
187
+ - client:
188
+ id: &client client
189
+ uriOptions:
190
+ timeoutMS: 0
191
+ useMultipleMongoses: false
192
+ observeEvents:
193
+ - commandStartedEvent
194
+ ignoreCommandMonitoringEvents:
195
+ - killCursors
196
+ - database:
197
+ id: &database database
198
+ client: *client
199
+ databaseName: *databaseName
200
+ - collection:
201
+ id: &collection collection
202
+ database: *database
203
+ collectionName: *collectionName
204
+ - name: failPoint
205
+ object: testRunner
206
+ arguments:
207
+ client: *failPointClient
208
+ failPoint:
209
+ configureFailPoint: failCommand
210
+ mode: { times: 1 }
211
+ data:
212
+ failCommands: ["listDatabases"]
213
+ blockConnection: true
214
+ blockTimeMS: 15
215
+ - name: listDatabaseNames
216
+ object: *client
217
+
218
+
219
+ expectEvents:
220
+ - client: *client
221
+ events:
222
+ - commandStartedEvent:
223
+ commandName: listDatabases
224
+ databaseName: admin
225
+ command:
226
+ listDatabases: 1
227
+ maxTimeMS: { $$exists: false }
228
+ - description: "timeoutMS can be configured on a MongoClient - createChangeStream on client"
229
+ operations:
230
+ - name: createEntities
231
+ object: testRunner
232
+ arguments:
233
+ entities:
234
+ - client:
235
+ id: &client client
236
+ uriOptions:
237
+ timeoutMS: 250
238
+ useMultipleMongoses: false
239
+ observeEvents:
240
+ - commandStartedEvent
241
+ - database:
242
+ id: &database database
243
+ client: *client
244
+ databaseName: *databaseName
245
+ - collection:
246
+ id: &collection collection
247
+ database: *database
248
+ collectionName: *collectionName
249
+ - name: failPoint
250
+ object: testRunner
251
+ arguments:
252
+ client: *failPointClient
253
+ failPoint:
254
+ configureFailPoint: failCommand
255
+ # Use "times: 2" to workaround a quirk in Python on Windows where
256
+ # socket I/O can timeout ~20ms earlier than expected. With
257
+ # "times: 1" the retry would succeed within the remaining ~20ms.
258
+ mode: { times: 2 }
259
+ data:
260
+ failCommands: ["aggregate"]
261
+ blockConnection: true
262
+ blockTimeMS: 350
263
+ - name: createChangeStream
264
+ object: *client
265
+ arguments:
266
+ pipeline: []
267
+
268
+ expectError:
269
+ isTimeoutError: true
270
+ expectEvents:
271
+ - client: *client
272
+ events:
273
+ - commandStartedEvent:
274
+ commandName: aggregate
275
+ databaseName: admin
276
+ command:
277
+ aggregate: 1
278
+ maxTimeMS: { $$type: ["int", "long"] }
279
+ - description: "timeoutMS can be set to 0 on a MongoClient - createChangeStream on client"
280
+ operations:
281
+ - name: createEntities
282
+ object: testRunner
283
+ arguments:
284
+ entities:
285
+ - client:
286
+ id: &client client
287
+ uriOptions:
288
+ timeoutMS: 0
289
+ useMultipleMongoses: false
290
+ observeEvents:
291
+ - commandStartedEvent
292
+ ignoreCommandMonitoringEvents:
293
+ - killCursors
294
+ - database:
295
+ id: &database database
296
+ client: *client
297
+ databaseName: *databaseName
298
+ - collection:
299
+ id: &collection collection
300
+ database: *database
301
+ collectionName: *collectionName
302
+ - name: failPoint
303
+ object: testRunner
304
+ arguments:
305
+ client: *failPointClient
306
+ failPoint:
307
+ configureFailPoint: failCommand
308
+ mode: { times: 1 }
309
+ data:
310
+ failCommands: ["aggregate"]
311
+ blockConnection: true
312
+ blockTimeMS: 15
313
+ - name: createChangeStream
314
+ object: *client
315
+ arguments:
316
+ pipeline: []
317
+
318
+
319
+ expectEvents:
320
+ - client: *client
321
+ events:
322
+ - commandStartedEvent:
323
+ commandName: aggregate
324
+ databaseName: admin
325
+ command:
326
+ aggregate: 1
327
+ maxTimeMS: { $$exists: false }
328
+ - description: "timeoutMS can be configured on a MongoClient - aggregate on database"
329
+ operations:
330
+ - name: createEntities
331
+ object: testRunner
332
+ arguments:
333
+ entities:
334
+ - client:
335
+ id: &client client
336
+ uriOptions:
337
+ timeoutMS: 250
338
+ useMultipleMongoses: false
339
+ observeEvents:
340
+ - commandStartedEvent
341
+ - database:
342
+ id: &database database
343
+ client: *client
344
+ databaseName: *databaseName
345
+ - collection:
346
+ id: &collection collection
347
+ database: *database
348
+ collectionName: *collectionName
349
+ - name: failPoint
350
+ object: testRunner
351
+ arguments:
352
+ client: *failPointClient
353
+ failPoint:
354
+ configureFailPoint: failCommand
355
+ # Use "times: 2" to workaround a quirk in Python on Windows where
356
+ # socket I/O can timeout ~20ms earlier than expected. With
357
+ # "times: 1" the retry would succeed within the remaining ~20ms.
358
+ mode: { times: 2 }
359
+ data:
360
+ failCommands: ["aggregate"]
361
+ blockConnection: true
362
+ blockTimeMS: 350
363
+ - name: aggregate
364
+ object: *database
365
+ arguments:
366
+ pipeline: [ { $listLocalSessions: {} }, { $limit: 1 } ]
367
+
368
+ expectError:
369
+ isTimeoutError: true
370
+ expectEvents:
371
+ - client: *client
372
+ events:
373
+ - commandStartedEvent:
374
+ commandName: aggregate
375
+ databaseName: *databaseName
376
+ command:
377
+ aggregate: 1
378
+ maxTimeMS: { $$type: ["int", "long"] }
379
+ - description: "timeoutMS can be set to 0 on a MongoClient - aggregate on database"
380
+ operations:
381
+ - name: createEntities
382
+ object: testRunner
383
+ arguments:
384
+ entities:
385
+ - client:
386
+ id: &client client
387
+ uriOptions:
388
+ timeoutMS: 0
389
+ useMultipleMongoses: false
390
+ observeEvents:
391
+ - commandStartedEvent
392
+ ignoreCommandMonitoringEvents:
393
+ - killCursors
394
+ - database:
395
+ id: &database database
396
+ client: *client
397
+ databaseName: *databaseName
398
+ - collection:
399
+ id: &collection collection
400
+ database: *database
401
+ collectionName: *collectionName
402
+ - name: failPoint
403
+ object: testRunner
404
+ arguments:
405
+ client: *failPointClient
406
+ failPoint:
407
+ configureFailPoint: failCommand
408
+ mode: { times: 1 }
409
+ data:
410
+ failCommands: ["aggregate"]
411
+ blockConnection: true
412
+ blockTimeMS: 15
413
+ - name: aggregate
414
+ object: *database
415
+ arguments:
416
+ pipeline: [ { $listLocalSessions: {} }, { $limit: 1 } ]
417
+
418
+
419
+ expectEvents:
420
+ - client: *client
421
+ events:
422
+ - commandStartedEvent:
423
+ commandName: aggregate
424
+ databaseName: *databaseName
425
+ command:
426
+ aggregate: 1
427
+ maxTimeMS: { $$exists: false }
428
+ - description: "timeoutMS can be configured on a MongoClient - listCollections on database"
429
+ operations:
430
+ - name: createEntities
431
+ object: testRunner
432
+ arguments:
433
+ entities:
434
+ - client:
435
+ id: &client client
436
+ uriOptions:
437
+ timeoutMS: 250
438
+ useMultipleMongoses: false
439
+ observeEvents:
440
+ - commandStartedEvent
441
+ - database:
442
+ id: &database database
443
+ client: *client
444
+ databaseName: *databaseName
445
+ - collection:
446
+ id: &collection collection
447
+ database: *database
448
+ collectionName: *collectionName
449
+ - name: failPoint
450
+ object: testRunner
451
+ arguments:
452
+ client: *failPointClient
453
+ failPoint:
454
+ configureFailPoint: failCommand
455
+ # Use "times: 2" to workaround a quirk in Python on Windows where
456
+ # socket I/O can timeout ~20ms earlier than expected. With
457
+ # "times: 1" the retry would succeed within the remaining ~20ms.
458
+ mode: { times: 2 }
459
+ data:
460
+ failCommands: ["listCollections"]
461
+ blockConnection: true
462
+ blockTimeMS: 350
463
+ - name: listCollections
464
+ object: *database
465
+ arguments:
466
+ filter: {}
467
+
468
+ expectError:
469
+ isTimeoutError: true
470
+ expectEvents:
471
+ - client: *client
472
+ events:
473
+ - commandStartedEvent:
474
+ commandName: listCollections
475
+ databaseName: *databaseName
476
+ command:
477
+ listCollections: 1
478
+ maxTimeMS: { $$type: ["int", "long"] }
479
+ - description: "timeoutMS can be set to 0 on a MongoClient - listCollections on database"
480
+ operations:
481
+ - name: createEntities
482
+ object: testRunner
483
+ arguments:
484
+ entities:
485
+ - client:
486
+ id: &client client
487
+ uriOptions:
488
+ timeoutMS: 0
489
+ useMultipleMongoses: false
490
+ observeEvents:
491
+ - commandStartedEvent
492
+ ignoreCommandMonitoringEvents:
493
+ - killCursors
494
+ - database:
495
+ id: &database database
496
+ client: *client
497
+ databaseName: *databaseName
498
+ - collection:
499
+ id: &collection collection
500
+ database: *database
501
+ collectionName: *collectionName
502
+ - name: failPoint
503
+ object: testRunner
504
+ arguments:
505
+ client: *failPointClient
506
+ failPoint:
507
+ configureFailPoint: failCommand
508
+ mode: { times: 1 }
509
+ data:
510
+ failCommands: ["listCollections"]
511
+ blockConnection: true
512
+ blockTimeMS: 15
513
+ - name: listCollections
514
+ object: *database
515
+ arguments:
516
+ filter: {}
517
+
518
+
519
+ expectEvents:
520
+ - client: *client
521
+ events:
522
+ - commandStartedEvent:
523
+ commandName: listCollections
524
+ databaseName: *databaseName
525
+ command:
526
+ listCollections: 1
527
+ maxTimeMS: { $$exists: false }
528
+ - description: "timeoutMS can be configured on a MongoClient - listCollectionNames on database"
529
+ operations:
530
+ - name: createEntities
531
+ object: testRunner
532
+ arguments:
533
+ entities:
534
+ - client:
535
+ id: &client client
536
+ uriOptions:
537
+ timeoutMS: 250
538
+ useMultipleMongoses: false
539
+ observeEvents:
540
+ - commandStartedEvent
541
+ - database:
542
+ id: &database database
543
+ client: *client
544
+ databaseName: *databaseName
545
+ - collection:
546
+ id: &collection collection
547
+ database: *database
548
+ collectionName: *collectionName
549
+ - name: failPoint
550
+ object: testRunner
551
+ arguments:
552
+ client: *failPointClient
553
+ failPoint:
554
+ configureFailPoint: failCommand
555
+ # Use "times: 2" to workaround a quirk in Python on Windows where
556
+ # socket I/O can timeout ~20ms earlier than expected. With
557
+ # "times: 1" the retry would succeed within the remaining ~20ms.
558
+ mode: { times: 2 }
559
+ data:
560
+ failCommands: ["listCollections"]
561
+ blockConnection: true
562
+ blockTimeMS: 350
563
+ - name: listCollectionNames
564
+ object: *database
565
+ arguments:
566
+ filter: {}
567
+
568
+ expectError:
569
+ isTimeoutError: true
570
+ expectEvents:
571
+ - client: *client
572
+ events:
573
+ - commandStartedEvent:
574
+ commandName: listCollections
575
+ databaseName: *databaseName
576
+ command:
577
+ listCollections: 1
578
+ maxTimeMS: { $$type: ["int", "long"] }
579
+ - description: "timeoutMS can be set to 0 on a MongoClient - listCollectionNames on database"
580
+ operations:
581
+ - name: createEntities
582
+ object: testRunner
583
+ arguments:
584
+ entities:
585
+ - client:
586
+ id: &client client
587
+ uriOptions:
588
+ timeoutMS: 0
589
+ useMultipleMongoses: false
590
+ observeEvents:
591
+ - commandStartedEvent
592
+ ignoreCommandMonitoringEvents:
593
+ - killCursors
594
+ - database:
595
+ id: &database database
596
+ client: *client
597
+ databaseName: *databaseName
598
+ - collection:
599
+ id: &collection collection
600
+ database: *database
601
+ collectionName: *collectionName
602
+ - name: failPoint
603
+ object: testRunner
604
+ arguments:
605
+ client: *failPointClient
606
+ failPoint:
607
+ configureFailPoint: failCommand
608
+ mode: { times: 1 }
609
+ data:
610
+ failCommands: ["listCollections"]
611
+ blockConnection: true
612
+ blockTimeMS: 15
613
+ - name: listCollectionNames
614
+ object: *database
615
+ arguments:
616
+ filter: {}
617
+
618
+
619
+ expectEvents:
620
+ - client: *client
621
+ events:
622
+ - commandStartedEvent:
623
+ commandName: listCollections
624
+ databaseName: *databaseName
625
+ command:
626
+ listCollections: 1
627
+ maxTimeMS: { $$exists: false }
628
+ - description: "timeoutMS can be configured on a MongoClient - runCommand on database"
629
+ operations:
630
+ - name: createEntities
631
+ object: testRunner
632
+ arguments:
633
+ entities:
634
+ - client:
635
+ id: &client client
636
+ uriOptions:
637
+ timeoutMS: 250
638
+ useMultipleMongoses: false
639
+ observeEvents:
640
+ - commandStartedEvent
641
+ - database:
642
+ id: &database database
643
+ client: *client
644
+ databaseName: *databaseName
645
+ - collection:
646
+ id: &collection collection
647
+ database: *database
648
+ collectionName: *collectionName
649
+ - name: failPoint
650
+ object: testRunner
651
+ arguments:
652
+ client: *failPointClient
653
+ failPoint:
654
+ configureFailPoint: failCommand
655
+ # Use "times: 2" to workaround a quirk in Python on Windows where
656
+ # socket I/O can timeout ~20ms earlier than expected. With
657
+ # "times: 1" the retry would succeed within the remaining ~20ms.
658
+ mode: { times: 2 }
659
+ data:
660
+ failCommands: ["ping"]
661
+ blockConnection: true
662
+ blockTimeMS: 350
663
+ - name: runCommand
664
+ object: *database
665
+ arguments:
666
+ command: { ping: 1 }
667
+ commandName: ping
668
+
669
+ expectError:
670
+ isTimeoutError: true
671
+ expectEvents:
672
+ - client: *client
673
+ events:
674
+ - commandStartedEvent:
675
+ commandName: ping
676
+ databaseName: *databaseName
677
+ command:
678
+ ping: 1
679
+ maxTimeMS: { $$type: ["int", "long"] }
680
+ - description: "timeoutMS can be set to 0 on a MongoClient - runCommand on database"
681
+ operations:
682
+ - name: createEntities
683
+ object: testRunner
684
+ arguments:
685
+ entities:
686
+ - client:
687
+ id: &client client
688
+ uriOptions:
689
+ timeoutMS: 0
690
+ useMultipleMongoses: false
691
+ observeEvents:
692
+ - commandStartedEvent
693
+ ignoreCommandMonitoringEvents:
694
+ - killCursors
695
+ - database:
696
+ id: &database database
697
+ client: *client
698
+ databaseName: *databaseName
699
+ - collection:
700
+ id: &collection collection
701
+ database: *database
702
+ collectionName: *collectionName
703
+ - name: failPoint
704
+ object: testRunner
705
+ arguments:
706
+ client: *failPointClient
707
+ failPoint:
708
+ configureFailPoint: failCommand
709
+ mode: { times: 1 }
710
+ data:
711
+ failCommands: ["ping"]
712
+ blockConnection: true
713
+ blockTimeMS: 15
714
+ - name: runCommand
715
+ object: *database
716
+ arguments:
717
+ command: { ping: 1 }
718
+ commandName: ping
719
+
720
+
721
+ expectEvents:
722
+ - client: *client
723
+ events:
724
+ - commandStartedEvent:
725
+ commandName: ping
726
+ databaseName: *databaseName
727
+ command:
728
+ ping: 1
729
+ maxTimeMS: { $$exists: false }
730
+ - description: "timeoutMS can be configured on a MongoClient - createChangeStream on database"
731
+ operations:
732
+ - name: createEntities
733
+ object: testRunner
734
+ arguments:
735
+ entities:
736
+ - client:
737
+ id: &client client
738
+ uriOptions:
739
+ timeoutMS: 250
740
+ useMultipleMongoses: false
741
+ observeEvents:
742
+ - commandStartedEvent
743
+ - database:
744
+ id: &database database
745
+ client: *client
746
+ databaseName: *databaseName
747
+ - collection:
748
+ id: &collection collection
749
+ database: *database
750
+ collectionName: *collectionName
751
+ - name: failPoint
752
+ object: testRunner
753
+ arguments:
754
+ client: *failPointClient
755
+ failPoint:
756
+ configureFailPoint: failCommand
757
+ # Use "times: 2" to workaround a quirk in Python on Windows where
758
+ # socket I/O can timeout ~20ms earlier than expected. With
759
+ # "times: 1" the retry would succeed within the remaining ~20ms.
760
+ mode: { times: 2 }
761
+ data:
762
+ failCommands: ["aggregate"]
763
+ blockConnection: true
764
+ blockTimeMS: 350
765
+ - name: createChangeStream
766
+ object: *database
767
+ arguments:
768
+ pipeline: []
769
+
770
+ expectError:
771
+ isTimeoutError: true
772
+ expectEvents:
773
+ - client: *client
774
+ events:
775
+ - commandStartedEvent:
776
+ commandName: aggregate
777
+ databaseName: *databaseName
778
+ command:
779
+ aggregate: 1
780
+ maxTimeMS: { $$type: ["int", "long"] }
781
+ - description: "timeoutMS can be set to 0 on a MongoClient - createChangeStream on database"
782
+ operations:
783
+ - name: createEntities
784
+ object: testRunner
785
+ arguments:
786
+ entities:
787
+ - client:
788
+ id: &client client
789
+ uriOptions:
790
+ timeoutMS: 0
791
+ useMultipleMongoses: false
792
+ observeEvents:
793
+ - commandStartedEvent
794
+ ignoreCommandMonitoringEvents:
795
+ - killCursors
796
+ - database:
797
+ id: &database database
798
+ client: *client
799
+ databaseName: *databaseName
800
+ - collection:
801
+ id: &collection collection
802
+ database: *database
803
+ collectionName: *collectionName
804
+ - name: failPoint
805
+ object: testRunner
806
+ arguments:
807
+ client: *failPointClient
808
+ failPoint:
809
+ configureFailPoint: failCommand
810
+ mode: { times: 1 }
811
+ data:
812
+ failCommands: ["aggregate"]
813
+ blockConnection: true
814
+ blockTimeMS: 15
815
+ - name: createChangeStream
816
+ object: *database
817
+ arguments:
818
+ pipeline: []
819
+
820
+
821
+ expectEvents:
822
+ - client: *client
823
+ events:
824
+ - commandStartedEvent:
825
+ commandName: aggregate
826
+ databaseName: *databaseName
827
+ command:
828
+ aggregate: 1
829
+ maxTimeMS: { $$exists: false }
830
+ - description: "timeoutMS can be configured on a MongoClient - aggregate on collection"
831
+ operations:
832
+ - name: createEntities
833
+ object: testRunner
834
+ arguments:
835
+ entities:
836
+ - client:
837
+ id: &client client
838
+ uriOptions:
839
+ timeoutMS: 250
840
+ useMultipleMongoses: false
841
+ observeEvents:
842
+ - commandStartedEvent
843
+ - database:
844
+ id: &database database
845
+ client: *client
846
+ databaseName: *databaseName
847
+ - collection:
848
+ id: &collection collection
849
+ database: *database
850
+ collectionName: *collectionName
851
+ - name: failPoint
852
+ object: testRunner
853
+ arguments:
854
+ client: *failPointClient
855
+ failPoint:
856
+ configureFailPoint: failCommand
857
+ # Use "times: 2" to workaround a quirk in Python on Windows where
858
+ # socket I/O can timeout ~20ms earlier than expected. With
859
+ # "times: 1" the retry would succeed within the remaining ~20ms.
860
+ mode: { times: 2 }
861
+ data:
862
+ failCommands: ["aggregate"]
863
+ blockConnection: true
864
+ blockTimeMS: 350
865
+ - name: aggregate
866
+ object: *collection
867
+ arguments:
868
+ pipeline: []
869
+
870
+ expectError:
871
+ isTimeoutError: true
872
+ expectEvents:
873
+ - client: *client
874
+ events:
875
+ - commandStartedEvent:
876
+ commandName: aggregate
877
+ databaseName: *databaseName
878
+ command:
879
+ aggregate: *collectionName
880
+ maxTimeMS: { $$type: ["int", "long"] }
881
+ - description: "timeoutMS can be set to 0 on a MongoClient - aggregate on collection"
882
+ operations:
883
+ - name: createEntities
884
+ object: testRunner
885
+ arguments:
886
+ entities:
887
+ - client:
888
+ id: &client client
889
+ uriOptions:
890
+ timeoutMS: 0
891
+ useMultipleMongoses: false
892
+ observeEvents:
893
+ - commandStartedEvent
894
+ ignoreCommandMonitoringEvents:
895
+ - killCursors
896
+ - database:
897
+ id: &database database
898
+ client: *client
899
+ databaseName: *databaseName
900
+ - collection:
901
+ id: &collection collection
902
+ database: *database
903
+ collectionName: *collectionName
904
+ - name: failPoint
905
+ object: testRunner
906
+ arguments:
907
+ client: *failPointClient
908
+ failPoint:
909
+ configureFailPoint: failCommand
910
+ mode: { times: 1 }
911
+ data:
912
+ failCommands: ["aggregate"]
913
+ blockConnection: true
914
+ blockTimeMS: 15
915
+ - name: aggregate
916
+ object: *collection
917
+ arguments:
918
+ pipeline: []
919
+
920
+
921
+ expectEvents:
922
+ - client: *client
923
+ events:
924
+ - commandStartedEvent:
925
+ commandName: aggregate
926
+ databaseName: *databaseName
927
+ command:
928
+ aggregate: *collectionName
929
+ maxTimeMS: { $$exists: false }
930
+ - description: "timeoutMS can be configured on a MongoClient - count on collection"
931
+ operations:
932
+ - name: createEntities
933
+ object: testRunner
934
+ arguments:
935
+ entities:
936
+ - client:
937
+ id: &client client
938
+ uriOptions:
939
+ timeoutMS: 250
940
+ useMultipleMongoses: false
941
+ observeEvents:
942
+ - commandStartedEvent
943
+ - database:
944
+ id: &database database
945
+ client: *client
946
+ databaseName: *databaseName
947
+ - collection:
948
+ id: &collection collection
949
+ database: *database
950
+ collectionName: *collectionName
951
+ - name: failPoint
952
+ object: testRunner
953
+ arguments:
954
+ client: *failPointClient
955
+ failPoint:
956
+ configureFailPoint: failCommand
957
+ # Use "times: 2" to workaround a quirk in Python on Windows where
958
+ # socket I/O can timeout ~20ms earlier than expected. With
959
+ # "times: 1" the retry would succeed within the remaining ~20ms.
960
+ mode: { times: 2 }
961
+ data:
962
+ failCommands: ["count"]
963
+ blockConnection: true
964
+ blockTimeMS: 350
965
+ - name: count
966
+ object: *collection
967
+ arguments:
968
+ filter: {}
969
+
970
+ expectError:
971
+ isTimeoutError: true
972
+ expectEvents:
973
+ - client: *client
974
+ events:
975
+ - commandStartedEvent:
976
+ commandName: count
977
+ databaseName: *databaseName
978
+ command:
979
+ count: *collectionName
980
+ maxTimeMS: { $$type: ["int", "long"] }
981
+ - description: "timeoutMS can be set to 0 on a MongoClient - count on collection"
982
+ operations:
983
+ - name: createEntities
984
+ object: testRunner
985
+ arguments:
986
+ entities:
987
+ - client:
988
+ id: &client client
989
+ uriOptions:
990
+ timeoutMS: 0
991
+ useMultipleMongoses: false
992
+ observeEvents:
993
+ - commandStartedEvent
994
+ ignoreCommandMonitoringEvents:
995
+ - killCursors
996
+ - database:
997
+ id: &database database
998
+ client: *client
999
+ databaseName: *databaseName
1000
+ - collection:
1001
+ id: &collection collection
1002
+ database: *database
1003
+ collectionName: *collectionName
1004
+ - name: failPoint
1005
+ object: testRunner
1006
+ arguments:
1007
+ client: *failPointClient
1008
+ failPoint:
1009
+ configureFailPoint: failCommand
1010
+ mode: { times: 1 }
1011
+ data:
1012
+ failCommands: ["count"]
1013
+ blockConnection: true
1014
+ blockTimeMS: 15
1015
+ - name: count
1016
+ object: *collection
1017
+ arguments:
1018
+ filter: {}
1019
+
1020
+
1021
+ expectEvents:
1022
+ - client: *client
1023
+ events:
1024
+ - commandStartedEvent:
1025
+ commandName: count
1026
+ databaseName: *databaseName
1027
+ command:
1028
+ count: *collectionName
1029
+ maxTimeMS: { $$exists: false }
1030
+ - description: "timeoutMS can be configured on a MongoClient - countDocuments on collection"
1031
+ operations:
1032
+ - name: createEntities
1033
+ object: testRunner
1034
+ arguments:
1035
+ entities:
1036
+ - client:
1037
+ id: &client client
1038
+ uriOptions:
1039
+ timeoutMS: 250
1040
+ useMultipleMongoses: false
1041
+ observeEvents:
1042
+ - commandStartedEvent
1043
+ - database:
1044
+ id: &database database
1045
+ client: *client
1046
+ databaseName: *databaseName
1047
+ - collection:
1048
+ id: &collection collection
1049
+ database: *database
1050
+ collectionName: *collectionName
1051
+ - name: failPoint
1052
+ object: testRunner
1053
+ arguments:
1054
+ client: *failPointClient
1055
+ failPoint:
1056
+ configureFailPoint: failCommand
1057
+ # Use "times: 2" to workaround a quirk in Python on Windows where
1058
+ # socket I/O can timeout ~20ms earlier than expected. With
1059
+ # "times: 1" the retry would succeed within the remaining ~20ms.
1060
+ mode: { times: 2 }
1061
+ data:
1062
+ failCommands: ["aggregate"]
1063
+ blockConnection: true
1064
+ blockTimeMS: 350
1065
+ - name: countDocuments
1066
+ object: *collection
1067
+ arguments:
1068
+ filter: {}
1069
+
1070
+ expectError:
1071
+ isTimeoutError: true
1072
+ expectEvents:
1073
+ - client: *client
1074
+ events:
1075
+ - commandStartedEvent:
1076
+ commandName: aggregate
1077
+ databaseName: *databaseName
1078
+ command:
1079
+ aggregate: *collectionName
1080
+ maxTimeMS: { $$type: ["int", "long"] }
1081
+ - description: "timeoutMS can be set to 0 on a MongoClient - countDocuments on collection"
1082
+ operations:
1083
+ - name: createEntities
1084
+ object: testRunner
1085
+ arguments:
1086
+ entities:
1087
+ - client:
1088
+ id: &client client
1089
+ uriOptions:
1090
+ timeoutMS: 0
1091
+ useMultipleMongoses: false
1092
+ observeEvents:
1093
+ - commandStartedEvent
1094
+ ignoreCommandMonitoringEvents:
1095
+ - killCursors
1096
+ - database:
1097
+ id: &database database
1098
+ client: *client
1099
+ databaseName: *databaseName
1100
+ - collection:
1101
+ id: &collection collection
1102
+ database: *database
1103
+ collectionName: *collectionName
1104
+ - name: failPoint
1105
+ object: testRunner
1106
+ arguments:
1107
+ client: *failPointClient
1108
+ failPoint:
1109
+ configureFailPoint: failCommand
1110
+ mode: { times: 1 }
1111
+ data:
1112
+ failCommands: ["aggregate"]
1113
+ blockConnection: true
1114
+ blockTimeMS: 15
1115
+ - name: countDocuments
1116
+ object: *collection
1117
+ arguments:
1118
+ filter: {}
1119
+
1120
+
1121
+ expectEvents:
1122
+ - client: *client
1123
+ events:
1124
+ - commandStartedEvent:
1125
+ commandName: aggregate
1126
+ databaseName: *databaseName
1127
+ command:
1128
+ aggregate: *collectionName
1129
+ maxTimeMS: { $$exists: false }
1130
+ - description: "timeoutMS can be configured on a MongoClient - estimatedDocumentCount on collection"
1131
+ operations:
1132
+ - name: createEntities
1133
+ object: testRunner
1134
+ arguments:
1135
+ entities:
1136
+ - client:
1137
+ id: &client client
1138
+ uriOptions:
1139
+ timeoutMS: 250
1140
+ useMultipleMongoses: false
1141
+ observeEvents:
1142
+ - commandStartedEvent
1143
+ - database:
1144
+ id: &database database
1145
+ client: *client
1146
+ databaseName: *databaseName
1147
+ - collection:
1148
+ id: &collection collection
1149
+ database: *database
1150
+ collectionName: *collectionName
1151
+ - name: failPoint
1152
+ object: testRunner
1153
+ arguments:
1154
+ client: *failPointClient
1155
+ failPoint:
1156
+ configureFailPoint: failCommand
1157
+ # Use "times: 2" to workaround a quirk in Python on Windows where
1158
+ # socket I/O can timeout ~20ms earlier than expected. With
1159
+ # "times: 1" the retry would succeed within the remaining ~20ms.
1160
+ mode: { times: 2 }
1161
+ data:
1162
+ failCommands: ["count"]
1163
+ blockConnection: true
1164
+ blockTimeMS: 350
1165
+ - name: estimatedDocumentCount
1166
+ object: *collection
1167
+
1168
+ expectError:
1169
+ isTimeoutError: true
1170
+ expectEvents:
1171
+ - client: *client
1172
+ events:
1173
+ - commandStartedEvent:
1174
+ commandName: count
1175
+ databaseName: *databaseName
1176
+ command:
1177
+ count: *collectionName
1178
+ maxTimeMS: { $$type: ["int", "long"] }
1179
+ - description: "timeoutMS can be set to 0 on a MongoClient - estimatedDocumentCount on collection"
1180
+ operations:
1181
+ - name: createEntities
1182
+ object: testRunner
1183
+ arguments:
1184
+ entities:
1185
+ - client:
1186
+ id: &client client
1187
+ uriOptions:
1188
+ timeoutMS: 0
1189
+ useMultipleMongoses: false
1190
+ observeEvents:
1191
+ - commandStartedEvent
1192
+ ignoreCommandMonitoringEvents:
1193
+ - killCursors
1194
+ - database:
1195
+ id: &database database
1196
+ client: *client
1197
+ databaseName: *databaseName
1198
+ - collection:
1199
+ id: &collection collection
1200
+ database: *database
1201
+ collectionName: *collectionName
1202
+ - name: failPoint
1203
+ object: testRunner
1204
+ arguments:
1205
+ client: *failPointClient
1206
+ failPoint:
1207
+ configureFailPoint: failCommand
1208
+ mode: { times: 1 }
1209
+ data:
1210
+ failCommands: ["count"]
1211
+ blockConnection: true
1212
+ blockTimeMS: 15
1213
+ - name: estimatedDocumentCount
1214
+ object: *collection
1215
+
1216
+
1217
+ expectEvents:
1218
+ - client: *client
1219
+ events:
1220
+ - commandStartedEvent:
1221
+ commandName: count
1222
+ databaseName: *databaseName
1223
+ command:
1224
+ count: *collectionName
1225
+ maxTimeMS: { $$exists: false }
1226
+ - description: "timeoutMS can be configured on a MongoClient - distinct on collection"
1227
+ operations:
1228
+ - name: createEntities
1229
+ object: testRunner
1230
+ arguments:
1231
+ entities:
1232
+ - client:
1233
+ id: &client client
1234
+ uriOptions:
1235
+ timeoutMS: 250
1236
+ useMultipleMongoses: false
1237
+ observeEvents:
1238
+ - commandStartedEvent
1239
+ - database:
1240
+ id: &database database
1241
+ client: *client
1242
+ databaseName: *databaseName
1243
+ - collection:
1244
+ id: &collection collection
1245
+ database: *database
1246
+ collectionName: *collectionName
1247
+ - name: failPoint
1248
+ object: testRunner
1249
+ arguments:
1250
+ client: *failPointClient
1251
+ failPoint:
1252
+ configureFailPoint: failCommand
1253
+ # Use "times: 2" to workaround a quirk in Python on Windows where
1254
+ # socket I/O can timeout ~20ms earlier than expected. With
1255
+ # "times: 1" the retry would succeed within the remaining ~20ms.
1256
+ mode: { times: 2 }
1257
+ data:
1258
+ failCommands: ["distinct"]
1259
+ blockConnection: true
1260
+ blockTimeMS: 350
1261
+ - name: distinct
1262
+ object: *collection
1263
+ arguments:
1264
+ fieldName: x
1265
+ filter: {}
1266
+
1267
+ expectError:
1268
+ isTimeoutError: true
1269
+ expectEvents:
1270
+ - client: *client
1271
+ events:
1272
+ - commandStartedEvent:
1273
+ commandName: distinct
1274
+ databaseName: *databaseName
1275
+ command:
1276
+ distinct: *collectionName
1277
+ maxTimeMS: { $$type: ["int", "long"] }
1278
+ - description: "timeoutMS can be set to 0 on a MongoClient - distinct on collection"
1279
+ operations:
1280
+ - name: createEntities
1281
+ object: testRunner
1282
+ arguments:
1283
+ entities:
1284
+ - client:
1285
+ id: &client client
1286
+ uriOptions:
1287
+ timeoutMS: 0
1288
+ useMultipleMongoses: false
1289
+ observeEvents:
1290
+ - commandStartedEvent
1291
+ ignoreCommandMonitoringEvents:
1292
+ - killCursors
1293
+ - database:
1294
+ id: &database database
1295
+ client: *client
1296
+ databaseName: *databaseName
1297
+ - collection:
1298
+ id: &collection collection
1299
+ database: *database
1300
+ collectionName: *collectionName
1301
+ - name: failPoint
1302
+ object: testRunner
1303
+ arguments:
1304
+ client: *failPointClient
1305
+ failPoint:
1306
+ configureFailPoint: failCommand
1307
+ mode: { times: 1 }
1308
+ data:
1309
+ failCommands: ["distinct"]
1310
+ blockConnection: true
1311
+ blockTimeMS: 15
1312
+ - name: distinct
1313
+ object: *collection
1314
+ arguments:
1315
+ fieldName: x
1316
+ filter: {}
1317
+
1318
+
1319
+ expectEvents:
1320
+ - client: *client
1321
+ events:
1322
+ - commandStartedEvent:
1323
+ commandName: distinct
1324
+ databaseName: *databaseName
1325
+ command:
1326
+ distinct: *collectionName
1327
+ maxTimeMS: { $$exists: false }
1328
+ - description: "timeoutMS can be configured on a MongoClient - find on collection"
1329
+ operations:
1330
+ - name: createEntities
1331
+ object: testRunner
1332
+ arguments:
1333
+ entities:
1334
+ - client:
1335
+ id: &client client
1336
+ uriOptions:
1337
+ timeoutMS: 250
1338
+ useMultipleMongoses: false
1339
+ observeEvents:
1340
+ - commandStartedEvent
1341
+ - database:
1342
+ id: &database database
1343
+ client: *client
1344
+ databaseName: *databaseName
1345
+ - collection:
1346
+ id: &collection collection
1347
+ database: *database
1348
+ collectionName: *collectionName
1349
+ - name: failPoint
1350
+ object: testRunner
1351
+ arguments:
1352
+ client: *failPointClient
1353
+ failPoint:
1354
+ configureFailPoint: failCommand
1355
+ # Use "times: 2" to workaround a quirk in Python on Windows where
1356
+ # socket I/O can timeout ~20ms earlier than expected. With
1357
+ # "times: 1" the retry would succeed within the remaining ~20ms.
1358
+ mode: { times: 2 }
1359
+ data:
1360
+ failCommands: ["find"]
1361
+ blockConnection: true
1362
+ blockTimeMS: 350
1363
+ - name: find
1364
+ object: *collection
1365
+ arguments:
1366
+ filter: {}
1367
+
1368
+ expectError:
1369
+ isTimeoutError: true
1370
+ expectEvents:
1371
+ - client: *client
1372
+ events:
1373
+ - commandStartedEvent:
1374
+ commandName: find
1375
+ databaseName: *databaseName
1376
+ command:
1377
+ find: *collectionName
1378
+ maxTimeMS: { $$type: ["int", "long"] }
1379
+ - description: "timeoutMS can be set to 0 on a MongoClient - find on collection"
1380
+ operations:
1381
+ - name: createEntities
1382
+ object: testRunner
1383
+ arguments:
1384
+ entities:
1385
+ - client:
1386
+ id: &client client
1387
+ uriOptions:
1388
+ timeoutMS: 0
1389
+ useMultipleMongoses: false
1390
+ observeEvents:
1391
+ - commandStartedEvent
1392
+ ignoreCommandMonitoringEvents:
1393
+ - killCursors
1394
+ - database:
1395
+ id: &database database
1396
+ client: *client
1397
+ databaseName: *databaseName
1398
+ - collection:
1399
+ id: &collection collection
1400
+ database: *database
1401
+ collectionName: *collectionName
1402
+ - name: failPoint
1403
+ object: testRunner
1404
+ arguments:
1405
+ client: *failPointClient
1406
+ failPoint:
1407
+ configureFailPoint: failCommand
1408
+ mode: { times: 1 }
1409
+ data:
1410
+ failCommands: ["find"]
1411
+ blockConnection: true
1412
+ blockTimeMS: 15
1413
+ - name: find
1414
+ object: *collection
1415
+ arguments:
1416
+ filter: {}
1417
+
1418
+
1419
+ expectEvents:
1420
+ - client: *client
1421
+ events:
1422
+ - commandStartedEvent:
1423
+ commandName: find
1424
+ databaseName: *databaseName
1425
+ command:
1426
+ find: *collectionName
1427
+ maxTimeMS: { $$exists: false }
1428
+ - description: "timeoutMS can be configured on a MongoClient - findOne on collection"
1429
+ operations:
1430
+ - name: createEntities
1431
+ object: testRunner
1432
+ arguments:
1433
+ entities:
1434
+ - client:
1435
+ id: &client client
1436
+ uriOptions:
1437
+ timeoutMS: 250
1438
+ useMultipleMongoses: false
1439
+ observeEvents:
1440
+ - commandStartedEvent
1441
+ - database:
1442
+ id: &database database
1443
+ client: *client
1444
+ databaseName: *databaseName
1445
+ - collection:
1446
+ id: &collection collection
1447
+ database: *database
1448
+ collectionName: *collectionName
1449
+ - name: failPoint
1450
+ object: testRunner
1451
+ arguments:
1452
+ client: *failPointClient
1453
+ failPoint:
1454
+ configureFailPoint: failCommand
1455
+ # Use "times: 2" to workaround a quirk in Python on Windows where
1456
+ # socket I/O can timeout ~20ms earlier than expected. With
1457
+ # "times: 1" the retry would succeed within the remaining ~20ms.
1458
+ mode: { times: 2 }
1459
+ data:
1460
+ failCommands: ["find"]
1461
+ blockConnection: true
1462
+ blockTimeMS: 350
1463
+ - name: findOne
1464
+ object: *collection
1465
+ arguments:
1466
+ filter: {}
1467
+
1468
+ expectError:
1469
+ isTimeoutError: true
1470
+ expectEvents:
1471
+ - client: *client
1472
+ events:
1473
+ - commandStartedEvent:
1474
+ commandName: find
1475
+ databaseName: *databaseName
1476
+ command:
1477
+ find: *collectionName
1478
+ maxTimeMS: { $$type: ["int", "long"] }
1479
+ - description: "timeoutMS can be set to 0 on a MongoClient - findOne on collection"
1480
+ operations:
1481
+ - name: createEntities
1482
+ object: testRunner
1483
+ arguments:
1484
+ entities:
1485
+ - client:
1486
+ id: &client client
1487
+ uriOptions:
1488
+ timeoutMS: 0
1489
+ useMultipleMongoses: false
1490
+ observeEvents:
1491
+ - commandStartedEvent
1492
+ ignoreCommandMonitoringEvents:
1493
+ - killCursors
1494
+ - database:
1495
+ id: &database database
1496
+ client: *client
1497
+ databaseName: *databaseName
1498
+ - collection:
1499
+ id: &collection collection
1500
+ database: *database
1501
+ collectionName: *collectionName
1502
+ - name: failPoint
1503
+ object: testRunner
1504
+ arguments:
1505
+ client: *failPointClient
1506
+ failPoint:
1507
+ configureFailPoint: failCommand
1508
+ mode: { times: 1 }
1509
+ data:
1510
+ failCommands: ["find"]
1511
+ blockConnection: true
1512
+ blockTimeMS: 15
1513
+ - name: findOne
1514
+ object: *collection
1515
+ arguments:
1516
+ filter: {}
1517
+
1518
+
1519
+ expectEvents:
1520
+ - client: *client
1521
+ events:
1522
+ - commandStartedEvent:
1523
+ commandName: find
1524
+ databaseName: *databaseName
1525
+ command:
1526
+ find: *collectionName
1527
+ maxTimeMS: { $$exists: false }
1528
+ - description: "timeoutMS can be configured on a MongoClient - listIndexes on collection"
1529
+ operations:
1530
+ - name: createEntities
1531
+ object: testRunner
1532
+ arguments:
1533
+ entities:
1534
+ - client:
1535
+ id: &client client
1536
+ uriOptions:
1537
+ timeoutMS: 250
1538
+ useMultipleMongoses: false
1539
+ observeEvents:
1540
+ - commandStartedEvent
1541
+ - database:
1542
+ id: &database database
1543
+ client: *client
1544
+ databaseName: *databaseName
1545
+ - collection:
1546
+ id: &collection collection
1547
+ database: *database
1548
+ collectionName: *collectionName
1549
+ - name: failPoint
1550
+ object: testRunner
1551
+ arguments:
1552
+ client: *failPointClient
1553
+ failPoint:
1554
+ configureFailPoint: failCommand
1555
+ # Use "times: 2" to workaround a quirk in Python on Windows where
1556
+ # socket I/O can timeout ~20ms earlier than expected. With
1557
+ # "times: 1" the retry would succeed within the remaining ~20ms.
1558
+ mode: { times: 2 }
1559
+ data:
1560
+ failCommands: ["listIndexes"]
1561
+ blockConnection: true
1562
+ blockTimeMS: 350
1563
+ - name: listIndexes
1564
+ object: *collection
1565
+
1566
+ expectError:
1567
+ isTimeoutError: true
1568
+ expectEvents:
1569
+ - client: *client
1570
+ events:
1571
+ - commandStartedEvent:
1572
+ commandName: listIndexes
1573
+ databaseName: *databaseName
1574
+ command:
1575
+ listIndexes: *collectionName
1576
+ maxTimeMS: { $$type: ["int", "long"] }
1577
+ - description: "timeoutMS can be set to 0 on a MongoClient - listIndexes on collection"
1578
+ operations:
1579
+ - name: createEntities
1580
+ object: testRunner
1581
+ arguments:
1582
+ entities:
1583
+ - client:
1584
+ id: &client client
1585
+ uriOptions:
1586
+ timeoutMS: 0
1587
+ useMultipleMongoses: false
1588
+ observeEvents:
1589
+ - commandStartedEvent
1590
+ ignoreCommandMonitoringEvents:
1591
+ - killCursors
1592
+ - database:
1593
+ id: &database database
1594
+ client: *client
1595
+ databaseName: *databaseName
1596
+ - collection:
1597
+ id: &collection collection
1598
+ database: *database
1599
+ collectionName: *collectionName
1600
+ - name: failPoint
1601
+ object: testRunner
1602
+ arguments:
1603
+ client: *failPointClient
1604
+ failPoint:
1605
+ configureFailPoint: failCommand
1606
+ mode: { times: 1 }
1607
+ data:
1608
+ failCommands: ["listIndexes"]
1609
+ blockConnection: true
1610
+ blockTimeMS: 15
1611
+ - name: listIndexes
1612
+ object: *collection
1613
+
1614
+
1615
+ expectEvents:
1616
+ - client: *client
1617
+ events:
1618
+ - commandStartedEvent:
1619
+ commandName: listIndexes
1620
+ databaseName: *databaseName
1621
+ command:
1622
+ listIndexes: *collectionName
1623
+ maxTimeMS: { $$exists: false }
1624
+ - description: "timeoutMS can be configured on a MongoClient - listIndexNames on collection"
1625
+ operations:
1626
+ - name: createEntities
1627
+ object: testRunner
1628
+ arguments:
1629
+ entities:
1630
+ - client:
1631
+ id: &client client
1632
+ uriOptions:
1633
+ timeoutMS: 250
1634
+ useMultipleMongoses: false
1635
+ observeEvents:
1636
+ - commandStartedEvent
1637
+ - database:
1638
+ id: &database database
1639
+ client: *client
1640
+ databaseName: *databaseName
1641
+ - collection:
1642
+ id: &collection collection
1643
+ database: *database
1644
+ collectionName: *collectionName
1645
+ - name: failPoint
1646
+ object: testRunner
1647
+ arguments:
1648
+ client: *failPointClient
1649
+ failPoint:
1650
+ configureFailPoint: failCommand
1651
+ # Use "times: 2" to workaround a quirk in Python on Windows where
1652
+ # socket I/O can timeout ~20ms earlier than expected. With
1653
+ # "times: 1" the retry would succeed within the remaining ~20ms.
1654
+ mode: { times: 2 }
1655
+ data:
1656
+ failCommands: ["listIndexes"]
1657
+ blockConnection: true
1658
+ blockTimeMS: 350
1659
+ - name: listIndexNames
1660
+ object: *collection
1661
+
1662
+ expectError:
1663
+ isTimeoutError: true
1664
+ expectEvents:
1665
+ - client: *client
1666
+ events:
1667
+ - commandStartedEvent:
1668
+ commandName: listIndexes
1669
+ databaseName: *databaseName
1670
+ command:
1671
+ listIndexes: *collectionName
1672
+ maxTimeMS: { $$type: ["int", "long"] }
1673
+ - description: "timeoutMS can be set to 0 on a MongoClient - listIndexNames on collection"
1674
+ operations:
1675
+ - name: createEntities
1676
+ object: testRunner
1677
+ arguments:
1678
+ entities:
1679
+ - client:
1680
+ id: &client client
1681
+ uriOptions:
1682
+ timeoutMS: 0
1683
+ useMultipleMongoses: false
1684
+ observeEvents:
1685
+ - commandStartedEvent
1686
+ ignoreCommandMonitoringEvents:
1687
+ - killCursors
1688
+ - database:
1689
+ id: &database database
1690
+ client: *client
1691
+ databaseName: *databaseName
1692
+ - collection:
1693
+ id: &collection collection
1694
+ database: *database
1695
+ collectionName: *collectionName
1696
+ - name: failPoint
1697
+ object: testRunner
1698
+ arguments:
1699
+ client: *failPointClient
1700
+ failPoint:
1701
+ configureFailPoint: failCommand
1702
+ mode: { times: 1 }
1703
+ data:
1704
+ failCommands: ["listIndexes"]
1705
+ blockConnection: true
1706
+ blockTimeMS: 15
1707
+ - name: listIndexNames
1708
+ object: *collection
1709
+
1710
+
1711
+ expectEvents:
1712
+ - client: *client
1713
+ events:
1714
+ - commandStartedEvent:
1715
+ commandName: listIndexes
1716
+ databaseName: *databaseName
1717
+ command:
1718
+ listIndexes: *collectionName
1719
+ maxTimeMS: { $$exists: false }
1720
+ - description: "timeoutMS can be configured on a MongoClient - createChangeStream on collection"
1721
+ operations:
1722
+ - name: createEntities
1723
+ object: testRunner
1724
+ arguments:
1725
+ entities:
1726
+ - client:
1727
+ id: &client client
1728
+ uriOptions:
1729
+ timeoutMS: 250
1730
+ useMultipleMongoses: false
1731
+ observeEvents:
1732
+ - commandStartedEvent
1733
+ - database:
1734
+ id: &database database
1735
+ client: *client
1736
+ databaseName: *databaseName
1737
+ - collection:
1738
+ id: &collection collection
1739
+ database: *database
1740
+ collectionName: *collectionName
1741
+ - name: failPoint
1742
+ object: testRunner
1743
+ arguments:
1744
+ client: *failPointClient
1745
+ failPoint:
1746
+ configureFailPoint: failCommand
1747
+ # Use "times: 2" to workaround a quirk in Python on Windows where
1748
+ # socket I/O can timeout ~20ms earlier than expected. With
1749
+ # "times: 1" the retry would succeed within the remaining ~20ms.
1750
+ mode: { times: 2 }
1751
+ data:
1752
+ failCommands: ["aggregate"]
1753
+ blockConnection: true
1754
+ blockTimeMS: 350
1755
+ - name: createChangeStream
1756
+ object: *collection
1757
+ arguments:
1758
+ pipeline: []
1759
+
1760
+ expectError:
1761
+ isTimeoutError: true
1762
+ expectEvents:
1763
+ - client: *client
1764
+ events:
1765
+ - commandStartedEvent:
1766
+ commandName: aggregate
1767
+ databaseName: *databaseName
1768
+ command:
1769
+ aggregate: *collectionName
1770
+ maxTimeMS: { $$type: ["int", "long"] }
1771
+ - description: "timeoutMS can be set to 0 on a MongoClient - createChangeStream on collection"
1772
+ operations:
1773
+ - name: createEntities
1774
+ object: testRunner
1775
+ arguments:
1776
+ entities:
1777
+ - client:
1778
+ id: &client client
1779
+ uriOptions:
1780
+ timeoutMS: 0
1781
+ useMultipleMongoses: false
1782
+ observeEvents:
1783
+ - commandStartedEvent
1784
+ ignoreCommandMonitoringEvents:
1785
+ - killCursors
1786
+ - database:
1787
+ id: &database database
1788
+ client: *client
1789
+ databaseName: *databaseName
1790
+ - collection:
1791
+ id: &collection collection
1792
+ database: *database
1793
+ collectionName: *collectionName
1794
+ - name: failPoint
1795
+ object: testRunner
1796
+ arguments:
1797
+ client: *failPointClient
1798
+ failPoint:
1799
+ configureFailPoint: failCommand
1800
+ mode: { times: 1 }
1801
+ data:
1802
+ failCommands: ["aggregate"]
1803
+ blockConnection: true
1804
+ blockTimeMS: 15
1805
+ - name: createChangeStream
1806
+ object: *collection
1807
+ arguments:
1808
+ pipeline: []
1809
+
1810
+
1811
+ expectEvents:
1812
+ - client: *client
1813
+ events:
1814
+ - commandStartedEvent:
1815
+ commandName: aggregate
1816
+ databaseName: *databaseName
1817
+ command:
1818
+ aggregate: *collectionName
1819
+ maxTimeMS: { $$exists: false }
1820
+ - description: "timeoutMS can be configured on a MongoClient - insertOne on collection"
1821
+ operations:
1822
+ - name: createEntities
1823
+ object: testRunner
1824
+ arguments:
1825
+ entities:
1826
+ - client:
1827
+ id: &client client
1828
+ uriOptions:
1829
+ timeoutMS: 250
1830
+ useMultipleMongoses: false
1831
+ observeEvents:
1832
+ - commandStartedEvent
1833
+ - database:
1834
+ id: &database database
1835
+ client: *client
1836
+ databaseName: *databaseName
1837
+ - collection:
1838
+ id: &collection collection
1839
+ database: *database
1840
+ collectionName: *collectionName
1841
+ - name: failPoint
1842
+ object: testRunner
1843
+ arguments:
1844
+ client: *failPointClient
1845
+ failPoint:
1846
+ configureFailPoint: failCommand
1847
+ # Use "times: 2" to workaround a quirk in Python on Windows where
1848
+ # socket I/O can timeout ~20ms earlier than expected. With
1849
+ # "times: 1" the retry would succeed within the remaining ~20ms.
1850
+ mode: { times: 2 }
1851
+ data:
1852
+ failCommands: ["insert"]
1853
+ blockConnection: true
1854
+ blockTimeMS: 350
1855
+ - name: insertOne
1856
+ object: *collection
1857
+ arguments:
1858
+ document: { x: 1 }
1859
+
1860
+ expectError:
1861
+ isTimeoutError: true
1862
+ expectEvents:
1863
+ - client: *client
1864
+ events:
1865
+ - commandStartedEvent:
1866
+ commandName: insert
1867
+ databaseName: *databaseName
1868
+ command:
1869
+ insert: *collectionName
1870
+ maxTimeMS: { $$type: ["int", "long"] }
1871
+ - description: "timeoutMS can be set to 0 on a MongoClient - insertOne on collection"
1872
+ operations:
1873
+ - name: createEntities
1874
+ object: testRunner
1875
+ arguments:
1876
+ entities:
1877
+ - client:
1878
+ id: &client client
1879
+ uriOptions:
1880
+ timeoutMS: 0
1881
+ useMultipleMongoses: false
1882
+ observeEvents:
1883
+ - commandStartedEvent
1884
+ ignoreCommandMonitoringEvents:
1885
+ - killCursors
1886
+ - database:
1887
+ id: &database database
1888
+ client: *client
1889
+ databaseName: *databaseName
1890
+ - collection:
1891
+ id: &collection collection
1892
+ database: *database
1893
+ collectionName: *collectionName
1894
+ - name: failPoint
1895
+ object: testRunner
1896
+ arguments:
1897
+ client: *failPointClient
1898
+ failPoint:
1899
+ configureFailPoint: failCommand
1900
+ mode: { times: 1 }
1901
+ data:
1902
+ failCommands: ["insert"]
1903
+ blockConnection: true
1904
+ blockTimeMS: 15
1905
+ - name: insertOne
1906
+ object: *collection
1907
+ arguments:
1908
+ document: { x: 1 }
1909
+
1910
+
1911
+ expectEvents:
1912
+ - client: *client
1913
+ events:
1914
+ - commandStartedEvent:
1915
+ commandName: insert
1916
+ databaseName: *databaseName
1917
+ command:
1918
+ insert: *collectionName
1919
+ maxTimeMS: { $$exists: false }
1920
+ - description: "timeoutMS can be configured on a MongoClient - insertMany on collection"
1921
+ operations:
1922
+ - name: createEntities
1923
+ object: testRunner
1924
+ arguments:
1925
+ entities:
1926
+ - client:
1927
+ id: &client client
1928
+ uriOptions:
1929
+ timeoutMS: 250
1930
+ useMultipleMongoses: false
1931
+ observeEvents:
1932
+ - commandStartedEvent
1933
+ - database:
1934
+ id: &database database
1935
+ client: *client
1936
+ databaseName: *databaseName
1937
+ - collection:
1938
+ id: &collection collection
1939
+ database: *database
1940
+ collectionName: *collectionName
1941
+ - name: failPoint
1942
+ object: testRunner
1943
+ arguments:
1944
+ client: *failPointClient
1945
+ failPoint:
1946
+ configureFailPoint: failCommand
1947
+ # Use "times: 2" to workaround a quirk in Python on Windows where
1948
+ # socket I/O can timeout ~20ms earlier than expected. With
1949
+ # "times: 1" the retry would succeed within the remaining ~20ms.
1950
+ mode: { times: 2 }
1951
+ data:
1952
+ failCommands: ["insert"]
1953
+ blockConnection: true
1954
+ blockTimeMS: 350
1955
+ - name: insertMany
1956
+ object: *collection
1957
+ arguments:
1958
+ documents:
1959
+ - { x: 1 }
1960
+
1961
+ expectError:
1962
+ isTimeoutError: true
1963
+ expectEvents:
1964
+ - client: *client
1965
+ events:
1966
+ - commandStartedEvent:
1967
+ commandName: insert
1968
+ databaseName: *databaseName
1969
+ command:
1970
+ insert: *collectionName
1971
+ maxTimeMS: { $$type: ["int", "long"] }
1972
+ - description: "timeoutMS can be set to 0 on a MongoClient - insertMany on collection"
1973
+ operations:
1974
+ - name: createEntities
1975
+ object: testRunner
1976
+ arguments:
1977
+ entities:
1978
+ - client:
1979
+ id: &client client
1980
+ uriOptions:
1981
+ timeoutMS: 0
1982
+ useMultipleMongoses: false
1983
+ observeEvents:
1984
+ - commandStartedEvent
1985
+ ignoreCommandMonitoringEvents:
1986
+ - killCursors
1987
+ - database:
1988
+ id: &database database
1989
+ client: *client
1990
+ databaseName: *databaseName
1991
+ - collection:
1992
+ id: &collection collection
1993
+ database: *database
1994
+ collectionName: *collectionName
1995
+ - name: failPoint
1996
+ object: testRunner
1997
+ arguments:
1998
+ client: *failPointClient
1999
+ failPoint:
2000
+ configureFailPoint: failCommand
2001
+ mode: { times: 1 }
2002
+ data:
2003
+ failCommands: ["insert"]
2004
+ blockConnection: true
2005
+ blockTimeMS: 15
2006
+ - name: insertMany
2007
+ object: *collection
2008
+ arguments:
2009
+ documents:
2010
+ - { x: 1 }
2011
+
2012
+
2013
+ expectEvents:
2014
+ - client: *client
2015
+ events:
2016
+ - commandStartedEvent:
2017
+ commandName: insert
2018
+ databaseName: *databaseName
2019
+ command:
2020
+ insert: *collectionName
2021
+ maxTimeMS: { $$exists: false }
2022
+ - description: "timeoutMS can be configured on a MongoClient - deleteOne on collection"
2023
+ operations:
2024
+ - name: createEntities
2025
+ object: testRunner
2026
+ arguments:
2027
+ entities:
2028
+ - client:
2029
+ id: &client client
2030
+ uriOptions:
2031
+ timeoutMS: 250
2032
+ useMultipleMongoses: false
2033
+ observeEvents:
2034
+ - commandStartedEvent
2035
+ - database:
2036
+ id: &database database
2037
+ client: *client
2038
+ databaseName: *databaseName
2039
+ - collection:
2040
+ id: &collection collection
2041
+ database: *database
2042
+ collectionName: *collectionName
2043
+ - name: failPoint
2044
+ object: testRunner
2045
+ arguments:
2046
+ client: *failPointClient
2047
+ failPoint:
2048
+ configureFailPoint: failCommand
2049
+ # Use "times: 2" to workaround a quirk in Python on Windows where
2050
+ # socket I/O can timeout ~20ms earlier than expected. With
2051
+ # "times: 1" the retry would succeed within the remaining ~20ms.
2052
+ mode: { times: 2 }
2053
+ data:
2054
+ failCommands: ["delete"]
2055
+ blockConnection: true
2056
+ blockTimeMS: 350
2057
+ - name: deleteOne
2058
+ object: *collection
2059
+ arguments:
2060
+ filter: {}
2061
+
2062
+ expectError:
2063
+ isTimeoutError: true
2064
+ expectEvents:
2065
+ - client: *client
2066
+ events:
2067
+ - commandStartedEvent:
2068
+ commandName: delete
2069
+ databaseName: *databaseName
2070
+ command:
2071
+ delete: *collectionName
2072
+ maxTimeMS: { $$type: ["int", "long"] }
2073
+ - description: "timeoutMS can be set to 0 on a MongoClient - deleteOne on collection"
2074
+ operations:
2075
+ - name: createEntities
2076
+ object: testRunner
2077
+ arguments:
2078
+ entities:
2079
+ - client:
2080
+ id: &client client
2081
+ uriOptions:
2082
+ timeoutMS: 0
2083
+ useMultipleMongoses: false
2084
+ observeEvents:
2085
+ - commandStartedEvent
2086
+ ignoreCommandMonitoringEvents:
2087
+ - killCursors
2088
+ - database:
2089
+ id: &database database
2090
+ client: *client
2091
+ databaseName: *databaseName
2092
+ - collection:
2093
+ id: &collection collection
2094
+ database: *database
2095
+ collectionName: *collectionName
2096
+ - name: failPoint
2097
+ object: testRunner
2098
+ arguments:
2099
+ client: *failPointClient
2100
+ failPoint:
2101
+ configureFailPoint: failCommand
2102
+ mode: { times: 1 }
2103
+ data:
2104
+ failCommands: ["delete"]
2105
+ blockConnection: true
2106
+ blockTimeMS: 15
2107
+ - name: deleteOne
2108
+ object: *collection
2109
+ arguments:
2110
+ filter: {}
2111
+
2112
+
2113
+ expectEvents:
2114
+ - client: *client
2115
+ events:
2116
+ - commandStartedEvent:
2117
+ commandName: delete
2118
+ databaseName: *databaseName
2119
+ command:
2120
+ delete: *collectionName
2121
+ maxTimeMS: { $$exists: false }
2122
+ - description: "timeoutMS can be configured on a MongoClient - deleteMany on collection"
2123
+ operations:
2124
+ - name: createEntities
2125
+ object: testRunner
2126
+ arguments:
2127
+ entities:
2128
+ - client:
2129
+ id: &client client
2130
+ uriOptions:
2131
+ timeoutMS: 250
2132
+ useMultipleMongoses: false
2133
+ observeEvents:
2134
+ - commandStartedEvent
2135
+ - database:
2136
+ id: &database database
2137
+ client: *client
2138
+ databaseName: *databaseName
2139
+ - collection:
2140
+ id: &collection collection
2141
+ database: *database
2142
+ collectionName: *collectionName
2143
+ - name: failPoint
2144
+ object: testRunner
2145
+ arguments:
2146
+ client: *failPointClient
2147
+ failPoint:
2148
+ configureFailPoint: failCommand
2149
+ # Use "times: 2" to workaround a quirk in Python on Windows where
2150
+ # socket I/O can timeout ~20ms earlier than expected. With
2151
+ # "times: 1" the retry would succeed within the remaining ~20ms.
2152
+ mode: { times: 2 }
2153
+ data:
2154
+ failCommands: ["delete"]
2155
+ blockConnection: true
2156
+ blockTimeMS: 350
2157
+ - name: deleteMany
2158
+ object: *collection
2159
+ arguments:
2160
+ filter: {}
2161
+
2162
+ expectError:
2163
+ isTimeoutError: true
2164
+ expectEvents:
2165
+ - client: *client
2166
+ events:
2167
+ - commandStartedEvent:
2168
+ commandName: delete
2169
+ databaseName: *databaseName
2170
+ command:
2171
+ delete: *collectionName
2172
+ maxTimeMS: { $$type: ["int", "long"] }
2173
+ - description: "timeoutMS can be set to 0 on a MongoClient - deleteMany on collection"
2174
+ operations:
2175
+ - name: createEntities
2176
+ object: testRunner
2177
+ arguments:
2178
+ entities:
2179
+ - client:
2180
+ id: &client client
2181
+ uriOptions:
2182
+ timeoutMS: 0
2183
+ useMultipleMongoses: false
2184
+ observeEvents:
2185
+ - commandStartedEvent
2186
+ ignoreCommandMonitoringEvents:
2187
+ - killCursors
2188
+ - database:
2189
+ id: &database database
2190
+ client: *client
2191
+ databaseName: *databaseName
2192
+ - collection:
2193
+ id: &collection collection
2194
+ database: *database
2195
+ collectionName: *collectionName
2196
+ - name: failPoint
2197
+ object: testRunner
2198
+ arguments:
2199
+ client: *failPointClient
2200
+ failPoint:
2201
+ configureFailPoint: failCommand
2202
+ mode: { times: 1 }
2203
+ data:
2204
+ failCommands: ["delete"]
2205
+ blockConnection: true
2206
+ blockTimeMS: 15
2207
+ - name: deleteMany
2208
+ object: *collection
2209
+ arguments:
2210
+ filter: {}
2211
+
2212
+
2213
+ expectEvents:
2214
+ - client: *client
2215
+ events:
2216
+ - commandStartedEvent:
2217
+ commandName: delete
2218
+ databaseName: *databaseName
2219
+ command:
2220
+ delete: *collectionName
2221
+ maxTimeMS: { $$exists: false }
2222
+ - description: "timeoutMS can be configured on a MongoClient - replaceOne on collection"
2223
+ operations:
2224
+ - name: createEntities
2225
+ object: testRunner
2226
+ arguments:
2227
+ entities:
2228
+ - client:
2229
+ id: &client client
2230
+ uriOptions:
2231
+ timeoutMS: 250
2232
+ useMultipleMongoses: false
2233
+ observeEvents:
2234
+ - commandStartedEvent
2235
+ - database:
2236
+ id: &database database
2237
+ client: *client
2238
+ databaseName: *databaseName
2239
+ - collection:
2240
+ id: &collection collection
2241
+ database: *database
2242
+ collectionName: *collectionName
2243
+ - name: failPoint
2244
+ object: testRunner
2245
+ arguments:
2246
+ client: *failPointClient
2247
+ failPoint:
2248
+ configureFailPoint: failCommand
2249
+ # Use "times: 2" to workaround a quirk in Python on Windows where
2250
+ # socket I/O can timeout ~20ms earlier than expected. With
2251
+ # "times: 1" the retry would succeed within the remaining ~20ms.
2252
+ mode: { times: 2 }
2253
+ data:
2254
+ failCommands: ["update"]
2255
+ blockConnection: true
2256
+ blockTimeMS: 350
2257
+ - name: replaceOne
2258
+ object: *collection
2259
+ arguments:
2260
+ filter: {}
2261
+ replacement: { x: 1 }
2262
+
2263
+ expectError:
2264
+ isTimeoutError: true
2265
+ expectEvents:
2266
+ - client: *client
2267
+ events:
2268
+ - commandStartedEvent:
2269
+ commandName: update
2270
+ databaseName: *databaseName
2271
+ command:
2272
+ update: *collectionName
2273
+ maxTimeMS: { $$type: ["int", "long"] }
2274
+ - description: "timeoutMS can be set to 0 on a MongoClient - replaceOne on collection"
2275
+ operations:
2276
+ - name: createEntities
2277
+ object: testRunner
2278
+ arguments:
2279
+ entities:
2280
+ - client:
2281
+ id: &client client
2282
+ uriOptions:
2283
+ timeoutMS: 0
2284
+ useMultipleMongoses: false
2285
+ observeEvents:
2286
+ - commandStartedEvent
2287
+ ignoreCommandMonitoringEvents:
2288
+ - killCursors
2289
+ - database:
2290
+ id: &database database
2291
+ client: *client
2292
+ databaseName: *databaseName
2293
+ - collection:
2294
+ id: &collection collection
2295
+ database: *database
2296
+ collectionName: *collectionName
2297
+ - name: failPoint
2298
+ object: testRunner
2299
+ arguments:
2300
+ client: *failPointClient
2301
+ failPoint:
2302
+ configureFailPoint: failCommand
2303
+ mode: { times: 1 }
2304
+ data:
2305
+ failCommands: ["update"]
2306
+ blockConnection: true
2307
+ blockTimeMS: 15
2308
+ - name: replaceOne
2309
+ object: *collection
2310
+ arguments:
2311
+ filter: {}
2312
+ replacement: { x: 1 }
2313
+
2314
+
2315
+ expectEvents:
2316
+ - client: *client
2317
+ events:
2318
+ - commandStartedEvent:
2319
+ commandName: update
2320
+ databaseName: *databaseName
2321
+ command:
2322
+ update: *collectionName
2323
+ maxTimeMS: { $$exists: false }
2324
+ - description: "timeoutMS can be configured on a MongoClient - updateOne on collection"
2325
+ operations:
2326
+ - name: createEntities
2327
+ object: testRunner
2328
+ arguments:
2329
+ entities:
2330
+ - client:
2331
+ id: &client client
2332
+ uriOptions:
2333
+ timeoutMS: 250
2334
+ useMultipleMongoses: false
2335
+ observeEvents:
2336
+ - commandStartedEvent
2337
+ - database:
2338
+ id: &database database
2339
+ client: *client
2340
+ databaseName: *databaseName
2341
+ - collection:
2342
+ id: &collection collection
2343
+ database: *database
2344
+ collectionName: *collectionName
2345
+ - name: failPoint
2346
+ object: testRunner
2347
+ arguments:
2348
+ client: *failPointClient
2349
+ failPoint:
2350
+ configureFailPoint: failCommand
2351
+ # Use "times: 2" to workaround a quirk in Python on Windows where
2352
+ # socket I/O can timeout ~20ms earlier than expected. With
2353
+ # "times: 1" the retry would succeed within the remaining ~20ms.
2354
+ mode: { times: 2 }
2355
+ data:
2356
+ failCommands: ["update"]
2357
+ blockConnection: true
2358
+ blockTimeMS: 350
2359
+ - name: updateOne
2360
+ object: *collection
2361
+ arguments:
2362
+ filter: {}
2363
+ update: { $set: { x: 1 } }
2364
+
2365
+ expectError:
2366
+ isTimeoutError: true
2367
+ expectEvents:
2368
+ - client: *client
2369
+ events:
2370
+ - commandStartedEvent:
2371
+ commandName: update
2372
+ databaseName: *databaseName
2373
+ command:
2374
+ update: *collectionName
2375
+ maxTimeMS: { $$type: ["int", "long"] }
2376
+ - description: "timeoutMS can be set to 0 on a MongoClient - updateOne on collection"
2377
+ operations:
2378
+ - name: createEntities
2379
+ object: testRunner
2380
+ arguments:
2381
+ entities:
2382
+ - client:
2383
+ id: &client client
2384
+ uriOptions:
2385
+ timeoutMS: 0
2386
+ useMultipleMongoses: false
2387
+ observeEvents:
2388
+ - commandStartedEvent
2389
+ ignoreCommandMonitoringEvents:
2390
+ - killCursors
2391
+ - database:
2392
+ id: &database database
2393
+ client: *client
2394
+ databaseName: *databaseName
2395
+ - collection:
2396
+ id: &collection collection
2397
+ database: *database
2398
+ collectionName: *collectionName
2399
+ - name: failPoint
2400
+ object: testRunner
2401
+ arguments:
2402
+ client: *failPointClient
2403
+ failPoint:
2404
+ configureFailPoint: failCommand
2405
+ mode: { times: 1 }
2406
+ data:
2407
+ failCommands: ["update"]
2408
+ blockConnection: true
2409
+ blockTimeMS: 15
2410
+ - name: updateOne
2411
+ object: *collection
2412
+ arguments:
2413
+ filter: {}
2414
+ update: { $set: { x: 1 } }
2415
+
2416
+
2417
+ expectEvents:
2418
+ - client: *client
2419
+ events:
2420
+ - commandStartedEvent:
2421
+ commandName: update
2422
+ databaseName: *databaseName
2423
+ command:
2424
+ update: *collectionName
2425
+ maxTimeMS: { $$exists: false }
2426
+ - description: "timeoutMS can be configured on a MongoClient - updateMany on collection"
2427
+ operations:
2428
+ - name: createEntities
2429
+ object: testRunner
2430
+ arguments:
2431
+ entities:
2432
+ - client:
2433
+ id: &client client
2434
+ uriOptions:
2435
+ timeoutMS: 250
2436
+ useMultipleMongoses: false
2437
+ observeEvents:
2438
+ - commandStartedEvent
2439
+ - database:
2440
+ id: &database database
2441
+ client: *client
2442
+ databaseName: *databaseName
2443
+ - collection:
2444
+ id: &collection collection
2445
+ database: *database
2446
+ collectionName: *collectionName
2447
+ - name: failPoint
2448
+ object: testRunner
2449
+ arguments:
2450
+ client: *failPointClient
2451
+ failPoint:
2452
+ configureFailPoint: failCommand
2453
+ # Use "times: 2" to workaround a quirk in Python on Windows where
2454
+ # socket I/O can timeout ~20ms earlier than expected. With
2455
+ # "times: 1" the retry would succeed within the remaining ~20ms.
2456
+ mode: { times: 2 }
2457
+ data:
2458
+ failCommands: ["update"]
2459
+ blockConnection: true
2460
+ blockTimeMS: 350
2461
+ - name: updateMany
2462
+ object: *collection
2463
+ arguments:
2464
+ filter: {}
2465
+ update: { $set: { x: 1 } }
2466
+
2467
+ expectError:
2468
+ isTimeoutError: true
2469
+ expectEvents:
2470
+ - client: *client
2471
+ events:
2472
+ - commandStartedEvent:
2473
+ commandName: update
2474
+ databaseName: *databaseName
2475
+ command:
2476
+ update: *collectionName
2477
+ maxTimeMS: { $$type: ["int", "long"] }
2478
+ - description: "timeoutMS can be set to 0 on a MongoClient - updateMany on collection"
2479
+ operations:
2480
+ - name: createEntities
2481
+ object: testRunner
2482
+ arguments:
2483
+ entities:
2484
+ - client:
2485
+ id: &client client
2486
+ uriOptions:
2487
+ timeoutMS: 0
2488
+ useMultipleMongoses: false
2489
+ observeEvents:
2490
+ - commandStartedEvent
2491
+ ignoreCommandMonitoringEvents:
2492
+ - killCursors
2493
+ - database:
2494
+ id: &database database
2495
+ client: *client
2496
+ databaseName: *databaseName
2497
+ - collection:
2498
+ id: &collection collection
2499
+ database: *database
2500
+ collectionName: *collectionName
2501
+ - name: failPoint
2502
+ object: testRunner
2503
+ arguments:
2504
+ client: *failPointClient
2505
+ failPoint:
2506
+ configureFailPoint: failCommand
2507
+ mode: { times: 1 }
2508
+ data:
2509
+ failCommands: ["update"]
2510
+ blockConnection: true
2511
+ blockTimeMS: 15
2512
+ - name: updateMany
2513
+ object: *collection
2514
+ arguments:
2515
+ filter: {}
2516
+ update: { $set: { x: 1 } }
2517
+
2518
+
2519
+ expectEvents:
2520
+ - client: *client
2521
+ events:
2522
+ - commandStartedEvent:
2523
+ commandName: update
2524
+ databaseName: *databaseName
2525
+ command:
2526
+ update: *collectionName
2527
+ maxTimeMS: { $$exists: false }
2528
+ - description: "timeoutMS can be configured on a MongoClient - findOneAndDelete on collection"
2529
+ operations:
2530
+ - name: createEntities
2531
+ object: testRunner
2532
+ arguments:
2533
+ entities:
2534
+ - client:
2535
+ id: &client client
2536
+ uriOptions:
2537
+ timeoutMS: 250
2538
+ useMultipleMongoses: false
2539
+ observeEvents:
2540
+ - commandStartedEvent
2541
+ - database:
2542
+ id: &database database
2543
+ client: *client
2544
+ databaseName: *databaseName
2545
+ - collection:
2546
+ id: &collection collection
2547
+ database: *database
2548
+ collectionName: *collectionName
2549
+ - name: failPoint
2550
+ object: testRunner
2551
+ arguments:
2552
+ client: *failPointClient
2553
+ failPoint:
2554
+ configureFailPoint: failCommand
2555
+ # Use "times: 2" to workaround a quirk in Python on Windows where
2556
+ # socket I/O can timeout ~20ms earlier than expected. With
2557
+ # "times: 1" the retry would succeed within the remaining ~20ms.
2558
+ mode: { times: 2 }
2559
+ data:
2560
+ failCommands: ["findAndModify"]
2561
+ blockConnection: true
2562
+ blockTimeMS: 350
2563
+ - name: findOneAndDelete
2564
+ object: *collection
2565
+ arguments:
2566
+ filter: {}
2567
+
2568
+ expectError:
2569
+ isTimeoutError: true
2570
+ expectEvents:
2571
+ - client: *client
2572
+ events:
2573
+ - commandStartedEvent:
2574
+ commandName: findAndModify
2575
+ databaseName: *databaseName
2576
+ command:
2577
+ findAndModify: *collectionName
2578
+ maxTimeMS: { $$type: ["int", "long"] }
2579
+ - description: "timeoutMS can be set to 0 on a MongoClient - findOneAndDelete on collection"
2580
+ operations:
2581
+ - name: createEntities
2582
+ object: testRunner
2583
+ arguments:
2584
+ entities:
2585
+ - client:
2586
+ id: &client client
2587
+ uriOptions:
2588
+ timeoutMS: 0
2589
+ useMultipleMongoses: false
2590
+ observeEvents:
2591
+ - commandStartedEvent
2592
+ ignoreCommandMonitoringEvents:
2593
+ - killCursors
2594
+ - database:
2595
+ id: &database database
2596
+ client: *client
2597
+ databaseName: *databaseName
2598
+ - collection:
2599
+ id: &collection collection
2600
+ database: *database
2601
+ collectionName: *collectionName
2602
+ - name: failPoint
2603
+ object: testRunner
2604
+ arguments:
2605
+ client: *failPointClient
2606
+ failPoint:
2607
+ configureFailPoint: failCommand
2608
+ mode: { times: 1 }
2609
+ data:
2610
+ failCommands: ["findAndModify"]
2611
+ blockConnection: true
2612
+ blockTimeMS: 15
2613
+ - name: findOneAndDelete
2614
+ object: *collection
2615
+ arguments:
2616
+ filter: {}
2617
+
2618
+
2619
+ expectEvents:
2620
+ - client: *client
2621
+ events:
2622
+ - commandStartedEvent:
2623
+ commandName: findAndModify
2624
+ databaseName: *databaseName
2625
+ command:
2626
+ findAndModify: *collectionName
2627
+ maxTimeMS: { $$exists: false }
2628
+ - description: "timeoutMS can be configured on a MongoClient - findOneAndReplace on collection"
2629
+ operations:
2630
+ - name: createEntities
2631
+ object: testRunner
2632
+ arguments:
2633
+ entities:
2634
+ - client:
2635
+ id: &client client
2636
+ uriOptions:
2637
+ timeoutMS: 250
2638
+ useMultipleMongoses: false
2639
+ observeEvents:
2640
+ - commandStartedEvent
2641
+ - database:
2642
+ id: &database database
2643
+ client: *client
2644
+ databaseName: *databaseName
2645
+ - collection:
2646
+ id: &collection collection
2647
+ database: *database
2648
+ collectionName: *collectionName
2649
+ - name: failPoint
2650
+ object: testRunner
2651
+ arguments:
2652
+ client: *failPointClient
2653
+ failPoint:
2654
+ configureFailPoint: failCommand
2655
+ # Use "times: 2" to workaround a quirk in Python on Windows where
2656
+ # socket I/O can timeout ~20ms earlier than expected. With
2657
+ # "times: 1" the retry would succeed within the remaining ~20ms.
2658
+ mode: { times: 2 }
2659
+ data:
2660
+ failCommands: ["findAndModify"]
2661
+ blockConnection: true
2662
+ blockTimeMS: 350
2663
+ - name: findOneAndReplace
2664
+ object: *collection
2665
+ arguments:
2666
+ filter: {}
2667
+ replacement: { x: 1 }
2668
+
2669
+ expectError:
2670
+ isTimeoutError: true
2671
+ expectEvents:
2672
+ - client: *client
2673
+ events:
2674
+ - commandStartedEvent:
2675
+ commandName: findAndModify
2676
+ databaseName: *databaseName
2677
+ command:
2678
+ findAndModify: *collectionName
2679
+ maxTimeMS: { $$type: ["int", "long"] }
2680
+ - description: "timeoutMS can be set to 0 on a MongoClient - findOneAndReplace on collection"
2681
+ operations:
2682
+ - name: createEntities
2683
+ object: testRunner
2684
+ arguments:
2685
+ entities:
2686
+ - client:
2687
+ id: &client client
2688
+ uriOptions:
2689
+ timeoutMS: 0
2690
+ useMultipleMongoses: false
2691
+ observeEvents:
2692
+ - commandStartedEvent
2693
+ ignoreCommandMonitoringEvents:
2694
+ - killCursors
2695
+ - database:
2696
+ id: &database database
2697
+ client: *client
2698
+ databaseName: *databaseName
2699
+ - collection:
2700
+ id: &collection collection
2701
+ database: *database
2702
+ collectionName: *collectionName
2703
+ - name: failPoint
2704
+ object: testRunner
2705
+ arguments:
2706
+ client: *failPointClient
2707
+ failPoint:
2708
+ configureFailPoint: failCommand
2709
+ mode: { times: 1 }
2710
+ data:
2711
+ failCommands: ["findAndModify"]
2712
+ blockConnection: true
2713
+ blockTimeMS: 15
2714
+ - name: findOneAndReplace
2715
+ object: *collection
2716
+ arguments:
2717
+ filter: {}
2718
+ replacement: { x: 1 }
2719
+
2720
+
2721
+ expectEvents:
2722
+ - client: *client
2723
+ events:
2724
+ - commandStartedEvent:
2725
+ commandName: findAndModify
2726
+ databaseName: *databaseName
2727
+ command:
2728
+ findAndModify: *collectionName
2729
+ maxTimeMS: { $$exists: false }
2730
+ - description: "timeoutMS can be configured on a MongoClient - findOneAndUpdate on collection"
2731
+ operations:
2732
+ - name: createEntities
2733
+ object: testRunner
2734
+ arguments:
2735
+ entities:
2736
+ - client:
2737
+ id: &client client
2738
+ uriOptions:
2739
+ timeoutMS: 250
2740
+ useMultipleMongoses: false
2741
+ observeEvents:
2742
+ - commandStartedEvent
2743
+ - database:
2744
+ id: &database database
2745
+ client: *client
2746
+ databaseName: *databaseName
2747
+ - collection:
2748
+ id: &collection collection
2749
+ database: *database
2750
+ collectionName: *collectionName
2751
+ - name: failPoint
2752
+ object: testRunner
2753
+ arguments:
2754
+ client: *failPointClient
2755
+ failPoint:
2756
+ configureFailPoint: failCommand
2757
+ # Use "times: 2" to workaround a quirk in Python on Windows where
2758
+ # socket I/O can timeout ~20ms earlier than expected. With
2759
+ # "times: 1" the retry would succeed within the remaining ~20ms.
2760
+ mode: { times: 2 }
2761
+ data:
2762
+ failCommands: ["findAndModify"]
2763
+ blockConnection: true
2764
+ blockTimeMS: 350
2765
+ - name: findOneAndUpdate
2766
+ object: *collection
2767
+ arguments:
2768
+ filter: {}
2769
+ update: { $set: { x: 1 } }
2770
+
2771
+ expectError:
2772
+ isTimeoutError: true
2773
+ expectEvents:
2774
+ - client: *client
2775
+ events:
2776
+ - commandStartedEvent:
2777
+ commandName: findAndModify
2778
+ databaseName: *databaseName
2779
+ command:
2780
+ findAndModify: *collectionName
2781
+ maxTimeMS: { $$type: ["int", "long"] }
2782
+ - description: "timeoutMS can be set to 0 on a MongoClient - findOneAndUpdate on collection"
2783
+ operations:
2784
+ - name: createEntities
2785
+ object: testRunner
2786
+ arguments:
2787
+ entities:
2788
+ - client:
2789
+ id: &client client
2790
+ uriOptions:
2791
+ timeoutMS: 0
2792
+ useMultipleMongoses: false
2793
+ observeEvents:
2794
+ - commandStartedEvent
2795
+ ignoreCommandMonitoringEvents:
2796
+ - killCursors
2797
+ - database:
2798
+ id: &database database
2799
+ client: *client
2800
+ databaseName: *databaseName
2801
+ - collection:
2802
+ id: &collection collection
2803
+ database: *database
2804
+ collectionName: *collectionName
2805
+ - name: failPoint
2806
+ object: testRunner
2807
+ arguments:
2808
+ client: *failPointClient
2809
+ failPoint:
2810
+ configureFailPoint: failCommand
2811
+ mode: { times: 1 }
2812
+ data:
2813
+ failCommands: ["findAndModify"]
2814
+ blockConnection: true
2815
+ blockTimeMS: 15
2816
+ - name: findOneAndUpdate
2817
+ object: *collection
2818
+ arguments:
2819
+ filter: {}
2820
+ update: { $set: { x: 1 } }
2821
+
2822
+
2823
+ expectEvents:
2824
+ - client: *client
2825
+ events:
2826
+ - commandStartedEvent:
2827
+ commandName: findAndModify
2828
+ databaseName: *databaseName
2829
+ command:
2830
+ findAndModify: *collectionName
2831
+ maxTimeMS: { $$exists: false }
2832
+ - description: "timeoutMS can be configured on a MongoClient - bulkWrite on collection"
2833
+ operations:
2834
+ - name: createEntities
2835
+ object: testRunner
2836
+ arguments:
2837
+ entities:
2838
+ - client:
2839
+ id: &client client
2840
+ uriOptions:
2841
+ timeoutMS: 250
2842
+ useMultipleMongoses: false
2843
+ observeEvents:
2844
+ - commandStartedEvent
2845
+ - database:
2846
+ id: &database database
2847
+ client: *client
2848
+ databaseName: *databaseName
2849
+ - collection:
2850
+ id: &collection collection
2851
+ database: *database
2852
+ collectionName: *collectionName
2853
+ - name: failPoint
2854
+ object: testRunner
2855
+ arguments:
2856
+ client: *failPointClient
2857
+ failPoint:
2858
+ configureFailPoint: failCommand
2859
+ # Use "times: 2" to workaround a quirk in Python on Windows where
2860
+ # socket I/O can timeout ~20ms earlier than expected. With
2861
+ # "times: 1" the retry would succeed within the remaining ~20ms.
2862
+ mode: { times: 2 }
2863
+ data:
2864
+ failCommands: ["insert"]
2865
+ blockConnection: true
2866
+ blockTimeMS: 350
2867
+ - name: bulkWrite
2868
+ object: *collection
2869
+ arguments:
2870
+ requests:
2871
+ - insertOne:
2872
+ document: { _id: 1 }
2873
+
2874
+ expectError:
2875
+ isTimeoutError: true
2876
+ expectEvents:
2877
+ - client: *client
2878
+ events:
2879
+ - commandStartedEvent:
2880
+ commandName: insert
2881
+ databaseName: *databaseName
2882
+ command:
2883
+ insert: *collectionName
2884
+ maxTimeMS: { $$type: ["int", "long"] }
2885
+ - description: "timeoutMS can be set to 0 on a MongoClient - bulkWrite on collection"
2886
+ operations:
2887
+ - name: createEntities
2888
+ object: testRunner
2889
+ arguments:
2890
+ entities:
2891
+ - client:
2892
+ id: &client client
2893
+ uriOptions:
2894
+ timeoutMS: 0
2895
+ useMultipleMongoses: false
2896
+ observeEvents:
2897
+ - commandStartedEvent
2898
+ ignoreCommandMonitoringEvents:
2899
+ - killCursors
2900
+ - database:
2901
+ id: &database database
2902
+ client: *client
2903
+ databaseName: *databaseName
2904
+ - collection:
2905
+ id: &collection collection
2906
+ database: *database
2907
+ collectionName: *collectionName
2908
+ - name: failPoint
2909
+ object: testRunner
2910
+ arguments:
2911
+ client: *failPointClient
2912
+ failPoint:
2913
+ configureFailPoint: failCommand
2914
+ mode: { times: 1 }
2915
+ data:
2916
+ failCommands: ["insert"]
2917
+ blockConnection: true
2918
+ blockTimeMS: 15
2919
+ - name: bulkWrite
2920
+ object: *collection
2921
+ arguments:
2922
+ requests:
2923
+ - insertOne:
2924
+ document: { _id: 1 }
2925
+
2926
+
2927
+ expectEvents:
2928
+ - client: *client
2929
+ events:
2930
+ - commandStartedEvent:
2931
+ commandName: insert
2932
+ databaseName: *databaseName
2933
+ command:
2934
+ insert: *collectionName
2935
+ maxTimeMS: { $$exists: false }
2936
+ - description: "timeoutMS can be configured on a MongoClient - createIndex on collection"
2937
+ operations:
2938
+ - name: createEntities
2939
+ object: testRunner
2940
+ arguments:
2941
+ entities:
2942
+ - client:
2943
+ id: &client client
2944
+ uriOptions:
2945
+ timeoutMS: 250
2946
+ useMultipleMongoses: false
2947
+ observeEvents:
2948
+ - commandStartedEvent
2949
+ - database:
2950
+ id: &database database
2951
+ client: *client
2952
+ databaseName: *databaseName
2953
+ - collection:
2954
+ id: &collection collection
2955
+ database: *database
2956
+ collectionName: *collectionName
2957
+ - name: failPoint
2958
+ object: testRunner
2959
+ arguments:
2960
+ client: *failPointClient
2961
+ failPoint:
2962
+ configureFailPoint: failCommand
2963
+ # Use "times: 2" to workaround a quirk in Python on Windows where
2964
+ # socket I/O can timeout ~20ms earlier than expected. With
2965
+ # "times: 1" the retry would succeed within the remaining ~20ms.
2966
+ mode: { times: 2 }
2967
+ data:
2968
+ failCommands: ["createIndexes"]
2969
+ blockConnection: true
2970
+ blockTimeMS: 350
2971
+ - name: createIndex
2972
+ object: *collection
2973
+ arguments:
2974
+ keys: { x: 1 }
2975
+ name: "x_1"
2976
+
2977
+ expectError:
2978
+ isTimeoutError: true
2979
+ expectEvents:
2980
+ - client: *client
2981
+ events:
2982
+ - commandStartedEvent:
2983
+ commandName: createIndexes
2984
+ databaseName: *databaseName
2985
+ command:
2986
+ createIndexes: *collectionName
2987
+ maxTimeMS: { $$type: ["int", "long"] }
2988
+ - description: "timeoutMS can be set to 0 on a MongoClient - createIndex on collection"
2989
+ operations:
2990
+ - name: createEntities
2991
+ object: testRunner
2992
+ arguments:
2993
+ entities:
2994
+ - client:
2995
+ id: &client client
2996
+ uriOptions:
2997
+ timeoutMS: 0
2998
+ useMultipleMongoses: false
2999
+ observeEvents:
3000
+ - commandStartedEvent
3001
+ ignoreCommandMonitoringEvents:
3002
+ - killCursors
3003
+ - database:
3004
+ id: &database database
3005
+ client: *client
3006
+ databaseName: *databaseName
3007
+ - collection:
3008
+ id: &collection collection
3009
+ database: *database
3010
+ collectionName: *collectionName
3011
+ - name: failPoint
3012
+ object: testRunner
3013
+ arguments:
3014
+ client: *failPointClient
3015
+ failPoint:
3016
+ configureFailPoint: failCommand
3017
+ mode: { times: 1 }
3018
+ data:
3019
+ failCommands: ["createIndexes"]
3020
+ blockConnection: true
3021
+ blockTimeMS: 15
3022
+ - name: createIndex
3023
+ object: *collection
3024
+ arguments:
3025
+ keys: { x: 1 }
3026
+ name: "x_1"
3027
+
3028
+
3029
+ expectEvents:
3030
+ - client: *client
3031
+ events:
3032
+ - commandStartedEvent:
3033
+ commandName: createIndexes
3034
+ databaseName: *databaseName
3035
+ command:
3036
+ createIndexes: *collectionName
3037
+ maxTimeMS: { $$exists: false }
3038
+ - description: "timeoutMS can be configured on a MongoClient - dropIndex on collection"
3039
+ operations:
3040
+ - name: createEntities
3041
+ object: testRunner
3042
+ arguments:
3043
+ entities:
3044
+ - client:
3045
+ id: &client client
3046
+ uriOptions:
3047
+ timeoutMS: 250
3048
+ useMultipleMongoses: false
3049
+ observeEvents:
3050
+ - commandStartedEvent
3051
+ - database:
3052
+ id: &database database
3053
+ client: *client
3054
+ databaseName: *databaseName
3055
+ - collection:
3056
+ id: &collection collection
3057
+ database: *database
3058
+ collectionName: *collectionName
3059
+ - name: failPoint
3060
+ object: testRunner
3061
+ arguments:
3062
+ client: *failPointClient
3063
+ failPoint:
3064
+ configureFailPoint: failCommand
3065
+ # Use "times: 2" to workaround a quirk in Python on Windows where
3066
+ # socket I/O can timeout ~20ms earlier than expected. With
3067
+ # "times: 1" the retry would succeed within the remaining ~20ms.
3068
+ mode: { times: 2 }
3069
+ data:
3070
+ failCommands: ["dropIndexes"]
3071
+ blockConnection: true
3072
+ blockTimeMS: 350
3073
+ - name: dropIndex
3074
+ object: *collection
3075
+ arguments:
3076
+ name: "x_1"
3077
+
3078
+ expectError:
3079
+ isTimeoutError: true
3080
+ expectEvents:
3081
+ - client: *client
3082
+ events:
3083
+ - commandStartedEvent:
3084
+ commandName: dropIndexes
3085
+ databaseName: *databaseName
3086
+ command:
3087
+ dropIndexes: *collectionName
3088
+ maxTimeMS: { $$type: ["int", "long"] }
3089
+ - description: "timeoutMS can be set to 0 on a MongoClient - dropIndex on collection"
3090
+ operations:
3091
+ - name: createEntities
3092
+ object: testRunner
3093
+ arguments:
3094
+ entities:
3095
+ - client:
3096
+ id: &client client
3097
+ uriOptions:
3098
+ timeoutMS: 0
3099
+ useMultipleMongoses: false
3100
+ observeEvents:
3101
+ - commandStartedEvent
3102
+ ignoreCommandMonitoringEvents:
3103
+ - killCursors
3104
+ - database:
3105
+ id: &database database
3106
+ client: *client
3107
+ databaseName: *databaseName
3108
+ - collection:
3109
+ id: &collection collection
3110
+ database: *database
3111
+ collectionName: *collectionName
3112
+ - name: failPoint
3113
+ object: testRunner
3114
+ arguments:
3115
+ client: *failPointClient
3116
+ failPoint:
3117
+ configureFailPoint: failCommand
3118
+ mode: { times: 1 }
3119
+ data:
3120
+ failCommands: ["dropIndexes"]
3121
+ blockConnection: true
3122
+ blockTimeMS: 15
3123
+ - name: dropIndex
3124
+ object: *collection
3125
+ arguments:
3126
+ name: "x_1"
3127
+
3128
+ expectError:
3129
+ isClientError: false
3130
+ isTimeoutError: false
3131
+ expectEvents:
3132
+ - client: *client
3133
+ events:
3134
+ - commandStartedEvent:
3135
+ commandName: dropIndexes
3136
+ databaseName: *databaseName
3137
+ command:
3138
+ dropIndexes: *collectionName
3139
+ maxTimeMS: { $$exists: false }
3140
+ - description: "timeoutMS can be configured on a MongoClient - dropIndexes on collection"
3141
+ operations:
3142
+ - name: createEntities
3143
+ object: testRunner
3144
+ arguments:
3145
+ entities:
3146
+ - client:
3147
+ id: &client client
3148
+ uriOptions:
3149
+ timeoutMS: 250
3150
+ useMultipleMongoses: false
3151
+ observeEvents:
3152
+ - commandStartedEvent
3153
+ - database:
3154
+ id: &database database
3155
+ client: *client
3156
+ databaseName: *databaseName
3157
+ - collection:
3158
+ id: &collection collection
3159
+ database: *database
3160
+ collectionName: *collectionName
3161
+ - name: failPoint
3162
+ object: testRunner
3163
+ arguments:
3164
+ client: *failPointClient
3165
+ failPoint:
3166
+ configureFailPoint: failCommand
3167
+ # Use "times: 2" to workaround a quirk in Python on Windows where
3168
+ # socket I/O can timeout ~20ms earlier than expected. With
3169
+ # "times: 1" the retry would succeed within the remaining ~20ms.
3170
+ mode: { times: 2 }
3171
+ data:
3172
+ failCommands: ["dropIndexes"]
3173
+ blockConnection: true
3174
+ blockTimeMS: 350
3175
+ - name: dropIndexes
3176
+ object: *collection
3177
+
3178
+ expectError:
3179
+ isTimeoutError: true
3180
+ expectEvents:
3181
+ - client: *client
3182
+ events:
3183
+ - commandStartedEvent:
3184
+ commandName: dropIndexes
3185
+ databaseName: *databaseName
3186
+ command:
3187
+ dropIndexes: *collectionName
3188
+ maxTimeMS: { $$type: ["int", "long"] }
3189
+ - description: "timeoutMS can be set to 0 on a MongoClient - dropIndexes on collection"
3190
+ operations:
3191
+ - name: createEntities
3192
+ object: testRunner
3193
+ arguments:
3194
+ entities:
3195
+ - client:
3196
+ id: &client client
3197
+ uriOptions:
3198
+ timeoutMS: 0
3199
+ useMultipleMongoses: false
3200
+ observeEvents:
3201
+ - commandStartedEvent
3202
+ ignoreCommandMonitoringEvents:
3203
+ - killCursors
3204
+ - database:
3205
+ id: &database database
3206
+ client: *client
3207
+ databaseName: *databaseName
3208
+ - collection:
3209
+ id: &collection collection
3210
+ database: *database
3211
+ collectionName: *collectionName
3212
+ - name: failPoint
3213
+ object: testRunner
3214
+ arguments:
3215
+ client: *failPointClient
3216
+ failPoint:
3217
+ configureFailPoint: failCommand
3218
+ mode: { times: 1 }
3219
+ data:
3220
+ failCommands: ["dropIndexes"]
3221
+ blockConnection: true
3222
+ blockTimeMS: 15
3223
+ - name: dropIndexes
3224
+ object: *collection
3225
+
3226
+
3227
+ expectEvents:
3228
+ - client: *client
3229
+ events:
3230
+ - commandStartedEvent:
3231
+ commandName: dropIndexes
3232
+ databaseName: *databaseName
3233
+ command:
3234
+ dropIndexes: *collectionName
3235
+ maxTimeMS: { $$exists: false }
3236
+