mongo 2.1.0.beta → 2.1.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 (253) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/Rakefile +2 -2
  5. data/lib/mongo.rb +2 -3
  6. data/lib/mongo/address.rb +7 -5
  7. data/lib/mongo/address/unix.rb +2 -2
  8. data/lib/mongo/auth/ldap/conversation.rb +6 -2
  9. data/lib/mongo/auth/scram/conversation.rb +8 -2
  10. data/lib/mongo/auth/user/view.rb +21 -0
  11. data/lib/mongo/bulk_write.rb +155 -23
  12. data/lib/mongo/bulk_write/combineable.rb +51 -0
  13. data/lib/mongo/bulk_write/ordered_combiner.rb +55 -0
  14. data/lib/mongo/bulk_write/result.rb +61 -8
  15. data/lib/mongo/bulk_write/result_combiner.rb +117 -0
  16. data/lib/mongo/bulk_write/transformable.rb +117 -0
  17. data/lib/mongo/bulk_write/unordered_combiner.rb +52 -0
  18. data/lib/mongo/bulk_write/validatable.rb +62 -0
  19. data/lib/mongo/client.rb +7 -3
  20. data/lib/mongo/cluster.rb +3 -3
  21. data/lib/mongo/cluster/topology/replica_set.rb +8 -6
  22. data/lib/mongo/cluster/topology/unknown.rb +5 -2
  23. data/lib/mongo/collection.rb +75 -4
  24. data/lib/mongo/collection/view.rb +1 -2
  25. data/lib/mongo/collection/view/aggregation.rb +13 -8
  26. data/lib/mongo/collection/view/immutable.rb +6 -6
  27. data/lib/mongo/collection/view/iterable.rb +13 -4
  28. data/lib/mongo/collection/view/map_reduce.rb +22 -17
  29. data/lib/mongo/collection/view/readable.rb +121 -70
  30. data/lib/mongo/cursor.rb +5 -1
  31. data/lib/mongo/database.rb +3 -3
  32. data/lib/mongo/database/view.rb +1 -1
  33. data/lib/mongo/error.rb +7 -0
  34. data/lib/mongo/{bulk_write/unordered_bulk_write.rb → error/closed_stream.rb} +12 -21
  35. data/lib/mongo/{bulk_write/ordered_bulk_write.rb → error/extra_file_chunk.rb} +13 -27
  36. data/lib/mongo/error/file_not_found.rb +37 -0
  37. data/lib/mongo/error/invalid_file.rb +2 -2
  38. data/lib/mongo/error/invalid_file_revision.rb +37 -0
  39. data/lib/mongo/error/invalid_uri.rb +5 -4
  40. data/lib/mongo/error/missing_file_chunk.rb +38 -0
  41. data/lib/mongo/error/operation_failure.rb +1 -1
  42. data/lib/mongo/error/unchangeable_collection_option.rb +38 -0
  43. data/lib/mongo/error/unexpected_chunk_length.rb +39 -0
  44. data/lib/mongo/grid.rb +2 -1
  45. data/lib/mongo/grid/file.rb +12 -9
  46. data/lib/mongo/grid/file/chunk.rb +6 -6
  47. data/lib/mongo/grid/file/{metadata.rb → info.rb} +41 -39
  48. data/lib/mongo/grid/fs_bucket.rb +441 -0
  49. data/lib/mongo/grid/stream.rb +64 -0
  50. data/lib/mongo/grid/stream/read.rb +208 -0
  51. data/lib/mongo/grid/stream/write.rb +187 -0
  52. data/lib/mongo/index/view.rb +1 -1
  53. data/lib/mongo/loggable.rb +34 -57
  54. data/lib/mongo/logger.rb +16 -78
  55. data/lib/mongo/monitoring.rb +1 -5
  56. data/lib/mongo/monitoring/command_log_subscriber.rb +35 -17
  57. data/lib/mongo/monitoring/event/command_succeeded.rb +20 -1
  58. data/lib/mongo/monitoring/publishable.rb +22 -12
  59. data/lib/mongo/operation.rb +3 -6
  60. data/lib/mongo/operation/commands.rb +24 -0
  61. data/lib/mongo/operation/{aggregate.rb → commands/aggregate.rb} +3 -41
  62. data/lib/mongo/operation/{aggregate → commands/aggregate}/result.rb +0 -0
  63. data/lib/mongo/operation/commands/collections_info.rb +66 -0
  64. data/lib/mongo/operation/{command.rb → commands/command.rb} +2 -18
  65. data/lib/mongo/operation/commands/indexes.rb +70 -0
  66. data/lib/mongo/operation/commands/list_collections.rb +54 -0
  67. data/lib/mongo/operation/commands/list_collections/result.rb +112 -0
  68. data/lib/mongo/operation/commands/list_indexes.rb +56 -0
  69. data/lib/mongo/operation/commands/list_indexes/result.rb +115 -0
  70. data/lib/mongo/operation/{map_reduce.rb → commands/map_reduce.rb} +3 -41
  71. data/lib/mongo/operation/{map_reduce → commands/map_reduce}/result.rb +0 -0
  72. data/lib/mongo/operation/{parallel_scan.rb → commands/parallel_scan.rb} +3 -23
  73. data/lib/mongo/operation/{parallel_scan → commands/parallel_scan}/result.rb +0 -0
  74. data/lib/mongo/operation/commands/user_query.rb +69 -0
  75. data/lib/mongo/operation/commands/users_info.rb +53 -0
  76. data/lib/mongo/operation/commands/users_info/result.rb +36 -0
  77. data/lib/mongo/operation/executable.rb +4 -68
  78. data/lib/mongo/operation/kill_cursors.rb +3 -3
  79. data/lib/mongo/operation/read.rb +0 -4
  80. data/lib/mongo/operation/read/get_more.rb +2 -22
  81. data/lib/mongo/operation/read/query.rb +2 -21
  82. data/lib/mongo/operation/{read_preferrable.rb → read_preference.rb} +3 -2
  83. data/lib/mongo/operation/specifiable.rb +24 -0
  84. data/lib/mongo/operation/write.rb +2 -0
  85. data/lib/mongo/operation/write/bulk.rb +6 -3
  86. data/lib/mongo/operation/write/bulk/bulkable.rb +82 -0
  87. data/lib/mongo/operation/write/bulk/delete.rb +71 -0
  88. data/lib/mongo/operation/write/bulk/delete/result.rb +74 -0
  89. data/lib/mongo/operation/write/bulk/insert.rb +96 -0
  90. data/lib/mongo/operation/write/bulk/insert/result.rb +129 -0
  91. data/lib/mongo/operation/write/bulk/legacy_mergable.rb +87 -0
  92. data/lib/mongo/operation/write/bulk/mergable.rb +71 -0
  93. data/lib/mongo/operation/write/bulk/update.rb +81 -0
  94. data/lib/mongo/operation/write/bulk/update/result.rb +174 -0
  95. data/lib/mongo/operation/write/command/create_index.rb +0 -1
  96. data/lib/mongo/operation/write/command/create_user.rb +0 -1
  97. data/lib/mongo/operation/write/command/delete.rb +0 -1
  98. data/lib/mongo/operation/write/command/drop_index.rb +0 -1
  99. data/lib/mongo/operation/write/command/insert.rb +0 -1
  100. data/lib/mongo/operation/write/command/remove_user.rb +0 -1
  101. data/lib/mongo/operation/write/command/update.rb +0 -1
  102. data/lib/mongo/operation/write/command/update_user.rb +0 -1
  103. data/lib/mongo/operation/write/command/writable.rb +13 -18
  104. data/lib/mongo/operation/write/create_index.rb +4 -27
  105. data/lib/mongo/operation/write/create_user.rb +4 -30
  106. data/lib/mongo/operation/write/delete.rb +5 -28
  107. data/lib/mongo/operation/write/drop_index.rb +3 -3
  108. data/lib/mongo/operation/write/gle.rb +48 -0
  109. data/lib/mongo/operation/write/idable.rb +5 -0
  110. data/lib/mongo/operation/write/insert.rb +2 -24
  111. data/lib/mongo/operation/write/remove_user.rb +4 -27
  112. data/lib/mongo/operation/write/update.rb +4 -32
  113. data/lib/mongo/operation/write/update_user.rb +4 -30
  114. data/lib/mongo/operation/write/write_command_enabled.rb +53 -0
  115. data/lib/mongo/options/mapper.rb +4 -2
  116. data/lib/mongo/protocol/delete.rb +68 -3
  117. data/lib/mongo/protocol/get_more.rb +54 -2
  118. data/lib/mongo/protocol/insert.rb +59 -1
  119. data/lib/mongo/protocol/kill_cursors.rb +53 -4
  120. data/lib/mongo/protocol/message.rb +12 -12
  121. data/lib/mongo/protocol/query.rb +139 -65
  122. data/lib/mongo/protocol/reply.rb +69 -1
  123. data/lib/mongo/protocol/update.rb +70 -1
  124. data/lib/mongo/server/connection.rb +11 -3
  125. data/lib/mongo/server/description.rb +29 -0
  126. data/lib/mongo/server/description/features.rb +2 -1
  127. data/lib/mongo/server/monitor.rb +2 -2
  128. data/lib/mongo/server_selector.rb +14 -10
  129. data/lib/mongo/server_selector/selectable.rb +24 -22
  130. data/lib/mongo/socket.rb +6 -3
  131. data/lib/mongo/socket/tcp.rb +2 -2
  132. data/lib/mongo/socket/unix.rb +5 -8
  133. data/lib/mongo/uri.rb +243 -139
  134. data/lib/mongo/version.rb +1 -1
  135. data/spec/mongo/address/unix_spec.rb +1 -1
  136. data/spec/mongo/address_spec.rb +25 -0
  137. data/spec/mongo/auth/ldap/conversation_spec.rb +43 -0
  138. data/spec/mongo/auth/user/view_spec.rb +26 -1
  139. data/spec/mongo/bulk_write/ordered_combiner_spec.rb +271 -0
  140. data/spec/mongo/bulk_write/unordered_combiner_spec.rb +239 -0
  141. data/spec/mongo/bulk_write_spec.rb +332 -166
  142. data/spec/mongo/client_spec.rb +25 -0
  143. data/spec/mongo/cluster/topology/replica_set_spec.rb +2 -0
  144. data/spec/mongo/collection/view/aggregation_spec.rb +65 -0
  145. data/spec/mongo/collection/view/immutable_spec.rb +103 -0
  146. data/spec/mongo/collection/view/map_reduce_spec.rb +98 -3
  147. data/spec/mongo/collection/view/readable_spec.rb +17 -30
  148. data/spec/mongo/collection/view_spec.rb +233 -7
  149. data/spec/mongo/collection_spec.rb +360 -18
  150. data/spec/mongo/command_monitoring_spec.rb +51 -0
  151. data/spec/mongo/connection_string_spec.rb +137 -0
  152. data/spec/mongo/database_spec.rb +27 -11
  153. data/spec/mongo/grid/file/chunk_spec.rb +5 -5
  154. data/spec/mongo/grid/file/{metadata_spec.rb → info_spec.rb} +29 -17
  155. data/spec/mongo/grid/file_spec.rb +8 -8
  156. data/spec/mongo/grid/fs_bucket_spec.rb +1020 -0
  157. data/spec/mongo/grid/stream/read_spec.rb +275 -0
  158. data/spec/mongo/grid/stream/write_spec.rb +440 -0
  159. data/spec/mongo/grid/stream_spec.rb +48 -0
  160. data/spec/mongo/gridfs_spec.rb +50 -0
  161. data/spec/mongo/logger_spec.rb +0 -40
  162. data/spec/mongo/monitoring/command_log_subscriber_spec.rb +76 -0
  163. data/spec/mongo/operation/{aggregate_spec.rb → commands/aggregate_spec.rb} +0 -42
  164. data/spec/mongo/operation/{read → commands}/collections_info_spec.rb +1 -1
  165. data/spec/mongo/operation/{command_spec.rb → commands/command_spec.rb} +0 -0
  166. data/spec/mongo/operation/{read → commands}/indexes_spec.rb +1 -1
  167. data/spec/mongo/operation/{map_reduce_spec.rb → commands/map_reduce_spec.rb} +0 -18
  168. data/spec/mongo/operation/kill_cursors_spec.rb +1 -1
  169. data/spec/mongo/operation/{read_preferrable_spec.rb → read_preference_spec.rb} +11 -11
  170. data/spec/mongo/operation/write/bulk/{bulk_delete_spec.rb → delete_spec.rb} +1 -12
  171. data/spec/mongo/operation/write/bulk/{bulk_insert_spec.rb → insert_spec.rb} +1 -12
  172. data/spec/mongo/operation/write/bulk/{bulk_update_spec.rb → update_spec.rb} +1 -12
  173. data/spec/mongo/operation/write/insert_spec.rb +0 -11
  174. data/spec/mongo/protocol/kill_cursors_spec.rb +5 -3
  175. data/spec/mongo/server/description_spec.rb +42 -0
  176. data/spec/mongo/server/monitor_spec.rb +21 -0
  177. data/spec/mongo/server_discovery_and_monitoring_spec.rb +1 -0
  178. data/spec/mongo/server_selection_spec.rb +3 -3
  179. data/spec/mongo/server_selector/nearest_spec.rb +34 -27
  180. data/spec/mongo/server_selector/primary_preferred_spec.rb +31 -30
  181. data/spec/mongo/server_selector/primary_spec.rb +14 -13
  182. data/spec/mongo/server_selector/secondary_preferred_spec.rb +27 -26
  183. data/spec/mongo/server_selector/secondary_spec.rb +23 -22
  184. data/spec/mongo/server_selector_spec.rb +87 -24
  185. data/spec/mongo/socket/unix_spec.rb +52 -0
  186. data/spec/mongo/uri_spec.rb +251 -39
  187. data/spec/spec_helper.rb +11 -4
  188. data/spec/support/authorization.rb +4 -5
  189. data/spec/support/command_monitoring.rb +365 -0
  190. data/spec/support/command_monitoring/bulkWrite.yml +73 -0
  191. data/spec/support/command_monitoring/command.yml +42 -0
  192. data/spec/support/command_monitoring/deleteMany.yml +55 -0
  193. data/spec/support/command_monitoring/deleteOne.yml +55 -0
  194. data/spec/support/command_monitoring/find.yml +219 -0
  195. data/spec/support/command_monitoring/insertMany.yml +81 -0
  196. data/spec/support/command_monitoring/insertOne.yml +51 -0
  197. data/spec/support/command_monitoring/updateMany.yml +67 -0
  198. data/spec/support/command_monitoring/updateOne.yml +95 -0
  199. data/spec/support/connection_string.rb +228 -0
  200. data/spec/support/connection_string_tests/invalid-uris.yml +193 -0
  201. data/spec/support/connection_string_tests/valid-auth.yml +256 -0
  202. data/spec/support/connection_string_tests/valid-host_identifiers.yml +121 -0
  203. data/spec/support/connection_string_tests/valid-options.yml +30 -0
  204. data/spec/support/connection_string_tests/valid-unix_socket-absolute.yml +197 -0
  205. data/spec/support/connection_string_tests/valid-unix_socket-relative.yml +213 -0
  206. data/spec/support/connection_string_tests/valid-warnings.yml +55 -0
  207. data/spec/support/crud.rb +3 -1
  208. data/spec/support/crud/read.rb +14 -10
  209. data/spec/support/crud/write.rb +36 -9
  210. data/spec/support/gridfs.rb +637 -0
  211. data/spec/support/gridfs_tests/delete.yml +157 -0
  212. data/spec/support/gridfs_tests/download.yml +210 -0
  213. data/spec/support/gridfs_tests/download_by_name.yml +113 -0
  214. data/spec/support/gridfs_tests/upload.yml +158 -0
  215. data/spec/support/sdam/rs/equal_electionids.yml +1 -2
  216. data/spec/support/sdam/rs/new_primary_new_electionid.yml +0 -3
  217. data/spec/support/sdam/rs/primary_mismatched_me.yml +37 -0
  218. data/spec/support/sdam/rs/primary_to_no_primary_mismatched_me.yml +75 -0
  219. data/spec/support/sdam/rs/secondary_mismatched_me.yml +37 -0
  220. data/spec/support/sdam/single/direct_connection_rsarbiter.yml +1 -1
  221. data/spec/support/sdam/single/direct_connection_rsprimary.yml +1 -1
  222. data/spec/support/sdam/single/direct_connection_rssecondary.yml +1 -1
  223. data/spec/support/sdam/single/direct_connection_slave.yml +1 -1
  224. data/spec/support/sdam/single/direct_connection_standalone.yml +1 -1
  225. data/spec/support/sdam/single/not_ok_response.yml +0 -1
  226. data/spec/support/server_discovery_and_monitoring.rb +3 -1
  227. data/spec/support/server_selection.rb +3 -1
  228. data/spec/support/shared/bulk_write.rb +192 -0
  229. data/spec/support/shared/server_selector.rb +21 -12
  230. metadata +147 -57
  231. metadata.gz.sig +0 -0
  232. data/lib/mongo/bulk_write/bulk_writable.rb +0 -252
  233. data/lib/mongo/bulk_write/deletable.rb +0 -57
  234. data/lib/mongo/bulk_write/insertable.rb +0 -49
  235. data/lib/mongo/bulk_write/replacable.rb +0 -58
  236. data/lib/mongo/bulk_write/updatable.rb +0 -69
  237. data/lib/mongo/grid/fs.rb +0 -146
  238. data/lib/mongo/operation/list_collections/result.rb +0 -114
  239. data/lib/mongo/operation/list_indexes/result.rb +0 -118
  240. data/lib/mongo/operation/read/collections_info.rb +0 -68
  241. data/lib/mongo/operation/read/indexes.rb +0 -69
  242. data/lib/mongo/operation/read/list_collections.rb +0 -76
  243. data/lib/mongo/operation/read/list_indexes.rb +0 -78
  244. data/lib/mongo/operation/write/bulk/bulk_delete.rb +0 -145
  245. data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +0 -75
  246. data/lib/mongo/operation/write/bulk/bulk_insert.rb +0 -132
  247. data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +0 -130
  248. data/lib/mongo/operation/write/bulk/bulk_mergable.rb +0 -67
  249. data/lib/mongo/operation/write/bulk/bulk_update.rb +0 -154
  250. data/lib/mongo/operation/write/bulk/bulk_update/result.rb +0 -174
  251. data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +0 -83
  252. data/spec/mongo/grid/fs_spec.rb +0 -160
  253. data/spec/mongo/loggable_spec.rb +0 -63
