mongo 2.8.0 → 2.9.0.rc0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/Rakefile +12 -0
  5. data/lib/mongo.rb +15 -1
  6. data/lib/mongo/address/ipv6.rb +0 -2
  7. data/lib/mongo/auth/scram/conversation.rb +0 -3
  8. data/lib/mongo/bulk_write/result_combiner.rb +12 -2
  9. data/lib/mongo/client.rb +59 -6
  10. data/lib/mongo/cluster.rb +19 -8
  11. data/lib/mongo/cluster/reapers/cursor_reaper.rb +0 -2
  12. data/lib/mongo/cluster/reapers/socket_reaper.rb +12 -9
  13. data/lib/mongo/collection.rb +1 -1
  14. data/lib/mongo/collection/view/aggregation.rb +5 -1
  15. data/lib/mongo/collection/view/builder/map_reduce.rb +1 -1
  16. data/lib/mongo/collection/view/change_stream.rb +30 -10
  17. data/lib/mongo/collection/view/iterable.rb +13 -6
  18. data/lib/mongo/collection/view/map_reduce.rb +12 -10
  19. data/lib/mongo/collection/view/readable.rb +19 -14
  20. data/lib/mongo/cursor.rb +12 -8
  21. data/lib/mongo/database.rb +10 -7
  22. data/lib/mongo/database/view.rb +18 -11
  23. data/lib/mongo/error.rb +2 -2
  24. data/lib/mongo/error/connection_check_out_timeout.rb +49 -0
  25. data/lib/mongo/error/operation_failure.rb +9 -9
  26. data/lib/mongo/error/parser.rb +25 -3
  27. data/lib/mongo/error/pool_closed_error.rb +43 -0
  28. data/lib/mongo/error/sdam_error_detection.rb +18 -0
  29. data/lib/mongo/grid/file/chunk.rb +0 -2
  30. data/lib/mongo/grid/fs_bucket.rb +26 -12
  31. data/lib/mongo/grid/stream/read.rb +36 -21
  32. data/lib/mongo/index/view.rb +11 -7
  33. data/lib/mongo/logger.rb +0 -2
  34. data/lib/mongo/monitoring.rb +31 -0
  35. data/lib/mongo/monitoring/cmap_log_subscriber.rb +53 -0
  36. data/lib/mongo/monitoring/event.rb +1 -0
  37. data/lib/mongo/monitoring/event/cmap.rb +25 -0
  38. data/lib/mongo/monitoring/event/cmap/base.rb +28 -0
  39. data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +78 -0
  40. data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +56 -0
  41. data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +63 -0
  42. data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +64 -0
  43. data/lib/mongo/monitoring/event/cmap/connection_closed.rb +103 -0
  44. data/lib/mongo/monitoring/event/cmap/connection_created.rb +64 -0
  45. data/lib/mongo/monitoring/event/cmap/connection_ready.rb +64 -0
  46. data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +57 -0
  47. data/lib/mongo/monitoring/event/cmap/pool_closed.rb +57 -0
  48. data/lib/mongo/monitoring/event/cmap/pool_created.rb +63 -0
  49. data/lib/mongo/monitoring/event/command_started.rb +12 -3
  50. data/lib/mongo/monitoring/publishable.rb +10 -2
  51. data/lib/mongo/operation.rb +0 -1
  52. data/lib/mongo/operation/find/legacy/result.rb +1 -0
  53. data/lib/mongo/operation/list_collections/result.rb +7 -1
  54. data/lib/mongo/operation/result.rb +10 -1
  55. data/lib/mongo/operation/shared/executable.rb +15 -0
  56. data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +29 -0
  57. data/lib/mongo/operation/shared/specifiable.rb +0 -16
  58. data/lib/mongo/operation/update/legacy/result.rb +1 -0
  59. data/lib/mongo/protocol/compressed.rb +0 -2
  60. data/lib/mongo/protocol/msg.rb +25 -2
  61. data/lib/mongo/retryable.rb +171 -33
  62. data/lib/mongo/server.rb +26 -7
  63. data/lib/mongo/server/app_metadata.rb +0 -2
  64. data/lib/mongo/server/connectable.rb +8 -2
  65. data/lib/mongo/server/connection.rb +83 -13
  66. data/lib/mongo/server/connection_base.rb +1 -1
  67. data/lib/mongo/server/connection_pool.rb +439 -43
  68. data/lib/mongo/server/monitor/connection.rb +4 -1
  69. data/lib/mongo/session.rb +37 -5
  70. data/lib/mongo/session/session_pool.rb +2 -2
  71. data/lib/mongo/socket.rb +0 -2
  72. data/lib/mongo/socket/ssl.rb +0 -2
  73. data/lib/mongo/uri.rb +127 -66
  74. data/lib/mongo/uri/srv_protocol.rb +35 -13
  75. data/lib/mongo/version.rb +1 -1
  76. data/spec/README.md +190 -63
  77. data/spec/integration/change_stream_spec.rb +64 -0
  78. data/spec/integration/command_spec.rb +0 -7
  79. data/spec/integration/error_detection_spec.rb +39 -0
  80. data/spec/integration/read_concern.rb +83 -0
  81. data/spec/integration/retryable_writes_spec.rb +6 -50
  82. data/spec/integration/sdam_error_handling_spec.rb +60 -7
  83. data/spec/integration/ssl_uri_options_spec.rb +24 -0
  84. data/spec/integration/step_down_spec.rb +197 -0
  85. data/spec/lite_spec_helper.rb +4 -0
  86. data/spec/mongo/client_construction_spec.rb +42 -17
  87. data/spec/mongo/client_spec.rb +32 -1
  88. data/spec/mongo/cluster/socket_reaper_spec.rb +2 -2
  89. data/spec/mongo/cluster_spec.rb +36 -2
  90. data/spec/mongo/collection/view/aggregation_spec.rb +2 -0
  91. data/spec/mongo/collection/view/change_stream_spec.rb +28 -28
  92. data/spec/mongo/collection/view/readable_spec.rb +1 -1
  93. data/spec/mongo/collection/view_spec.rb +3 -1
  94. data/spec/mongo/cursor_spec.rb +5 -5
  95. data/spec/mongo/error/parser_spec.rb +61 -1
  96. data/spec/mongo/grid/stream/read_spec.rb +2 -2
  97. data/spec/mongo/monitoring/event/cmap/connection_check_out_failed_spec.rb +23 -0
  98. data/spec/mongo/monitoring/event/cmap/connection_check_out_started_spec.rb +19 -0
  99. data/spec/mongo/monitoring/event/cmap/connection_checked_in_spec.rb +23 -0
  100. data/spec/mongo/monitoring/event/cmap/connection_checked_out_spec.rb +23 -0
  101. data/spec/mongo/monitoring/event/cmap/connection_closed_spec.rb +27 -0
  102. data/spec/mongo/monitoring/event/cmap/connection_created_spec.rb +24 -0
  103. data/spec/mongo/monitoring/event/cmap/connection_ready_spec.rb +24 -0
  104. data/spec/mongo/monitoring/event/cmap/pool_cleared_spec.rb +19 -0
  105. data/spec/mongo/monitoring/event/cmap/pool_closed_spec.rb +19 -0
  106. data/spec/mongo/monitoring/event/cmap/pool_created_spec.rb +26 -0
  107. data/spec/mongo/operation/delete/bulk_spec.rb +1 -6
  108. data/spec/mongo/operation/delete/command_spec.rb +1 -1
  109. data/spec/mongo/operation/delete/op_msg_spec.rb +1 -1
  110. data/spec/mongo/operation/delete_spec.rb +4 -4
  111. data/spec/mongo/operation/insert/bulk_spec.rb +1 -1
  112. data/spec/mongo/operation/insert/command_spec.rb +1 -1
  113. data/spec/mongo/operation/insert/op_msg_spec.rb +1 -1
  114. data/spec/mongo/operation/update/bulk_spec.rb +1 -1
  115. data/spec/mongo/operation/update/command_spec.rb +2 -2
  116. data/spec/mongo/operation/update/op_msg_spec.rb +2 -2
  117. data/spec/mongo/protocol/msg_spec.rb +11 -0
  118. data/spec/mongo/retryable_spec.rb +78 -25
  119. data/spec/mongo/server/connection_pool_spec.rb +661 -126
  120. data/spec/mongo/server/connection_spec.rb +55 -7
  121. data/spec/mongo/server_spec.rb +5 -0
  122. data/spec/mongo/uri/srv_protocol_spec.rb +135 -2
  123. data/spec/mongo/uri_option_parsing_spec.rb +511 -0
  124. data/spec/mongo/uri_spec.rb +42 -6
  125. data/spec/spec_helper.rb +1 -84
  126. data/spec/spec_tests/cmap_spec.rb +50 -0
  127. data/spec/spec_tests/command_monitoring_spec.rb +7 -18
  128. data/spec/spec_tests/crud_spec.rb +3 -49
  129. data/spec/spec_tests/data/cmap/connection-must-have-id.yml +21 -0
  130. data/spec/spec_tests/data/cmap/connection-must-order-ids.yml +21 -0
  131. data/spec/spec_tests/data/cmap/pool-checkin-destroy-closed.yml +24 -0
  132. data/spec/spec_tests/data/cmap/pool-checkin-destroy-stale.yml +24 -0
  133. data/spec/spec_tests/data/cmap/pool-checkin-make-available.yml +21 -0
  134. data/spec/spec_tests/data/cmap/pool-checkin.yml +18 -0
  135. data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +13 -0
  136. data/spec/spec_tests/data/cmap/pool-checkout-error-closed.yml +28 -0
  137. data/spec/spec_tests/data/cmap/pool-checkout-multiple.yml +34 -0
  138. data/spec/spec_tests/data/cmap/pool-checkout-no-idle.yml +31 -0
  139. data/spec/spec_tests/data/cmap/pool-checkout-no-stale.yml +29 -0
  140. data/spec/spec_tests/data/cmap/pool-close-destroy-conns.yml +26 -0
  141. data/spec/spec_tests/data/cmap/pool-close.yml +11 -0
  142. data/spec/spec_tests/data/cmap/pool-create-max-size.yml +56 -0
  143. data/spec/spec_tests/data/cmap/pool-create-min-size.yml +27 -0
  144. data/spec/spec_tests/data/cmap/pool-create-with-options.yml +20 -0
  145. data/spec/spec_tests/data/cmap/pool-create.yml +12 -0
  146. data/spec/spec_tests/data/cmap/wait-queue-fairness.yml +94 -0
  147. data/spec/spec_tests/data/cmap/wait-queue-timeout.yml +41 -0
  148. data/spec/spec_tests/data/retryable_reads/aggregate-serverErrors.yml +157 -0
  149. data/spec/spec_tests/data/retryable_reads/aggregate.yml +87 -0
  150. data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch-serverErrors.yml +149 -0
  151. data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch.yml +61 -0
  152. data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch-serverErrors.yml +149 -0
  153. data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch.yml +65 -0
  154. data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch-serverErrors.yml +153 -0
  155. data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch.yml +61 -0
  156. data/spec/spec_tests/data/retryable_reads/count-serverErrors.yml +150 -0
  157. data/spec/spec_tests/data/retryable_reads/count.yml +64 -0
  158. data/spec/spec_tests/data/retryable_reads/countDocuments-serverErrors.yml +150 -0
  159. data/spec/spec_tests/data/retryable_reads/countDocuments.yml +64 -0
  160. data/spec/spec_tests/data/retryable_reads/distinct-serverErrors.yml +156 -0
  161. data/spec/spec_tests/data/retryable_reads/distinct.yml +71 -0
  162. data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors.yml +148 -0
  163. data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount.yml +62 -0
  164. data/spec/spec_tests/data/retryable_reads/find-serverErrors.yml +160 -0
  165. data/spec/spec_tests/data/retryable_reads/find.yml +86 -0
  166. data/spec/spec_tests/data/retryable_reads/findOne-serverErrors.yml +154 -0
  167. data/spec/spec_tests/data/retryable_reads/findOne.yml +68 -0
  168. data/spec/spec_tests/data/retryable_reads/gridfs-download-serverErrors.yml +173 -0
  169. data/spec/spec_tests/data/retryable_reads/gridfs-download.yml +79 -0
  170. data/spec/spec_tests/data/retryable_reads/gridfs-downloadByName-serverErrors.yml +174 -0
  171. data/spec/spec_tests/data/retryable_reads/gridfs-downloadByName.yml +79 -0
  172. data/spec/spec_tests/data/retryable_reads/listCollectionNames-serverErrors.yml +143 -0
  173. data/spec/spec_tests/data/retryable_reads/listCollectionNames.yml +59 -0
  174. data/spec/spec_tests/data/retryable_reads/listCollectionObjects-serverErrors.yml +144 -0
  175. data/spec/spec_tests/data/retryable_reads/listCollectionObjects.yml +59 -0
  176. data/spec/spec_tests/data/retryable_reads/listCollections-serverErrors.yml +143 -0
  177. data/spec/spec_tests/data/retryable_reads/listCollections.yml +59 -0
  178. data/spec/spec_tests/data/retryable_reads/listDatabaseNames-serverErrors.yml +143 -0
  179. data/spec/spec_tests/data/retryable_reads/listDatabaseNames.yml +59 -0
  180. data/spec/spec_tests/data/retryable_reads/listDatabaseObjects-serverErrors.yml +144 -0
  181. data/spec/spec_tests/data/retryable_reads/listDatabaseObjects.yml +59 -0
  182. data/spec/spec_tests/data/retryable_reads/listDatabases-serverErrors.yml +144 -0
  183. data/spec/spec_tests/data/retryable_reads/listDatabases.yml +59 -0
  184. data/spec/spec_tests/data/retryable_reads/listIndexNames-serverErrors.yml +144 -0
  185. data/spec/spec_tests/data/retryable_reads/listIndexNames.yml +60 -0
  186. data/spec/spec_tests/data/retryable_reads/listIndexes-serverErrors.yml +145 -0
  187. data/spec/spec_tests/data/retryable_reads/listIndexes.yml +60 -0
  188. data/spec/spec_tests/data/retryable_reads/mapReduce.yml +60 -0
  189. data/spec/spec_tests/data/retryable_writes/bulkWrite-serverErrors.yml +10 -7
  190. data/spec/spec_tests/data/retryable_writes/bulkWrite.yml +15 -22
  191. data/spec/spec_tests/data/retryable_writes/deleteMany.yml +22 -0
  192. data/spec/spec_tests/data/retryable_writes/deleteOne-serverErrors.yml +8 -7
  193. data/spec/spec_tests/data/retryable_writes/deleteOne.yml +5 -8
  194. data/spec/spec_tests/data/retryable_writes/findOneAndDelete-serverErrors.yml +8 -7
  195. data/spec/spec_tests/data/retryable_writes/findOneAndDelete.yml +5 -8
  196. data/spec/spec_tests/data/retryable_writes/findOneAndReplace-serverErrors.yml +8 -7
  197. data/spec/spec_tests/data/retryable_writes/findOneAndReplace.yml +5 -8
  198. data/spec/spec_tests/data/retryable_writes/findOneAndUpdate-serverErrors.yml +8 -7
  199. data/spec/spec_tests/data/retryable_writes/findOneAndUpdate.yml +5 -8
  200. data/spec/spec_tests/data/retryable_writes/insertMany-serverErrors.yml +8 -7
  201. data/spec/spec_tests/data/retryable_writes/insertMany.yml +5 -8
  202. data/spec/spec_tests/data/retryable_writes/insertOne-serverErrors.yml +10 -45
  203. data/spec/spec_tests/data/retryable_writes/insertOne.yml +5 -8
  204. data/spec/spec_tests/data/retryable_writes/replaceOne-serverErrors.yml +8 -7
  205. data/spec/spec_tests/data/retryable_writes/replaceOne.yml +5 -8
  206. data/spec/spec_tests/data/retryable_writes/updateMany.yml +27 -0
  207. data/spec/spec_tests/data/retryable_writes/updateOne-serverErrors.yml +8 -7
  208. data/spec/spec_tests/data/retryable_writes/updateOne.yml +5 -14
  209. data/spec/spec_tests/data/transactions/abort.yml +7 -2
  210. data/spec/spec_tests/data/transactions/bulk.yml +7 -2
  211. data/spec/spec_tests/data/transactions/causal-consistency.yml +11 -4
  212. data/spec/spec_tests/data/transactions/commit.yml +11 -4
  213. data/spec/spec_tests/data/transactions/count.yml +64 -0
  214. data/spec/spec_tests/data/transactions/delete.yml +7 -2
  215. data/spec/spec_tests/data/transactions/error-labels.yml +8 -2
  216. data/spec/spec_tests/data/transactions/errors.yml +7 -2
  217. data/spec/spec_tests/data/transactions/findOneAndDelete.yml +7 -2
  218. data/spec/spec_tests/data/transactions/findOneAndReplace.yml +7 -2
  219. data/spec/spec_tests/data/transactions/findOneAndUpdate.yml +7 -2
  220. data/spec/spec_tests/data/transactions/insert.yml +9 -2
  221. data/spec/spec_tests/data/transactions/isolation.yml +7 -2
  222. data/spec/spec_tests/data/transactions/read-concern.yml +15 -6
  223. data/spec/spec_tests/data/transactions/read-pref.yml +7 -2
  224. data/spec/spec_tests/data/transactions/reads.yml +8 -48
  225. data/spec/spec_tests/data/transactions/retryable-abort.yml +7 -2
  226. data/spec/spec_tests/data/transactions/retryable-commit.yml +7 -2
  227. data/spec/spec_tests/data/transactions/retryable-writes.yml +7 -2
  228. data/spec/spec_tests/data/transactions/run-command.yml +7 -2
  229. data/spec/spec_tests/data/transactions/transaction-options.yml +7 -2
  230. data/spec/spec_tests/data/transactions/update.yml +7 -2
  231. data/spec/spec_tests/data/transactions/write-concern.yml +7 -2
  232. data/spec/spec_tests/data/transactions_api/callback-aborts.yml +6 -1
  233. data/spec/spec_tests/data/transactions_api/callback-commits.yml +6 -1
  234. data/spec/spec_tests/data/transactions_api/callback-retry.yml +6 -1
  235. data/spec/spec_tests/data/transactions_api/commit-retry.yml +6 -1
  236. data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror-4.2.yml +6 -3
  237. data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror.yml +6 -1
  238. data/spec/spec_tests/data/transactions_api/commit-writeconcernerror.yml +6 -1
  239. data/spec/spec_tests/data/transactions_api/commit.yml +6 -1
  240. data/spec/spec_tests/data/transactions_api/transaction-options.yml +6 -1
  241. data/spec/spec_tests/retryable_reads_spec.rb +11 -0
  242. data/spec/spec_tests/retryable_writes_spec.rb +4 -69
  243. data/spec/spec_tests/transactions_api_spec.rb +42 -37
  244. data/spec/spec_tests/transactions_spec.rb +42 -33
  245. data/spec/support/authorization.rb +12 -0
  246. data/spec/support/change_streams/operation.rb +1 -1
  247. data/spec/support/client_registry.rb +20 -0
  248. data/spec/support/cluster_config.rb +16 -15
  249. data/spec/support/cluster_tools.rb +346 -0
  250. data/spec/support/cmap.rb +367 -0
  251. data/spec/support/cmap/verifier.rb +46 -0
  252. data/spec/support/command_monitoring.rb +4 -6
  253. data/spec/support/common_shortcuts.rb +6 -0
  254. data/spec/support/connection_string.rb +2 -2
  255. data/spec/support/crud.rb +171 -184
  256. data/spec/support/crud/operation.rb +43 -0
  257. data/spec/support/crud/outcome.rb +53 -0
  258. data/spec/support/crud/read.rb +102 -12
  259. data/spec/support/crud/requirement.rb +69 -0
  260. data/spec/support/crud/spec.rb +68 -0
  261. data/spec/support/crud/test.rb +141 -0
  262. data/spec/support/crud/verifier.rb +96 -18
  263. data/spec/support/crud/write.rb +18 -3
  264. data/spec/support/event_subscriber.rb +15 -0
  265. data/spec/support/primary_socket.rb +2 -2
  266. data/spec/support/spec_config.rb +89 -20
  267. data/spec/support/transactions.rb +2 -306
  268. data/spec/support/transactions/operation.rb +7 -7
  269. data/spec/support/transactions/spec.rb +28 -0
  270. data/spec/support/transactions/test.rb +191 -0
  271. data/spec/support/utils.rb +123 -0
  272. metadata +202 -9
  273. metadata.gz.sig +0 -0
  274. data/lib/mongo/server/connection_pool/queue.rb +0 -359
  275. data/spec/mongo/server/connection_pool/queue_spec.rb +0 -353
  276. data/spec/support/transactions/verifier.rb +0 -97
