mongo 2.2.7 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (266) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/LICENSE +1 -1
  5. data/README.md +1 -1
  6. data/Rakefile +1 -1
  7. data/lib/mongo.rb +1 -1
  8. data/lib/mongo/address.rb +1 -1
  9. data/lib/mongo/address/ipv4.rb +1 -1
  10. data/lib/mongo/address/ipv6.rb +1 -1
  11. data/lib/mongo/address/unix.rb +1 -1
  12. data/lib/mongo/auth.rb +1 -1
  13. data/lib/mongo/auth/cr.rb +1 -1
  14. data/lib/mongo/auth/ldap.rb +1 -1
  15. data/lib/mongo/auth/roles.rb +1 -1
  16. data/lib/mongo/auth/user.rb +1 -1
  17. data/lib/mongo/auth/user/view.rb +5 -5
  18. data/lib/mongo/auth/x509.rb +1 -1
  19. data/lib/mongo/bson.rb +1 -1
  20. data/lib/mongo/bulk_write.rb +4 -4
  21. data/lib/mongo/bulk_write/combineable.rb +1 -1
  22. data/lib/mongo/bulk_write/ordered_combiner.rb +1 -1
  23. data/lib/mongo/bulk_write/result.rb +1 -1
  24. data/lib/mongo/bulk_write/result_combiner.rb +1 -1
  25. data/lib/mongo/bulk_write/transformable.rb +1 -1
  26. data/lib/mongo/bulk_write/unordered_combiner.rb +1 -1
  27. data/lib/mongo/bulk_write/validatable.rb +1 -1
  28. data/lib/mongo/client.rb +2 -2
  29. data/lib/mongo/cluster.rb +15 -3
  30. data/lib/mongo/cluster/cursor_reaper.rb +174 -0
  31. data/lib/mongo/cluster/topology.rb +1 -1
  32. data/lib/mongo/cluster/topology/replica_set.rb +1 -1
  33. data/lib/mongo/cluster/topology/sharded.rb +1 -1
  34. data/lib/mongo/cluster/topology/single.rb +1 -1
  35. data/lib/mongo/cluster/topology/unknown.rb +1 -1
  36. data/lib/mongo/collection.rb +5 -4
  37. data/lib/mongo/collection/view.rb +4 -4
  38. data/lib/mongo/collection/view/aggregation.rb +2 -2
  39. data/lib/mongo/collection/view/builder.rb +1 -1
  40. data/lib/mongo/collection/view/builder/aggregation.rb +1 -1
  41. data/lib/mongo/collection/view/builder/find_command.rb +1 -1
  42. data/lib/mongo/collection/view/builder/flags.rb +1 -1
  43. data/lib/mongo/collection/view/builder/map_reduce.rb +1 -1
  44. data/lib/mongo/collection/view/builder/modifiers.rb +1 -1
  45. data/lib/mongo/collection/view/builder/op_query.rb +1 -1
  46. data/lib/mongo/collection/view/explainable.rb +1 -1
  47. data/lib/mongo/collection/view/immutable.rb +1 -1
  48. data/lib/mongo/collection/view/iterable.rb +2 -2
  49. data/lib/mongo/collection/view/map_reduce.rb +3 -3
  50. data/lib/mongo/collection/view/readable.rb +23 -6
  51. data/lib/mongo/collection/view/writable.rb +3 -3
  52. data/lib/mongo/cursor.rb +50 -7
  53. data/lib/mongo/cursor/builder.rb +1 -1
  54. data/lib/mongo/cursor/builder/get_more_command.rb +1 -1
  55. data/lib/mongo/cursor/builder/kill_cursors_command.rb +29 -1
  56. data/lib/mongo/cursor/builder/op_get_more.rb +1 -1
  57. data/lib/mongo/cursor/builder/op_kill_cursors.rb +29 -1
  58. data/lib/mongo/database.rb +4 -4
  59. data/lib/mongo/database/view.rb +2 -2
  60. data/lib/mongo/dbref.rb +4 -3
  61. data/lib/mongo/error.rb +1 -1
  62. data/lib/mongo/error/bulk_write_error.rb +1 -1
  63. data/lib/mongo/error/closed_stream.rb +1 -1
  64. data/lib/mongo/error/extra_file_chunk.rb +1 -1
  65. data/lib/mongo/error/file_not_found.rb +1 -1
  66. data/lib/mongo/error/invalid_bulk_operation.rb +1 -1
  67. data/lib/mongo/error/invalid_bulk_operation_type.rb +1 -1
  68. data/lib/mongo/error/invalid_collection_name.rb +1 -1
  69. data/lib/mongo/error/invalid_database_name.rb +1 -1
  70. data/lib/mongo/error/invalid_document.rb +1 -1
  71. data/lib/mongo/error/invalid_file.rb +1 -1
  72. data/lib/mongo/error/invalid_file_revision.rb +1 -1
  73. data/lib/mongo/error/invalid_nonce.rb +1 -1
  74. data/lib/mongo/error/invalid_replacement_document.rb +1 -1
  75. data/lib/mongo/error/invalid_server_preference.rb +1 -1
  76. data/lib/mongo/error/invalid_signature.rb +1 -1
  77. data/lib/mongo/error/invalid_update_document.rb +1 -1
  78. data/lib/mongo/error/invalid_uri.rb +1 -1
  79. data/lib/mongo/error/invalid_write_concern.rb +1 -1
  80. data/lib/mongo/error/max_bson_size.rb +1 -1
  81. data/lib/mongo/error/max_message_size.rb +1 -1
  82. data/lib/mongo/error/missing_file_chunk.rb +1 -1
  83. data/lib/mongo/error/multi_index_drop.rb +1 -1
  84. data/lib/mongo/error/need_primary_server.rb +1 -1
  85. data/lib/mongo/error/no_server_available.rb +4 -2
  86. data/lib/mongo/error/operation_failure.rb +1 -1
  87. data/lib/mongo/error/parser.rb +1 -1
  88. data/lib/mongo/error/socket_error.rb +1 -1
  89. data/lib/mongo/error/socket_timeout_error.rb +1 -1
  90. data/lib/mongo/error/unchangeable_collection_option.rb +1 -1
  91. data/lib/mongo/error/unexpected_chunk_length.rb +1 -1
  92. data/lib/mongo/error/unexpected_response.rb +1 -1
  93. data/lib/mongo/error/unsupported_features.rb +1 -1
  94. data/lib/mongo/event.rb +1 -1
  95. data/lib/mongo/event/description_changed.rb +1 -1
  96. data/lib/mongo/event/publisher.rb +1 -1
  97. data/lib/mongo/event/subscriber.rb +1 -1
  98. data/lib/mongo/grid.rb +1 -1
  99. data/lib/mongo/grid/file.rb +6 -2
  100. data/lib/mongo/grid/file/chunk.rb +6 -4
  101. data/lib/mongo/grid/file/info.rb +7 -3
  102. data/lib/mongo/grid/fs_bucket.rb +12 -6
  103. data/lib/mongo/grid/stream.rb +1 -1
  104. data/lib/mongo/grid/stream/read.rb +2 -4
  105. data/lib/mongo/grid/stream/write.rb +4 -3
  106. data/lib/mongo/index.rb +1 -1
  107. data/lib/mongo/index/view.rb +5 -4
  108. data/lib/mongo/loggable.rb +1 -1
  109. data/lib/mongo/logger.rb +1 -1
  110. data/lib/mongo/monitoring.rb +1 -1
  111. data/lib/mongo/operation.rb +1 -1
  112. data/lib/mongo/operation/commands.rb +1 -1
  113. data/lib/mongo/operation/commands/aggregate.rb +7 -7
  114. data/lib/mongo/operation/commands/aggregate/result.rb +1 -1
  115. data/lib/mongo/operation/commands/collections_info.rb +10 -9
  116. data/lib/mongo/operation/commands/collections_info/result.rb +1 -1
  117. data/lib/mongo/operation/commands/command.rb +1 -1
  118. data/lib/mongo/operation/commands/indexes.rb +12 -11
  119. data/lib/mongo/operation/commands/list_collections.rb +1 -1
  120. data/lib/mongo/operation/commands/list_collections/result.rb +1 -1
  121. data/lib/mongo/operation/commands/list_indexes.rb +1 -1
  122. data/lib/mongo/operation/commands/list_indexes/result.rb +1 -1
  123. data/lib/mongo/operation/commands/map_reduce.rb +1 -1
  124. data/lib/mongo/operation/commands/map_reduce/result.rb +1 -1
  125. data/lib/mongo/operation/commands/user_query.rb +11 -10
  126. data/lib/mongo/operation/commands/users_info.rb +2 -2
  127. data/lib/mongo/operation/commands/users_info/result.rb +1 -1
  128. data/lib/mongo/operation/executable.rb +8 -7
  129. data/lib/mongo/operation/kill_cursors.rb +2 -2
  130. data/lib/mongo/operation/limited.rb +1 -1
  131. data/lib/mongo/operation/read.rb +1 -1
  132. data/lib/mongo/operation/read/get_more.rb +2 -2
  133. data/lib/mongo/operation/read/query.rb +1 -1
  134. data/lib/mongo/operation/read/query/result.rb +1 -1
  135. data/lib/mongo/operation/read_preference.rb +10 -10
  136. data/lib/mongo/operation/result.rb +1 -1
  137. data/lib/mongo/operation/specifiable.rb +2 -2
  138. data/lib/mongo/operation/write.rb +1 -1
  139. data/lib/mongo/operation/write/bulk.rb +1 -1
  140. data/lib/mongo/operation/write/bulk/bulkable.rb +9 -9
  141. data/lib/mongo/operation/write/bulk/delete.rb +3 -3
  142. data/lib/mongo/operation/write/bulk/delete/result.rb +1 -1
  143. data/lib/mongo/operation/write/bulk/insert.rb +5 -5
  144. data/lib/mongo/operation/write/bulk/insert/result.rb +1 -1
  145. data/lib/mongo/operation/write/bulk/legacy_mergable.rb +1 -1
  146. data/lib/mongo/operation/write/bulk/mergable.rb +1 -1
  147. data/lib/mongo/operation/write/bulk/update.rb +3 -3
  148. data/lib/mongo/operation/write/bulk/update/result.rb +1 -1
  149. data/lib/mongo/operation/write/command.rb +1 -1
  150. data/lib/mongo/operation/write/command/create_index.rb +1 -1
  151. data/lib/mongo/operation/write/command/create_user.rb +1 -1
  152. data/lib/mongo/operation/write/command/delete.rb +1 -1
  153. data/lib/mongo/operation/write/command/drop_index.rb +1 -1
  154. data/lib/mongo/operation/write/command/insert.rb +11 -1
  155. data/lib/mongo/operation/write/command/remove_user.rb +1 -1
  156. data/lib/mongo/operation/write/command/update.rb +1 -1
  157. data/lib/mongo/operation/write/command/update_user.rb +1 -1
  158. data/lib/mongo/operation/write/command/writable.rb +7 -6
  159. data/lib/mongo/operation/write/create_index.rb +1 -1
  160. data/lib/mongo/operation/write/create_user.rb +1 -1
  161. data/lib/mongo/operation/write/delete.rb +1 -1
  162. data/lib/mongo/operation/write/delete/result.rb +1 -1
  163. data/lib/mongo/operation/write/drop_index.rb +5 -5
  164. data/lib/mongo/operation/write/gle.rb +3 -3
  165. data/lib/mongo/operation/write/idable.rb +1 -1
  166. data/lib/mongo/operation/write/insert.rb +5 -5
  167. data/lib/mongo/operation/write/insert/result.rb +1 -1
  168. data/lib/mongo/operation/write/remove_user.rb +1 -1
  169. data/lib/mongo/operation/write/update.rb +1 -1
  170. data/lib/mongo/operation/write/update/result.rb +1 -1
  171. data/lib/mongo/operation/write/update_user.rb +1 -1
  172. data/lib/mongo/operation/write/write_command_enabled.rb +10 -9
  173. data/lib/mongo/protocol/bit_vector.rb +2 -2
  174. data/lib/mongo/protocol/delete.rb +1 -1
  175. data/lib/mongo/protocol/get_more.rb +1 -1
  176. data/lib/mongo/protocol/insert.rb +5 -1
  177. data/lib/mongo/protocol/kill_cursors.rb +1 -1
  178. data/lib/mongo/protocol/message.rb +9 -5
  179. data/lib/mongo/protocol/query.rb +1 -1
  180. data/lib/mongo/protocol/reply.rb +1 -1
  181. data/lib/mongo/protocol/serializers.rb +8 -8
  182. data/lib/mongo/protocol/update.rb +1 -1
  183. data/lib/mongo/server.rb +40 -3
  184. data/lib/mongo/server/connectable.rb +1 -1
  185. data/lib/mongo/server/connection.rb +4 -2
  186. data/lib/mongo/server/connection_pool.rb +1 -1
  187. data/lib/mongo/server/connection_pool/queue.rb +1 -1
  188. data/lib/mongo/server/context.rb +3 -1
  189. data/lib/mongo/server/description.rb +1 -1
  190. data/lib/mongo/server/description/inspector/description_changed.rb +1 -1
  191. data/lib/mongo/server/monitor.rb +1 -1
  192. data/lib/mongo/server_selector.rb +2 -1
  193. data/lib/mongo/server_selector/nearest.rb +1 -1
  194. data/lib/mongo/server_selector/primary.rb +1 -1
  195. data/lib/mongo/server_selector/primary_preferred.rb +1 -1
  196. data/lib/mongo/server_selector/secondary.rb +1 -1
  197. data/lib/mongo/server_selector/secondary_preferred.rb +1 -1
  198. data/lib/mongo/server_selector/selectable.rb +12 -7
  199. data/lib/mongo/socket.rb +1 -1
  200. data/lib/mongo/socket/ssl.rb +1 -1
  201. data/lib/mongo/socket/tcp.rb +1 -1
  202. data/lib/mongo/socket/unix.rb +1 -1
  203. data/lib/mongo/uri.rb +1 -1
  204. data/lib/mongo/version.rb +2 -2
  205. data/lib/mongo/write_concern/acknowledged.rb +1 -1
  206. data/lib/mongo/write_concern/normalizable.rb +1 -1
  207. data/lib/mongo/write_concern/unacknowledged.rb +1 -1
  208. data/mongo.gemspec +1 -1
  209. data/spec/mongo/client_spec.rb +2 -2
  210. data/spec/mongo/cluster/cursor_reaper_spec.rb +216 -0
  211. data/spec/mongo/cluster_spec.rb +36 -5
  212. data/spec/mongo/collection/view/aggregation_spec.rb +2 -2
  213. data/spec/mongo/collection/view/map_reduce_spec.rb +2 -2
  214. data/spec/mongo/collection/view/readable_spec.rb +203 -5
  215. data/spec/mongo/collection/view_spec.rb +10 -0
  216. data/spec/mongo/collection_spec.rb +64 -18
  217. data/spec/mongo/cursor_spec.rb +89 -0
  218. data/spec/mongo/database_spec.rb +79 -13
  219. data/spec/mongo/grid/fs_bucket_spec.rb +119 -1
  220. data/spec/mongo/grid/stream/write_spec.rb +63 -12
  221. data/spec/mongo/index/view_spec.rb +19 -0
  222. data/spec/mongo/operation/commands/aggregate_spec.rb +10 -7
  223. data/spec/mongo/operation/commands/collections_info_spec.rb +1 -1
  224. data/spec/mongo/operation/commands/command_spec.rb +3 -3
  225. data/spec/mongo/operation/commands/indexes_spec.rb +1 -1
  226. data/spec/mongo/operation/commands/map_reduce_spec.rb +2 -2
  227. data/spec/mongo/operation/kill_cursors_spec.rb +10 -19
  228. data/spec/mongo/operation/read/get_more_spec.rb +13 -25
  229. data/spec/mongo/operation/read/query_spec.rb +26 -30
  230. data/spec/mongo/operation/read_preference_spec.rb +11 -11
  231. data/spec/mongo/operation/specifiable_spec.rb +31 -0
  232. data/spec/mongo/operation/write/bulk/delete_spec.rb +16 -18
  233. data/spec/mongo/operation/write/bulk/insert_spec.rb +17 -18
  234. data/spec/mongo/operation/write/bulk/update_spec.rb +20 -25
  235. data/spec/mongo/operation/write/command/delete_spec.rb +26 -32
  236. data/spec/mongo/operation/write/command/insert_spec.rb +24 -31
  237. data/spec/mongo/operation/write/command/update_spec.rb +24 -32
  238. data/spec/mongo/operation/write/create_index_spec.rb +4 -4
  239. data/spec/mongo/operation/write/create_user_spec.rb +3 -3
  240. data/spec/mongo/operation/write/delete_spec.rb +51 -22
  241. data/spec/mongo/operation/write/drop_index_spec.rb +2 -2
  242. data/spec/mongo/operation/write/insert_spec.rb +42 -11
  243. data/spec/mongo/operation/write/remove_user_spec.rb +4 -4
  244. data/spec/mongo/operation/write/update_spec.rb +34 -6
  245. data/spec/mongo/operation/write/update_user_spec.rb +1 -1
  246. data/spec/mongo/server/connection_spec.rb +22 -14
  247. data/spec/mongo/server_selection_spec.rb +2 -2
  248. data/spec/mongo/server_selector/nearest_spec.rb +4 -4
  249. data/spec/mongo/server_selector/primary_preferred_spec.rb +4 -4
  250. data/spec/mongo/server_selector/primary_spec.rb +2 -2
  251. data/spec/mongo/server_selector/secondary_preferred_spec.rb +4 -4
  252. data/spec/mongo/server_selector/secondary_spec.rb +3 -3
  253. data/spec/mongo/server_selector_spec.rb +82 -3
  254. data/spec/mongo/server_spec.rb +0 -20
  255. data/spec/support/command_monitoring.rb +1 -1
  256. data/spec/support/connection_string.rb +1 -1
  257. data/spec/support/crud.rb +1 -1
  258. data/spec/support/crud/read.rb +1 -1
  259. data/spec/support/crud/write.rb +1 -1
  260. data/spec/support/gridfs.rb +1 -1
  261. data/spec/support/shared/server_selector.rb +3 -3
  262. metadata +7 -10
  263. metadata.gz.sig +0 -0
  264. data/lib/csasl/csasl.bundle +0 -0
  265. data/spec/mongo/operation/write/response_spec.rb +0 -85
  266. data/spec/support/shared/operation.rb +0 -100
