mongo 2.2.7 → 2.3.0

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 (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