@@ -1,15 +1,18 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+ -
6
+ minServerVersion: "4.1.7"
7
+ topology: ["sharded"]
8
+
1
9
  data:
2
10
  - { _id: 1, x: 11 }
3
11
  - { _id: 2, x: 22 }
4
12
 
5
- # TODO: this should change to 4.0 once 4.0.0 is released.
6
- minServerVersion: '3.99'
7
-
8
13
  tests:
9
14
  -
10
15
  description: "UpdateOne succeeds after PrimarySteppedDown"
11
- clientOptions:
12
- retryWrites: true
13
16
  failPoint:
14
17
  configureFailPoint: failCommand
15
18
  mode: { times: 1 }
@@ -32,8 +35,6 @@ tests:
32
35
  - { _id: 2, x: 22 }
33
36
  -
34
37
  description: "UpdateOne succeeds after WriteConcernError ShutdownInProgress"
35
- clientOptions:
36
- retryWrites: true
37
38
  failPoint:
38
39
  configureFailPoint: failCommand
39
40
  mode: { times: 1 }
@@ -1,14 +1,15 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "3.6"
4
+ topology: ["replicaset"]
5
+
1
6
  data:
2
7
  - { _id: 1, x: 11 }
3
8
  - { _id: 2, x: 22 }
4
9
 