@@ -15,7 +15,7 @@ describe Mongo::Operation::Write::CreateIndex do
15
15
  end
16
16
 
17
17
  let(:response) do
18
- operation.execute(authorized_primary.context)
18
+ operation.execute(authorized_primary)
19
19
  end
20
20
 
21
21
  after do
@@ -42,7 +42,7 @@ describe Mongo::Operation::Write::CreateIndex do
42
42
  end
43
43
 
44
44
  before do
45
- operation.execute(authorized_primary.context)
45
+ operation.execute(authorized_primary)
46
46
  end
47
47
 
48
48
  after do
@@ -51,12 +51,12 @@ describe Mongo::Operation::Write::CreateIndex do
51
51
 
52
52
  it 'raises an exception', if: write_command_enabled? do
53
53
  expect {
54
- second_operation.execute(authorized_primary.context)
54
+ second_operation.execute(authorized_primary)
55
55
  }.to raise_error(Mongo::Error::OperationFailure)
56
56
  end
57
57
 
58
58
  it 'does not raise an exception', unless: write_command_enabled? do
59
- expect(second_operation.execute(authorized_primary.context)).to be_successful
59
+ expect(second_operation.execute(authorized_primary)).to be_successful
60
60
  end
61
61
  end
62
62
  end
@@ -23,7 +23,7 @@ describe Mongo::Operation::Write::CreateUser do
23
23
  context 'when user creation was successful' do