@@ -2,10 +2,11 @@ require 'spec_helper'
2
2
 
3
3
  describe Mongo::ServerSelector::Primary do
4
4
 
5
+ let(:name) { :primary }
6
+
5
7
  include_context 'server selector'
6
8
 
7
- it_behaves_like 'a read preference mode' do
8
- let(:name) { :primary }
9
+ it_behaves_like 'a server selector mode' do
9
10
  let(:slave_ok) { false }
10
11
  end
11
12
 
@@ -14,7 +15,7 @@ describe Mongo::ServerSelector::Primary do
14
15
  context 'tags not provided' do
15
16
 
16
17
  it 'returns an empty array' do
17
- expect(read_pref.tag_sets).to be_empty
18
+ expect(selector.tag_sets).to be_empty
18
19
  end
19
20
  end
20
21
 
@@ -22,7 +23,7 @@ describe Mongo::ServerSelector::Primary do
22
23
  let(:tag_sets) { [tag_set] }
23
24
 
24
25
  it 'raises an error' do
25
- expect{read_pref.tag_sets}.to raise_error
26
+ expect{selector.tag_sets}.to raise_error
26
27
  end
27
28
  end
28
29
  end
@@ -30,7 +31,7 @@ describe Mongo::ServerSelector::Primary do
30
31
  describe '#to_mongos' do
