mongo 2.1.0.beta → 2.2.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 (342) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +10 -3
  4. data/Rakefile +1 -7
  5. data/lib/mongo/address/ipv4.rb +6 -1
  6. data/lib/mongo/address/unix.rb +2 -2
  7. data/lib/mongo/address.rb +32 -10
  8. data/lib/mongo/auth/cr/conversation.rb +1 -1
  9. data/lib/mongo/auth/ldap/conversation.rb +7 -3
  10. data/lib/mongo/auth/scram/conversation.rb +9 -3
  11. data/lib/mongo/auth/user/view.rb +23 -2
  12. data/lib/mongo/auth/x509/conversation.rb +1 -1
  13. data/lib/mongo/bulk_write/combineable.rb +51 -0
  14. data/lib/mongo/bulk_write/ordered_combiner.rb +55 -0
  15. data/lib/mongo/bulk_write/result.rb +61 -8
  16. data/lib/mongo/bulk_write/result_combiner.rb +117 -0
  17. data/lib/mongo/bulk_write/transformable.rb +132 -0
  18. data/lib/mongo/bulk_write/unordered_combiner.rb +52 -0
  19. data/lib/mongo/bulk_write/validatable.rb +62 -0
  20. data/lib/mongo/bulk_write.rb +164 -23
  21. data/lib/mongo/client.rb +75 -18
  22. data/lib/mongo/cluster/topology/replica_set.rb +8 -6
  23. data/lib/mongo/cluster/topology/unknown.rb +5 -2
  24. data/lib/mongo/cluster.rb +85 -5
  25. data/lib/mongo/collection/view/aggregation.rb +19 -45
  26. data/lib/mongo/collection/view/builder/aggregation.rb +98 -0
  27. data/lib/mongo/collection/view/builder/find_command.rb +111 -0
  28. data/lib/mongo/collection/view/builder/flags.rb +62 -0
  29. data/lib/mongo/collection/view/builder/map_reduce.rb +134 -0
  30. data/lib/mongo/collection/view/builder/modifiers.rb +80 -0
  31. data/lib/mongo/collection/view/builder/op_query.rb +83 -0
  32. data/lib/mongo/collection/view/builder.rb +20 -0
  33. data/lib/mongo/collection/view/explainable.rb +15 -0
  34. data/lib/mongo/collection/view/immutable.rb +4 -11
  35. data/lib/mongo/collection/view/iterable.rb +40 -5
  36. data/lib/mongo/collection/view/map_reduce.rb +67 -37
  37. data/lib/mongo/collection/view/readable.rb +114 -100
  38. data/lib/mongo/collection/view/writable.rb +46 -22
  39. data/lib/mongo/collection/view.rb +25 -22
  40. data/lib/mongo/collection.rb +130 -12
  41. data/lib/mongo/cursor/builder/get_more_command.rb +71 -0
  42. data/lib/mongo/cursor/builder/kill_cursors_command.rb +62 -0
  43. data/lib/mongo/cursor/builder/op_get_more.rb +61 -0
  44. data/lib/mongo/cursor/builder/op_kill_cursors.rb +56 -0
  45. data/lib/mongo/cursor/builder.rb +18 -0
  46. data/lib/mongo/cursor.rb +76 -21
  47. data/lib/mongo/database/view.rb +11 -6
  48. data/lib/mongo/database.rb +16 -6
  49. data/lib/mongo/dbref.rb +9 -9
  50. data/lib/mongo/{bulk_write/unordered_bulk_write.rb → error/closed_stream.rb} +12 -21
  51. data/lib/mongo/{bulk_write/ordered_bulk_write.rb → error/extra_file_chunk.rb} +13 -27
  52. data/lib/mongo/error/file_not_found.rb +37 -0
  53. data/lib/mongo/error/invalid_file.rb +2 -2
  54. data/lib/mongo/error/invalid_file_revision.rb +37 -0
  55. data/lib/mongo/error/invalid_uri.rb +5 -4
  56. data/lib/mongo/error/invalid_write_concern.rb +35 -0
  57. data/lib/mongo/error/missing_file_chunk.rb +38 -0
  58. data/lib/mongo/error/operation_failure.rb +33 -2
  59. data/lib/mongo/error/unchangeable_collection_option.rb +38 -0
  60. data/lib/mongo/error/unexpected_chunk_length.rb +39 -0
  61. data/lib/mongo/error.rb +8 -0
  62. data/lib/mongo/grid/file/chunk.rb +9 -9
  63. data/lib/mongo/grid/file/{metadata.rb → info.rb} +41 -39
  64. data/lib/mongo/grid/file.rb +12 -9
  65. data/lib/mongo/grid/fs_bucket.rb +448 -0
  66. data/lib/mongo/grid/stream/read.rb +208 -0
  67. data/lib/mongo/grid/stream/write.rb +187 -0
  68. data/lib/mongo/grid/stream.rb +64 -0
  69. data/lib/mongo/grid.rb +2 -1
  70. data/lib/mongo/index/view.rb +7 -4
  71. data/lib/mongo/index.rb +5 -0
  72. data/lib/mongo/loggable.rb +34 -57
  73. data/lib/mongo/logger.rb +16 -78
  74. data/lib/mongo/monitoring/command_log_subscriber.rb +38 -14
  75. data/lib/mongo/monitoring/event/command_started.rb +2 -1
  76. data/lib/mongo/monitoring/event/command_succeeded.rb +24 -2
  77. data/lib/mongo/monitoring/event/secure.rb +58 -0
  78. data/lib/mongo/monitoring/event.rb +1 -0
  79. data/lib/mongo/monitoring/publishable.rb +22 -12
  80. data/lib/mongo/monitoring.rb +1 -5
  81. data/lib/mongo/operation/commands/aggregate/result.rb +89 -0
  82. data/lib/mongo/operation/commands/aggregate.rb +64 -0
  83. data/lib/mongo/operation/commands/collections_info/result.rb +41 -0
  84. data/lib/mongo/operation/{read → commands}/collections_info.rb +5 -3
  85. data/lib/mongo/operation/commands/command.rb +47 -0
  86. data/lib/mongo/operation/commands/find/result.rb +62 -0
  87. data/lib/mongo/operation/commands/find.rb +27 -0
  88. data/lib/mongo/operation/commands/get_more/result.rb +62 -0
  89. data/lib/mongo/operation/commands/get_more.rb +27 -0
  90. data/lib/mongo/operation/{read → commands}/indexes.rb +9 -6
  91. data/lib/mongo/operation/{list_collections → commands/list_collections}/result.rb +1 -21
  92. data/lib/mongo/operation/{read → commands}/list_collections.rb +4 -32
  93. data/lib/mongo/operation/{list_indexes → commands/list_indexes}/result.rb +1 -21
  94. data/lib/mongo/operation/{read → commands}/list_indexes.rb +3 -33
  95. data/lib/mongo/operation/commands/map_reduce/result.rb +119 -0
  96. data/lib/mongo/operation/commands/map_reduce.rb +49 -0
  97. data/lib/mongo/operation/commands/parallel_scan/result.rb +64 -0
  98. data/lib/mongo/operation/commands/parallel_scan.rb +52 -0
  99. data/lib/mongo/operation/commands/user_query.rb +71 -0
  100. data/lib/mongo/operation/commands/users_info/result.rb +38 -0
  101. data/lib/mongo/operation/commands/users_info.rb +48 -0
  102. data/lib/mongo/operation/commands.rb +26 -0
  103. data/lib/mongo/operation/executable.rb +4 -68
  104. data/lib/mongo/operation/kill_cursors.rb +3 -3
  105. data/lib/mongo/operation/object_id_generator.rb +36 -0
  106. data/lib/mongo/operation/read/get_more.rb +2 -22
  107. data/lib/mongo/operation/read/query/result.rb +40 -0
  108. data/lib/mongo/operation/read/query.rb +4 -21
  109. data/lib/mongo/operation/read.rb +0 -4
  110. data/lib/mongo/operation/{read_preferrable.rb → read_preference.rb} +3 -2
  111. data/lib/mongo/operation/result.rb +43 -1
  112. data/lib/mongo/operation/specifiable.rb +59 -1
  113. data/lib/mongo/operation/write/bulk/bulkable.rb +83 -0
  114. data/lib/mongo/operation/write/bulk/delete/result.rb +67 -0
  115. data/lib/mongo/operation/write/bulk/delete.rb +71 -0
  116. data/lib/mongo/operation/write/bulk/insert/result.rb +129 -0
  117. data/lib/mongo/operation/write/bulk/insert.rb +96 -0
  118. data/lib/mongo/operation/write/bulk/legacy_mergable.rb +87 -0
  119. data/lib/mongo/operation/write/bulk/mergable.rb +71 -0
  120. data/lib/mongo/operation/write/bulk/update/result.rb +174 -0
  121. data/lib/mongo/operation/write/bulk/update.rb +81 -0
  122. data/lib/mongo/operation/write/bulk.rb +6 -3
  123. data/lib/mongo/operation/write/command/create_index.rb +0 -1
  124. data/lib/mongo/operation/write/command/create_user.rb +0 -1
  125. data/lib/mongo/operation/write/command/delete.rb +3 -3
  126. data/lib/mongo/operation/write/command/drop_index.rb +0 -1
  127. data/lib/mongo/operation/write/command/insert.rb +4 -3
  128. data/lib/mongo/operation/write/command/remove_user.rb +0 -1
  129. data/lib/mongo/operation/write/command/update.rb +6 -4
  130. data/lib/mongo/operation/write/command/update_user.rb +0 -1
  131. data/lib/mongo/operation/write/command/writable.rb +13 -18
  132. data/lib/mongo/operation/write/create_index.rb +4 -27
  133. data/lib/mongo/operation/write/create_user.rb +4 -30
  134. data/lib/mongo/operation/write/delete.rb +6 -29
  135. data/lib/mongo/operation/write/drop_index.rb +3 -3
  136. data/lib/mongo/operation/write/gle.rb +49 -0
  137. data/lib/mongo/operation/write/idable.rb +24 -2
  138. data/lib/mongo/operation/write/insert.rb +2 -24
  139. data/lib/mongo/operation/write/remove_user.rb +4 -27
  140. data/lib/mongo/operation/write/update.rb +13 -36
  141. data/lib/mongo/operation/write/update_user.rb +4 -30
  142. data/lib/mongo/operation/write/write_command_enabled.rb +53 -0
  143. data/lib/mongo/operation/write.rb +2 -0
  144. data/lib/mongo/operation.rb +33 -5
  145. data/lib/mongo/options/mapper.rb +26 -2
  146. data/lib/mongo/options/redacted.rb +156 -0
  147. data/lib/mongo/options.rb +1 -0
  148. data/lib/mongo/protocol/bit_vector.rb +11 -9
  149. data/lib/mongo/protocol/delete.rb +78 -3
  150. data/lib/mongo/protocol/get_more.rb +59 -2
  151. data/lib/mongo/protocol/insert.rb +73 -1
  152. data/lib/mongo/protocol/kill_cursors.rb +66 -4
  153. data/lib/mongo/protocol/message.rb +44 -20
  154. data/lib/mongo/protocol/query.rb +153 -65
  155. data/lib/mongo/protocol/reply.rb +92 -1
  156. data/lib/mongo/protocol/serializers.rb +49 -40
  157. data/lib/mongo/protocol/update.rb +93 -1
  158. data/lib/mongo/retryable.rb +101 -0
  159. data/lib/mongo/server/connectable.rb +28 -8
  160. data/lib/mongo/server/connection.rb +52 -10
  161. data/lib/mongo/server/connection_pool/queue.rb +15 -0
  162. data/lib/mongo/server/connection_pool.rb +12 -15
  163. data/lib/mongo/server/description/features.rb +4 -2
  164. data/lib/mongo/server/description.rb +39 -3
  165. data/lib/mongo/server/monitor/connection.rb +49 -28
  166. data/lib/mongo/server/monitor.rb +3 -14
  167. data/lib/mongo/server.rb +31 -4
  168. data/lib/mongo/server_selector/selectable.rb +58 -32
  169. data/lib/mongo/server_selector.rb +19 -10
  170. data/lib/mongo/socket/ssl.rb +4 -1
  171. data/lib/mongo/socket/tcp.rb +2 -2
  172. data/lib/mongo/socket/unix.rb +5 -8
  173. data/lib/mongo/socket.rb +11 -4
  174. data/lib/mongo/uri.rb +245 -139
  175. data/lib/mongo/version.rb +1 -1
  176. data/lib/mongo/write_concern.rb +21 -6
  177. data/lib/mongo.rb +4 -4
  178. data/mongo.gemspec +1 -2
  179. data/spec/mongo/address/unix_spec.rb +1 -1
  180. data/spec/mongo/address_spec.rb +25 -0
  181. data/spec/mongo/auth/ldap/conversation_spec.rb +43 -0
  182. data/spec/mongo/auth/user/view_spec.rb +26 -1
  183. data/spec/mongo/bulk_write/ordered_combiner_spec.rb +284 -0
  184. data/spec/mongo/bulk_write/unordered_combiner_spec.rb +239 -0
  185. data/spec/mongo/bulk_write_spec.rb +385 -161
  186. data/spec/mongo/client_spec.rb +193 -23
  187. data/spec/mongo/cluster/topology/replica_set_spec.rb +2 -0
  188. data/spec/mongo/collection/view/aggregation_spec.rb +65 -0
  189. data/spec/mongo/collection/view/builder/find_command_spec.rb +167 -0
  190. data/spec/mongo/collection/view/builder/flags_spec.rb +106 -0
  191. data/spec/mongo/collection/view/builder/modifiers_spec.rb +210 -0
  192. data/spec/mongo/collection/view/builder/op_query_spec.rb +154 -0
  193. data/spec/mongo/collection/view/explainable_spec.rb +1 -2
  194. data/spec/mongo/collection/view/immutable_spec.rb +54 -0
  195. data/spec/mongo/collection/view/map_reduce_spec.rb +104 -9
  196. data/spec/mongo/collection/view/readable_spec.rb +109 -112
  197. data/spec/mongo/collection/view_spec.rb +119 -487
  198. data/spec/mongo/collection_spec.rb +1002 -33
  199. data/spec/mongo/command_monitoring_spec.rb +64 -0
  200. data/spec/mongo/connection_string_spec.rb +115 -0
  201. data/spec/mongo/cursor/builder/get_more_command_spec.rb +160 -0
  202. data/spec/mongo/cursor/builder/op_get_more_spec.rb +52 -0
  203. data/spec/mongo/cursor_spec.rb +10 -60
  204. data/spec/mongo/database_spec.rb +81 -12
  205. data/spec/mongo/dbref_spec.rb +4 -4
  206. data/spec/mongo/grid/file/chunk_spec.rb +6 -6
  207. data/spec/mongo/grid/file/{metadata_spec.rb → info_spec.rb} +29 -17
  208. data/spec/mongo/grid/file_spec.rb +8 -8
  209. data/spec/mongo/grid/fs_bucket_spec.rb +1020 -0
  210. data/spec/mongo/grid/stream/read_spec.rb +275 -0
  211. data/spec/mongo/grid/stream/write_spec.rb +440 -0
  212. data/spec/mongo/grid/stream_spec.rb +48 -0
  213. data/spec/mongo/gridfs_spec.rb +50 -0
  214. data/spec/mongo/index/view_spec.rb +41 -0
  215. data/spec/mongo/logger_spec.rb +0 -40
  216. data/spec/mongo/monitoring/command_log_subscriber_spec.rb +76 -0
  217. data/spec/mongo/monitoring/event/command_started_spec.rb +26 -0
  218. data/spec/mongo/monitoring/event/command_succeeded_spec.rb +26 -0
  219. data/spec/mongo/monitoring/event/secure_spec.rb +57 -0
  220. data/spec/mongo/operation/{aggregate → commands/aggregate}/result_spec.rb +1 -1
  221. data/spec/mongo/operation/commands/aggregate_spec.rb +69 -0
  222. data/spec/mongo/operation/{read → commands}/collections_info_spec.rb +1 -1
  223. data/spec/mongo/operation/{command_spec.rb → commands/command_spec.rb} +1 -19
  224. data/spec/mongo/operation/{read → commands}/indexes_spec.rb +1 -1
  225. data/spec/mongo/operation/{map_reduce_spec.rb → commands/map_reduce_spec.rb} +1 -19
  226. data/spec/mongo/operation/kill_cursors_spec.rb +1 -17
  227. data/spec/mongo/operation/read/get_more_spec.rb +0 -16
  228. data/spec/mongo/operation/read/query_spec.rb +19 -16
  229. data/spec/mongo/operation/{read_preferrable_spec.rb → read_preference_spec.rb} +11 -11
  230. data/spec/mongo/operation/result_spec.rb +19 -0
  231. data/spec/mongo/operation/write/bulk/{bulk_delete_spec.rb → delete_spec.rb} +17 -28
  232. data/spec/mongo/operation/write/bulk/{bulk_insert_spec.rb → insert_spec.rb} +1 -12
  233. data/spec/mongo/operation/write/bulk/{bulk_update_spec.rb → update_spec.rb} +7 -18
  234. data/spec/mongo/operation/write/command/delete_spec.rb +18 -9
  235. data/spec/mongo/operation/write/command/insert_spec.rb +18 -9
  236. data/spec/mongo/operation/write/command/update_spec.rb +18 -9
  237. data/spec/mongo/operation/write/delete_spec.rb +3 -3
  238. data/spec/mongo/operation/write/insert_spec.rb +0 -11
  239. data/spec/mongo/operation/write/update_spec.rb +6 -6
  240. data/spec/mongo/options/redacted_spec.rb +350 -0
  241. data/spec/mongo/protocol/delete_spec.rb +4 -4
  242. data/spec/mongo/protocol/get_more_spec.rb +4 -4
  243. data/spec/mongo/protocol/insert_spec.rb +3 -3
  244. data/spec/mongo/protocol/kill_cursors_spec.rb +8 -6
  245. data/spec/mongo/protocol/query_spec.rb +21 -7
  246. data/spec/mongo/protocol/update_spec.rb +5 -5
  247. data/spec/mongo/retryable_spec.rb +221 -0
  248. data/spec/mongo/server/connection_pool/queue_spec.rb +16 -0
  249. data/spec/mongo/server/connection_pool_spec.rb +42 -6
  250. data/spec/mongo/server/connection_spec.rb +86 -1
  251. data/spec/mongo/server/description/features_spec.rb +25 -0
  252. data/spec/mongo/server/description_spec.rb +42 -0
  253. data/spec/mongo/server/monitor_spec.rb +44 -0
  254. data/spec/mongo/server_discovery_and_monitoring_spec.rb +25 -59
  255. data/spec/mongo/server_selection_rtt_spec.rb +37 -57
  256. data/spec/mongo/server_selection_spec.rb +5 -3
  257. data/spec/mongo/server_selector/nearest_spec.rb +35 -27
  258. data/spec/mongo/server_selector/primary_preferred_spec.rb +32 -30
  259. data/spec/mongo/server_selector/primary_spec.rb +21 -14
  260. data/spec/mongo/server_selector/secondary_preferred_spec.rb +28 -26
  261. data/spec/mongo/server_selector/secondary_spec.rb +24 -22
  262. data/spec/mongo/server_selector_spec.rb +87 -24
  263. data/spec/mongo/server_spec.rb +78 -15
  264. data/spec/mongo/socket/ssl_spec.rb +101 -57
  265. data/spec/mongo/socket/unix_spec.rb +52 -0
  266. data/spec/mongo/uri_spec.rb +271 -59
  267. data/spec/mongo/write_concern_spec.rb +126 -0
  268. data/spec/spec_helper.rb +29 -23
  269. data/spec/support/authorization.rb +4 -5
  270. data/spec/support/command_monitoring/bulkWrite.yml +73 -0
  271. data/spec/support/command_monitoring/command.yml +42 -0
  272. data/spec/support/command_monitoring/deleteMany.yml +55 -0
  273. data/spec/support/command_monitoring/deleteOne.yml +55 -0
  274. data/spec/support/command_monitoring/find.yml +268 -0
  275. data/spec/support/command_monitoring/insertMany.yml +81 -0
  276. data/spec/support/command_monitoring/insertOne.yml +51 -0
  277. data/spec/support/command_monitoring/updateMany.yml +67 -0
  278. data/spec/support/command_monitoring/updateOne.yml +95 -0
  279. data/spec/support/command_monitoring.rb +373 -0
  280. data/spec/support/connection_string.rb +228 -0
  281. data/spec/support/connection_string_tests/invalid-uris.yml +193 -0
  282. data/spec/support/connection_string_tests/valid-auth.yml +256 -0
  283. data/spec/support/connection_string_tests/valid-host_identifiers.yml +121 -0
  284. data/spec/support/connection_string_tests/valid-options.yml +30 -0
  285. data/spec/support/connection_string_tests/valid-unix_socket-absolute.yml +197 -0
  286. data/spec/support/connection_string_tests/valid-unix_socket-relative.yml +213 -0
  287. data/spec/support/connection_string_tests/valid-warnings.yml +55 -0
  288. data/spec/support/crud/read.rb +14 -10
  289. data/spec/support/crud/write.rb +36 -9
  290. data/spec/support/crud.rb +10 -2
  291. data/spec/support/gridfs.rb +637 -0
  292. data/spec/support/gridfs_tests/delete.yml +157 -0
  293. data/spec/support/gridfs_tests/download.yml +210 -0
  294. data/spec/support/gridfs_tests/download_by_name.yml +113 -0
  295. data/spec/support/gridfs_tests/upload.yml +158 -0
  296. data/spec/support/matchers.rb +2 -2
  297. data/spec/support/sdam/rs/equal_electionids.yml +1 -2
  298. data/spec/support/sdam/rs/new_primary_new_electionid.yml +0 -3
  299. data/spec/support/sdam/rs/primary_mismatched_me.yml +37 -0
  300. data/spec/support/sdam/rs/primary_to_no_primary_mismatched_me.yml +75 -0
  301. data/spec/support/sdam/rs/rsother_discovered.yml +24 -3
  302. data/spec/support/sdam/rs/secondary_mismatched_me.yml +37 -0
  303. data/spec/support/sdam/rs/stepdown_change_set_name.yml +59 -0
  304. data/spec/support/sdam/single/direct_connection_rsarbiter.yml +1 -1
  305. data/spec/support/sdam/single/direct_connection_rsprimary.yml +1 -1
  306. data/spec/support/sdam/single/direct_connection_rssecondary.yml +1 -1
  307. data/spec/support/sdam/single/direct_connection_slave.yml +1 -1
  308. data/spec/support/sdam/single/direct_connection_standalone.yml +1 -1
  309. data/spec/support/sdam/single/not_ok_response.yml +0 -1
  310. data/spec/support/server_discovery_and_monitoring.rb +3 -1
  311. data/spec/support/server_selection.rb +3 -1
  312. data/spec/support/shared/bulk_write.rb +192 -0
  313. data/spec/support/shared/protocol.rb +5 -5
  314. data/spec/support/shared/server_selector.rb +78 -13
  315. data/spec/support/travis.rb +1 -1
  316. data.tar.gz.sig +0 -0
  317. metadata +211 -72
  318. metadata.gz.sig +0 -0
  319. data/lib/mongo/bulk_write/bulk_writable.rb +0 -252
  320. data/lib/mongo/bulk_write/deletable.rb +0 -57
  321. data/lib/mongo/bulk_write/insertable.rb +0 -49
  322. data/lib/mongo/bulk_write/replacable.rb +0 -58
  323. data/lib/mongo/bulk_write/updatable.rb +0 -69
  324. data/lib/mongo/grid/fs.rb +0 -146
  325. data/lib/mongo/operation/aggregate/result.rb +0 -103
  326. data/lib/mongo/operation/aggregate.rb +0 -108
  327. data/lib/mongo/operation/command.rb +0 -61
  328. data/lib/mongo/operation/map_reduce/result.rb +0 -122
  329. data/lib/mongo/operation/map_reduce.rb +0 -95
  330. data/lib/mongo/operation/parallel_scan/result.rb +0 -72
  331. data/lib/mongo/operation/parallel_scan.rb +0 -76
  332. data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +0 -75
  333. data/lib/mongo/operation/write/bulk/bulk_delete.rb +0 -145
  334. data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +0 -130
  335. data/lib/mongo/operation/write/bulk/bulk_insert.rb +0 -132
  336. data/lib/mongo/operation/write/bulk/bulk_mergable.rb +0 -67
  337. data/lib/mongo/operation/write/bulk/bulk_update/result.rb +0 -174
  338. data/lib/mongo/operation/write/bulk/bulk_update.rb +0 -154
  339. data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +0 -83
  340. data/spec/mongo/grid/fs_spec.rb +0 -160
  341. data/spec/mongo/loggable_spec.rb +0 -63
  342. data/spec/mongo/operation/aggregate_spec.rb +0 -127