5
- minServerVersion: '3.6'
6
-
7
10
  tests:
8
11
  -
9
12
  description: "UpdateOne is committed on first attempt"
10
- clientOptions:
11
- retryWrites: true
12
13
  failPoint:
13
14
  configureFailPoint: onPrimaryTransactionalWrite
14
15
  mode: { times: 1 }
@@ -28,8 +29,6 @@ tests:
28
29
  - { _id: 2, x: 22 }
29
30
  -
30
31
  description: "UpdateOne is not committed on first attempt"
31
- clientOptions:
32
- retryWrites: true
33
32
  failPoint:
34
33
  configureFailPoint: onPrimaryTransactionalWrite
35
34
  mode: { times: 1 }
@@ -50,8 +49,6 @@ tests:
50
49
  - { _id: 2, x: 22 }
51
50
  -
52
51
  description: "UpdateOne is never committed"
53
- clientOptions:
54
- retryWrites: true
55
52
  failPoint:
56
53
  configureFailPoint: onPrimaryTransactionalWrite
57
54
  mode: { times: 2 }
@@ -69,8 +66,6 @@ tests:
69
66
  - { _id: 2, x: 22 }
70
67
  -
71
68
  description: "UpdateOne with upsert is committed on first attempt"
72
- clientOptions:
73
- retryWrites: true
74
69
  failPoint:
75
70
  configureFailPoint: onPrimaryTransactionalWrite
76
71
  mode: { times: 1 }
@@ -93,8 +88,6 @@ tests:
93
88
  - { _id: 3, x: 34 }
94
89
  -
95
90
  description: "UpdateOne with upsert is not committed on first attempt"
96
- clientOptions:
97
- retryWrites: true
98
91
  failPoint:
99
92
  configureFailPoint: onPrimaryTransactionalWrite
100
93
  mode: { times: 1 }
@@ -118,8 +111,6 @@ tests:
118
111
  - { _id: 3, x: 34 }
119
112
  -
120
113
  description: "UpdateOne with upsert is never committed"
121
- clientOptions:
122
- retryWrites: true
123
114
  failPoint:
124
115
  configureFailPoint: onPrimaryTransactionalWrite
125
116
  mode: { times: 2 }
@@ -1,5 +1,10 @@
1
- database_name: &database_name "ruby-driver"
2
- collection_name: &collection_name "transactions-tests"
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+
6
+ database_name: &database_name "transaction-tests"
7
+ collection_name: &collection_name "test"
3
8
 
4
9
  data: []
5
10
 
@@ -1,5 +1,10 @@
1
- database_name: &database_name "ruby-driver"
2
- collection_name: &collection_name "transactions-tests"
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+
6
+ database_name: &database_name "transaction-tests"
7
+ collection_name: &collection_name "test"
3
8
 