31
32
 
32
33
  it 'returns nil' do
33
- expect(read_pref.to_mongos).to be_nil
34
+ expect(selector.to_mongos).to be_nil
34
35
  end
35
36
  end
36
37
 
@@ -40,7 +41,7 @@ describe Mongo::ServerSelector::Primary do
40
41
  let(:candidates) { [] }
41
42
 
42
43
  it 'returns an empty array' do
43
- expect(read_pref.send(:select, candidates)).to be_empty
44
+ expect(selector.send(:select, candidates)).to be_empty
44
45
  end
45
46
  end
46
47
 
@@ -48,7 +49,7 @@ describe Mongo::ServerSelector::Primary do
48
49
  let(:candidates) { [secondary] }
49
50
 
50
51
  it 'returns an empty array' do
51
- expect(read_pref.send(:select, candidates)).to be_empty
52
+ expect(selector.send(:select, candidates)).to be_empty
52
53
  end
53
54
  end
54
55
 
@@ -56,7 +57,7 @@ describe Mongo::ServerSelector::Primary do
56
57
  let(:candidates) { [primary] }
57
58
 
58
59
  it 'returns an array with the primary' do
59
- expect(read_pref.send(:select, candidates)).to eq([primary])
60
+ expect(selector.send(:select, candidates)).to eq([primary])
60
61
  end