24
24
 
25
25
  let!(:response) do
26
- operation.execute(root_authorized_primary.context)
26
+ operation.execute(root_authorized_primary)
27
27
  end
28
28
 
29
29
  it 'saves the user in the database' do
@@ -35,8 +35,8 @@ describe Mongo::Operation::Write::CreateUser do
35
35
 
36
36
  it 'raises an exception' do
37
37
  expect {
38
- operation.execute(root_authorized_primary.context)
39
- operation.execute(root_authorized_primary.context)
38
+ operation.execute(root_authorized_primary)
39
+ operation.execute(root_authorized_primary)
40
40
  }.to raise_error(Mongo::Error::OperationFailure)
41
41
  end
42
42
  end
@@ -1,24 +1,23 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Mongo::Operation::Write::Delete do
4
- include_context 'operation'
5
4
 
6
- let(:document) { { :q => { :foo => 1 }, :limit => 1 } }
5
+ let(:document) do
6
+ {
7
+ :q => { :foo => 1 },
8
+ :limit => 1
9
+ }
10
+ end
11
+
7
12
  let(:spec) do
8
13
  { :delete => document,
9
- :db_name => db_name,
10
- :coll_name => coll_name,
11
- :write_concern => write_concern,
14
+ :db_name => TEST_DB,
15
+ :coll_name => TEST_COLL,
16
+ :write_concern => Mongo::WriteConcern.get(WRITE_CONCERN),
12
17
  :ordered => true
13
18
  }