4
9
  data: []
5
10
 
@@ -1,5 +1,10 @@
1
- database_name: &database_name "ruby-driver"
2
- collection_name: &collection_name "transactions-tests"
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+
6
+ database_name: &database_name "transaction-tests"
7
+ collection_name: &collection_name "test"
3
8
 
4
9
  data:
5
10
  - _id: 1
@@ -7,7 +12,8 @@ data:
7
12
 
8
13
  tests:
9
14
  - description: causal consistency
10
-
15
+ clientOptions:
16
+ retryWrites: false
11
17
  operations:
12
18
  # Update a document without a transaction.
13
19
  - &updateOne
@@ -88,7 +94,8 @@ tests:
88
94
  count: 2
89
95
 
90
96
  - description: causal consistency disabled
91
-
97
+ clientOptions:
98
+ retryWrites: false
92
99
  sessionOptions:
93
100
  session0:
94
101
  causalConsistency: false
@@ -1,5 +1,10 @@
1
- database_name: &database_name "ruby-driver"
2
- collection_name: &collection_name "transactions-tests"
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+
6
+ database_name: &database_name "transaction-tests"
7
+ collection_name: &collection_name "test"
3
8
 
4
9
  data: []
5
10
  tests:
@@ -438,7 +443,8 @@ tests:
438
443
  data: []