61
62
  end
62
63
 
@@ -64,7 +65,7 @@ describe Mongo::ServerSelector::Primary do
64
65
  let(:candidates) { [secondary, primary] }
65
66
 
66
67
  it 'returns an array with the primary' do
67
- expect(read_pref.send(:select, candidates)).to eq([primary])
68
+ expect(selector.send(:select, candidates)).to eq([primary])
68
69
  end
69
70
  end
70
71
 
@@ -78,7 +79,7 @@ describe Mongo::ServerSelector::Primary do
78
79
  let(:candidates) { [far_primary] }
79
80
 
80
81
  it 'returns array with the primary' do
81
- expect(read_pref.send(:select, candidates)).to eq([far_primary])
82
+ expect(selector.send(:select, candidates)).to eq([far_primary])
82
83
  end
83
84
  end
84
85
 
@@ -86,7 +87,7 @@ describe Mongo::ServerSelector::Primary do
86
87
  let(:candidates) { [far_secondary] }
87
88
 
88
89
  it 'returns empty array' do
89
- expect(read_pref.send(:select, candidates)).to be_empty
90
+ expect(selector.send(:select, candidates)).to be_empty
90
91
  end
91
92
  end
92
93
  end
@@ -97,7 +98,7 @@ describe Mongo::ServerSelector::Primary do
97
98
  let(:candidates) { [far_primary, far_secondary] }
