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
@@ -29,7 +29,7 @@ describe Mongo::Operation::Commands::CollectionsInfo do
29
29
  end
30
30
 
31
31
  let(:info) do
32
- docs = op.execute(authorized_primary.context).documents
32
+ docs = op.execute(authorized_primary).documents
33
33
  docs.collect { |info| info['name'].sub("#{TEST_DB}.", '') }
34
34
  end
35
35
 
@@ -43,7 +43,7 @@ describe Mongo::Operation::Commands::Command do
43
43
  context 'when the command succeeds' do
44
44
 
45
45
  let(:response) do
46
- op.execute(authorized_primary.context)
46
+ op.execute(authorized_primary)
47
47
  end
48
48
 
49
49
  it 'returns the reponse' do
@@ -59,7 +59,7 @@ describe Mongo::Operation::Commands::Command do
59
59
 
60
60
  it 'raises an exception' do
61
61
  expect {
62
- op.execute(authorized_primary.context)
62
+ op.execute(authorized_primary)
63
63
  }.to raise_error(Mongo::Error::OperationFailure)
64
64
  end
65
65
  end
@@ -72,7 +72,7 @@ describe Mongo::Operation::Commands::Command do
72
72
 
73
73
  it 'raises an error' do
74
74
  expect {
75
- op.execute(authorized_primary.context)
75
+ op.execute(authorized_primary)
76
76
  }.to raise_error(Mongo::Error::MaxBSONSize)
77
77
  end
78
78
  end
@@ -21,7 +21,7 @@ describe Mongo::Operation::Commands::Indexes do
21
21
  end
22
22
 
23
23
  let(:indexes) do
24
- operation.execute(authorized_primary.context)
24
+ operation.execute(authorized_primary)
25
25
  end
26
26
 
27
27
  it 'returns the indexes for the collection' do
@@ -97,7 +97,7 @@ describe Mongo::Operation::Commands::MapReduce do
97
97
  context 'when the map/reduce succeeds' do
98
98
 
99
99
  let(:response) do
100
- op.execute(authorized_primary.context)
100
+ op.execute(authorized_primary)
101
101
  end
102
102
 
103
103
  it 'returns the response' do
@@ -117,7 +117,7 @@ describe Mongo::Operation::Commands::MapReduce do
117
117
 
118
118
  it 'raises an exception' do
119
119
  expect {
120
- op.execute(authorized_primary.context)
120
+ op.execute(authorized_primary)
121
121
  }.to raise_error(Mongo::Error::OperationFailure)
122
122
  end
123
123
  end
@@ -1,9 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Mongo::Operation::KillCursors do
4
- include_context 'operation'
5
4
 
6
- let(:spec) { { :cursor_ids => [1,2] } }
5
+ let(:spec) do
6
+ { coll_name: TEST_COLL,
7
+ db_name: TEST_DB,
8
+ :cursor_ids => [1,2]
9
+ }
10
+ end
7
11
  let(:op) { described_class.new(spec) }
8
12
 
9
13
  describe '#initialize' do
@@ -27,24 +31,11 @@ describe Mongo::Operation::KillCursors do
27
31
  end
28
32
  end
29
33
 
30
- describe '#execute' do
31
-
32
- context 'message' do
34
+ describe '#message' do
33
35
 
34
- it 'creates a kill cursors wire protocol message with correct specs' do
35
- expect(Mongo::Protocol::KillCursors).to receive(:new) do |collection, database, ids|
36
- expect(ids).to eq(spec[:cursor_ids])
37
- end
38
- op.execute(primary_context)
39
- end
40
- end
41
-
42
- context 'connection' do
43
-
44
- it 'dispatches the message on the connection' do
45
- expect(connection).to receive(:dispatch)
46
- op.execute(primary_context)
47
- end
36
+ it 'creates a kill cursors wire protocol message with correct specs' do
37
+ expect(Mongo::Protocol::KillCursors).to receive(:new).with(TEST_COLL, TEST_DB, spec[:cursor_ids])
38
+ op.send(:message, authorized_primary)
48
39
  end
49
40
  end
50
41
  end
@@ -1,14 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Mongo::Operation::Read::GetMore do
4
- include_context 'operation'
5
4
 
6
- let(:to_return) { 50 }
7
- let(:cursor_id) { 1 }
5
+ let(:to_return) do
6
+ 50
7
+ end
8
+
9
+ let(:cursor_id) do
10
+ 1
11
+ end
8
12
 
9
13
  let(:spec) do