14
19
  end
15
20
 
16
- let(:delete_write_cmd) do
17
- double('delete_write_cmd').tap do |d|
18
- allow(d).to receive(:execute) { [] }
19
- end
20
- end
21
-
22
21
  let(:op) { described_class.new(spec) }
23
22
 
24
23
  describe '#initialize' do
@@ -45,11 +44,12 @@ describe Mongo::Operation::Write::Delete do
45
44
 
46
45
  context 'when two ops have different specs' do
47
46
  let(:other_doc) { { :q => { :bar => 1 }, :limit => 1 } }
47
+
48
48
  let(:other_spec) do
49
49
  { :delete => other_doc,
50
- :db_name => db_name,
51
- :coll_name => coll_name,
52
- :write_concern => write_concern,
50
+ :db_name => TEST_DB,
51
+ :coll_name => TEST_COLL,
52
+ :write_concern => Mongo::WriteConcern.get(WRITE_CONCERN),
53
53
  :ordered => true
54
54
  }
55
55
  end
@@ -82,7 +82,7 @@ describe Mongo::Operation::Write::Delete do
82
82
  delete: document,
83
83
  db_name: TEST_DB,
84
84
  coll_name: TEST_COLL,
85
- write_concern: Mongo::WriteConcern.get(:w => 1)
85
+ write_concern: Mongo::WriteConcern.get(WRITE_CONCERN)
86
86
  })