98
99
 
99
100
  it 'returns an array with the primary' do
100
- expect(read_pref.send(:select, candidates)).to eq([far_primary])
101
+ expect(selector.send(:select, candidates)).to eq([far_primary])
101
102
  end
102
103
  end
103
104
 
@@ -105,7 +106,7 @@ describe Mongo::ServerSelector::Primary do
105
106
  let(:candidates) { [far_primary, far_secondary] }
106
107
 
107
108
  it 'returns an array with the primary' do
108
- expect(read_pref.send(:select, candidates)).to eq([far_primary])
109
+ expect(selector.send(:select, candidates)).to eq([far_primary])
109
110
  end
110
111
  end
111
112
  end
@@ -2,14 +2,15 @@ require 'spec_helper'
2
2
 
3
3
  describe Mongo::ServerSelector::SecondaryPreferred do
4
4
 
5
+ let(:name) { :secondary_preferred }
6
+
5
7
  include_context 'server selector'
6
8
 
7
- it_behaves_like 'a read preference mode' do
8
- let(:name) { :secondary_preferred }
9
+ it_behaves_like 'a server selector mode' do
9
10
  let(:slave_ok) { true }
10
11
  end
11
12
 
12
- it_behaves_like 'a read preference mode accepting tag sets'
13
+ it_behaves_like 'a server selector accepting tag sets'
13
14
 
14
15
  describe '#to_mongos' do
15
16
 
@@ -20,7 +21,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
20
21
  end
21
22
 
22
23
  it 'returns a read preference formatted for mongos' do