439
444
 
440
445
  - description: reset session state commit
441
-
446
+ clientOptions:
447
+ retryWrites: false
442
448
  operations:
443
449
  - name: startTransaction
444
450
  object: session0
@@ -516,7 +522,8 @@ tests:
516
522
  - _id: 2
517
523
 
518
524
  - description: reset session state abort
519
-
525
+ clientOptions:
526
+ retryWrites: false
520
527
  operations:
521
528
  - name: startTransaction
522
529
  object: session0
@@ -0,0 +1,64 @@
1
+ runOn:
2
+ # SERVER-35388 introduced OperationNotSupportedInTransaction in 4.0.2
3
+ -
4
+ minServerVersion: "4.0.2"
5
+ topology: ["replicaset"]
6
+
7
+ database_name: &database_name "transaction-tests"
8
+ collection_name: &collection_name "test"
9
+
10
+ data: &data
11
+ - {_id: 1}
12
+ - {_id: 2}
13
+ - {_id: 3}
14
+ - {_id: 4}
15
+
16
+ tests:
17
+ - description: count
18
+
19
+ operations:
20
+ - name: startTransaction
21
+ object: session0
22
+ - name: count
23
+ object: collection
24
+ arguments:
25
+ session: session0
26
+ filter:
27
+ _id: 1
28
+ result:
29
+ errorCodeName: OperationNotSupportedInTransaction
30
+ errorLabelsOmit: ["TransientTransactionError", "UnknownTransactionCommitResult"]
31
+ - name: abortTransaction
32
+ object: session0
33
+
34
+ expectations:
35
+ - command_started_event:
36
+ command:
37
+ count: *collection_name
38
+ query:
39
+ _id: 1
40
+ readConcern:
41
+ lsid: session0
42
+ txnNumber:
43
+ $numberLong: "1"
44
+ startTransaction: true
45
+ autocommit: false
46
+ writeConcern:
47
+ command_name: count
48
+ database_name: *database_name
49
+ - command_started_event:
50
+ command:
51
+ abortTransaction: 1
52
+ lsid: session0
53
+ txnNumber:
54
+ $numberLong: "1"
55
+ startTransaction:
56
+ autocommit: false
57
+ writeConcern:
58
+ command_name: abortTransaction
59
+ database_name: admin
60
+
61
+ outcome:
62
+ collection:
63
+ data:
64
+ *data
@@ -1,5 +1,10 @@
1
- database_name: &database_name "ruby-driver"
2
- collection_name: &collection_name "transactions-tests"
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+
6
+ database_name: &database_name "transaction-tests"
7
+ collection_name: &collection_name "test"
3
8
 