87
87
  end
88
88
 
@@ -93,7 +93,7 @@ describe Mongo::Operation::Write::Delete do
93
93
  end
94
94
 
95
95
  let(:result) do
96
- delete.execute(authorized_primary.context)
96
+ delete.execute(authorized_primary)
97
97
  end
98
98
 
99
99
  it 'deletes the documents from the database' do
@@ -113,7 +113,7 @@ describe Mongo::Operation::Write::Delete do
113
113
 
114
114
  it 'raises an exception' do
115
115
  expect {
116
- delete.execute(authorized_primary.context)
116
+ delete.execute(authorized_primary)
117
117
  }.to raise_error(Mongo::Error::OperationFailure)
118
118
  end
119
119
  end
@@ -126,7 +126,7 @@ describe Mongo::Operation::Write::Delete do
126
126
  delete: document,
127
127
  db_name: TEST_DB,
128
128
  coll_name: TEST_COLL,
129
- write_concern: Mongo::WriteConcern.get(:w => 1)
129
+ write_concern: Mongo::WriteConcern.get(WRITE_CONCERN)
130
130
  })
131
131
  end
132
132
 
@@ -137,7 +137,7 @@ describe Mongo::Operation::Write::Delete do
137
137
  end
138
138
 
139
139
  let(:result) do