23
- expect(read_pref.to_mongos).to eq(
24
+ expect(selector.to_mongos).to eq(
24
25
  { :mode => 'secondaryPreferred', :tags => tag_sets }
25
26
  )
26
27
  end
@@ -29,7 +30,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
29
30
  context 'tag sets not provided' do
30
31
 
31
32
  it 'returns nil' do
32
- expect(read_pref.to_mongos).to be_nil
33
+ expect(selector.to_mongos).to be_nil
33
34
  end
34
35
  end
35
36
  end
@@ -40,7 +41,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
40
41
  let(:candidates) { [] }
41
42
 
42
43
  it 'returns an empty array' do
43
- expect(read_pref.send(:select, candidates)).to be_empty
44
+ expect(selector.send(:select, candidates)).to be_empty
44
45
  end
45
46
  end
46
47
 
@@ -48,7 +49,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
48
49
  let(:candidates) { [primary] }
49
50
 
50
51
  it 'returns array with primary' do
51
- expect(read_pref.send(:select, candidates)).to eq([primary])
52
+ expect(selector.send(:select, candidates)).to eq([primary])
52
53
  end
53
54
  end
54
55
 
@@ -56,7 +57,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
56
57
  let(:candidates) { [secondary] }
57
58
 
58
59
  it 'returns array with secondary' do
59
- expect(read_pref.send(:select, candidates)).to eq([secondary])
60
+ expect(selector.send(:select, candidates)).to eq([secondary])
60
61
  end
61
62
  end
62
63
 
@@ -65,7 +66,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
65
66
  let(:expected) { [secondary, primary] }
66
67
 
67
68
  it 'returns array with secondary first, then primary' do
68
- expect(read_pref.send(:select, candidates)).to eq(expected)
69
+ expect(selector.send(:select, candidates)).to eq(expected)
69
70
  end
70
71
  end
71
72
 
@@ -74,7 +75,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
74
75
  let(:expected) { [secondary, primary] }
75
76
 
76
77
  it 'returns array with secondary and primary' do
77
- expect(read_pref.send(:select, candidates)).to eq(expected)
78
+ expect(selector.send(:select, candidates)).to eq(expected)
78
79
  end
79
80
  end
80
81
 
@@ -98,7 +99,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
98
99
  let(:candidates) { [primary] }
99
100
 
100
101
  it 'returns array with primary' do
101
- expect(read_pref.send(:select, candidates)).to eq([primary])
102
+ expect(selector.send(:select, candidates)).to eq([primary])
102
103
  end
103
104
  end
104
105
 
@@ -106,7 +107,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
106
107
  let(:candidates) { [matching_primary] }
107
108
 
108
109
  it 'returns array with matching primary' do
109
- expect(read_pref.send(:select, candidates)).to eq([matching_primary])
110
+ expect(selector.send(:select, candidates)).to eq([matching_primary])
110
111
  end
111
112
  end
112
113
 
@@ -114,7 +115,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
114
115
  let(:candidates) { [matching_secondary] }
115
116
 
116
117
  it 'returns array with matching secondary' do
117
- expect(read_pref.send(:select, candidates)).to eq([matching_secondary])
118
+ expect(selector.send(:select, candidates)).to eq([matching_secondary])
118
119
  end
119
120
  end
120
121
 
@@ -122,7 +123,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
122
123
  let(:candidates) { [secondary] }
123
124
 
124
125
  it 'returns an empty array' do
125
- expect(read_pref.send(:select, candidates)).to be_empty
126
+ expect(selector.send(:select, candidates)).to be_empty
126
127
  end
127
128
  end
128
129
  end
@@ -133,7 +134,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
133
134
  let(:candidates) { [primary, secondary, secondary] }
134
135
 
135
136
  it 'returns an array with the primary' do
136
- expect(read_pref.send(:select, candidates)).to eq([primary])
137
+ expect(selector.send(:select, candidates)).to eq([primary])
137
138
  end
138
139
  end
139
140
 
@@ -141,7 +142,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
141
142
  let(:candidates) { [primary, matching_secondary] }
142
143
 
143
144
  it 'returns an array of the matching secondary, then primary' do
144
- expect(read_pref.send(:select, candidates)).to eq(
145
+ expect(selector.send(:select, candidates)).to eq(
145
146
  [matching_secondary, primary]
146
147
  )
147
148
  end
@@ -152,7 +153,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
152
153
  let(:expected) { [matching_secondary, matching_secondary, primary] }
153
154
 
154
155
  it 'returns an array of the matching secondaries, then primary' do
155
- expect(read_pref.send(:select, candidates)).to eq(expected)
156
+ expect(selector.send(:select, candidates)).to eq(expected)
156
157
  end
157
158
  end
158
159
 
@@ -161,7 +162,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
161
162
  let(:expected) {[matching_secondary, matching_primary] }
162
163
 
163
164
  it 'returns an array of the matching secondary, then the primary' do
164
- expect(read_pref.send(:select, candidates)).to eq(expected)
165
+ expect(selector.send(:select, candidates)).to eq(expected)
165
166
  end
166
167
  end
167
168
  end
@@ -177,7 +178,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
177
178
  let(:candidates) { [far_primary] }
178
179
 
179
180
  it 'returns array with primary' do
180
- expect(read_pref.send(:select, candidates)).to eq([far_primary])
181
+ expect(selector.send(:select, candidates)).to eq([far_primary])
181
182
  end
182
183
  end
183
184
 
@@ -185,7 +186,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
185
186
  let(:candidates) { [far_secondary] }
186
187
 
187
188
  it 'returns an array with the secondary' do
188
- expect(read_pref.send(:select, candidates)).to eq([far_secondary])
189
+ expect(selector.send(:select, candidates)).to eq([far_secondary])
189
190
  end
190
191
  end
191
192
  end
@@ -196,7 +197,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
196
197
  let(:candidates) { [primary, secondary] }
197
198
 
198
199
  it 'returns an array with secondary, then primary' do
199
- expect(read_pref.send(:select, candidates)).to eq([secondary, primary])
200
+ expect(selector.send(:select, candidates)).to eq([secondary, primary])
200
201
  end
201
202
  end
202
203
 
@@ -204,7 +205,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
204
205
  let(:candidates) { [primary, far_secondary] }
205
206
 
206
207
  it 'returns an array with the secondary, then primary' do
207
- expect(read_pref.send(:select, candidates)).to eq([far_secondary, primary])
208
+ expect(selector.send(:select, candidates)).to eq([far_secondary, primary])
208
209
  end
209
210
  end
210
211
 
@@ -213,7 +214,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
213
214
  let(:expected) { [secondary, far_primary] }
214
215
 
215
216
  it 'returns an array with secondary, then primary' do
216
- expect(read_pref.send(:select, candidates)).to eq(expected)
217
+ expect(selector.send(:select, candidates)).to eq(expected)
217
218
  end
218
219
  end
219
220
 
@@ -222,7 +223,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
222
223
  let(:expected) { [far_secondary, far_primary] }
223
224
 
224
225
  it 'returns an array with secondary, then primary' do
225
- expect(read_pref.send(:select, candidates)).to eq(expected)
226
+ expect(selector.send(:select, candidates)).to eq(expected)
226
227
  end
227
228
  end
228
229
 
@@ -233,7 +234,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
233
234
  let(:expected) { [secondary, primary] }
234
235
 
235
236
  it 'returns an array with near secondary, then primary' do
236
- expect(read_pref.send(:select, candidates)).to eq(expected)
237
+ expect(selector.send(:select, candidates)).to eq(expected)
237
238
  end
238
239
  end
239
240
 
@@ -242,7 +243,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
242
243
  let(:expected) { [secondary, secondary, far_primary] }
243
244
 
244
245
  it 'returns an array with secondaries, then primary' do
245
- expect(read_pref.send(:select, candidates)).to eq(expected)
246
+ expect(selector.send(:select, candidates)).to eq(expected)
246
247
  end
247
248
  end
248
249
  end
@@ -2,19 +2,20 @@ require 'spec_helper'
2
2
 
3
3
  describe Mongo::ServerSelector::Secondary do
4
4
 
5
+ let(:name) { :secondary }
6
+
5
7
  include_context 'server selector'
6
8
 
7
- it_behaves_like 'a read preference mode' do
8
- let(:name) { :secondary }
9
+ it_behaves_like 'a server selector mode' do
9
10
  let(:slave_ok) { true }
10
11
  end
11
12
 
12
- it_behaves_like 'a read preference mode accepting tag sets'
13
+ it_behaves_like 'a server selector accepting tag sets'
13
14
 
14
15
  describe '#to_mongos' do
15
16
 
16
17
  it 'returns read preference formatted for mongos' do
17
- expect(read_pref.to_mongos).to eq(
18
+ expect(selector.to_mongos).to eq(
18
19
  { :mode => 'secondary' }
19
20
  )
20
21
  end
@@ -23,7 +24,7 @@ describe Mongo::ServerSelector::Secondary do
23
24
  let(:tag_sets) { [tag_set] }
24
25
 
25
26
  it 'returns read preference formatted for mongos with tag sets' do
26
- expect(read_pref.to_mongos).to eq(
27
+ expect(selector.to_mongos).to eq(
27
28
  { :mode => 'secondary', :tags => tag_sets}
28
29
  )
29
30
  end
@@ -36,7 +37,7 @@ describe Mongo::ServerSelector::Secondary do
36
37
  let(:candidates) { [] }
37
38
 
38
39
  it 'returns an empty array' do
39
- expect(read_pref.send(:select, candidates)).to be_empty
40
+ expect(selector.send(:select, candidates)).to be_empty
40
41
  end
41
42
  end
42
43
 
@@ -44,7 +45,7 @@ describe Mongo::ServerSelector::Secondary do
44
45
  let(:candidates) { [primary] }
45
46
 
46
47
  it 'returns an empty array' do
47
- expect(read_pref.send(:select, candidates)).to be_empty
48
+ expect(selector.send(:select, candidates)).to be_empty
48
49
  end
49
50
  end
50
51
 
@@ -52,7 +53,7 @@ describe Mongo::ServerSelector::Secondary do
52
53
  let(:candidates) { [secondary] }
53
54
 
54
55
  it 'returns array with secondary' do
55
- expect(read_pref.send(:select, candidates)).to eq([secondary])
56
+ expect(selector.send(:select, candidates)).to eq([secondary])
56
57
  end
57
58
  end
58
59
 
@@ -60,7 +61,7 @@ describe Mongo::ServerSelector::Secondary do
60
61
  let(:candidates) { [primary, secondary] }
61
62
 
62
63
  it 'returns array with secondary' do
63
- expect(read_pref.send(:select, candidates)).to eq([secondary])
64
+ expect(selector.send(:select, candidates)).to eq([secondary])
64
65
  end
65
66
  end
66
67
 
@@ -68,7 +69,7 @@ describe Mongo::ServerSelector::Secondary do
68
69
  let(:candidates) { [secondary, secondary, primary] }
69
70
 
70
71
  it 'returns array with all secondaries' do
71
- expect(read_pref.send(:select, candidates)).to eq([secondary, secondary])
72
+ expect(selector.send(:select, candidates)).to eq([secondary, secondary])
72
73
  end
73
74
  end
74
75
 
@@ -82,7 +83,7 @@ describe Mongo::ServerSelector::Secondary do
82
83
  let(:candidates) { [primary] }
83
84
 
84
85
  it 'returns an empty array' do
85
- expect(read_pref.send(:select, candidates)).to be_empty
86
+ expect(selector.send(:select, candidates)).to be_empty
86
87
  end
87
88
  end
88
89
 
@@ -90,7 +91,7 @@ describe Mongo::ServerSelector::Secondary do
90
91
  let(:candidates) { [secondary] }
91
92
 
92
93
  it 'returns an empty array' do
93
- expect(read_pref.send(:select, candidates)).to be_empty
94
+ expect(selector.send(:select, candidates)).to be_empty
94
95
  end
95
96
  end
96
97
 
@@ -98,7 +99,7 @@ describe Mongo::ServerSelector::Secondary do
98
99
  let(:candidates) { [matching_secondary] }
99
100
 
100
101
  it 'returns an array with matching secondary' do
101
- expect(read_pref.send(:select, candidates)).to eq([matching_secondary])
102
+ expect(selector.send(:select, candidates)).to eq([matching_secondary])
102
103
  end
103
104
  end
104
105
  end
@@ -109,7 +110,7 @@ describe Mongo::ServerSelector::Secondary do
109
110
  let(:candidates) { [primary, secondary, secondary] }
110
111
 
111
112
  it 'returns an emtpy array' do
112
- expect(read_pref.send(:select, candidates)).to be_empty
113
+ expect(selector.send(:select, candidates)).to be_empty
113
114
  end
114
115
  end
115
116
 
@@ -117,7 +118,7 @@ describe Mongo::ServerSelector::Secondary do
117
118
  let(:candidates) { [secondary, matching_secondary]}
118
119
 
119
120
  it 'returns array with matching secondary' do
120
- expect(read_pref.send(:select, candidates)).to eq([matching_secondary])
121
+ expect(selector.send(:select, candidates)).to eq([matching_secondary])
121
122
  end
122
123
  end
123
124
 
@@ -125,7 +126,7 @@ describe Mongo::ServerSelector::Secondary do
125
126
  let(:candidates) { [matching_secondary, matching_secondary] }
126
127
 
127
128
  it 'returns an array with both matching secondaries' do
128
- expect(read_pref.send(:select, candidates)).to eq([matching_secondary, matching_secondary])
129
+ expect(selector.send(:select, candidates)).to eq([matching_secondary, matching_secondary])
129
130
  end
130
131
  end
131
132
  end
@@ -141,7 +142,7 @@ describe Mongo::ServerSelector::Secondary do
141
142
  let(:candidates) { [far_primary] }
142
143
 
143
144
  it 'returns an empty array' do
144
- expect(read_pref.send(:select, candidates)).to be_empty
145
+ expect(selector.send(:select, candidates)).to be_empty
145
146
  end
146
147
  end
147
148
 
@@ -149,7 +150,7 @@ describe Mongo::ServerSelector::Secondary do
149
150
  let(:candidates) { [far_secondary] }
150
151
 
151
152
  it 'returns an array with the secondary' do
152
- expect(read_pref.send(:select, candidates)).to eq([far_secondary])
153
+ expect(selector.send(:select, candidates)).to eq([far_secondary])
153
154
  end
154
155
  end
155
156
  end
@@ -160,7 +161,7 @@ describe Mongo::ServerSelector::Secondary do
160
161
  let(:candidates) { [primary, far_secondary] }
161
162
 
162
163
  it 'returns an array with the secondary' do
163
- expect(read_pref.send(:select, candidates)).to eq([far_secondary])
164
+ expect(selector.send(:select, candidates)).to eq([far_secondary])
164
165
  end
165
166
  end
166
167
 
@@ -168,7 +169,7 @@ describe Mongo::ServerSelector::Secondary do
168
169
  let(:candidates) { [far_primary, far_secondary] }
169
170
 
170
171
  it 'returns an array with the secondary' do
171
- expect(read_pref.send(:select, candidates)).to eq([far_secondary])
172
+ expect(selector.send(:select, candidates)).to eq([far_secondary])
172
173
  end
173
174
  end
174
175
 
@@ -178,7 +179,7 @@ describe Mongo::ServerSelector::Secondary do
178
179
  let(:candidates) { [primary, secondary, far_secondary] }
179
180
 
180
181
  it 'returns an array with near secondary' do
181
- expect(read_pref.send(:select, candidates)).to eq([secondary])
182
+ expect(selector.send(:select, candidates)).to eq([secondary])
182
183
  end
183
184
  end
184
185
 
@@ -186,7 +187,7 @@ describe Mongo::ServerSelector::Secondary do
186
187
  let(:candidates) { [far_primary, secondary, secondary] }
187
188
 
188
189
  it 'returns an array with two secondaries' do
189
- expect(read_pref.send(:select, candidates)).to eq([secondary, secondary])
190
+ expect(selector.send(:select, candidates)).to eq([secondary, secondary])
190
191
  end
191
192
  end
192
193
  end