@@ -2,27 +2,34 @@ 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
12
+ it_behaves_like 'a server selector with sensitive data in its options'
11
13
 
12
14
  describe '#tag_sets' do
13
15
 
14
16
  context 'tags not provided' do
15
17
 
16
18
  it 'returns an empty array' do
17
- expect(read_pref.tag_sets).to be_empty
19
+ expect(selector.tag_sets).to be_empty
18
20
  end
19
21
  end
20
22
 
21
23
  context 'tag sets provided' do
22
- let(:tag_sets) { [tag_set] }
24
+
25
+ let(:tag_sets) do
26
+ [ tag_set ]
27
+ end
23
28
 
24
29
  it 'raises an error' do
25
- expect{read_pref.tag_sets}.to raise_error
30
+ expect {
31
+ selector.tag_sets
32
+ }.to raise_error(Mongo::Error::InvalidServerPreference)
26
33
  end
27
34
  end
28
35
  end
@@ -30,7 +37,7 @@ describe Mongo::ServerSelector::Primary do
30
37
  describe '#to_mongos' do
31
38
 
32
39
  it 'returns nil' do
33
- expect(read_pref.to_mongos).to be_nil
40
+ expect(selector.to_mongos).to be_nil
34
41
  end
35
42
  end
36
43
 