10
- { :db_name => db_name,
11
- :coll_name => coll_name,
14
+ { :db_name => TEST_DB,
15
+ :coll_name => TEST_COLL,
12
16
  :to_return => to_return,
13
17
  :cursor_id => cursor_id }
14
18
  end
@@ -39,27 +43,11 @@ describe Mongo::Operation::Read::GetMore do
39
43
  end
40
44
  end
41
45
 
42
- describe '#execute' do
46
+ describe '#message' do
43
47
 
44
- context 'message' do
45
-
46
- it 'creates a get more wire protocol message with correct specs' do
47
- expect(Mongo::Protocol::GetMore).to receive(:new) do |db, coll, to_ret, id|
48
- expect(db).to eq(db_name)
49
- expect(coll).to eq(coll_name)
50
- expect(to_ret).to eq(to_return)
51
- expect(id).to eq(cursor_id)
52
- end
53
- op.execute(primary_context)
54
- end
55
- end
56
-
57
- context 'connection' do
58
-
59
- it 'dispatches the message on the connection' do
60
- expect(connection).to receive(:dispatch)
61
- op.execute(primary_context)
62
- end
48
+ it 'creates a get more wire protocol message with correct specs' do
49
+ expect(Mongo::Protocol::GetMore).to receive(:new).with(TEST_DB, TEST_COLL, to_return, cursor_id)
50
+ op.send(:message, authorized_primary)
63
51
  end
64
52
  end
65
53
  end
@@ -1,15 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Mongo::Operation::Read::Query do
4
- include_context 'operation'
5
-
6
- let(:selector) { {} }
4
+
5
+ let(:selector) { { foo: 1 } }
7
6
  let(:query_options) { {} }
8
7
  let(:spec) do
9
8
  { :selector => selector,
10
9
  :options => query_options,
11
- :db_name => db_name,
12
- :coll_name => coll_name,
10
+ :db_name => authorized_collection.database.name,
11
+ :coll_name => authorized_collection.name,
13
12
  :read => Mongo::ServerSelector.get
14
13
  }
15
14
  end
@@ -30,8 +29,8 @@ describe Mongo::Operation::Read::Query do
30
29
  let(:other_spec) do
31
30
  { :selector => { :a => 1 },
32
31
  :options => query_options,
33
- :db_name => db_name,
34
- :coll_name => coll_name
32
+ :db_name => authorized_collection.database.name,
33
+ :coll_name => authorized_collection.name
35
34
  }
36
35
  end
37
36
  let(:other) { described_class.new(other_spec) }
@@ -52,34 +51,35 @@ describe Mongo::Operation::Read::Query do
52
51
  described_class.new(spec)
53
52
  end
54
53
 
55
- let(:message) do
56
- query.send(:message, secondary_context_slave)
54
+ let(:cluster_single) do
55
+ double('cluster').tap do |c|
56
+ allow(c).to receive(:single?).and_return(true)
57
+ end
57
58
  end
58
59
 
59
- it 'does not lose flags' do
60
- expect(message.flags).to eq([ :no_cursor_timeout, :slave_ok ])
60
+ let(:message) do
61
+ query.send(:message, authorized_primary)
61
62
  end
62
- end
63
63
 
64
- describe '#execute' do
64
+ it 'applies the correct flags' do
65
+ expect(message.flags).to eq(query_options[:flags])
66
+ end
65
67
 
66
- context 'message' do
68
+ context 'when the server is a secondary' do
67
69
 
68
- it 'creates a query wire protocol message with correct specs' do
69
- expect(Mongo::Protocol::Query).to receive(:new) do |db, coll, sel, options|
70
- expect(db).to eq(db_name)
71
- expect(coll).to eq(coll_name)
72
- expect(sel).to eq(selector)
70
+ let(:secondary_server_single) do
71
+ double('secondary_server').tap do |server|
72
+ allow(server).to receive(:mongos?) { false }
73
+ allow(server).to receive(:cluster) { cluster_single }
73
74
  end
74
- op.execute(primary_context)
75
75
  end
76
- end
77
76
 
78
- context 'connection' do
77
+ let(:message) do
78
+ query.send(:message, secondary_server_single)
79
+ end
79
80
 
80
- it 'dispatches the message on the connection' do
81
- expect(connection).to receive(:dispatch)
82
- op.execute(primary_context)
81
+ it 'applies the correct flags' do
82
+ expect(message.flags).to eq([ :no_cursor_timeout, :slave_ok ])
83
83
  end
84
84
  end
85
85
 
@@ -93,12 +93,8 @@ describe Mongo::Operation::Read::Query do
93
93
  authorized_collection.delete_many
94
94
  end
95
95
 
96
- let(:context) do
97
- authorized_client.cluster.next_primary.context
98
- end
99
-
100
96
  it 'does not raise an exception' do
101
- expect(op.execute(context)).to be_a(Mongo::Operation::Read::Query::Result)
97
+ expect(op.execute(authorized_primary)).to be_a(Mongo::Operation::Read::Query::Result)
102
98
  end
103
99
  end
104
100
  end
@@ -26,7 +26,7 @@ describe Mongo::Operation::ReadPreference do
26
26
  Mongo::ServerSelector.get
27
27
  end
28
28
 
29
- let(:read_preference) do
29
+ let(:operation) do
30
30
  Class.new do
31
31
  include Mongo::Operation::ReadPreference
32
32
  end.new.tap do |rp|
@@ -36,8 +36,8 @@ describe Mongo::Operation::ReadPreference do
36
36
  end
37
37
  end
38
38
 
39
- let(:context) do
40
- double('context').tap do |c|
39
+ let(:server) do
40
+ double('server').tap do |c|
41
41
  allow(c).to receive(:cluster).and_return(cluster_double)
42
42
  allow(cluster_double).to receive(:single?).and_return(single?)
43
43
  allow(c).to receive(:mongos?).and_return(mongos?)
@@ -55,7 +55,7 @@ describe Mongo::Operation::ReadPreference do
55
55
  end
56
56
 
57
57
  it 'returns a special selector' do
58
- expect(read_preference.send(:update_selector, context)).to eq(expected)
58
+ expect(operation.send(:update_selector, server)).to eq(expected)
59
59
  end
60
60
 
61
61
  context 'when the selector already has $query in it' do
@@ -70,7 +70,7 @@ describe Mongo::Operation::ReadPreference do
70
70
  end
71
71
 
72
72
  it 'returns an unaltered special selector' do
73
- expect(read_preference.send(:update_selector, context)).to eq(expected)
73
+ expect(operation.send(:update_selector, server)).to eq(expected)
74
74
  end
75
75
  end
76
76
  end
@@ -82,7 +82,7 @@ describe Mongo::Operation::ReadPreference do
82
82
  end
83
83
 
84
84
  it 'returns a selector' do
85
- expect(read_preference.send(:update_selector, context)).to eq(selector)
85
+ expect(operation.send(:update_selector, server)).to eq(selector)
86
86
  end
87
87
  end
88
88
 
@@ -168,7 +168,7 @@ describe Mongo::Operation::ReadPreference do
168
168
  end
169
169
 
170
170
  it 'does not set the slave_ok flag' do
171
- expect(read_preference.send(:update_options, context)).to eq(expected)
171
+ expect(operation.send(:update_options, server)).to eq(expected)
172
172
  end
173
173
  end
174
174
 
@@ -183,7 +183,7 @@ describe Mongo::Operation::ReadPreference do
183
183
  end
184
184
 
185
185
  it 'sets the slave_ok flag' do
186
- expect(read_preference.send(:update_options, context)).to eq(expected)
186
+ expect(operation.send(:update_options, server)).to eq(expected)
187
187
  end
188
188
  end
189
189
  end
@@ -205,7 +205,7 @@ describe Mongo::Operation::ReadPreference do
205
205
  end
206
206
 
207
207
  it 'does not set the slave_ok flag' do
208
- expect(read_preference.send(:update_options, context)).to eq(expected)
208
+ expect(operation.send(:update_options, server)).to eq(expected)
209
209
  end
210
210
  end
211
211
 
@@ -222,7 +222,7 @@ describe Mongo::Operation::ReadPreference do
222
222
  end
223
223
 
224
224
  it 'sets the slave_ok flag' do
225
- expect(read_preference.send(:update_options, context)).to eq(expected)
225
+ expect(operation.send(:update_options, server)).to eq(expected)
226
226
  end
227
227
  end
228
228
 
@@ -237,7 +237,7 @@ describe Mongo::Operation::ReadPreference do
237
237
  end
238
238
 
239
239
  it 'does not set the slave_ok flag' do
240
- expect(read_preference.send(:update_options, context)).to eq(expected)
240
+ expect(operation.send(:update_options, server)).to eq(expected)
241
241
  end
242
242
  end
243
243
  end
@@ -50,4 +50,35 @@ describe Mongo::Operation::Specifiable do
50
50
  end
51
51
  end
52
52
  end
53
+
54
+ describe '#read' do
55
+
56
+ context 'when read is specified' do
57
+
58
+ let(:spec) do
59
+ {
60
+ read: { mode: :secondary}
61
+ }
62
+ end
63
+
64
+ let(:server_selector) do
65
+ Mongo::ServerSelector.get(spec[:read])
66
+ end
67
+
68
+ it 'converts the read option to a ServerSelector' do
69
+ expect(specifiable.read).to be_a(Mongo::ServerSelector::Secondary)
70
+ end
71
+
72
+ it 'uses the read option provided' do
73
+ expect(specifiable.read).to eq(server_selector)
74
+ end
75
+ end
76
+
77
+ context 'when read is not specified' do
78
+
79
+ it 'returns a Primary ServerSelector object' do
80
+ expect(specifiable.read).to eq(Mongo::ServerSelector.get(Mongo::ServerSelector::PRIMARY))
81
+ end
82
+ end
83
+ end
53
84
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Mongo::Operation::Write::Bulk::Delete do
4
- include_context 'operation'
5
4
 
6
5
  let(:documents) do
7
6
  [ { 'q' => { foo: 1 }, 'limit' => 1 } ]
@@ -9,9 +8,9 @@ describe Mongo::Operation::Write::Bulk::Delete do
9
8
 
10
9
  let(:spec) do
11
10
  { :deletes => documents,
12
- :db_name => db_name,
13
- :coll_name => coll_name,
14
- :write_concern => write_concern,
11
+ :db_name => TEST_DB,
12
+ :coll_name => TEST_COLL,
13
+ :write_concern => Mongo::WriteConcern.get(WRITE_CONCERN),
15
14
  :ordered => true
16
15
  }
17
16
  end
@@ -47,9 +46,9 @@ describe Mongo::Operation::Write::Bulk::Delete do
47
46
 
48
47
  let(:other_spec) do
49
48
  { :deletes => other_docs,
50
- :db_name => db_name,
51
- :coll_name => coll_name,
52
- :write_concern => write_concern,
49
+ :db_name => TEST_DB,
50
+ :coll_name => TEST_COLL,
51
+ :write_concern => Mongo::WriteConcern.get(WRITE_CONCERN),
53
52
  :ordered => true
54
53
  }
55
54
  end
@@ -93,7 +92,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
93
92
  end
94
93
 
95
94
  it 'deletes the document from the database' do
96
- op.execute(authorized_primary.context)
95
+ op.execute(authorized_primary)
97
96
  expect(authorized_collection.find.count).to eq(1)
98
97
  end
99
98
  end
@@ -106,7 +105,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
106
105
  deletes: documents,
107
106
  db_name: TEST_DB,
108
107
  coll_name: TEST_COLL,
109
- write_concern: Mongo::WriteConcern.get(w: 1)
108
+ write_concern: Mongo::WriteConcern.get(WRITE_CONCERN)
110
109
  })