140
- delete.execute(authorized_primary.context)
140
+ delete.execute(authorized_primary)
141
141
  end
142
142
 
143
143
  it 'deletes the documents from the database' do
@@ -156,13 +156,13 @@ describe Mongo::Operation::Write::Delete do
156
156
  end
157
157
 
158
158
  let(:result) do
159
- delete.execute(authorized_primary.context)
159
+ delete.execute(authorized_primary)
160
160
  end
161
161
 
162
162
  it 'does not delete any documents' do
163
163
 
164
164
  expect {
165
- op.execute(authorized_primary.context)
165
+ op.execute(authorized_primary)
166
166
  }.to raise_error(Mongo::Error::OperationFailure)
167
167
 
168
168
  expect(authorized_collection.find.count).to eq(2)
@@ -177,10 +177,39 @@ describe Mongo::Operation::Write::Delete do
177
177
 
178
178
  it 'raises an error' do
179
179
  expect {
180
- op.execute(authorized_primary.context)
180
+ op.execute(authorized_primary)
181
181
  }.to raise_error(Mongo::Error::MaxBSONSize)
182
182
  end
183
183
  end
184
184
  end
185
+
186
+ context 'when write concern { w: 0 } is used' do
187
+
188
+ let(:delete) do
189
+ described_class.new({
190
+ delete: document,
191
+ db_name: TEST_DB,
192
+ coll_name: TEST_COLL,
193
+ write_concern: Mongo::WriteConcern.get(:w => 0)
194
+ })
195
+ end
196
+
197
+
198
+ let(:document) do
199
+ { 'q' => { field: 'test' }, 'limit' => 1 }
200
+ end
201
+
202
+ let(:result) do
203
+ delete.execute(authorized_primary)
204
+ end
205
+
206
+ before do
207
+ expect(delete).to receive(:execute_message).and_call_original
208
+ end
209
+
210
+ it 'uses op codes instead of write commands' do
211
+ expect(result.written_count).to eq(0)
212
+ end
213
+ end
185
214
  end
186
215
  end
@@ -23,7 +23,7 @@ describe Mongo::Operation::Write::DropIndex do
23
23
  end
24
24
 
25
25
  let(:response) do
26
- operation.execute(authorized_primary.context)
26
+ operation.execute(authorized_primary)
27
27
  end
28
28
 
29
29
  it 'removes the index' do
@@ -43,7 +43,7 @@ describe Mongo::Operation::Write::DropIndex do
43
43
 
44
44
  it 'raises an exception' do