@@ -40,7 +47,7 @@ describe Mongo::ServerSelector::Primary do
40
47
  let(:candidates) { [] }
41
48
 
42
49
  it 'returns an empty array' do
43
- expect(read_pref.send(:select, candidates)).to be_empty
50
+ expect(selector.send(:select, candidates)).to be_empty
44
51
  end
45
52
  end
46
53
 
@@ -48,7 +55,7 @@ describe Mongo::ServerSelector::Primary do
48
55
  let(:candidates) { [secondary] }
49
56
 
50
57
  it 'returns an empty array' do
51
- expect(read_pref.send(:select, candidates)).to be_empty
58
+ expect(selector.send(:select, candidates)).to be_empty
52
59
  end
53
60
  end
54
61
 
@@ -56,7 +63,7 @@ describe Mongo::ServerSelector::Primary do
56
63
  let(:candidates) { [primary] }
57
64
 
58
65
  it 'returns an array with the primary' do
59
- expect(read_pref.send(:select, candidates)).to eq([primary])
66
+ expect(selector.send(:select, candidates)).to eq([primary])
60
67
  end
61
68
  end
62
69
 
@@ -64,7 +71,7 @@ describe Mongo::ServerSelector::Primary do
64
71
  let(:candidates) { [secondary, primary] }