111
110
  end
112
111
 
@@ -117,7 +116,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
117
116
  end
118
117
 
119
118
  it 'deletes the documents from the database' do
120
- op.execute(authorized_primary.context)
119
+ op.execute(authorized_primary)
121
120
  expect(authorized_collection.find.count).to eq(0)
122
121
  end
123
122
  end
@@ -135,7 +134,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
135
134
  { :deletes => documents,
136
135
  :db_name => TEST_DB,
137
136
  :coll_name => TEST_COLL,
138
- :write_concern => write_concern,
137
+ :write_concern => Mongo::WriteConcern.get(WRITE_CONCERN),
139
138
  :ordered => true
140
139
  }
141
140
  end
@@ -149,11 +148,11 @@ describe Mongo::Operation::Write::Bulk::Delete do
149
148
  context 'when write concern is acknowledged' do
150
149
 
151
150
  let(:write_concern) do
152
- Mongo::WriteConcern.get(w: 1)
151
+ Mongo::WriteConcern.get(WRITE_CONCERN)
153
152
  end
154
153
 
155
154
  it 'aborts after first error' do
156
- failing_delete.execute(authorized_primary.context)
155
+ failing_delete.execute(authorized_primary)
157
156
  expect(authorized_collection.find.count).to eq(2)
158
157
  end