45
45
  expect {
46
- operation.execute(authorized_primary.context)
46
+ operation.execute(authorized_primary)
47
47
  }.to raise_error(Mongo::Error::OperationFailure)
48
48
  end
49
49
  end
@@ -83,7 +83,7 @@ describe Mongo::Operation::Write::Insert do
83
83
  end
84
84
 
85
85
  let(:inserted_ids) do
86
- insert.execute(authorized_primary.context).inserted_ids
86
+ insert.execute(authorized_primary).inserted_ids
87
87
  end
88
88
 
89
89
  let(:collection_ids) do
@@ -112,7 +112,7 @@ describe Mongo::Operation::Write::Insert do
112
112
  context 'when the insert succeeds' do
113
113
 
114
114
  let!(:response) do
115
- insert.execute(authorized_primary.context)
115
+ insert.execute(authorized_primary)
116
116
  end
117
117
 
118
118
  it 'reports the correct written count', if: write_command_enabled? do
@@ -148,8 +148,8 @@ describe Mongo::Operation::Write::Insert do
148
148
 
149
149
  it 'raises an error' do
150
150
  expect {
151
- failing_insert.execute(authorized_primary.context)
152
- failing_insert.execute(authorized_primary.context)
151
+ failing_insert.execute(authorized_primary)
152
+ failing_insert.execute(authorized_primary)
153
153
  }.to raise_error(Mongo::Error::OperationFailure)
154
154
  end
155
155
  end
@@ -167,7 +167,7 @@ describe Mongo::Operation::Write::Insert do
167
167
  end
168
168
 
169
169
  let!(:response) do
170
- insert.execute(authorized_primary.context)
170
+ insert.execute(authorized_primary)
171
171
  end
172
172
 
173
173
  it 'reports the correct written count', if: write_command_enabled? do
@@ -203,8 +203,8 @@ describe Mongo::Operation::Write::Insert do
203
203
 
204
204
  it 'raises an error' do
205
205
  expect {
206
- failing_insert.execute(authorized_primary.context)
207
- failing_insert.execute(authorized_primary.context)
206
+ failing_insert.execute(authorized_primary)
207
+ failing_insert.execute(authorized_primary)
208
208
  }.to raise_error(Mongo::Error::OperationFailure)
209
209
  end
210
210
  end
@@ -229,8 +229,8 @@ describe Mongo::Operation::Write::Insert do
229
229
 
230
230
  it 'raises an error' do
231
231
  expect {
232
- failing_insert.execute(authorized_primary.context)
233
- failing_insert.execute(authorized_primary.context)
232
+ failing_insert.execute(authorized_primary)
233
+ failing_insert.execute(authorized_primary)
234
234
  }.to raise_error(Mongo::Error::OperationFailure)
235
235
  end
236
236
 
@@ -244,17 +244,48 @@ describe Mongo::Operation::Write::Insert do
244
244
 
245
245
  it 'raises an error' do
246
246
  expect {
247
- insert.execute(authorized_primary.context)
247
+ insert.execute(authorized_primary)
248
248
  }.to raise_error(Mongo::Error::MaxBSONSize)
249
249
  end
250
250
 
251
251
  it 'does not insert the document' do
252
252
  expect {
253
- insert.execute(authorized_primary.context)
253
+ insert.execute(authorized_primary)
254
254
  }.to raise_error(Mongo::Error::MaxBSONSize)
255
255
  expect(authorized_collection.find.count).to eq(0)
256
256
  end
257
257
  end
258
258
  end
259
+
260
+ context 'when write concern { w: 0 } is used' do
261
+
262
+ let(:spec) do
263
+ { :documents => documents,
264
+ :db_name => TEST_DB,
265
+ :coll_name => TEST_COLL,
266
+ :write_concern => Mongo::WriteConcern.get(:w => 0)
267
+ }
268
+ end
269
+
270
+ let(:documents) do
271
+ [{ '_id' => 1 }]
272
+ end
273
+
274
+ let(:op) do
275
+ described_class.new(spec)
276
+ end
277
+
278
+ before do
279
+ expect(op).to receive(:execute_message).and_call_original
280
+ end
281
+
282
+ let(:response) do
283
+ op.execute(authorized_primary)
284
+ end
285
+
286
+ it 'uses op codes instead of write commands' do
287
+ expect(response.written_count).to eq(0)
288
+ end
289
+ end
259
290
  end
260
291
  end
@@ -18,7 +18,7 @@ describe Mongo::Operation::Write::RemoveUser do
18
18
  context 'when user removal was successful' do
19
19
 