65
72
 
66
73
  it 'returns an array with the primary' do
67
- expect(read_pref.send(:select, candidates)).to eq([primary])
74
+ expect(selector.send(:select, candidates)).to eq([primary])
68
75
  end
69
76
  end
70
77
 
@@ -78,7 +85,7 @@ describe Mongo::ServerSelector::Primary do
78
85
  let(:candidates) { [far_primary] }
79
86
 
80
87
  it 'returns array with the primary' do
81
- expect(read_pref.send(:select, candidates)).to eq([far_primary])
88
+ expect(selector.send(:select, candidates)).to eq([far_primary])
82
89
  end
83
90
  end
84
91
 
@@ -86,7 +93,7 @@ describe Mongo::ServerSelector::Primary do
86
93
  let(:candidates) { [far_secondary] }
87
94
 
88
95
  it 'returns empty array' do
89
- expect(read_pref.send(:select, candidates)).to be_empty
96
+ expect(selector.send(:select, candidates)).to be_empty
90
97
  end
91
98
  end
92
99
  end
@@ -97,7 +104,7 @@ describe Mongo::ServerSelector::Primary do
97
104
  let(:candidates) { [far_primary, far_secondary] }
98
105
 
99
106
  it 'returns an array with the primary' do
100
- expect(read_pref.send(:select, candidates)).to eq([far_primary])
107
+ expect(selector.send(:select, candidates)).to eq([far_primary])
101
108
  end