159
158
  end
@@ -165,7 +164,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
165
164
  end
166
165
 
167
166
  it 'aborts after first error' do
168
- failing_delete.execute(authorized_primary.context)
167
+ failing_delete.execute(authorized_primary)
169
168
  expect(authorized_collection.find.count).to eq(2)
170
169
  end
171
170
  end
@@ -184,7 +183,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
184
183
  { :deletes => documents,
185
184
  :db_name => TEST_DB,
186
185
  :coll_name => TEST_COLL,
187
- :write_concern => write_concern,
186
+ :write_concern => Mongo::WriteConcern.get(WRITE_CONCERN),
188
187
  :ordered => false
189
188
  }
190
189
  end
@@ -202,7 +201,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
202
201
  end
203
202
 
204
203
  it 'does not abort after first error' do
205
- failing_delete.execute(authorized_primary.context)
204
+ failing_delete.execute(authorized_primary)
206
205
  expect(authorized_collection.find.count).to eq(1)
207
206
  end
208
207
  end
@@ -214,8 +213,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
214
213
  end
215
214
 
216
215
  it 'does not abort after first error' do
217
- failing_delete.execute(authorized_primary.context)
218
- sleep(1)
216
+ failing_delete.execute(authorized_primary)
219
217
  expect(authorized_collection.find.count).to eq(1)
220
218
  end
221
219
  end