mongo 2.20.1 → 2.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (246) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -0
  3. data/Rakefile +2 -2
  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/crypt/auto_encrypter.rb +4 -6
  25. data/lib/mongo/crypt/binding.rb +4 -4
  26. data/lib/mongo/crypt/context.rb +20 -14
  27. data/lib/mongo/crypt/encryption_io.rb +56 -26
  28. data/lib/mongo/crypt/explicit_encrypter.rb +49 -20
  29. data/lib/mongo/crypt/explicit_encryption_context.rb +17 -11
  30. data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +22 -6
  31. data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +29 -4
  32. data/lib/mongo/csot_timeout_holder.rb +119 -0
  33. data/lib/mongo/cursor/kill_spec.rb +5 -2
  34. data/lib/mongo/cursor/nontailable.rb +27 -0
  35. data/lib/mongo/cursor.rb +86 -24
  36. data/lib/mongo/cursor_host.rb +82 -0
  37. data/lib/mongo/database/view.rb +81 -14
  38. data/lib/mongo/database.rb +88 -18
  39. data/lib/mongo/error/operation_failure.rb +209 -204
  40. data/lib/mongo/error/server_timeout_error.rb +12 -0
  41. data/lib/mongo/error/socket_timeout_error.rb +3 -1
  42. data/lib/mongo/error/timeout_error.rb +23 -0
  43. data/lib/mongo/error.rb +2 -0
  44. data/lib/mongo/grid/fs_bucket.rb +45 -12
  45. data/lib/mongo/grid/stream/read.rb +15 -1
  46. data/lib/mongo/grid/stream/write.rb +21 -4
  47. data/lib/mongo/index/view.rb +77 -16
  48. data/lib/mongo/operation/context.rb +40 -2
  49. data/lib/mongo/operation/create_search_indexes/op_msg.rb +2 -2
  50. data/lib/mongo/operation/delete/op_msg.rb +2 -1
  51. data/lib/mongo/operation/drop_search_index/op_msg.rb +2 -2
  52. data/lib/mongo/operation/find/op_msg.rb +45 -0
  53. data/lib/mongo/operation/get_more/op_msg.rb +33 -0
  54. data/lib/mongo/operation/insert/op_msg.rb +3 -2
  55. data/lib/mongo/operation/insert/result.rb +4 -2
  56. data/lib/mongo/operation/list_collections/result.rb +1 -1
  57. data/lib/mongo/operation/map_reduce/result.rb +1 -1
  58. data/lib/mongo/operation/op_msg_base.rb +3 -1
  59. data/lib/mongo/operation/result.rb +26 -5
  60. data/lib/mongo/operation/shared/executable.rb +12 -1
  61. data/lib/mongo/operation/shared/op_msg_executable.rb +4 -1
  62. data/lib/mongo/operation/shared/response_handling.rb +3 -3
  63. data/lib/mongo/operation/shared/sessions_supported.rb +1 -1
  64. data/lib/mongo/operation/shared/timed.rb +52 -0
  65. data/lib/mongo/operation/shared/write.rb +4 -1
  66. data/lib/mongo/operation/update/op_msg.rb +2 -1
  67. data/lib/mongo/operation/update_search_index/op_msg.rb +2 -2
  68. data/lib/mongo/operation.rb +1 -0
  69. data/lib/mongo/protocol/message.rb +1 -4
  70. data/lib/mongo/protocol/msg.rb +2 -2
  71. data/lib/mongo/retryable/read_worker.rb +69 -29
  72. data/lib/mongo/retryable/write_worker.rb +49 -18
  73. data/lib/mongo/retryable.rb +8 -2
  74. data/lib/mongo/server/connection.rb +11 -5
  75. data/lib/mongo/server/connection_base.rb +22 -2
  76. data/lib/mongo/server/connection_pool.rb +32 -14
  77. data/lib/mongo/server/description/features.rb +1 -1
  78. data/lib/mongo/server/description.rb +18 -5
  79. data/lib/mongo/server/monitor.rb +7 -4
  80. data/lib/mongo/server/pending_connection.rb +7 -3
  81. data/lib/mongo/server/{round_trip_time_averager.rb → round_trip_time_calculator.rb} +25 -7
  82. data/lib/mongo/server.rb +11 -6
  83. data/lib/mongo/server_selector/base.rb +25 -9
  84. data/lib/mongo/session.rb +78 -9
  85. data/lib/mongo/socket/ssl.rb +109 -17
  86. data/lib/mongo/socket/tcp.rb +40 -6
  87. data/lib/mongo/socket.rb +154 -25
  88. data/lib/mongo/uri/options_mapper.rb +1 -0
  89. data/lib/mongo/version.rb +1 -1
  90. data/lib/mongo.rb +1 -0
  91. data/spec/atlas/atlas_connectivity_spec.rb +4 -0
  92. data/spec/atlas/operations_spec.rb +4 -0
  93. data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +2 -1
  94. data/spec/integration/client_side_encryption/auto_encryption_spec.rb +494 -487
  95. data/spec/integration/client_side_encryption/on_demand_aws_credentials_spec.rb +1 -1
  96. data/spec/integration/client_side_encryption/range_explicit_encryption_prose_spec.rb +66 -22
  97. data/spec/integration/client_side_operations_timeout/encryption_prose_spec.rb +131 -0
  98. data/spec/integration/connection_pool_populator_spec.rb +2 -0
  99. data/spec/integration/cursor_pinning_spec.rb +15 -60
  100. data/spec/integration/cursor_reaping_spec.rb +1 -1
  101. data/spec/integration/docs_examples_spec.rb +1 -1
  102. data/spec/integration/operation_failure_code_spec.rb +1 -1
  103. data/spec/integration/operation_failure_message_spec.rb +3 -3
  104. data/spec/integration/retryable_errors_spec.rb +2 -2
  105. data/spec/integration/sdam_error_handling_spec.rb +2 -1
  106. data/spec/integration/search_indexes_prose_spec.rb +4 -0
  107. data/spec/integration/server_spec.rb +4 -3
  108. data/spec/integration/transactions_api_examples_spec.rb +2 -0
  109. data/spec/kerberos/kerberos_spec.rb +4 -0
  110. data/spec/lite_spec_helper.rb +3 -1
  111. data/spec/mongo/auth/user/view_spec.rb +1 -1
  112. data/spec/mongo/caching_cursor_spec.rb +1 -1
  113. data/spec/mongo/client_encryption_spec.rb +1 -0
  114. data/spec/mongo/client_spec.rb +158 -4
  115. data/spec/mongo/collection/view/aggregation_spec.rb +14 -39
  116. data/spec/mongo/collection/view/change_stream_spec.rb +3 -3
  117. data/spec/mongo/collection_spec.rb +5 -6
  118. data/spec/mongo/crypt/auto_encrypter_spec.rb +14 -12
  119. data/spec/mongo/crypt/data_key_context_spec.rb +3 -1
  120. data/spec/mongo/crypt/explicit_encryption_context_spec.rb +2 -2
  121. data/spec/mongo/crypt/handle_spec.rb +1 -1
  122. data/spec/mongo/cursor_spec.rb +26 -9
  123. data/spec/mongo/error/operation_failure_heavy_spec.rb +2 -2
  124. data/spec/mongo/operation/context_spec.rb +79 -0
  125. data/spec/mongo/operation/create/op_msg_spec.rb +106 -110
  126. data/spec/mongo/operation/delete/op_msg_spec.rb +6 -5
  127. data/spec/mongo/operation/find/op_msg_spec.rb +66 -0
  128. data/spec/mongo/operation/get_more/op_msg_spec.rb +65 -0
  129. data/spec/mongo/operation/insert/op_msg_spec.rb +128 -131
  130. data/spec/mongo/operation/shared/csot/examples.rb +113 -0
  131. data/spec/mongo/query_cache_spec.rb +243 -225
  132. data/spec/mongo/retryable_spec.rb +1 -0
  133. data/spec/mongo/server/round_trip_time_calculator_spec.rb +120 -0
  134. data/spec/mongo/socket/ssl_spec.rb +0 -10
  135. data/spec/runners/change_streams/test.rb +2 -2
  136. data/spec/runners/crud/operation.rb +1 -1
  137. data/spec/runners/crud/verifier.rb +3 -1
  138. data/spec/runners/transactions/operation.rb +4 -6
  139. data/spec/runners/unified/ambiguous_operations.rb +13 -0
  140. data/spec/runners/unified/assertions.rb +4 -0
  141. data/spec/runners/unified/change_stream_operations.rb +14 -24
  142. data/spec/runners/unified/crud_operations.rb +82 -59
  143. data/spec/runners/unified/ddl_operations.rb +38 -7
  144. data/spec/runners/unified/grid_fs_operations.rb +37 -2
  145. data/spec/runners/unified/support_operations.rb +43 -4
  146. data/spec/runners/unified/test.rb +22 -10
  147. data/spec/runners/unified.rb +1 -1
  148. data/spec/solo/clean_exit_spec.rb +2 -0
  149. data/spec/spec_tests/client_side_operations_timeout_spec.rb +15 -0
  150. data/spec/spec_tests/data/change_streams_unified/change-streams-clusterTime.yml +3 -1
  151. data/spec/spec_tests/data/change_streams_unified/change-streams-disambiguatedPaths.yml +3 -1
  152. data/spec/spec_tests/data/change_streams_unified/change-streams-errors.yml +3 -1
  153. data/spec/spec_tests/data/change_streams_unified/change-streams-pre_and_post_images.yml +1 -1
  154. data/spec/spec_tests/data/change_streams_unified/change-streams-resume-allowlist.yml +1 -1
  155. data/spec/spec_tests/data/change_streams_unified/change-streams-resume-errorLabels.yml +1 -1
  156. data/spec/spec_tests/data/change_streams_unified/change-streams-showExpandedEvents.yml +1 -1
  157. data/spec/spec_tests/data/client_side_encryption/badQueries.yml +2 -1
  158. data/spec/spec_tests/data/client_side_encryption/timeoutMS.yml +67 -0
  159. data/spec/spec_tests/data/client_side_operations_timeout/bulkWrite.yml +87 -0
  160. data/spec/spec_tests/data/client_side_operations_timeout/change-streams.yml +358 -0
  161. data/spec/spec_tests/data/client_side_operations_timeout/close-cursors.yml +129 -0
  162. data/spec/spec_tests/data/client_side_operations_timeout/command-execution.yml +250 -0
  163. data/spec/spec_tests/data/client_side_operations_timeout/convenient-transactions.yml +113 -0
  164. data/spec/spec_tests/data/client_side_operations_timeout/cursors.yml +70 -0
  165. data/spec/spec_tests/data/client_side_operations_timeout/deprecated-options.yml +3982 -0
  166. data/spec/spec_tests/data/client_side_operations_timeout/error-transformations.yml +96 -0
  167. data/spec/spec_tests/data/client_side_operations_timeout/global-timeoutMS.yml +3236 -0
  168. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-advanced.yml +207 -0
  169. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-delete.yml +152 -0
  170. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-download.yml +182 -0
  171. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-find.yml +100 -0
  172. data/spec/spec_tests/data/client_side_operations_timeout/gridfs-upload.yml +249 -0
  173. data/spec/spec_tests/data/client_side_operations_timeout/legacy-timeouts.yml +204 -0
  174. data/spec/spec_tests/data/client_side_operations_timeout/non-tailable-cursors.yml +307 -0
  175. data/spec/spec_tests/data/client_side_operations_timeout/override-collection-timeoutMS.yml +1877 -0
  176. data/spec/spec_tests/data/client_side_operations_timeout/override-operation-timeoutMS.yml +1918 -0
  177. data/spec/spec_tests/data/client_side_operations_timeout/retryability-legacy-timeouts.yml +1676 -0
  178. data/spec/spec_tests/data/client_side_operations_timeout/retryability-timeoutMS.yml +2824 -0
  179. data/spec/spec_tests/data/client_side_operations_timeout/sessions-inherit-timeoutMS.yml +168 -0
  180. data/spec/spec_tests/data/client_side_operations_timeout/sessions-override-operation-timeoutMS.yml +171 -0
  181. data/spec/spec_tests/data/client_side_operations_timeout/sessions-override-timeoutMS.yml +168 -0
  182. data/spec/spec_tests/data/client_side_operations_timeout/tailable-awaitData.yml +247 -0
  183. data/spec/spec_tests/data/client_side_operations_timeout/tailable-non-awaitData.yml +181 -0
  184. data/spec/spec_tests/data/crud_unified/aggregate-write-readPreference.yml +4 -0
  185. data/spec/spec_tests/data/crud_unified/db-aggregate-write-readPreference.yml +4 -0
  186. data/spec/spec_tests/data/crud_unified/find-test-all-options.yml +29 -0
  187. data/spec/spec_tests/server_selection_rtt_spec.rb +6 -6
  188. data/spec/support/certificates/atlas-ocsp-ca.crt +81 -83
  189. data/spec/support/certificates/atlas-ocsp.crt +107 -107
  190. data/spec/support/cluster_tools.rb +3 -3
  191. data/spec/support/common_shortcuts.rb +2 -2
  192. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Date.json +1 -1
  193. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalNoPrecision.json +1 -1
  194. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalPrecision.json +1 -1
  195. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoubleNoPrecision.json +1 -1
  196. data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoublePrecision.json +1 -1
  197. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Int.json +1 -1
  198. data/spec/support/crypt/encrypted_fields/range-encryptedFields-Long.json +1 -1
  199. data/spec/support/shared/session.rb +2 -2
  200. data/spec/support/spec_setup.rb +2 -2
  201. data/spec/support/utils.rb +3 -1
  202. metadata +78 -91
  203. data/spec/mongo/server/round_trip_time_averager_spec.rb +0 -48
  204. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Aggregate.yml +0 -242
  205. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Correctness.yml +0 -423
  206. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Delete.yml +0 -183
  207. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-FindOneAndUpdate.yml +0 -240
  208. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-InsertFind.yml +0 -236
  209. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Update.yml +0 -253
  210. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Aggregate.yml +0 -1688
  211. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Correctness.yml +0 -294
  212. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Delete.yml +0 -906
  213. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-FindOneAndUpdate.yml +0 -1685
  214. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-InsertFind.yml +0 -1681
  215. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Update.yml +0 -1698
  216. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Aggregate.yml +0 -330
  217. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Correctness.yml +0 -425
  218. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Delete.yml +0 -227
  219. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-FindOneAndUpdate.yml +0 -328
  220. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-InsertFind.yml +0 -320
  221. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Update.yml +0 -337
  222. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Aggregate.yml +0 -914
  223. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Correctness.yml +0 -293
  224. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Delete.yml +0 -519
  225. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-FindOneAndUpdate.yml +0 -912
  226. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-InsertFind.yml +0 -908
  227. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Update.yml +0 -925
  228. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Aggregate.yml +0 -326
  229. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Correctness.yml +0 -425
  230. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Delete.yml +0 -225
  231. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-FindOneAndUpdate.yml +0 -324
  232. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-InsertFind.yml +0 -320
  233. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Update.yml +0 -339
  234. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Aggregate.yml +0 -242
  235. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Correctness.yml +0 -424
  236. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Delete.yml +0 -183
  237. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-FindOneAndUpdate.yml +0 -240
  238. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-InsertFind.yml +0 -236
  239. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Update.yml +0 -255
  240. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Aggregate.yml +0 -242
  241. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Correctness.yml +0 -423
  242. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Delete.yml +0 -183
  243. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-FindOneAndUpdate.yml +0 -240
  244. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-InsertFind.yml +0 -236
  245. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Update.yml +0 -255
  246. data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-WrongType.yml +0 -44