102
109
  end
103
110
 
@@ -105,7 +112,7 @@ describe Mongo::ServerSelector::Primary do
105
112
  let(:candidates) { [far_primary, far_secondary] }
106
113
 
107
114
  it 'returns an array with the primary' do
108
- expect(read_pref.send(:select, candidates)).to eq([far_primary])
115
+ expect(selector.send(:select, candidates)).to eq([far_primary])
109
116
  end
110
117
  end
111
118
  end
@@ -2,14 +2,16 @@ 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
12
+ it_behaves_like 'a server selector with sensitive data in its options'
11
13
 
12
- it_behaves_like 'a read preference mode accepting tag sets'
14
+ it_behaves_like 'a server selector accepting tag sets'
13
15
 
14
16
  describe '#to_mongos' do
15
17
 
@@ -20,7 +22,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
20
22
  end
21
23
 
22
24
  it 'returns a read preference formatted for mongos' do
23
- expect(read_pref.to_mongos).to eq(
25
+ expect(selector.to_mongos).to eq(
24
26
  { :mode => 'secondaryPreferred', :tags => tag_sets }
25
27
  )
26
28
  end
@@ -29,7 +31,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
29
31
  context 'tag sets not provided' do
30
32
 
31
33
  it 'returns nil' do
32
- expect(read_pref.to_mongos).to be_nil
34
+ expect(selector.to_mongos).to be_nil
33
35
  end
34
36
  end
35
37
  end
@@ -40,7 +42,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
40
42
  let(:candidates) { [] }
41
43
 
42
44
  it 'returns an empty array' do
43
- expect(read_pref.send(:select, candidates)).to be_empty
45
+ expect(selector.send(:select, candidates)).to be_empty
44
46
  end
45
47
  end
46
48
 
@@ -48,7 +50,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
48
50
  let(:candidates) { [primary] }
49
51
 
50
52
  it 'returns array with primary' do
51
- expect(read_pref.send(:select, candidates)).to eq([primary])
53
+ expect(selector.send(:select, candidates)).to eq([primary])
52
54
  end
53
55
  end
54
56
 
@@ -56,7 +58,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
56
58
  let(:candidates) { [secondary] }
57
59
 
58
60
  it 'returns array with secondary' do
59
- expect(read_pref.send(:select, candidates)).to eq([secondary])
61
+ expect(selector.send(:select, candidates)).to eq([secondary])
60
62
  end
61
63
  end
62
64
 
@@ -65,7 +67,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
65
67
  let(:expected) { [secondary, primary] }
66
68
 
67
69
  it 'returns array with secondary first, then primary' do
68
- expect(read_pref.send(:select, candidates)).to eq(expected)
70
+ expect(selector.send(:select, candidates)).to eq(expected)
69
71
  end
70
72
  end
71
73
 
@@ -74,7 +76,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
74
76
  let(:expected) { [secondary, primary] }
75
77
 
76
78
  it 'returns array with secondary and primary' do
77
- expect(read_pref.send(:select, candidates)).to eq(expected)
79
+ expect(selector.send(:select, candidates)).to eq(expected)
78
80
  end
79
81
  end
80
82
 
@@ -98,7 +100,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
98
100
  let(:candidates) { [primary] }
99
101
 
100
102
  it 'returns array with primary' do
101
- expect(read_pref.send(:select, candidates)).to eq([primary])
103
+ expect(selector.send(:select, candidates)).to eq([primary])
102
104
  end
103
105
  end
104
106
 
@@ -106,7 +108,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
106
108
  let(:candidates) { [matching_primary] }
107
109
 
108
110
  it 'returns array with matching primary' do
109
- expect(read_pref.send(:select, candidates)).to eq([matching_primary])
111
+ expect(selector.send(:select, candidates)).to eq([matching_primary])
110
112
  end
111
113
  end
112
114
 
@@ -114,7 +116,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
114
116
  let(:candidates) { [matching_secondary] }
115
117
 
116
118
  it 'returns array with matching secondary' do
117
- expect(read_pref.send(:select, candidates)).to eq([matching_secondary])
119
+ expect(selector.send(:select, candidates)).to eq([matching_secondary])
118
120
  end
119
121
  end
120
122
 
@@ -122,7 +124,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
122
124
  let(:candidates) { [secondary] }
123
125
 
124
126
  it 'returns an empty array' do
125
- expect(read_pref.send(:select, candidates)).to be_empty
127
+ expect(selector.send(:select, candidates)).to be_empty
126
128
  end
127
129
  end
128
130
  end
@@ -133,7 +135,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
133
135
  let(:candidates) { [primary, secondary, secondary] }
134
136
 
135
137
  it 'returns an array with the primary' do
136
- expect(read_pref.send(:select, candidates)).to eq([primary])
138
+ expect(selector.send(:select, candidates)).to eq([primary])
137
139
  end
138
140
  end
139
141
 
@@ -141,7 +143,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
141
143
  let(:candidates) { [primary, matching_secondary] }
142
144
 
143
145
  it 'returns an array of the matching secondary, then primary' do
144
- expect(read_pref.send(:select, candidates)).to eq(
146
+ expect(selector.send(:select, candidates)).to eq(
145
147
  [matching_secondary, primary]
146
148
  )
147
149
  end
@@ -152,7 +154,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
152
154
  let(:expected) { [matching_secondary, matching_secondary, primary] }
153
155
 
154
156
  it 'returns an array of the matching secondaries, then primary' do
155
- expect(read_pref.send(:select, candidates)).to eq(expected)
157
+ expect(selector.send(:select, candidates)).to eq(expected)
156
158
  end
157
159
  end
158
160
 
@@ -161,7 +163,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
161
163
  let(:expected) {[matching_secondary, matching_primary] }
162
164
 
163
165
  it 'returns an array of the matching secondary, then the primary' do
164
- expect(read_pref.send(:select, candidates)).to eq(expected)
166
+ expect(selector.send(:select, candidates)).to eq(expected)
165
167
  end
166
168
  end
167
169
  end
@@ -177,7 +179,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
177
179
  let(:candidates) { [far_primary] }
178
180
 
179
181
  it 'returns array with primary' do
180
- expect(read_pref.send(:select, candidates)).to eq([far_primary])
182
+ expect(selector.send(:select, candidates)).to eq([far_primary])
181
183
  end
182
184
  end
183
185
 
@@ -185,7 +187,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
185
187
  let(:candidates) { [far_secondary] }
186
188
 
187
189
  it 'returns an array with the secondary' do
188
- expect(read_pref.send(:select, candidates)).to eq([far_secondary])
190
+ expect(selector.send(:select, candidates)).to eq([far_secondary])
189
191
  end
190
192
  end
191
193
  end
@@ -196,7 +198,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
196
198
  let(:candidates) { [primary, secondary] }
197
199
 
198
200
  it 'returns an array with secondary, then primary' do
199
- expect(read_pref.send(:select, candidates)).to eq([secondary, primary])
201
+ expect(selector.send(:select, candidates)).to eq([secondary, primary])
200
202
  end
201
203
  end
202
204
 
@@ -204,7 +206,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
204
206
  let(:candidates) { [primary, far_secondary] }
205
207
 
206
208
  it 'returns an array with the secondary, then primary' do
207
- expect(read_pref.send(:select, candidates)).to eq([far_secondary, primary])
209
+ expect(selector.send(:select, candidates)).to eq([far_secondary, primary])
208
210
  end
209
211
  end
210
212
 
@@ -213,7 +215,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
213
215
  let(:expected) { [secondary, far_primary] }
214
216
 
215
217
  it 'returns an array with secondary, then primary' do
216
- expect(read_pref.send(:select, candidates)).to eq(expected)
218
+ expect(selector.send(:select, candidates)).to eq(expected)
217
219
  end
218
220
  end
219
221
 
@@ -222,7 +224,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
222
224
  let(:expected) { [far_secondary, far_primary] }
223
225
 
224
226
  it 'returns an array with secondary, then primary' do
225
- expect(read_pref.send(:select, candidates)).to eq(expected)
227
+ expect(selector.send(:select, candidates)).to eq(expected)
226
228
  end
227
229
  end
228
230
 
@@ -233,7 +235,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
233
235
  let(:expected) { [secondary, primary] }
234
236
 
235
237
  it 'returns an array with near secondary, then primary' do
236
- expect(read_pref.send(:select, candidates)).to eq(expected)
238
+ expect(selector.send(:select, candidates)).to eq(expected)
237
239
  end
238
240
  end
239
241
 
@@ -242,7 +244,7 @@ describe Mongo::ServerSelector::SecondaryPreferred do
242
244
  let(:expected) { [secondary, secondary, far_primary] }
243
245
 
244
246
  it 'returns an array with secondaries, then primary' do
245
- expect(read_pref.send(:select, candidates)).to eq(expected)
247
+ expect(selector.send(:select, candidates)).to eq(expected)
246
248
  end
247
249
  end
248
250
  end
@@ -2,19 +2,21 @@ 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
12
+ it_behaves_like 'a server selector with sensitive data in its options'
11
13
 
12
- it_behaves_like 'a read preference mode accepting tag sets'
14
+ it_behaves_like 'a server selector accepting tag sets'
13
15
 
14
16
  describe '#to_mongos' do
15
17
 
16
18
  it 'returns read preference formatted for mongos' do
17
- expect(read_pref.to_mongos).to eq(
19
+ expect(selector.to_mongos).to eq(
18
20
  { :mode => 'secondary' }
19
21
  )
20
22
  end
@@ -23,7 +25,7 @@ describe Mongo::ServerSelector::Secondary do
23
25
  let(:tag_sets) { [tag_set] }
24
26
 
25
27
  it 'returns read preference formatted for mongos with tag sets' do
26
- expect(read_pref.to_mongos).to eq(
28
+ expect(selector.to_mongos).to eq(
27
29
  { :mode => 'secondary', :tags => tag_sets}
28
30
  )
29
31
  end
@@ -36,7 +38,7 @@ describe Mongo::ServerSelector::Secondary do
36
38
  let(:candidates) { [] }
37
39
 
38
40
  it 'returns an empty array' do
39
- expect(read_pref.send(:select, candidates)).to be_empty
41
+ expect(selector.send(:select, candidates)).to be_empty
40
42
  end
41
43
  end
42
44
 
@@ -44,7 +46,7 @@ describe Mongo::ServerSelector::Secondary do
44
46
  let(:candidates) { [primary] }
45
47
 
46
48
  it 'returns an empty array' do
47
- expect(read_pref.send(:select, candidates)).to be_empty
49
+ expect(selector.send(:select, candidates)).to be_empty
48
50
  end
49
51
  end
50
52
 
@@ -52,7 +54,7 @@ describe Mongo::ServerSelector::Secondary do
52
54
  let(:candidates) { [secondary] }
53
55
 
54
56
  it 'returns array with secondary' do
55
- expect(read_pref.send(:select, candidates)).to eq([secondary])
57
+ expect(selector.send(:select, candidates)).to eq([secondary])
56
58
  end
57
59
  end
58
60
 
@@ -60,7 +62,7 @@ describe Mongo::ServerSelector::Secondary do
60
62
  let(:candidates) { [primary, secondary] }
61
63
 
62
64
  it 'returns array with secondary' do
63
- expect(read_pref.send(:select, candidates)).to eq([secondary])
65
+ expect(selector.send(:select, candidates)).to eq([secondary])
64
66
  end
65
67
  end
66
68
 
@@ -68,7 +70,7 @@ describe Mongo::ServerSelector::Secondary do
68
70
  let(:candidates) { [secondary, secondary, primary] }
69
71
 
70
72
  it 'returns array with all secondaries' do
71
- expect(read_pref.send(:select, candidates)).to eq([secondary, secondary])
73
+ expect(selector.send(:select, candidates)).to eq([secondary, secondary])
72
74
  end
73
75
  end
74
76
 
@@ -82,7 +84,7 @@ describe Mongo::ServerSelector::Secondary do
82
84
  let(:candidates) { [primary] }
83
85
 
84
86
  it 'returns an empty array' do
85
- expect(read_pref.send(:select, candidates)).to be_empty
87
+ expect(selector.send(:select, candidates)).to be_empty
86
88
  end
87
89
  end
88
90
 
@@ -90,7 +92,7 @@ describe Mongo::ServerSelector::Secondary do
90
92
  let(:candidates) { [secondary] }
91
93
 
92
94
  it 'returns an empty array' do
93
- expect(read_pref.send(:select, candidates)).to be_empty
95
+ expect(selector.send(:select, candidates)).to be_empty
94
96
  end
95
97
  end
96
98
 
@@ -98,7 +100,7 @@ describe Mongo::ServerSelector::Secondary do
98
100
  let(:candidates) { [matching_secondary] }
99
101
 
100
102
  it 'returns an array with matching secondary' do
101
- expect(read_pref.send(:select, candidates)).to eq([matching_secondary])
103
+ expect(selector.send(:select, candidates)).to eq([matching_secondary])
102
104
  end
103
105
  end
104
106
  end
@@ -109,7 +111,7 @@ describe Mongo::ServerSelector::Secondary do
109
111
  let(:candidates) { [primary, secondary, secondary] }
110
112
 
111
113
  it 'returns an emtpy array' do
112
- expect(read_pref.send(:select, candidates)).to be_empty
114
+ expect(selector.send(:select, candidates)).to be_empty
113
115
  end
114
116
  end
115
117
 
@@ -117,7 +119,7 @@ describe Mongo::ServerSelector::Secondary do
117
119
  let(:candidates) { [secondary, matching_secondary]}
118
120
 
119
121
  it 'returns array with matching secondary' do
120
- expect(read_pref.send(:select, candidates)).to eq([matching_secondary])
122
+ expect(selector.send(:select, candidates)).to eq([matching_secondary])
121
123
  end
122
124
  end
123
125
 
@@ -125,7 +127,7 @@ describe Mongo::ServerSelector::Secondary do
125
127
  let(:candidates) { [matching_secondary, matching_secondary] }
126
128
 
127
129
  it 'returns an array with both matching secondaries' do
128
- expect(read_pref.send(:select, candidates)).to eq([matching_secondary, matching_secondary])
130
+ expect(selector.send(:select, candidates)).to eq([matching_secondary, matching_secondary])
129
131
  end
130
132
  end
131
133
  end
@@ -141,7 +143,7 @@ describe Mongo::ServerSelector::Secondary do
141
143
  let(:candidates) { [far_primary] }
142
144
 
143
145
  it 'returns an empty array' do
144
- expect(read_pref.send(:select, candidates)).to be_empty
146
+ expect(selector.send(:select, candidates)).to be_empty
145
147
  end
146
148
  end
147
149
 
@@ -149,7 +151,7 @@ describe Mongo::ServerSelector::Secondary do
149
151
  let(:candidates) { [far_secondary] }
150
152
 
151
153
  it 'returns an array with the secondary' do
152
- expect(read_pref.send(:select, candidates)).to eq([far_secondary])
154
+ expect(selector.send(:select, candidates)).to eq([far_secondary])
153
155
  end
154
156
  end
155
157
  end
@@ -160,7 +162,7 @@ describe Mongo::ServerSelector::Secondary do
160
162
  let(:candidates) { [primary, far_secondary] }
161
163
 
162
164
  it 'returns an array with the secondary' do
163
- expect(read_pref.send(:select, candidates)).to eq([far_secondary])
165
+ expect(selector.send(:select, candidates)).to eq([far_secondary])
164
166
  end
165
167
  end
166
168
 
@@ -168,7 +170,7 @@ describe Mongo::ServerSelector::Secondary do
168
170
  let(:candidates) { [far_primary, far_secondary] }
169
171
 
170
172
  it 'returns an array with the secondary' do
171
- expect(read_pref.send(:select, candidates)).to eq([far_secondary])
173
+ expect(selector.send(:select, candidates)).to eq([far_secondary])
172
174
  end
173
175
  end
174
176
 
@@ -178,7 +180,7 @@ describe Mongo::ServerSelector::Secondary do
178
180
  let(:candidates) { [primary, secondary, far_secondary] }
179
181
 
180
182
  it 'returns an array with near secondary' do
181
- expect(read_pref.send(:select, candidates)).to eq([secondary])
183
+ expect(selector.send(:select, candidates)).to eq([secondary])
182
184
  end
183
185
  end
184
186
 
@@ -186,7 +188,7 @@ describe Mongo::ServerSelector::Secondary do
186
188
  let(:candidates) { [far_primary, secondary, secondary] }
187
189
 
188
190
  it 'returns an array with two secondaries' do
189
- expect(read_pref.send(:select, candidates)).to eq([secondary, secondary])
191
+ expect(selector.send(:select, candidates)).to eq([secondary, secondary])
190
192
  end
191
193
  end
192
194
  end