4
9
  data:
5
10
  - _id: 1
@@ -1,5 +1,10 @@
1
- database_name: &database_name "ruby-driver"
2
- collection_name: &collection_name "transactions-tests"
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+
6
+ database_name: &database_name "transaction-tests"
7
+ collection_name: &collection_name "test"
3
8
 
4
9
  data: []
5
10
 
@@ -363,6 +368,7 @@ tests:
363
368
  pipeline:
364
369
  - $project:
365
370
  _id: 1
371
+ cursor: {}
366
372
  readConcern:
367
373
  lsid: session0
368
374
  txnNumber:
@@ -1,5 +1,10 @@
1
- database_name: &database_name "ruby-driver"
2
- collection_name: &collection_name "transactions-tests"
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+
6
+ database_name: &database_name "transaction-tests"
7
+ collection_name: &collection_name "test"
3
8
 
4
9
  data: []
5
10
  tests:
@@ -1,5 +1,10 @@
1
- database_name: &database_name "ruby-driver"
2
- collection_name: &collection_name "transactions-tests"
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+
6
+ database_name: &database_name "transaction-tests"
7
+ collection_name: &collection_name "test"
3
8
 
4
9
  data:
5
10
  - _id: 1
@@ -1,5 +1,10 @@
1
- database_name: &database_name "ruby-driver"
2
- collection_name: &collection_name "transactions-tests"
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+
6
+ database_name: &database_name "transaction-tests"
7
+ collection_name: &collection_name "test"
3
8
 