@@ -0,0 +1,1676 @@
1
+ # Tests in this file are generated from retryability-legacy-timeouts.yml.template.
2
+
3
+ description: "legacy timeouts behave correctly for retryable operations"
4
+
5
+ schemaVersion: "1.9"
6
+
7
+ runOnRequirements:
8
+ - minServerVersion: "4.4"
9
+ topologies: ["replicaset", "sharded"]
10
+
11
+ createEntities:
12
+ - client:
13
+ id: &failPointClient failPointClient
14
+ useMultipleMongoses: false
15
+ - client:
16
+ id: &client client
17
+ uriOptions:
18
+ socketTimeoutMS: 100
19
+ useMultipleMongoses: false
20
+ observeEvents:
21
+ - commandStartedEvent
22
+ ignoreCommandMonitoringEvents:
23
+ - killCursors
24
+ - database:
25
+ id: &database database
26
+ client: *client
27
+ databaseName: &databaseName test
28
+ - collection:
29
+ id: &collection collection
30
+ database: *database
31
+ collectionName: &collectionName coll
32
+
33
+ initialData:
34
+ - collectionName: *collectionName
35
+ databaseName: *databaseName
36
+ documents: []
37
+
38
+ tests:
39
+ # For each retryable operation, run two tests:
40
+ #
41
+ # 1. Socket timeouts are retried once - Each test constructs a client entity with socketTimeoutMS=100, configures a
42
+ # fail point to block the operation once for 125ms, and expects the operation to succeed.
43
+ #
44
+ # 2. Operations fail after two consecutive socket timeouts - Same as (1) but the fail point is configured to block
45
+ # the operation twice and the test expects the operation to fail.
46
+
47
+ - description: "operation succeeds after one socket timeout - insertOne on collection"
48
+ operations:
49
+ - name: failPoint
50
+ object: testRunner
51
+ arguments:
52
+ client: *failPointClient
53
+ failPoint:
54
+ configureFailPoint: failCommand
55
+ mode: { times: 1 }
56
+ data:
57
+ failCommands: ["insert"]
58
+ blockConnection: true
59
+ blockTimeMS: 125
60
+ - name: insertOne
61
+ object: *collection
62
+ arguments:
63
+ document: { x: 1 }
64
+
65
+ expectEvents:
66
+ - client: *client
67
+ events:
68
+ - commandStartedEvent:
69
+ commandName: insert
70
+ databaseName: *databaseName
71
+ command:
72
+ insert: *collectionName
73
+ - commandStartedEvent:
74
+ commandName: insert
75
+ databaseName: *databaseName
76
+ command:
77
+ insert: *collectionName
78
+ - description: "operation fails after two consecutive socket timeouts - insertOne on collection"
79
+ operations:
80
+ - name: failPoint
81
+ object: testRunner
82
+ arguments:
83
+ client: *failPointClient
84
+ failPoint:
85
+ configureFailPoint: failCommand
86
+ mode: { times: 2 }
87
+ data:
88
+ failCommands: ["insert"]
89
+ blockConnection: true
90
+ blockTimeMS: 125
91
+ - name: insertOne
92
+ object: *collection
93
+ arguments:
94
+ document: { x: 1 }
95
+
96
+ expectError:
97
+ # Network errors are considered client errors by the unified test format spec.
98
+ isClientError: true
99
+ expectEvents:
100
+ - client: *client
101
+ events:
102
+ - commandStartedEvent:
103
+ commandName: insert
104
+ databaseName: *databaseName
105
+ command:
106
+ insert: *collectionName
107
+ - commandStartedEvent:
108
+ commandName: insert
109
+ databaseName: *databaseName
110
+ command:
111
+ insert: *collectionName
112
+ - description: "operation succeeds after one socket timeout - insertMany on collection"
113
+ operations:
114
+ - name: failPoint
115
+ object: testRunner
116
+ arguments:
117
+ client: *failPointClient
118
+ failPoint:
119
+ configureFailPoint: failCommand
120
+ mode: { times: 1 }
121
+ data:
122
+ failCommands: ["insert"]
123
+ blockConnection: true
124
+ blockTimeMS: 125
125
+ - name: insertMany
126
+ object: *collection
127
+ arguments:
128
+ documents:
129
+ - { x: 1 }
130
+
131
+ expectEvents:
132
+ - client: *client
133
+ events:
134
+ - commandStartedEvent:
135
+ commandName: insert
136
+ databaseName: *databaseName
137
+ command:
138
+ insert: *collectionName
139
+ - commandStartedEvent:
140
+ commandName: insert
141
+ databaseName: *databaseName
142
+ command:
143
+ insert: *collectionName
144
+ - description: "operation fails after two consecutive socket timeouts - insertMany on collection"
145
+ operations:
146
+ - name: failPoint
147
+ object: testRunner
148
+ arguments:
149
+ client: *failPointClient
150
+ failPoint:
151
+ configureFailPoint: failCommand
152
+ mode: { times: 2 }
153
+ data:
154
+ failCommands: ["insert"]
155
+ blockConnection: true
156
+ blockTimeMS: 125
157
+ - name: insertMany
158
+ object: *collection
159
+ arguments:
160
+ documents:
161
+ - { x: 1 }
162
+
163
+ expectError:
164
+ # Network errors are considered client errors by the unified test format spec.
165
+ isClientError: true
166
+ expectEvents:
167
+ - client: *client
168
+ events:
169
+ - commandStartedEvent:
170
+ commandName: insert
171
+ databaseName: *databaseName
172
+ command:
173
+ insert: *collectionName
174
+ - commandStartedEvent:
175
+ commandName: insert
176
+ databaseName: *databaseName
177
+ command:
178
+ insert: *collectionName
179
+ - description: "operation succeeds after one socket timeout - deleteOne on collection"
180
+ operations:
181
+ - name: failPoint
182
+ object: testRunner
183
+ arguments:
184
+ client: *failPointClient
185
+ failPoint:
186
+ configureFailPoint: failCommand
187
+ mode: { times: 1 }
188
+ data:
189
+ failCommands: ["delete"]
190
+ blockConnection: true
191
+ blockTimeMS: 125
192
+ - name: deleteOne
193
+ object: *collection
194
+ arguments:
195
+ filter: {}
196
+
197
+ expectEvents:
198
+ - client: *client
199
+ events:
200
+ - commandStartedEvent:
201
+ commandName: delete
202
+ databaseName: *databaseName
203
+ command:
204
+ delete: *collectionName
205
+ - commandStartedEvent:
206
+ commandName: delete
207
+ databaseName: *databaseName
208
+ command:
209
+ delete: *collectionName
210
+ - description: "operation fails after two consecutive socket timeouts - deleteOne on collection"
211
+ operations:
212
+ - name: failPoint
213
+ object: testRunner
214
+ arguments:
215
+ client: *failPointClient
216
+ failPoint:
217
+ configureFailPoint: failCommand
218
+ mode: { times: 2 }
219
+ data:
220
+ failCommands: ["delete"]
221
+ blockConnection: true
222
+ blockTimeMS: 125
223
+ - name: deleteOne
224
+ object: *collection
225
+ arguments:
226
+ filter: {}
227
+
228
+ expectError:
229
+ # Network errors are considered client errors by the unified test format spec.
230
+ isClientError: true
231
+ expectEvents:
232
+ - client: *client
233
+ events:
234
+ - commandStartedEvent:
235
+ commandName: delete
236
+ databaseName: *databaseName
237
+ command:
238
+ delete: *collectionName
239
+ - commandStartedEvent:
240
+ commandName: delete
241
+ databaseName: *databaseName
242
+ command:
243
+ delete: *collectionName
244
+ - description: "operation succeeds after one socket timeout - replaceOne on collection"
245
+ operations:
246
+ - name: failPoint
247
+ object: testRunner
248
+ arguments:
249
+ client: *failPointClient
250
+ failPoint:
251
+ configureFailPoint: failCommand
252
+ mode: { times: 1 }
253
+ data:
254
+ failCommands: ["update"]
255
+ blockConnection: true
256
+ blockTimeMS: 125
257
+ - name: replaceOne
258
+ object: *collection
259
+ arguments:
260
+ filter: {}
261
+ replacement: { x: 1 }
262
+
263
+ expectEvents:
264
+ - client: *client
265
+ events:
266
+ - commandStartedEvent:
267
+ commandName: update
268
+ databaseName: *databaseName
269
+ command:
270
+ update: *collectionName
271
+ - commandStartedEvent:
272
+ commandName: update
273
+ databaseName: *databaseName
274
+ command:
275
+ update: *collectionName
276
+ - description: "operation fails after two consecutive socket timeouts - replaceOne on collection"
277
+ operations:
278
+ - name: failPoint
279
+ object: testRunner
280
+ arguments:
281
+ client: *failPointClient
282
+ failPoint:
283
+ configureFailPoint: failCommand
284
+ mode: { times: 2 }
285
+ data:
286
+ failCommands: ["update"]
287
+ blockConnection: true
288
+ blockTimeMS: 125
289
+ - name: replaceOne
290
+ object: *collection
291
+ arguments:
292
+ filter: {}
293
+ replacement: { x: 1 }
294
+
295
+ expectError:
296
+ # Network errors are considered client errors by the unified test format spec.
297
+ isClientError: true
298
+ expectEvents:
299
+ - client: *client
300
+ events:
301
+ - commandStartedEvent:
302
+ commandName: update
303
+ databaseName: *databaseName
304
+ command:
305
+ update: *collectionName
306
+ - commandStartedEvent:
307
+ commandName: update
308
+ databaseName: *databaseName
309
+ command:
310
+ update: *collectionName
311
+ - description: "operation succeeds after one socket timeout - updateOne on collection"
312
+ operations:
313
+ - name: failPoint
314
+ object: testRunner
315
+ arguments:
316
+ client: *failPointClient
317
+ failPoint:
318
+ configureFailPoint: failCommand
319
+ mode: { times: 1 }
320
+ data:
321
+ failCommands: ["update"]
322
+ blockConnection: true
323
+ blockTimeMS: 125
324
+ - name: updateOne
325
+ object: *collection
326
+ arguments:
327
+ filter: {}
328
+ update: { $set: { x: 1 } }
329
+
330
+ expectEvents:
331
+ - client: *client
332
+ events:
333
+ - commandStartedEvent:
334
+ commandName: update
335
+ databaseName: *databaseName
336
+ command:
337
+ update: *collectionName
338
+ - commandStartedEvent:
339
+ commandName: update
340
+ databaseName: *databaseName
341
+ command:
342
+ update: *collectionName
343
+ - description: "operation fails after two consecutive socket timeouts - updateOne on collection"
344
+ operations:
345
+ - name: failPoint
346
+ object: testRunner
347
+ arguments:
348
+ client: *failPointClient
349
+ failPoint:
350
+ configureFailPoint: failCommand
351
+ mode: { times: 2 }
352
+ data:
353
+ failCommands: ["update"]
354
+ blockConnection: true
355
+ blockTimeMS: 125
356
+ - name: updateOne
357
+ object: *collection
358
+ arguments:
359
+ filter: {}
360
+ update: { $set: { x: 1 } }
361
+
362
+ expectError:
363
+ # Network errors are considered client errors by the unified test format spec.
364
+ isClientError: true
365
+ expectEvents:
366
+ - client: *client
367
+ events:
368
+ - commandStartedEvent:
369
+ commandName: update
370
+ databaseName: *databaseName
371
+ command:
372
+ update: *collectionName
373
+ - commandStartedEvent:
374
+ commandName: update
375
+ databaseName: *databaseName
376
+ command:
377
+ update: *collectionName
378
+ - description: "operation succeeds after one socket timeout - findOneAndDelete on collection"
379
+ operations:
380
+ - name: failPoint
381
+ object: testRunner
382
+ arguments:
383
+ client: *failPointClient
384
+ failPoint:
385
+ configureFailPoint: failCommand
386
+ mode: { times: 1 }
387
+ data:
388
+ failCommands: ["findAndModify"]
389
+ blockConnection: true
390
+ blockTimeMS: 125
391
+ - name: findOneAndDelete
392
+ object: *collection
393
+ arguments:
394
+ filter: {}
395
+
396
+ expectEvents:
397
+ - client: *client
398
+ events:
399
+ - commandStartedEvent:
400
+ commandName: findAndModify
401
+ databaseName: *databaseName
402
+ command:
403
+ findAndModify: *collectionName
404
+ - commandStartedEvent:
405
+ commandName: findAndModify
406
+ databaseName: *databaseName
407
+ command:
408
+ findAndModify: *collectionName
409
+ - description: "operation fails after two consecutive socket timeouts - findOneAndDelete on collection"
410
+ operations:
411
+ - name: failPoint
412
+ object: testRunner
413
+ arguments:
414
+ client: *failPointClient
415
+ failPoint:
416
+ configureFailPoint: failCommand
417
+ mode: { times: 2 }
418
+ data:
419
+ failCommands: ["findAndModify"]
420
+ blockConnection: true
421
+ blockTimeMS: 125
422
+ - name: findOneAndDelete
423
+ object: *collection
424
+ arguments:
425
+ filter: {}
426
+
427
+ expectError:
428
+ # Network errors are considered client errors by the unified test format spec.
429
+ isClientError: true
430
+ expectEvents:
431
+ - client: *client
432
+ events:
433
+ - commandStartedEvent:
434
+ commandName: findAndModify
435
+ databaseName: *databaseName
436
+ command:
437
+ findAndModify: *collectionName
438
+ - commandStartedEvent:
439
+ commandName: findAndModify
440
+ databaseName: *databaseName
441
+ command:
442
+ findAndModify: *collectionName
443
+ - description: "operation succeeds after one socket timeout - findOneAndReplace on collection"
444
+ operations:
445
+ - name: failPoint
446
+ object: testRunner
447
+ arguments:
448
+ client: *failPointClient
449
+ failPoint:
450
+ configureFailPoint: failCommand
451
+ mode: { times: 1 }
452
+ data:
453
+ failCommands: ["findAndModify"]
454
+ blockConnection: true
455
+ blockTimeMS: 125
456
+ - name: findOneAndReplace
457
+ object: *collection
458
+ arguments:
459
+ filter: {}
460
+ replacement: { x: 1 }
461
+
462
+ expectEvents:
463
+ - client: *client
464
+ events:
465
+ - commandStartedEvent:
466
+ commandName: findAndModify
467
+ databaseName: *databaseName
468
+ command:
469
+ findAndModify: *collectionName
470
+ - commandStartedEvent:
471
+ commandName: findAndModify
472
+ databaseName: *databaseName
473
+ command:
474
+ findAndModify: *collectionName
475
+ - description: "operation fails after two consecutive socket timeouts - findOneAndReplace on collection"
476
+ operations:
477
+ - name: failPoint
478
+ object: testRunner
479
+ arguments:
480
+ client: *failPointClient
481
+ failPoint:
482
+ configureFailPoint: failCommand
483
+ mode: { times: 2 }
484
+ data:
485
+ failCommands: ["findAndModify"]
486
+ blockConnection: true
487
+ blockTimeMS: 125
488
+ - name: findOneAndReplace
489
+ object: *collection
490
+ arguments:
491
+ filter: {}
492
+ replacement: { x: 1 }
493
+
494
+ expectError:
495
+ # Network errors are considered client errors by the unified test format spec.
496
+ isClientError: true
497
+ expectEvents:
498
+ - client: *client
499
+ events:
500
+ - commandStartedEvent:
501
+ commandName: findAndModify
502
+ databaseName: *databaseName
503
+ command:
504
+ findAndModify: *collectionName
505
+ - commandStartedEvent:
506
+ commandName: findAndModify
507
+ databaseName: *databaseName
508
+ command:
509
+ findAndModify: *collectionName
510
+ - description: "operation succeeds after one socket timeout - findOneAndUpdate on collection"
511
+ operations:
512
+ - name: failPoint
513
+ object: testRunner
514
+ arguments:
515
+ client: *failPointClient
516
+ failPoint:
517
+ configureFailPoint: failCommand
518
+ mode: { times: 1 }
519
+ data:
520
+ failCommands: ["findAndModify"]
521
+ blockConnection: true
522
+ blockTimeMS: 125
523
+ - name: findOneAndUpdate
524
+ object: *collection
525
+ arguments:
526
+ filter: {}
527
+ update: { $set: { x: 1 } }
528
+
529
+ expectEvents:
530
+ - client: *client
531
+ events:
532
+ - commandStartedEvent:
533
+ commandName: findAndModify
534
+ databaseName: *databaseName
535
+ command:
536
+ findAndModify: *collectionName
537
+ - commandStartedEvent:
538
+ commandName: findAndModify
539
+ databaseName: *databaseName
540
+ command:
541
+ findAndModify: *collectionName
542
+ - description: "operation fails after two consecutive socket timeouts - findOneAndUpdate on collection"
543
+ operations:
544
+ - name: failPoint
545
+ object: testRunner
546
+ arguments:
547
+ client: *failPointClient
548
+ failPoint:
549
+ configureFailPoint: failCommand
550
+ mode: { times: 2 }
551
+ data:
552
+ failCommands: ["findAndModify"]
553
+ blockConnection: true
554
+ blockTimeMS: 125
555
+ - name: findOneAndUpdate
556
+ object: *collection
557
+ arguments:
558
+ filter: {}
559
+ update: { $set: { x: 1 } }
560
+
561
+ expectError:
562
+ # Network errors are considered client errors by the unified test format spec.
563
+ isClientError: true
564
+ expectEvents:
565
+ - client: *client
566
+ events:
567
+ - commandStartedEvent:
568
+ commandName: findAndModify
569
+ databaseName: *databaseName
570
+ command:
571
+ findAndModify: *collectionName
572
+ - commandStartedEvent:
573
+ commandName: findAndModify
574
+ databaseName: *databaseName
575
+ command:
576
+ findAndModify: *collectionName
577
+ - description: "operation succeeds after one socket timeout - bulkWrite on collection"
578
+ operations:
579
+ - name: failPoint
580
+ object: testRunner
581
+ arguments:
582
+ client: *failPointClient
583
+ failPoint:
584
+ configureFailPoint: failCommand
585
+ mode: { times: 1 }
586
+ data:
587
+ failCommands: ["insert"]
588
+ blockConnection: true
589
+ blockTimeMS: 125
590
+ - name: bulkWrite
591
+ object: *collection
592
+ arguments:
593
+ requests:
594
+ - insertOne:
595
+ document: { _id: 1 }
596
+
597
+ expectEvents:
598
+ - client: *client
599
+ events:
600
+ - commandStartedEvent:
601
+ commandName: insert
602
+ databaseName: *databaseName
603
+ command:
604
+ insert: *collectionName
605
+ - commandStartedEvent:
606
+ commandName: insert
607
+ databaseName: *databaseName
608
+ command:
609
+ insert: *collectionName
610
+ - description: "operation fails after two consecutive socket timeouts - bulkWrite on collection"
611
+ operations:
612
+ - name: failPoint
613
+ object: testRunner
614
+ arguments:
615
+ client: *failPointClient
616
+ failPoint:
617
+ configureFailPoint: failCommand
618
+ mode: { times: 2 }
619
+ data:
620
+ failCommands: ["insert"]
621
+ blockConnection: true
622
+ blockTimeMS: 125
623
+ - name: bulkWrite
624
+ object: *collection
625
+ arguments:
626
+ requests:
627
+ - insertOne:
628
+ document: { _id: 1 }
629
+
630
+ expectError:
631
+ # Network errors are considered client errors by the unified test format spec.
632
+ isClientError: true
633
+ expectEvents:
634
+ - client: *client
635
+ events:
636
+ - commandStartedEvent:
637
+ commandName: insert
638
+ databaseName: *databaseName
639
+ command:
640
+ insert: *collectionName
641
+ - commandStartedEvent:
642
+ commandName: insert
643
+ databaseName: *databaseName
644
+ command:
645
+ insert: *collectionName
646
+ - description: "operation succeeds after one socket timeout - listDatabases on client"
647
+ operations:
648
+ - name: failPoint
649
+ object: testRunner
650
+ arguments:
651
+ client: *failPointClient
652
+ failPoint:
653
+ configureFailPoint: failCommand
654
+ mode: { times: 1 }
655
+ data:
656
+ failCommands: ["listDatabases"]
657
+ blockConnection: true
658
+ blockTimeMS: 125
659
+ - name: listDatabases
660
+ object: *client
661
+ arguments:
662
+ filter: {}
663
+
664
+ expectEvents:
665
+ - client: *client
666
+ events:
667
+ - commandStartedEvent:
668
+ commandName: listDatabases
669
+ databaseName: admin
670
+ command:
671
+ listDatabases: 1
672
+ - commandStartedEvent:
673
+ commandName: listDatabases
674
+ databaseName: admin
675
+ command:
676
+ listDatabases: 1
677
+ - description: "operation fails after two consecutive socket timeouts - listDatabases on client"
678
+ operations:
679
+ - name: failPoint
680
+ object: testRunner
681
+ arguments:
682
+ client: *failPointClient
683
+ failPoint:
684
+ configureFailPoint: failCommand
685
+ mode: { times: 2 }
686
+ data:
687
+ failCommands: ["listDatabases"]
688
+ blockConnection: true
689
+ blockTimeMS: 125
690
+ - name: listDatabases
691
+ object: *client
692
+ arguments:
693
+ filter: {}
694
+
695
+ expectError:
696
+ # Network errors are considered client errors by the unified test format spec.
697
+ isClientError: true
698
+ expectEvents:
699
+ - client: *client
700
+ events:
701
+ - commandStartedEvent:
702
+ commandName: listDatabases
703
+ databaseName: admin
704
+ command:
705
+ listDatabases: 1
706
+ - commandStartedEvent:
707
+ commandName: listDatabases
708
+ databaseName: admin
709
+ command:
710
+ listDatabases: 1
711
+ - description: "operation succeeds after one socket timeout - listDatabaseNames on client"
712
+ operations:
713
+ - name: failPoint
714
+ object: testRunner
715
+ arguments:
716
+ client: *failPointClient
717
+ failPoint:
718
+ configureFailPoint: failCommand
719
+ mode: { times: 1 }
720
+ data:
721
+ failCommands: ["listDatabases"]
722
+ blockConnection: true
723
+ blockTimeMS: 125
724
+ - name: listDatabaseNames
725
+ object: *client
726
+
727
+ expectEvents:
728
+ - client: *client
729
+ events:
730
+ - commandStartedEvent:
731
+ commandName: listDatabases
732
+ databaseName: admin
733
+ command:
734
+ listDatabases: 1
735
+ - commandStartedEvent:
736
+ commandName: listDatabases
737
+ databaseName: admin
738
+ command:
739
+ listDatabases: 1
740
+ - description: "operation fails after two consecutive socket timeouts - listDatabaseNames on client"
741
+ operations:
742
+ - name: failPoint
743
+ object: testRunner
744
+ arguments:
745
+ client: *failPointClient
746
+ failPoint:
747
+ configureFailPoint: failCommand
748
+ mode: { times: 2 }
749
+ data:
750
+ failCommands: ["listDatabases"]
751
+ blockConnection: true
752
+ blockTimeMS: 125
753
+ - name: listDatabaseNames
754
+ object: *client
755
+
756
+ expectError:
757
+ # Network errors are considered client errors by the unified test format spec.
758
+ isClientError: true
759
+ expectEvents:
760
+ - client: *client
761
+ events:
762
+ - commandStartedEvent:
763
+ commandName: listDatabases
764
+ databaseName: admin
765
+ command:
766
+ listDatabases: 1
767
+ - commandStartedEvent:
768
+ commandName: listDatabases
769
+ databaseName: admin
770
+ command:
771
+ listDatabases: 1
772
+ - description: "operation succeeds after one socket timeout - createChangeStream on client"
773
+ operations:
774
+ - name: failPoint
775
+ object: testRunner
776
+ arguments:
777
+ client: *failPointClient
778
+ failPoint:
779
+ configureFailPoint: failCommand
780
+ mode: { times: 1 }
781
+ data:
782
+ failCommands: ["aggregate"]
783
+ blockConnection: true
784
+ blockTimeMS: 125
785
+ - name: createChangeStream
786
+ object: *client
787
+ arguments:
788
+ pipeline: []
789
+
790
+ expectEvents:
791
+ - client: *client
792
+ events:
793
+ - commandStartedEvent:
794
+ commandName: aggregate
795
+ databaseName: admin
796
+ command:
797
+ aggregate: 1
798
+ - commandStartedEvent:
799
+ commandName: aggregate
800
+ databaseName: admin
801
+ command:
802
+ aggregate: 1
803
+ - description: "operation fails after two consecutive socket timeouts - createChangeStream on client"
804
+ operations:
805
+ - name: failPoint
806
+ object: testRunner
807
+ arguments:
808
+ client: *failPointClient
809
+ failPoint:
810
+ configureFailPoint: failCommand
811
+ mode: { times: 2 }
812
+ data:
813
+ failCommands: ["aggregate"]
814
+ blockConnection: true
815
+ blockTimeMS: 125
816
+ - name: createChangeStream
817
+ object: *client
818
+ arguments:
819
+ pipeline: []
820
+
821
+ expectError:
822
+ # Network errors are considered client errors by the unified test format spec.
823
+ isClientError: true
824
+ expectEvents:
825
+ - client: *client
826
+ events:
827
+ - commandStartedEvent:
828
+ commandName: aggregate
829
+ databaseName: admin
830
+ command:
831
+ aggregate: 1
832
+ - commandStartedEvent:
833
+ commandName: aggregate
834
+ databaseName: admin
835
+ command:
836
+ aggregate: 1
837
+ - description: "operation succeeds after one socket timeout - aggregate on database"
838
+ operations:
839
+ - name: failPoint
840
+ object: testRunner
841
+ arguments:
842
+ client: *failPointClient
843
+ failPoint:
844
+ configureFailPoint: failCommand
845
+ mode: { times: 1 }
846
+ data:
847
+ failCommands: ["aggregate"]
848
+ blockConnection: true
849
+ blockTimeMS: 125
850
+ - name: aggregate
851
+ object: *database
852
+ arguments:
853
+ pipeline: [ { $listLocalSessions: {} }, { $limit: 1 } ]
854
+
855
+ expectEvents:
856
+ - client: *client
857
+ events:
858
+ - commandStartedEvent:
859
+ commandName: aggregate
860
+ databaseName: *databaseName
861
+ command:
862
+ aggregate: 1
863
+ - commandStartedEvent:
864
+ commandName: aggregate
865
+ databaseName: *databaseName
866
+ command:
867
+ aggregate: 1
868
+ - description: "operation fails after two consecutive socket timeouts - aggregate on database"
869
+ operations:
870
+ - name: failPoint
871
+ object: testRunner
872
+ arguments:
873
+ client: *failPointClient
874
+ failPoint:
875
+ configureFailPoint: failCommand
876
+ mode: { times: 2 }
877
+ data:
878
+ failCommands: ["aggregate"]
879
+ blockConnection: true
880
+ blockTimeMS: 125
881
+ - name: aggregate
882
+ object: *database
883
+ arguments:
884
+ pipeline: [ { $listLocalSessions: {} }, { $limit: 1 } ]
885
+
886
+ expectError:
887
+ # Network errors are considered client errors by the unified test format spec.
888
+ isClientError: true
889
+ expectEvents:
890
+ - client: *client
891
+ events:
892
+ - commandStartedEvent:
893
+ commandName: aggregate
894
+ databaseName: *databaseName
895
+ command:
896
+ aggregate: 1
897
+ - commandStartedEvent:
898
+ commandName: aggregate
899
+ databaseName: *databaseName
900
+ command:
901
+ aggregate: 1
902
+ - description: "operation succeeds after one socket timeout - listCollections on database"
903
+ operations:
904
+ - name: failPoint
905
+ object: testRunner
906
+ arguments:
907
+ client: *failPointClient
908
+ failPoint:
909
+ configureFailPoint: failCommand
910
+ mode: { times: 1 }
911
+ data:
912
+ failCommands: ["listCollections"]
913
+ blockConnection: true
914
+ blockTimeMS: 125
915
+ - name: listCollections
916
+ object: *database
917
+ arguments:
918
+ filter: {}
919
+
920
+ expectEvents:
921
+ - client: *client
922
+ events:
923
+ - commandStartedEvent:
924
+ commandName: listCollections
925
+ databaseName: *databaseName
926
+ command:
927
+ listCollections: 1
928
+ - commandStartedEvent:
929
+ commandName: listCollections
930
+ databaseName: *databaseName
931
+ command:
932
+ listCollections: 1
933
+ - description: "operation fails after two consecutive socket timeouts - listCollections on database"
934
+ operations:
935
+ - name: failPoint
936
+ object: testRunner
937
+ arguments:
938
+ client: *failPointClient
939
+ failPoint:
940
+ configureFailPoint: failCommand
941
+ mode: { times: 2 }
942
+ data:
943
+ failCommands: ["listCollections"]
944
+ blockConnection: true
945
+ blockTimeMS: 125
946
+ - name: listCollections
947
+ object: *database
948
+ arguments:
949
+ filter: {}
950
+
951
+ expectError:
952
+ # Network errors are considered client errors by the unified test format spec.
953
+ isClientError: true
954
+ expectEvents:
955
+ - client: *client
956
+ events:
957
+ - commandStartedEvent:
958
+ commandName: listCollections
959
+ databaseName: *databaseName
960
+ command:
961
+ listCollections: 1
962
+ - commandStartedEvent:
963
+ commandName: listCollections
964
+ databaseName: *databaseName
965
+ command:
966
+ listCollections: 1
967
+ - description: "operation succeeds after one socket timeout - listCollectionNames on database"
968
+ operations:
969
+ - name: failPoint
970
+ object: testRunner
971
+ arguments:
972
+ client: *failPointClient
973
+ failPoint:
974
+ configureFailPoint: failCommand
975
+ mode: { times: 1 }
976
+ data:
977
+ failCommands: ["listCollections"]
978
+ blockConnection: true
979
+ blockTimeMS: 125
980
+ - name: listCollectionNames
981
+ object: *database
982
+ arguments:
983
+ filter: {}
984
+
985
+ expectEvents:
986
+ - client: *client
987
+ events:
988
+ - commandStartedEvent:
989
+ commandName: listCollections
990
+ databaseName: *databaseName
991
+ command:
992
+ listCollections: 1
993
+ - commandStartedEvent:
994
+ commandName: listCollections
995
+ databaseName: *databaseName
996
+ command:
997
+ listCollections: 1
998
+ - description: "operation fails after two consecutive socket timeouts - listCollectionNames on database"
999
+ operations:
1000
+ - name: failPoint
1001
+ object: testRunner
1002
+ arguments:
1003
+ client: *failPointClient
1004
+ failPoint:
1005
+ configureFailPoint: failCommand
1006
+ mode: { times: 2 }
1007
+ data:
1008
+ failCommands: ["listCollections"]
1009
+ blockConnection: true
1010
+ blockTimeMS: 125
1011
+ - name: listCollectionNames
1012
+ object: *database
1013
+ arguments:
1014
+ filter: {}
1015
+
1016
+ expectError:
1017
+ # Network errors are considered client errors by the unified test format spec.
1018
+ isClientError: true
1019
+ expectEvents:
1020
+ - client: *client
1021
+ events:
1022
+ - commandStartedEvent:
1023
+ commandName: listCollections
1024
+ databaseName: *databaseName
1025
+ command:
1026
+ listCollections: 1
1027
+ - commandStartedEvent:
1028
+ commandName: listCollections
1029
+ databaseName: *databaseName
1030
+ command:
1031
+ listCollections: 1
1032
+ - description: "operation succeeds after one socket timeout - createChangeStream on database"
1033
+ operations:
1034
+ - name: failPoint
1035
+ object: testRunner
1036
+ arguments:
1037
+ client: *failPointClient
1038
+ failPoint:
1039
+ configureFailPoint: failCommand
1040
+ mode: { times: 1 }
1041
+ data:
1042
+ failCommands: ["aggregate"]
1043
+ blockConnection: true
1044
+ blockTimeMS: 125
1045
+ - name: createChangeStream
1046
+ object: *database
1047
+ arguments:
1048
+ pipeline: []
1049
+
1050
+ expectEvents:
1051
+ - client: *client
1052
+ events:
1053
+ - commandStartedEvent:
1054
+ commandName: aggregate
1055
+ databaseName: *databaseName
1056
+ command:
1057
+ aggregate: 1
1058
+ - commandStartedEvent:
1059
+ commandName: aggregate
1060
+ databaseName: *databaseName
1061
+ command:
1062
+ aggregate: 1
1063
+ - description: "operation fails after two consecutive socket timeouts - createChangeStream on database"
1064
+ operations:
1065
+ - name: failPoint
1066
+ object: testRunner
1067
+ arguments:
1068
+ client: *failPointClient
1069
+ failPoint:
1070
+ configureFailPoint: failCommand
1071
+ mode: { times: 2 }
1072
+ data:
1073
+ failCommands: ["aggregate"]
1074
+ blockConnection: true
1075
+ blockTimeMS: 125
1076
+ - name: createChangeStream
1077
+ object: *database
1078
+ arguments:
1079
+ pipeline: []
1080
+
1081
+ expectError:
1082
+ # Network errors are considered client errors by the unified test format spec.
1083
+ isClientError: true
1084
+ expectEvents:
1085
+ - client: *client
1086
+ events:
1087
+ - commandStartedEvent:
1088
+ commandName: aggregate
1089
+ databaseName: *databaseName
1090
+ command:
1091
+ aggregate: 1
1092
+ - commandStartedEvent:
1093
+ commandName: aggregate
1094
+ databaseName: *databaseName
1095
+ command:
1096
+ aggregate: 1
1097
+ - description: "operation succeeds after one socket timeout - aggregate on collection"
1098
+ operations:
1099
+ - name: failPoint
1100
+ object: testRunner
1101
+ arguments:
1102
+ client: *failPointClient
1103
+ failPoint:
1104
+ configureFailPoint: failCommand
1105
+ mode: { times: 1 }
1106
+ data:
1107
+ failCommands: ["aggregate"]
1108
+ blockConnection: true
1109
+ blockTimeMS: 125
1110
+ - name: aggregate
1111
+ object: *collection
1112
+ arguments:
1113
+ pipeline: []
1114
+
1115
+ expectEvents:
1116
+ - client: *client
1117
+ events:
1118
+ - commandStartedEvent:
1119
+ commandName: aggregate
1120
+ databaseName: *databaseName
1121
+ command:
1122
+ aggregate: *collectionName
1123
+ - commandStartedEvent:
1124
+ commandName: aggregate
1125
+ databaseName: *databaseName
1126
+ command:
1127
+ aggregate: *collectionName
1128
+ - description: "operation fails after two consecutive socket timeouts - aggregate on collection"
1129
+ operations:
1130
+ - name: failPoint
1131
+ object: testRunner
1132
+ arguments:
1133
+ client: *failPointClient
1134
+ failPoint:
1135
+ configureFailPoint: failCommand
1136
+ mode: { times: 2 }
1137
+ data:
1138
+ failCommands: ["aggregate"]
1139
+ blockConnection: true
1140
+ blockTimeMS: 125
1141
+ - name: aggregate
1142
+ object: *collection
1143
+ arguments:
1144
+ pipeline: []
1145
+
1146
+ expectError:
1147
+ # Network errors are considered client errors by the unified test format spec.
1148
+ isClientError: true
1149
+ expectEvents:
1150
+ - client: *client
1151
+ events:
1152
+ - commandStartedEvent:
1153
+ commandName: aggregate
1154
+ databaseName: *databaseName
1155
+ command:
1156
+ aggregate: *collectionName
1157
+ - commandStartedEvent:
1158
+ commandName: aggregate
1159
+ databaseName: *databaseName
1160
+ command:
1161
+ aggregate: *collectionName
1162
+ - description: "operation succeeds after one socket timeout - count on collection"
1163
+ operations:
1164
+ - name: failPoint
1165
+ object: testRunner
1166
+ arguments:
1167
+ client: *failPointClient
1168
+ failPoint:
1169
+ configureFailPoint: failCommand
1170
+ mode: { times: 1 }
1171
+ data:
1172
+ failCommands: ["count"]
1173
+ blockConnection: true
1174
+ blockTimeMS: 125
1175
+ - name: count
1176
+ object: *collection
1177
+ arguments:
1178
+ filter: {}
1179
+
1180
+ expectEvents:
1181
+ - client: *client
1182
+ events:
1183
+ - commandStartedEvent:
1184
+ commandName: count
1185
+ databaseName: *databaseName
1186
+ command:
1187
+ count: *collectionName
1188
+ - commandStartedEvent:
1189
+ commandName: count
1190
+ databaseName: *databaseName
1191
+ command:
1192
+ count: *collectionName
1193
+ - description: "operation fails after two consecutive socket timeouts - count on collection"
1194
+ operations:
1195
+ - name: failPoint
1196
+ object: testRunner
1197
+ arguments:
1198
+ client: *failPointClient
1199
+ failPoint:
1200
+ configureFailPoint: failCommand
1201
+ mode: { times: 2 }
1202
+ data:
1203
+ failCommands: ["count"]
1204
+ blockConnection: true
1205
+ blockTimeMS: 125
1206
+ - name: count
1207
+ object: *collection
1208
+ arguments:
1209
+ filter: {}
1210
+
1211
+ expectError:
1212
+ # Network errors are considered client errors by the unified test format spec.
1213
+ isClientError: true
1214
+ expectEvents:
1215
+ - client: *client
1216
+ events:
1217
+ - commandStartedEvent:
1218
+ commandName: count
1219
+ databaseName: *databaseName
1220
+ command:
1221
+ count: *collectionName
1222
+ - commandStartedEvent:
1223
+ commandName: count
1224
+ databaseName: *databaseName
1225
+ command:
1226
+ count: *collectionName
1227
+ - description: "operation succeeds after one socket timeout - countDocuments on collection"
1228
+ operations:
1229
+ - name: failPoint
1230
+ object: testRunner
1231
+ arguments:
1232
+ client: *failPointClient
1233
+ failPoint:
1234
+ configureFailPoint: failCommand
1235
+ mode: { times: 1 }
1236
+ data:
1237
+ failCommands: ["aggregate"]
1238
+ blockConnection: true
1239
+ blockTimeMS: 125
1240
+ - name: countDocuments
1241
+ object: *collection
1242
+ arguments:
1243
+ filter: {}
1244
+
1245
+ expectEvents:
1246
+ - client: *client
1247
+ events:
1248
+ - commandStartedEvent:
1249
+ commandName: aggregate
1250
+ databaseName: *databaseName
1251
+ command:
1252
+ aggregate: *collectionName
1253
+ - commandStartedEvent:
1254
+ commandName: aggregate
1255
+ databaseName: *databaseName
1256
+ command:
1257
+ aggregate: *collectionName
1258
+ - description: "operation fails after two consecutive socket timeouts - countDocuments on collection"
1259
+ operations:
1260
+ - name: failPoint
1261
+ object: testRunner
1262
+ arguments:
1263
+ client: *failPointClient
1264
+ failPoint:
1265
+ configureFailPoint: failCommand
1266
+ mode: { times: 2 }
1267
+ data:
1268
+ failCommands: ["aggregate"]
1269
+ blockConnection: true
1270
+ blockTimeMS: 125
1271
+ - name: countDocuments
1272
+ object: *collection
1273
+ arguments:
1274
+ filter: {}
1275
+
1276
+ expectError:
1277
+ # Network errors are considered client errors by the unified test format spec.
1278
+ isClientError: true
1279
+ expectEvents:
1280
+ - client: *client
1281
+ events:
1282
+ - commandStartedEvent:
1283
+ commandName: aggregate
1284
+ databaseName: *databaseName
1285
+ command:
1286
+ aggregate: *collectionName
1287
+ - commandStartedEvent:
1288
+ commandName: aggregate
1289
+ databaseName: *databaseName
1290
+ command:
1291
+ aggregate: *collectionName
1292
+ - description: "operation succeeds after one socket timeout - estimatedDocumentCount on collection"
1293
+ operations:
1294
+ - name: failPoint
1295
+ object: testRunner
1296
+ arguments:
1297
+ client: *failPointClient
1298
+ failPoint:
1299
+ configureFailPoint: failCommand
1300
+ mode: { times: 1 }
1301
+ data:
1302
+ failCommands: ["count"]
1303
+ blockConnection: true
1304
+ blockTimeMS: 125
1305
+ - name: estimatedDocumentCount
1306
+ object: *collection
1307
+
1308
+ expectEvents:
1309
+ - client: *client
1310
+ events:
1311
+ - commandStartedEvent:
1312
+ commandName: count
1313
+ databaseName: *databaseName
1314
+ command:
1315
+ count: *collectionName
1316
+ - commandStartedEvent:
1317
+ commandName: count
1318
+ databaseName: *databaseName
1319
+ command:
1320
+ count: *collectionName
1321
+ - description: "operation fails after two consecutive socket timeouts - estimatedDocumentCount on collection"
1322
+ operations:
1323
+ - name: failPoint
1324
+ object: testRunner
1325
+ arguments:
1326
+ client: *failPointClient
1327
+ failPoint:
1328
+ configureFailPoint: failCommand
1329
+ mode: { times: 2 }
1330
+ data:
1331
+ failCommands: ["count"]
1332
+ blockConnection: true
1333
+ blockTimeMS: 125
1334
+ - name: estimatedDocumentCount
1335
+ object: *collection
1336
+
1337
+ expectError:
1338
+ # Network errors are considered client errors by the unified test format spec.
1339
+ isClientError: true
1340
+ expectEvents:
1341
+ - client: *client
1342
+ events:
1343
+ - commandStartedEvent:
1344
+ commandName: count
1345
+ databaseName: *databaseName
1346
+ command:
1347
+ count: *collectionName
1348
+ - commandStartedEvent:
1349
+ commandName: count
1350
+ databaseName: *databaseName
1351
+ command:
1352
+ count: *collectionName
1353
+ - description: "operation succeeds after one socket timeout - distinct on collection"
1354
+ operations:
1355
+ - name: failPoint
1356
+ object: testRunner
1357
+ arguments:
1358
+ client: *failPointClient
1359
+ failPoint:
1360
+ configureFailPoint: failCommand
1361
+ mode: { times: 1 }
1362
+ data:
1363
+ failCommands: ["distinct"]
1364
+ blockConnection: true
1365
+ blockTimeMS: 125
1366
+ - name: distinct
1367
+ object: *collection
1368
+ arguments:
1369
+ fieldName: x
1370
+ filter: {}
1371
+
1372
+ expectEvents:
1373
+ - client: *client
1374
+ events:
1375
+ - commandStartedEvent:
1376
+ commandName: distinct
1377
+ databaseName: *databaseName
1378
+ command:
1379
+ distinct: *collectionName
1380
+ - commandStartedEvent:
1381
+ commandName: distinct
1382
+ databaseName: *databaseName
1383
+ command:
1384
+ distinct: *collectionName
1385
+ - description: "operation fails after two consecutive socket timeouts - distinct on collection"
1386
+ operations:
1387
+ - name: failPoint
1388
+ object: testRunner
1389
+ arguments:
1390
+ client: *failPointClient
1391
+ failPoint:
1392
+ configureFailPoint: failCommand
1393
+ mode: { times: 2 }
1394
+ data:
1395
+ failCommands: ["distinct"]
1396
+ blockConnection: true
1397
+ blockTimeMS: 125
1398
+ - name: distinct
1399
+ object: *collection
1400
+ arguments:
1401
+ fieldName: x
1402
+ filter: {}
1403
+
1404
+ expectError:
1405
+ # Network errors are considered client errors by the unified test format spec.
1406
+ isClientError: true
1407
+ expectEvents:
1408
+ - client: *client
1409
+ events:
1410
+ - commandStartedEvent:
1411
+ commandName: distinct
1412
+ databaseName: *databaseName
1413
+ command:
1414
+ distinct: *collectionName
1415
+ - commandStartedEvent:
1416
+ commandName: distinct
1417
+ databaseName: *databaseName
1418
+ command:
1419
+ distinct: *collectionName
1420
+ - description: "operation succeeds after one socket timeout - find on collection"
1421
+ operations:
1422
+ - name: failPoint
1423
+ object: testRunner
1424
+ arguments:
1425
+ client: *failPointClient
1426
+ failPoint:
1427
+ configureFailPoint: failCommand
1428
+ mode: { times: 1 }
1429
+ data:
1430
+ failCommands: ["find"]
1431
+ blockConnection: true
1432
+ blockTimeMS: 125
1433
+ - name: find
1434
+ object: *collection
1435
+ arguments:
1436
+ filter: {}
1437
+
1438
+ expectEvents:
1439
+ - client: *client
1440
+ events:
1441
+ - commandStartedEvent:
1442
+ commandName: find
1443
+ databaseName: *databaseName
1444
+ command:
1445
+ find: *collectionName
1446
+ - commandStartedEvent:
1447
+ commandName: find
1448
+ databaseName: *databaseName
1449
+ command:
1450
+ find: *collectionName
1451
+ - description: "operation fails after two consecutive socket timeouts - find on collection"
1452
+ operations:
1453
+ - name: failPoint
1454
+ object: testRunner
1455
+ arguments:
1456
+ client: *failPointClient
1457
+ failPoint:
1458
+ configureFailPoint: failCommand
1459
+ mode: { times: 2 }
1460
+ data:
1461
+ failCommands: ["find"]
1462
+ blockConnection: true
1463
+ blockTimeMS: 125
1464
+ - name: find
1465
+ object: *collection
1466
+ arguments:
1467
+ filter: {}
1468
+
1469
+ expectError:
1470
+ # Network errors are considered client errors by the unified test format spec.
1471
+ isClientError: true
1472
+ expectEvents:
1473
+ - client: *client
1474
+ events:
1475
+ - commandStartedEvent:
1476
+ commandName: find
1477
+ databaseName: *databaseName
1478
+ command:
1479
+ find: *collectionName
1480
+ - commandStartedEvent:
1481
+ commandName: find
1482
+ databaseName: *databaseName
1483
+ command:
1484
+ find: *collectionName
1485
+ - description: "operation succeeds after one socket timeout - findOne on collection"
1486
+ operations:
1487
+ - name: failPoint
1488
+ object: testRunner
1489
+ arguments:
1490
+ client: *failPointClient
1491
+ failPoint:
1492
+ configureFailPoint: failCommand
1493
+ mode: { times: 1 }
1494
+ data:
1495
+ failCommands: ["find"]
1496
+ blockConnection: true
1497
+ blockTimeMS: 125
1498
+ - name: findOne
1499
+ object: *collection
1500
+ arguments:
1501
+ filter: {}
1502
+
1503
+ expectEvents:
1504
+ - client: *client
1505
+ events:
1506
+ - commandStartedEvent:
1507
+ commandName: find
1508
+ databaseName: *databaseName
1509
+ command:
1510
+ find: *collectionName
1511
+ - commandStartedEvent:
1512
+ commandName: find
1513
+ databaseName: *databaseName
1514
+ command:
1515
+ find: *collectionName
1516
+ - description: "operation fails after two consecutive socket timeouts - findOne on collection"
1517
+ operations:
1518
+ - name: failPoint
1519
+ object: testRunner
1520
+ arguments:
1521
+ client: *failPointClient
1522
+ failPoint:
1523
+ configureFailPoint: failCommand
1524
+ mode: { times: 2 }
1525
+ data:
1526
+ failCommands: ["find"]
1527
+ blockConnection: true
1528
+ blockTimeMS: 125
1529
+ - name: findOne
1530
+ object: *collection
1531
+ arguments:
1532
+ filter: {}
1533
+
1534
+ expectError:
1535
+ # Network errors are considered client errors by the unified test format spec.
1536
+ isClientError: true
1537
+ expectEvents:
1538
+ - client: *client
1539
+ events:
1540
+ - commandStartedEvent:
1541
+ commandName: find
1542
+ databaseName: *databaseName
1543
+ command:
1544
+ find: *collectionName
1545
+ - commandStartedEvent:
1546
+ commandName: find
1547
+ databaseName: *databaseName
1548
+ command:
1549
+ find: *collectionName
1550
+ - description: "operation succeeds after one socket timeout - listIndexes on collection"
1551
+ operations:
1552
+ - name: failPoint
1553
+ object: testRunner
1554
+ arguments:
1555
+ client: *failPointClient
1556
+ failPoint:
1557
+ configureFailPoint: failCommand
1558
+ mode: { times: 1 }
1559
+ data:
1560
+ failCommands: ["listIndexes"]
1561
+ blockConnection: true
1562
+ blockTimeMS: 125
1563
+ - name: listIndexes
1564
+ object: *collection
1565
+
1566
+ expectEvents:
1567
+ - client: *client
1568
+ events:
1569
+ - commandStartedEvent:
1570
+ commandName: listIndexes
1571
+ databaseName: *databaseName
1572
+ command:
1573
+ listIndexes: *collectionName
1574
+ - commandStartedEvent:
1575
+ commandName: listIndexes
1576
+ databaseName: *databaseName
1577
+ command:
1578
+ listIndexes: *collectionName
1579
+ - description: "operation fails after two consecutive socket timeouts - listIndexes on collection"
1580
+ operations:
1581
+ - name: failPoint
1582
+ object: testRunner
1583
+ arguments:
1584
+ client: *failPointClient
1585
+ failPoint:
1586
+ configureFailPoint: failCommand
1587
+ mode: { times: 2 }
1588
+ data:
1589
+ failCommands: ["listIndexes"]
1590
+ blockConnection: true
1591
+ blockTimeMS: 125
1592
+ - name: listIndexes
1593
+ object: *collection
1594
+
1595
+ expectError:
1596
+ # Network errors are considered client errors by the unified test format spec.
1597
+ isClientError: true
1598
+ expectEvents:
1599
+ - client: *client
1600
+ events:
1601
+ - commandStartedEvent:
1602
+ commandName: listIndexes
1603
+ databaseName: *databaseName
1604
+ command:
1605
+ listIndexes: *collectionName
1606
+ - commandStartedEvent:
1607
+ commandName: listIndexes
1608
+ databaseName: *databaseName
1609
+ command:
1610
+ listIndexes: *collectionName
1611
+ - description: "operation succeeds after one socket timeout - createChangeStream on collection"
1612
+ operations:
1613
+ - name: failPoint
1614
+ object: testRunner
1615
+ arguments:
1616
+ client: *failPointClient
1617
+ failPoint:
1618
+ configureFailPoint: failCommand
1619
+ mode: { times: 1 }
1620
+ data:
1621
+ failCommands: ["aggregate"]
1622
+ blockConnection: true
1623
+ blockTimeMS: 125
1624
+ - name: createChangeStream
1625
+ object: *collection
1626
+ arguments:
1627
+ pipeline: []
1628
+
1629
+ expectEvents:
1630
+ - client: *client
1631
+ events:
1632
+ - commandStartedEvent:
1633
+ commandName: aggregate
1634
+ databaseName: *databaseName
1635
+ command:
1636
+ aggregate: *collectionName
1637
+ - commandStartedEvent:
1638
+ commandName: aggregate
1639
+ databaseName: *databaseName
1640
+ command:
1641
+ aggregate: *collectionName
1642
+ - description: "operation fails after two consecutive socket timeouts - createChangeStream on collection"
1643
+ operations:
1644
+ - name: failPoint
1645
+ object: testRunner
1646
+ arguments:
1647
+ client: *failPointClient
1648
+ failPoint:
1649
+ configureFailPoint: failCommand
1650
+ mode: { times: 2 }
1651
+ data:
1652
+ failCommands: ["aggregate"]
1653
+ blockConnection: true
1654
+ blockTimeMS: 125
1655
+ - name: createChangeStream
1656
+ object: *collection
1657
+ arguments:
1658
+ pipeline: []
1659
+
1660
+ expectError:
1661
+ # Network errors are considered client errors by the unified test format spec.
1662
+ isClientError: true
1663
+ expectEvents:
1664
+ - client: *client
1665
+ events:
1666
+ - commandStartedEvent:
1667
+ commandName: aggregate
1668
+ databaseName: *databaseName
1669
+ command:
1670
+ aggregate: *collectionName
1671
+ - commandStartedEvent:
1672
+ commandName: aggregate
1673
+ databaseName: *databaseName
1674
+ command:
1675
+ aggregate: *collectionName
1676
+