mongo 2.9.2 → 2.10.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 (227) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/mongo.rb +1 -0
  5. data/lib/mongo/auth/user/view.rb +4 -4
  6. data/lib/mongo/bulk_write.rb +14 -8
  7. data/lib/mongo/bulk_write/result.rb +1 -1
  8. data/lib/mongo/bulk_write/result_combiner.rb +2 -2
  9. data/lib/mongo/bulk_write/transformable.rb +17 -9
  10. data/lib/mongo/client.rb +107 -16
  11. data/lib/mongo/cluster.rb +47 -25
  12. data/lib/mongo/cluster/topology/replica_set_no_primary.rb +1 -1
  13. data/lib/mongo/cluster_time.rb +139 -0
  14. data/lib/mongo/collection.rb +84 -25
  15. data/lib/mongo/collection/view.rb +7 -3
  16. data/lib/mongo/collection/view/aggregation.rb +4 -4
  17. data/lib/mongo/collection/view/builder/aggregation.rb +31 -6
  18. data/lib/mongo/collection/view/builder/find_command.rb +4 -1
  19. data/lib/mongo/collection/view/builder/map_reduce.rb +4 -1
  20. data/lib/mongo/collection/view/change_stream.rb +54 -66
  21. data/lib/mongo/collection/view/iterable.rb +2 -2
  22. data/lib/mongo/collection/view/map_reduce.rb +6 -4
  23. data/lib/mongo/collection/view/readable.rb +36 -16
  24. data/lib/mongo/collection/view/writable.rb +68 -22
  25. data/lib/mongo/cursor.rb +87 -20
  26. data/lib/mongo/database.rb +47 -43
  27. data/lib/mongo/database/view.rb +54 -11
  28. data/lib/mongo/error.rb +13 -4
  29. data/lib/mongo/error/invalid_write_concern.rb +2 -2
  30. data/lib/mongo/error/operation_failure.rb +65 -11
  31. data/lib/mongo/error/parser.rb +41 -8
  32. data/lib/mongo/grid/fs_bucket.rb +26 -6
  33. data/lib/mongo/grid/stream/read.rb +9 -2
  34. data/lib/mongo/grid/stream/write.rb +21 -5
  35. data/lib/mongo/index/view.rb +3 -3
  36. data/lib/mongo/lint.rb +10 -3
  37. data/lib/mongo/operation.rb +2 -0
  38. data/lib/mongo/operation/aggregate/result.rb +19 -6
  39. data/lib/mongo/operation/collections_info.rb +1 -1
  40. data/lib/mongo/operation/get_more/result.rb +9 -0
  41. data/lib/mongo/operation/list_collections/command.rb +1 -3
  42. data/lib/mongo/operation/list_collections/op_msg.rb +1 -2
  43. data/lib/mongo/operation/parallel_scan/command.rb +4 -1
  44. data/lib/mongo/operation/parallel_scan/op_msg.rb +4 -1
  45. data/lib/mongo/operation/result.rb +27 -4
  46. data/lib/mongo/operation/shared/executable.rb +19 -5
  47. data/lib/mongo/operation/shared/executable_no_validate.rb +1 -2
  48. data/lib/mongo/operation/shared/executable_transaction_label.rb +0 -9
  49. data/lib/mongo/operation/shared/polymorphic_result.rb +9 -1
  50. data/lib/mongo/operation/shared/result/aggregatable.rb +2 -2
  51. data/lib/mongo/operation/shared/sessions_supported.rb +42 -32
  52. data/lib/mongo/operation/shared/specifiable.rb +40 -0
  53. data/lib/mongo/operation/shared/unpinnable.rb +39 -0
  54. data/lib/mongo/operation/shared/write.rb +1 -1
  55. data/lib/mongo/protocol/update.rb +6 -2
  56. data/lib/mongo/retryable.rb +79 -39
  57. data/lib/mongo/server/connection.rb +10 -3
  58. data/lib/mongo/server/description.rb +25 -1
  59. data/lib/mongo/server/monitor/connection.rb +1 -1
  60. data/lib/mongo/server_selector.rb +10 -0
  61. data/lib/mongo/server_selector/selectable.rb +172 -32
  62. data/lib/mongo/session.rb +654 -581
  63. data/lib/mongo/session/session_pool.rb +1 -1
  64. data/lib/mongo/socket.rb +7 -28
  65. data/lib/mongo/socket/ssl.rb +26 -1
  66. data/lib/mongo/socket/tcp.rb +3 -0
  67. data/lib/mongo/socket/unix.rb +3 -0
  68. data/lib/mongo/uri.rb +112 -265
  69. data/lib/mongo/uri/srv_protocol.rb +4 -1
  70. data/lib/mongo/version.rb +1 -1
  71. data/lib/mongo/write_concern.rb +10 -29
  72. data/lib/mongo/write_concern/acknowledged.rb +12 -0
  73. data/lib/mongo/write_concern/base.rb +17 -13
  74. data/lib/mongo/write_concern/unacknowledged.rb +12 -0
  75. data/spec/atlas/atlas_connectivity_spec.rb +7 -37
  76. data/spec/atlas/operations_spec.rb +25 -0
  77. data/spec/integration/change_stream_examples_spec.rb +45 -31
  78. data/spec/integration/change_stream_spec.rb +305 -5
  79. data/spec/integration/client_spec.rb +44 -0
  80. data/spec/integration/command_monitoring_spec.rb +1 -0
  81. data/spec/integration/command_spec.rb +7 -1
  82. data/spec/integration/mmapv1_spec.rb +28 -0
  83. data/spec/integration/mongos_pinning_spec.rb +34 -0
  84. data/spec/integration/operation_failure_code_spec.rb +2 -2
  85. data/spec/integration/{read_concern.rb → read_concern_spec.rb} +7 -1
  86. data/spec/integration/read_preference_spec.rb +485 -0
  87. data/spec/integration/retryable_writes_spec.rb +8 -19
  88. data/spec/integration/sdam_error_handling_spec.rb +1 -1
  89. data/spec/integration/sdam_events_spec.rb +2 -2
  90. data/spec/integration/server_description_spec.rb +14 -17
  91. data/spec/integration/server_selector_spec.rb +7 -3
  92. data/spec/integration/server_spec.rb +48 -0
  93. data/spec/integration/ssl_uri_options_spec.rb +1 -1
  94. data/spec/integration/step_down_spec.rb +10 -4
  95. data/spec/integration/transactions_examples_spec.rb +11 -10
  96. data/spec/lite_spec_helper.rb +19 -16
  97. data/spec/mongo/auth/scram/negotiation_spec.rb +11 -8
  98. data/spec/mongo/bulk_write/ordered_combiner_spec.rb +6 -6
  99. data/spec/mongo/bulk_write/unordered_combiner_spec.rb +4 -4
  100. data/spec/mongo/bulk_write_spec.rb +12 -2
  101. data/spec/mongo/client_construction_spec.rb +160 -8
  102. data/spec/mongo/client_spec.rb +5 -4
  103. data/spec/mongo/cluster_spec.rb +6 -6
  104. data/spec/mongo/cluster_time_spec.rb +148 -0
  105. data/spec/mongo/collection/view/aggregation_spec.rb +34 -15
  106. data/spec/mongo/collection/view/change_stream_spec.rb +62 -3
  107. data/spec/mongo/collection/view/map_reduce_spec.rb +7 -5
  108. data/spec/mongo/collection/view/readable_spec.rb +4 -4
  109. data/spec/mongo/collection_spec.rb +331 -14
  110. data/spec/mongo/cursor_spec.rb +117 -5
  111. data/spec/mongo/database_spec.rb +240 -8
  112. data/spec/mongo/error/operation_failure_spec.rb +47 -1
  113. data/spec/mongo/error/parser_spec.rb +160 -23
  114. data/spec/mongo/operation/insert/bulk_spec.rb +2 -1
  115. data/spec/mongo/operation/result_spec.rb +27 -0
  116. data/spec/mongo/operation/update/bulk_spec.rb +1 -0
  117. data/spec/mongo/retryable_spec.rb +2 -0
  118. data/spec/mongo/server/app_metadata_spec.rb +2 -2
  119. data/spec/mongo/server/connection_spec.rb +13 -17
  120. data/spec/mongo/server/monitor/connection_spec.rb +13 -10
  121. data/spec/mongo/server_selector_spec.rb +34 -2
  122. data/spec/mongo/session/session_pool_spec.rb +14 -3
  123. data/spec/mongo/session_spec.rb +3 -3
  124. data/spec/mongo/session_transaction_spec.rb +4 -3
  125. data/spec/mongo/socket/ssl_spec.rb +19 -5
  126. data/spec/mongo/socket_spec.rb +1 -62
  127. data/spec/mongo/uri/srv_protocol_spec.rb +14 -20
  128. data/spec/mongo/uri_option_parsing_spec.rb +94 -8
  129. data/spec/mongo/uri_spec.rb +23 -10
  130. data/spec/mongo/write_concern_spec.rb +56 -3
  131. data/spec/spec_tests/change_streams_spec.rb +2 -1
  132. data/spec/spec_tests/cmap_spec.rb +1 -1
  133. data/spec/spec_tests/crud_spec.rb +12 -2
  134. data/spec/spec_tests/data/change_streams/change-streams-errors.yml +24 -1
  135. data/spec/spec_tests/data/change_streams/change-streams.yml +172 -3
  136. data/spec/spec_tests/data/command_monitoring/bulkWrite.yml +1 -1
  137. data/spec/spec_tests/data/command_monitoring/updateMany.yml +0 -2
  138. data/spec/spec_tests/data/command_monitoring/updateOne.yml +0 -5
  139. data/spec/spec_tests/data/crud/read/aggregate-out.yml +0 -6
  140. data/spec/spec_tests/data/crud/read/count-empty.yml +29 -0
  141. data/spec/spec_tests/data/crud/write/bulkWrite-arrayFilters.yml +1 -0
  142. data/spec/spec_tests/data/crud/write/bulkWrite-collation.yml +101 -0
  143. data/spec/spec_tests/data/crud/write/bulkWrite.yml +401 -0
  144. data/spec/spec_tests/data/crud/write/insertMany.yml +58 -2
  145. data/spec/spec_tests/data/crud/write/updateMany-arrayFilters.yml +3 -0
  146. data/spec/spec_tests/data/crud/write/updateOne-arrayFilters.yml +6 -1
  147. data/spec/spec_tests/data/crud_v2/aggregate-merge.yml +103 -0
  148. data/spec/spec_tests/data/crud_v2/aggregate-out-readConcern.yml +110 -0
  149. data/spec/spec_tests/data/crud_v2/bulkWrite-arrayFilters.yml +81 -0
  150. data/spec/spec_tests/data/crud_v2/db-aggregate.yml +38 -0
  151. data/spec/spec_tests/data/crud_v2/updateWithPipelines.yml +92 -0
  152. data/spec/spec_tests/data/retryable_writes/insertOne-serverErrors.yml +2 -2
  153. data/spec/spec_tests/data/transactions/abort.yml +3 -0
  154. data/spec/spec_tests/data/transactions/bulk.yml +3 -8
  155. data/spec/spec_tests/data/transactions/causal-consistency.yml +3 -8
  156. data/spec/spec_tests/data/transactions/commit.yml +3 -1
  157. data/spec/spec_tests/data/transactions/count.yml +3 -0
  158. data/spec/spec_tests/data/transactions/delete.yml +3 -0
  159. data/spec/spec_tests/data/transactions/error-labels.yml +4 -1
  160. data/spec/spec_tests/data/transactions/errors-client.yml +56 -0
  161. data/spec/spec_tests/data/transactions/errors.yml +3 -0
  162. data/spec/spec_tests/data/transactions/findOneAndDelete.yml +3 -0
  163. data/spec/spec_tests/data/transactions/findOneAndReplace.yml +3 -0
  164. data/spec/spec_tests/data/transactions/findOneAndUpdate.yml +3 -0
  165. data/spec/spec_tests/data/transactions/insert.yml +3 -0
  166. data/spec/spec_tests/data/transactions/isolation.yml +3 -0
  167. data/spec/spec_tests/data/transactions/mongos-pin-auto.yml +1671 -0
  168. data/spec/spec_tests/data/transactions/mongos-recovery-token.yml +347 -0
  169. data/spec/spec_tests/data/transactions/pin-mongos.yml +557 -0
  170. data/spec/spec_tests/data/transactions/read-concern.yml +3 -0
  171. data/spec/spec_tests/data/transactions/read-pref.yml +3 -0
  172. data/spec/spec_tests/data/transactions/reads.yml +3 -0
  173. data/spec/spec_tests/data/transactions/retryable-abort.yml +5 -2
  174. data/spec/spec_tests/data/transactions/retryable-commit.yml +4 -1
  175. data/spec/spec_tests/data/transactions/retryable-writes.yml +3 -0
  176. data/spec/spec_tests/data/transactions/run-command.yml +3 -0
  177. data/spec/spec_tests/data/transactions/transaction-options.yml +6 -0
  178. data/spec/spec_tests/data/transactions/update.yml +3 -8
  179. data/spec/spec_tests/data/transactions/write-concern.yml +348 -38
  180. data/spec/spec_tests/data/transactions_api/callback-aborts.yml +6 -0
  181. data/spec/spec_tests/data/transactions_api/callback-commits.yml +5 -0
  182. data/spec/spec_tests/data/transactions_api/callback-retry.yml +7 -2
  183. data/spec/spec_tests/data/transactions_api/commit-retry.yml +70 -15
  184. data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror-4.2.yml +3 -0
  185. data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror.yml +3 -0
  186. data/spec/spec_tests/data/transactions_api/commit-writeconcernerror.yml +59 -109
  187. data/spec/spec_tests/data/transactions_api/commit.yml +5 -0
  188. data/spec/spec_tests/data/transactions_api/transaction-options.yml +10 -0
  189. data/spec/spec_tests/retryable_reads_spec.rb +5 -2
  190. data/spec/spec_tests/retryable_writes_spec.rb +5 -2
  191. data/spec/spec_tests/sdam_monitoring_spec.rb +3 -3
  192. data/spec/spec_tests/sdam_spec.rb +2 -2
  193. data/spec/spec_tests/transactions_api_spec.rb +1 -67
  194. data/spec/spec_tests/transactions_spec.rb +2 -66
  195. data/spec/support/authorization.rb +4 -0
  196. data/spec/support/change_streams.rb +30 -10
  197. data/spec/support/change_streams/operation.rb +27 -0
  198. data/spec/support/client_registry.rb +44 -25
  199. data/spec/support/cluster_config.rb +25 -14
  200. data/spec/support/cluster_tools.rb +32 -10
  201. data/spec/support/command_monitoring.rb +1 -1
  202. data/spec/support/common_shortcuts.rb +30 -0
  203. data/spec/support/connection_string.rb +8 -3
  204. data/spec/support/constraints.rb +34 -0
  205. data/spec/support/crud.rb +31 -16
  206. data/spec/support/crud/context.rb +23 -0
  207. data/spec/support/crud/operation.rb +311 -14
  208. data/spec/support/crud/spec.rb +2 -1
  209. data/spec/support/crud/test.rb +24 -27
  210. data/spec/support/crud/test_base.rb +22 -0
  211. data/spec/support/crud/verifier.rb +15 -1
  212. data/spec/support/event_subscriber.rb +12 -0
  213. data/spec/support/sdam_formatter_integration.rb +12 -6
  214. data/spec/support/shared/server_selector.rb +10 -0
  215. data/spec/support/shared/session.rb +13 -12
  216. data/spec/support/spec_config.rb +32 -22
  217. data/spec/support/spec_setup.rb +2 -2
  218. data/spec/support/transactions.rb +87 -0
  219. data/spec/support/transactions/context.rb +33 -0
  220. data/spec/support/transactions/operation.rb +99 -349
  221. data/spec/support/transactions/spec.rb +1 -3
  222. data/spec/support/transactions/test.rb +110 -49
  223. data/spec/support/utils.rb +74 -1
  224. metadata +52 -10
  225. metadata.gz.sig +0 -0
  226. data/spec/support/crud/read.rb +0 -265
  227. data/spec/support/crud/write.rb +0 -284