4
9
  data:
5
10
  - _id: 1
@@ -1,5 +1,10 @@
1
- database_name: &database_name "ruby-driver"
2
- collection_name: &collection_name "transactions-tests"
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+
6
+ database_name: &database_name "transaction-tests"
7
+ collection_name: &collection_name "test"
3
8
 
4
9
  data:
5
10
  - _id: 1
@@ -1,5 +1,10 @@
1
- database_name: &database_name "ruby-driver"
2
- collection_name: &collection_name "transactions-tests"
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+
6
+ database_name: &database_name "transaction-tests"
7
+ collection_name: &collection_name "test"
3
8
 
4
9
  data: []
5
10
 
@@ -259,6 +264,8 @@ tests:
259
264
 
260
265
  # This test proves that the driver parses the collectionOptions writeConcern.
261
266
  - description: collection writeConcern without transaction
267
+ clientOptions:
268
+ retryWrites: false
262
269
  operations:
263
270
  - name: insertOne
264
271
  object: collection
@@ -1,7 +1,12 @@
1
1
  # Test snapshot isolation.
2
2
  # This test doesn't check contents of command-started events.
3
- database_name: &database_name "ruby-driver"
4
- collection_name: &collection_name "transactions-tests"
3
+ runOn:
4
+ -
5
+ minServerVersion: "4.0"
6
+ topology: ["replicaset"]
7
+
8
+ database_name: &database_name "transaction-tests"
9
+ collection_name: &collection_name "test"
5
10
 
6
11
  data: []
7
12
 
@@ -1,5 +1,10 @@
1
- database_name: &database_name "ruby-driver"
2
- collection_name: &collection_name "transactions-tests"
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+
6
+ database_name: &database_name "transaction-tests"
7
+ collection_name: &collection_name "test"
3
8
 
4
9
  data: &data
5
10
  - {_id: 1}
@@ -39,7 +44,8 @@ tests:
39
44
  aggregate: *collection_name
40
45
  pipeline:
41
46
  - $match: {_id: {$gte: 2}}
42
- - $group: {_id: null, n: {$sum: 1}}
47
+ - $group: {_id: 1, n: {$sum: 1}}
48
+ cursor: {}
43
49
  lsid: session0
44
50
  readConcern:
45
51
  level: snapshot
@@ -54,7 +60,8 @@ tests:
54
60
  aggregate: *collection_name
55
61
  pipeline:
56
62
  - $match: {_id: {$gte: 2}}
57
- - $group: {_id: null, n: {$sum: 1}}
63
+ - $group: {_id: 1, n: {$sum: 1}}
64
+ cursor: {}
58
65
  lsid: session0
59
66
  readConcern: # No readConcern
60
67
  txnNumber:
@@ -358,7 +365,8 @@ tests:
358
365
  aggregate: *collection_name
359
366
  pipeline:
360
367
  - $match: {_id: {$gte: 2}}
361
- - $group: {_id: null, n: {$sum: 1}}
368
+ - $group: {_id: 1, n: {$sum: 1}}
369
+ cursor: {}
362
370
  lsid: session0
363
371
  readConcern: # No readConcern
364
372
  txnNumber:
@@ -372,7 +380,8 @@ tests:
372
380
  aggregate: *collection_name
373
381
  pipeline:
374
382
  - $match: {_id: {$gte: 2}}
375
- - $group: {_id: null, n: {$sum: 1}}
383
+ - $group: {_id: 1, n: {$sum: 1}}
384
+ cursor: {}
376
385
  lsid: session0
377
386
  readConcern: # No readConcern
378
387
  txnNumber:
@@ -1,6 +1,11 @@
1
1
  # This test doesn't check contents of command-started events.
2
- database_name: &database_name "ruby-driver"
3
- collection_name: &collection_name "transactions-tests"
2
+ runOn:
3
+ -
4
+ minServerVersion: "4.0"
5
+ topology: ["replicaset"]
6
+
7
+ database_name: &database_name "transaction-tests"
8
+ collection_name: &collection_name "test"
4
9
 
5
10
  data: []
6
11