20
20
  let!(:response) do
21
- operation.execute(root_authorized_primary.context)
21
+ operation.execute(root_authorized_primary)
22
22
  end
23
23
 
24
24
  it 'removes the user from the database' do
@@ -29,17 +29,17 @@ describe Mongo::Operation::Write::RemoveUser do
29
29
  context 'when removal was not successful' do
30
30
 
31
31
  before do
32
- operation.execute(root_authorized_primary.context)
32
+ operation.execute(root_authorized_primary)
33
33
  end
34
34
 
35
35
  it 'raises an exception', if: write_command_enabled? do
36
36
  expect {
37
- operation.execute(root_authorized_primary.context)
37
+ operation.execute(root_authorized_primary)
38
38
  }.to raise_error(Mongo::Error::OperationFailure)
39
39
  end
40
40
 
41
41
  it 'does not raise an exception', unless: write_command_enabled? do
42
- expect(operation.execute(root_authorized_primary.context).written_count).to eq(0)
42
+ expect(operation.execute(root_authorized_primary).written_count).to eq(0)
43
43
  end
44
44
  end
45
45
  end
@@ -99,7 +99,7 @@ describe Mongo::Operation::Write::Update do
99
99
  end
100
100
 
101
101
  let(:result) do
102
- update.execute(authorized_primary.context)
102
+ update.execute(authorized_primary)
103
103
  end
104
104
 
105
105
  it 'updates the document' do
@@ -127,7 +127,7 @@ describe Mongo::Operation::Write::Update do
127
127
 
128
128
  it 'raises an exception' do
129
129
  expect {
130
- update.execute(authorized_primary.context)
130
+ update.execute(authorized_primary)
131
131
  }.to raise_error(Mongo::Error::OperationFailure)
132
132
  end
133
133
  end
@@ -151,7 +151,7 @@ describe Mongo::Operation::Write::Update do
151
151
  end
152
152
 
153
153
  let(:result) do
154
- update.execute(authorized_primary.context)
154
+ update.execute(authorized_primary)
155
155
  end
156
156
 
157
157
  it 'updates the documents' do
@@ -179,7 +179,7 @@ describe Mongo::Operation::Write::Update do
179
179
 
180
180
  it 'raises an exception' do
181
181
  expect {
182
- update.execute(authorized_primary.context)
182
+ update.execute(authorized_primary)
183
183
  }.to raise_error(Mongo::Error::OperationFailure)
184
184
  end
185
185
  end
@@ -192,7 +192,7 @@ describe Mongo::Operation::Write::Update do
192
192
 
193
193
  it 'raises an error' do
194
194
  expect {
195
- update.execute(authorized_primary.context)
195
+ update.execute(authorized_primary)
196
196
  }.to raise_error(Mongo::Error::MaxBSONSize)
197
197
  end
198
198
  end
@@ -204,7 +204,7 @@ describe Mongo::Operation::Write::Update do
204
204
  end
205
205
 
206
206
  let(:result) do
207
- update.execute(authorized_primary.context)
207
+ update.execute(authorized_primary)
208
208
  end
209
209
 
210
210
  it 'inserts the document' do
@@ -224,5 +224,33 @@ describe Mongo::Operation::Write::Update do
224
224
  end
225
225
  end
226
226
  end
227
+
228
+ context 'when write concern { w: 0 } is used' do
229
+
230
+ let(:update) do
231
+ described_class.new({
232
+ update: document,
233
+ db_name: TEST_DB,
234
+ coll_name: TEST_COLL,
235
+ write_concern: Mongo::WriteConcern.get(:w => 0)
236
+ })
237
+ end
238
+
239
+ let(:document) do
240
+ { 'q' => { name: 'test' }, 'u' => { '$set' => { field: 'blah' }}, limit: 1 }
241
+ end
242
+
243
+ let(:result) do
244
+ update.execute(authorized_primary)
245
+ end
246
+
247
+ before do
248
+ expect(update).to receive(:execute_message).and_call_original
249
+ end
250
+
251
+ it 'uses op codes instead of write commands' do
252
+ expect(result.written_count).to eq(0)
253
+ end
254
+ end
227
255
  end
228
256
  end
@@ -35,7 +35,7 @@ describe Mongo::Operation::Write::UpdateUser do
35
35
  context 'when user update was successful' do
36
36
 
37
37
  let!(:response) do
38
- operation.execute(root_authorized_primary.context)
38
+ operation.execute(root_authorized_primary)
39
39
  end
40
40
 
41
41
  it 'updates the user in the database' do