@@ -10,7 +10,7 @@ tests:
10
10
  documents:
11
11
  - {_id: 2, x: 22}
12
12
  - {_id: 3, x: 33}
13
-
13
+ options: { ordered: true }
14
14
  outcome:
15
15
  result:
16
16
  insertedIds: { 0: 2, 1: 3 }
@@ -18,4 +18,60 @@ tests:
18
18
  data:
19
19
  - {_id: 1, x: 11}
20
20
  - {_id: 2, x: 22}
21
- - {_id: 3, x: 33}
21
+ - {_id: 3, x: 33}
22
+ -
23
+ description: "InsertMany continue-on-error behavior with unordered (preexisting duplicate key)"
24
+ operation:
25
+ name: "insertMany"
26
+ arguments:
27
+ documents:
28
+ - { _id: 1, x: 11 }
29
+ - { _id: 2, x: 22 }
30
+ - { _id: 3, x: 33 }
31
+ options: { ordered: false }
32
+ outcome:
33
+ error: true
34
+ result:
35
+ deletedCount: 0
36
+ insertedCount: 2
37
+ # Since the map of insertedIds is generated before execution it
38
+ # could indicate inserts that did not actually succeed. We omit
39
+ # this field rather than expect drivers to provide an accurate
40
+ # map filtered by write errors.
41
+ matchedCount: 0
42
+ modifiedCount: 0
43
+ upsertedCount: 0
44
+ upsertedIds: { }
45
+ collection:
46
+ data:
47
+ - { _id: 1, x: 11 }
48
+ - { _id: 2, x: 22 }
49
+ - { _id: 3, x: 33 }
50
+ -
51
+ description: "InsertMany continue-on-error behavior with unordered (duplicate key in requests)"
52
+ operation:
53
+ name: "insertMany"
54
+ arguments:
55
+ documents:
56
+ - { _id: 2, x: 22 }
57
+ - { _id: 2, x: 22 }
58
+ - { _id: 3, x: 33 }
59
+ options: { ordered: false }
60
+ outcome:
61
+ error: true
62
+ result:
63
+ deletedCount: 0
64
+ insertedCount: 2
65
+ # Since the map of insertedIds is generated before execution it
66
+ # could indicate inserts that did not actually succeed. We omit
67
+ # this field rather than expect drivers to provide an accurate
68
+ # map filtered by write errors.
69
+ matchedCount: 0
70
+ modifiedCount: 0
71
+ upsertedCount: 0
72
+ upsertedIds: { }
73
+ collection:
74
+ data:
75
+ - { _id: 1, x: 11 }
76
+ - { _id: 2, x: 22 }
77
+ - { _id: 3, x: 33 }
@@ -19,6 +19,7 @@ tests:
19
19
  result:
20
20
  matchedCount: 2
21
21
  modifiedCount: 0
22
+ upsertedCount: 0
22
23
  collection:
23
24
  data:
24
25
  - {_id: 1, y: [{b: 3}, {b: 1}]}
@@ -38,6 +39,7 @@ tests:
38
39
  result:
39
40
  matchedCount: 2
40
41
  modifiedCount: 1
42
+ upsertedCount: 0
41
43
  collection:
42
44
  data:
43
45
  - {_id: 1, y: [{b: 2}, {b: 1}]}
@@ -57,6 +59,7 @@ tests:
57
59
  result:
58
60
  matchedCount: 2
59
61
  modifiedCount: 2
62
+ upsertedCount: 0
60
63
  collection:
61
64
  data:
62
65
  - {_id: 1, y: [{b: 3}, {b: 2}]}
@@ -20,6 +20,7 @@ tests:
20
20
  result:
21
21
  matchedCount: 1
22
22
  modifiedCount: 0
23
+ upsertedCount: 0
23
24
  collection:
24
25
  data:
25
26
  - {_id: 1, y: [{b: 3}, {b: 1}]}
@@ -40,6 +41,7 @@ tests:
40
41
  result:
41
42
  matchedCount: 1
42
43
  modifiedCount: 1
44
+ upsertedCount: 0
43
45
  collection:
44
46
  data:
45
47
  - {_id: 1, y: [{b: 2}, {b: 1}]}
@@ -60,6 +62,7 @@ tests:
60
62
  result:
61
63
  matchedCount: 1
62
64
  modifiedCount: 1
65
+ upsertedCount: 0
63
66
  collection:
64
67
  data:
65
68
  - {_id: 1, y: [{b: 3}, {b: 2}]}
@@ -80,7 +83,8 @@ tests:
80
83
  outcome:
81
84
  result:
82
85
  matchedCount: 1
83
- modifiedCount: 0
86
+ modifiedCount: 0
87
+ upsertedCount: 0
84
88
  collection:
85
89
  data:
86
90
  - {_id: 1, y: [{b: 3}, {b: 1}]}
@@ -102,6 +106,7 @@ tests:
102
106
  result:
103
107
  matchedCount: 1
104
108
  modifiedCount: 1
109
+ upsertedCount: 0
105
110
  collection:
106
111
  data:
107
112
  - {_id: 1, y: [{b: 3}, {b: 1}]}
@@ -0,0 +1,103 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.2.0"
4
+
5
+ data:
6
+ - { _id: 1, x: 11 }
7
+ - { _id: 2, x: 22 }
8
+ - { _id: 3, x: 33 }
9
+
10
+ collection_name: &collection_name 'test_aggregate_merge'
11
+
12
+ tests:
13
+ -
14
+ description: "Aggregate with $merge"
15
+ operations:
16
+ -
17
+ object: collection
18
+ name: aggregate
19
+ arguments: &arguments
20
+ pipeline: &pipeline
21
+ - $sort: { x : 1 }
22
+ - $match: { _id: { $gt: 1 } }
23
+ - $merge: { into: &output_collection "other_test_collection" }
24
+ expectations:
25
+ -
26
+ command_started_event:
27
+ command:
28
+ aggregate: *collection_name
29
+ pipeline: *pipeline
30
+ outcome: &outcome
31
+ collection:
32
+ name: *output_collection
33
+ data:
34
+ - { _id: 2, x: 22 }
35
+ - { _id: 3, x: 33 }
36
+ -
37
+ description: "Aggregate with $merge and batch size of 0"
38
+ operations:
39
+ -
40
+ object: collection
41
+ name: aggregate
42
+ arguments:
43
+ <<: *arguments
44
+ batchSize: 0
45
+ expectations:
46
+ -
47
+ command_started_event:
48
+ command:
49
+ aggregate: *collection_name
50
+ pipeline: *pipeline
51
+ cursor: {}
52
+ outcome: *outcome
53
+ -
54
+ description: "Aggregate with $merge and majority readConcern"
55
+ operations:
56
+ -
57
+ object: collection
58
+ name: aggregate
59
+ collectionOptions:
60
+ readConcern: { level: "majority" }
61
+ arguments: *arguments
62
+ expectations:
63
+ -
64
+ command_started_event:
65
+ command:
66
+ aggregate: *collection_name
67
+ pipeline: *pipeline
68
+ readConcern: { level: "majority" }
69
+ outcome: *outcome
70
+ -
71
+ description: "Aggregate with $merge and local readConcern"
72
+ operations:
73
+ -
74
+ object: collection
75
+ name: aggregate
76
+ collectionOptions:
77
+ readConcern: { level: "local" }
78
+ arguments: *arguments
79
+ expectations:
80
+ -
81
+ command_started_event:
82
+ command:
83
+ aggregate: *collection_name
84
+ pipeline: *pipeline
85
+ readConcern: { level: "local" }
86
+ outcome: *outcome
87
+ -
88
+ description: "Aggregate with $merge and available readConcern"
89
+ operations:
90
+ -
91
+ object: collection
92
+ name: aggregate
93
+ collectionOptions:
94
+ readConcern: { level: "available" }
95
+ arguments: *arguments
96
+ expectations:
97
+ -
98
+ command_started_event:
99
+ command:
100
+ aggregate: *collection_name
101
+ pipeline: *pipeline
102
+ readConcern: { level: "available" }
103
+ outcome: *outcome
@@ -0,0 +1,110 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.1.0"
4
+ topology: ["replicaset", "sharded"]
5
+
6
+ data:
7
+ - { _id: 1, x: 11 }
8
+ - { _id: 2, x: 22 }
9
+ - { _id: 3, x: 33 }
10
+
11
+ collection_name: &collection_name 'test_aggregate_out_readconcern'
12
+
13
+ tests:
14
+ -
15
+ description: "readConcern majority with out stage"
16
+ operations:
17
+ -
18
+ object: collection
19
+ name: aggregate
20
+ collectionOptions:
21
+ readConcern: { level: "majority" }
22
+ arguments: &arguments
23
+ pipeline:
24
+ - $sort: { x : 1 }
25
+ - $match: { _id: { $gt: 1 } }
26
+ - $out: &output_collection "other_test_collection"
27
+ expectations:
28
+ -
29
+ command_started_event:
30
+ command:
31
+ aggregate: *collection_name
32
+ pipeline: &pipeline
33
+ - $sort: { x: 1 }
34
+ - $match: { _id: { $gt: 1 } }
35
+ - $out: "other_test_collection"
36
+ readConcern: { level: "majority" }
37
+ outcome: &outcome
38
+ collection:
39
+ name: *output_collection
40
+ data:
41
+ - { _id: 2, x: 22 }
42
+ - { _id: 3, x: 33 }
43
+ -
44
+ description: "readConcern local with out stage"
45
+ operations:
46
+ -
47
+ object: collection
48
+ name: aggregate
49
+ collectionOptions:
50
+ readConcern: { level: "local" }
51
+ arguments: *arguments
52
+ expectations:
53
+ -
54
+ command_started_event:
55
+ command:
56
+ aggregate: *collection_name
57
+ pipeline: *pipeline
58
+ readConcern: { level: "local" }
59
+ outcome: *outcome
60
+ -
61
+ description: "readConcern available with out stage"
62
+ operations:
63
+ -
64
+ object: collection
65
+ name: aggregate
66
+ collectionOptions:
67
+ readConcern: { level: "available" }
68
+ arguments: *arguments
69
+ expectations:
70
+ -
71
+ command_started_event:
72
+ command:
73
+ aggregate: *collection_name
74
+ pipeline: *pipeline
75
+ readConcern: { level: "available" }
76
+ outcome: *outcome
77
+ -
78
+ description: "readConcern linearizable with out stage"
79
+ operations:
80
+ -
81
+ object: collection
82
+ name: aggregate
83
+ collectionOptions:
84
+ readConcern: { level: "linearizable" }
85
+ arguments: *arguments
86
+ error: true
87
+ expectations:
88
+ -
89
+ command_started_event:
90
+ command:
91
+ aggregate: *collection_name
92
+ pipeline: *pipeline
93
+ readConcern: { level: "linearizable" }
94
+ -
95
+ description: "invalid readConcern with out stage"
96
+ operations:
97
+ -
98
+ object: collection
99
+ name: aggregate
100
+ collectionOptions:
101
+ readConcern: { level: "!invalid123" }
102
+ arguments: *arguments
103
+ error: true
104
+ expectations:
105
+ -
106
+ command_started_event:
107
+ command:
108
+ aggregate: *collection_name
109
+ pipeline: *pipeline
110
+ readConcern: { level: "!invalid123" }
@@ -0,0 +1,81 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "3.5.6"
4
+
5
+ data:
6
+ - {_id: 1, y: [{b: 3}, {b: 1}]}
7
+ - {_id: 2, y: [{b: 0}, {b: 1}]}
8
+
9
+ collection_name: &collection_name "test"
10
+ database_name: &database_name "crud-tests"
11
+
12
+ tests:
13
+ -
14
+ description: "BulkWrite with arrayFilters"
15
+ operations:
16
+ -
17
+ name: "bulkWrite"
18
+ arguments:
19
+ requests:
20
+ -
21
+ # UpdateOne when one document matches arrayFilters
22
+ name: "updateOne"
23
+ arguments:
24
+ filter: {}
25
+ update: { $set: { "y.$[i].b": 2 } }
26
+ arrayFilters: [ { "i.b": 3 } ]
27
+ -
28
+ # UpdateMany when multiple documents match arrayFilters
29
+ name: "updateMany"
30
+ arguments:
31
+ filter: {}
32
+ update: { $set: { "y.$[i].b": 2 } }
33
+ arrayFilters: [ { "i.b": 1 } ]
34
+ options: { ordered: true }
35
+ result:
36
+ deletedCount: 0
37
+ insertedCount: 0
38
+ insertedIds: {}
39
+ matchedCount: 3
40
+ modifiedCount: 3
41
+ upsertedCount: 0
42
+ upsertedIds: {}
43
+ expectations:
44
+ -
45
+ command_started_event:
46
+ command:
47
+ update: *collection_name
48
+ updates:
49
+ -
50
+ q: {}
51
+ u: { $set: { "y.$[i].b": 2 } }
52
+ arrayFilters: [ { "i.b": 3 } ]
53
+ ordered: true
54
+ # TODO: check that these fields do not exist once
55
+ # https://jira.mongodb.org/browse/SPEC-1215 has been resolved.
56
+ # writeConcern: null
57
+ # bypassDocumentValidation: null
58
+ command_name: update
59
+ database_name: *database_name
60
+ -
61
+ command_started_event:
62
+ command:
63
+ update: *collection_name
64
+ updates:
65
+ -
66
+ q: {}
67
+ u: { $set: { "y.$[i].b": 2 } }
68
+ multi: true
69
+ arrayFilters: [ { "i.b": 1 } ]
70
+ ordered: true
71
+ # TODO: check that these fields do not exist once
72
+ # https://jira.mongodb.org/browse/SPEC-1215 has been resolved.
73
+ # writeConcern: null
74
+ # bypassDocumentValidation: null
75
+ command_name: update
76
+ database_name: *database_name
77
+ outcome:
78
+ collection:
79
+ data:
80
+ - {_id: 1, y: [{b: 2}, {b: 2}]}
81
+ - {_id: 2, y: [{b: 0}, {b: 2}]}
@@ -0,0 +1,38 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "3.6.0"
4
+
5
+ database_name: &database_name "admin"
6
+
7
+ tests:
8
+ -
9
+ description: "Aggregate with $listLocalSessions"
10
+ operations:
11
+ -
12
+ name: aggregate
13
+ object: database
14
+ arguments:
15
+ pipeline:
16
+ - $listLocalSessions: { }
17
+ - $limit: 1
18
+ - $addFields: { dummy: "dummy field"}
19
+ - $project: { _id: 0, dummy: 1}
20
+ result:
21
+ -
22
+ dummy: "dummy field"
23
+ -
24
+ description: "Aggregate with $listLocalSessions and allowDiskUse"
25
+ operations:
26
+ -
27
+ name: aggregate
28
+ object: database
29
+ arguments:
30
+ pipeline:
31
+ - $listLocalSessions: { }
32
+ - $limit: 1
33
+ - $addFields: { dummy: "dummy field"}
34
+ - $project: { _id: 0, dummy: 1 }
35
+ allowDiskUse: true
36
+ result:
37
+ -
38
+ dummy: "dummy field"