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
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mongo::Grid::FSBucket::Stream do
4
+
5
+ let(:fs) do
6
+ authorized_client.database.fs
7
+ end
8
+
9
+ describe '.get' do
10
+
11
+ let(:stream) do
12
+ described_class.get(fs, mode)
13
+ end
14
+
15
+ context 'when mode is read' do
16
+
17
+ let(:mode) do
18
+ Mongo::Grid::FSBucket::Stream::READ_MODE
19
+ end
20
+
21
+ it 'returns a Stream::Read object' do
22
+ expect(stream).to be_a(Mongo::Grid::FSBucket::Stream::Read)
23
+ end
24
+ end
25
+
26
+ context 'when mode is write' do
27
+
28
+ let(:mode) do
29
+ Mongo::Grid::FSBucket::Stream::WRITE_MODE
30
+ end
31
+
32
+ it 'returns a Stream::Write object' do
33
+ expect(stream).to be_a(Mongo::Grid::FSBucket::Stream::Write)
34
+ end
35
+
36
+ context 'when options are provided' do
37
+
38
+ let(:stream) do
39
+ described_class.get(fs, mode, chunk_size: 100)
40
+ end
41
+
42
+ it 'sets the options on the stream object' do
43
+ expect(stream.options[:chunk_size]).to eq(100)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'GridFS' do
4
+ include Mongo::GridFS
5
+
6
+ GRIDFS_TESTS.each do |file|
7
+
8
+ spec = Mongo::GridFS::Spec.new(file)
9
+
10
+ context(spec.description) do
11
+
12
+ spec.tests.each do |test|
13
+
14
+ context(test.description) do
15
+
16
+ after do
17
+ fs.files_collection.delete_many
18
+ fs.chunks_collection.delete_many
19
+ test.expected_files_collection.delete_many
20
+ test.expected_chunks_collection.delete_many
21
+ end
22
+
23
+ let!(:result) do
24
+ test.run(fs)
25
+ end
26
+
27
+ let(:fs) do
28
+ authorized_collection.database.fs
29
+ end
30
+
31
+ it "raises the correct error", if: test.error? do
32
+ expect(result).to match_error(test.expected_error)
33
+ end
34
+
35
+ it 'completes successfully', unless: test.error? do
36
+ expect(result).to completes_successfully(test)
37
+ end
38
+
39
+ it 'has the correct documents in the files collection', if: test.assert_data? do
40
+ expect(fs.files_collection).to match_files_collection(test.expected_files_collection)
41
+ end
42
+
43
+ it 'has the correct documents in the chunks collection', if: test.assert_data? do
44
+ expect(fs.chunks_collection).to match_chunks_collection(test.expected_chunks_collection)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -6,38 +6,6 @@ describe Mongo::Logger do
6
6
  described_class.logger
7
7
  end
8
8
 
9
- describe '.debug' do
10
-
11
- it 'logs a debug message' do
12
- expect(logger).to receive(:debug).with("mongo.query | message | runtime: 10ms")
13
- described_class.debug('mongo.query', 'message', '10ms')
14
- end
15
- end
16
-
17
- describe '.error' do
18
-
19
- it 'logs a error message' do
20
- expect(logger).to receive(:error).with("mongo.query | message | runtime: 10ms")
21
- described_class.error('mongo.query', 'message', '10ms')
22
- end
23
- end
24
-
25
- describe '.fatal' do
26
-
27
- it 'logs a fatal message' do
28
- expect(logger).to receive(:fatal).with("mongo.query | message | runtime: 10ms")
29
- described_class.fatal('mongo.query', 'message', '10ms')
30
- end
31
- end
32
-
33
- describe '.info' do
34
-
35
- it 'logs a info message' do
36
- expect(logger).to receive(:info).with("mongo.query | message | runtime: 10ms")
37
- described_class.info('mongo.query', 'message', '10ms')
38
- end
39
- end
40
-
41
9
  describe '.logger' do
42
10
 
43
11
  context 'when no logger has been set' do
@@ -86,12 +54,4 @@ describe Mongo::Logger do
86
54
  end
87
55
  end
88
56
  end
89
-
90
- describe '.warn' do
91
-
92
- it 'logs a warn message' do
93
- expect(logger).to receive(:warn).with("mongo.query | message | runtime: 10ms")
94
- described_class.warn('mongo.query', 'message', '10ms')
95
- end
96
- end
97
57
  end
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mongo::Monitoring::CommandLogSubscriber do
4
+
5
+ describe '#started' do
6
+
7
+ let(:filter) do
8
+ (1...100).reduce({}) do |hash, i|
9
+ hash[i] = i
10
+ hash
11
+ end
12
+ end
13
+
14
+ let(:command) do
15
+ { find: 'users', filter: filter }
16
+ end
17
+
18
+ let(:event) do
19
+ Mongo::Monitoring::Event::CommandStarted.new(
20
+ 'find',
21
+ 'users',
22
+ Mongo::Address.new('127.0.0.1:27017'),
23
+ 12345,
24
+ 67890,
25
+ command
26
+ )
27
+ end
28
+
29
+ before do
30
+ Mongo::Logger.level = Logger::DEBUG
31
+ end
32
+
33
+ after do
34
+ Mongo::Logger.level = Logger::INFO
35
+ end
36
+
37
+ context 'when truncating the logs' do
38
+
39
+ context 'when no option is provided' do
40
+
41
+ let(:subscriber) do
42
+ described_class.new
43
+ end
44
+
45
+ it 'truncates the logs at 250 characters' do
46
+ expect(subscriber).to receive(:truncate).with(command).and_call_original
47
+ subscriber.started(event)
48
+ end
49
+ end
50
+
51
+ context 'when true option is provided' do
52
+
53
+ let(:subscriber) do
54
+ described_class.new(truncate_logs: true)
55
+ end
56
+
57
+ it 'truncates the logs at 250 characters' do
58
+ expect(subscriber).to receive(:truncate).with(command).and_call_original
59
+ subscriber.started(event)
60
+ end
61
+ end
62
+ end
63
+
64
+ context 'when not truncating the logs' do
65
+
66
+ let(:subscriber) do
67
+ described_class.new(truncate_logs: false)
68
+ end
69
+
70
+ it 'does not truncate the logs' do
71
+ expect(subscriber).to_not receive(:truncate)
72
+ subscriber.started(event)
73
+ end
74
+ end
75
+ end
76
+ end
@@ -81,47 +81,5 @@ describe Mongo::Operation::Aggregate do
81
81
  }.to raise_error(Mongo::Error::OperationFailure)
82
82
  end
83
83
  end
84
-
85
- context 'rerouting' do
86
-
87
- before do
88
- allow_any_instance_of(Mongo::Operation::Aggregate::Result).to receive(:validate!) do
89
- true
90
- end
91
- end
92
-
93
- context 'when out is specified and server is a secondary' do
94
- let(:selector) do
95
- { :aggregate => 'test_coll',
96
- :pipeline => [{ '$out' => 'test_coll' }],
97
- }
98
- end
99
-
100
- it 'raises an error' do
101
- allow_any_instance_of(Mongo::ServerSelector::Primary).to receive(:server) do
102
- primary_server
103
- end
104
- expect {
105
- op.execute(secondary_context)
106
- }.to raise_error(Mongo::Error::NeedPrimaryServer)
107
- end
108
- end
109
-
110
- context 'when out is specified and server is a primary' do
111
- let(:selector) do
112
- { :aggregate => 'test_coll',
113
- :pipeline => [{ '$out' => 'test_coll' }],
114
- }
115
- end
116
-
117
- it 'sends the operation to the primary' do
118
- allow_any_instance_of(Mongo::ServerSelector::Primary).to receive(:server) do
119
- primary_server
120
- end
121
- expect(primary_context).to receive(:with_connection)
122
- op.execute(primary_context)
123
- end
124
- end
125
- end
126
84
  end
127
85
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mongo::Operation::Read::CollectionsInfo do
3
+ describe Mongo::Operation::CollectionsInfo do
4
4
 
5
5
  let(:spec) do
6
6
  { :db_name => TEST_DB }
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mongo::Operation::Read::Indexes do
3
+ describe Mongo::Operation::Indexes do
4
4
 
5
5
  describe '#execute' do
6
6
 
@@ -77,24 +77,6 @@ describe Mongo::Operation::MapReduce do
77
77
  end
78
78
  end
79
79
 
80
- describe '#merge' do
81
-
82
- let(:other_op) { described_class.new(spec) }
83
-
84
- it 'is not allowed' do
85
- expect{ op.merge(other_op) }.to raise_exception
86
- end
87
- end
88
-
89
- describe '#merge!' do
90
-
91
- let(:other_op) { described_class.new(spec) }
92
-
93
- it 'is not allowed' do
94
- expect{ op.merge!(other_op) }.to raise_exception
95
- end
96
- end
97
-
98
80
  describe '#execute' do
99
81
 
100
82
  let(:documents) do
@@ -48,7 +48,7 @@ describe Mongo::Operation::KillCursors do
48
48
  context 'message' do
49
49
 
50
50
  it 'creates a kill cursors wire protocol message with correct specs' do
51
- expect(Mongo::Protocol::KillCursors).to receive(:new) do |ids|
51
+ expect(Mongo::Protocol::KillCursors).to receive(:new) do |collection, database, ids|
52
52
  expect(ids).to eq(spec[:cursor_ids])
53
53
  end
54
54
  op.execute(primary_context)
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mongo::Operation::ReadPreferrable do
3
+ describe Mongo::Operation::ReadPreference do
4
4
 
5
5
  let(:selector) do
6
6
  { name: 'test' }
@@ -26,9 +26,9 @@ describe Mongo::Operation::ReadPreferrable do
26
26
  Mongo::ServerSelector.get
27
27
  end
28
28
 
29
- let(:read_preferrable) do
29
+ let(:read_preference) do
30
30
  Class.new do
31
- include Mongo::Operation::ReadPreferrable
31
+ include Mongo::Operation::ReadPreference
32
32
  end.new.tap do |rp|
33
33
  allow(rp).to receive(:read).and_return(read_pref)
34
34
  allow(rp).to receive(:selector).and_return(selector)
@@ -55,7 +55,7 @@ describe Mongo::Operation::ReadPreferrable do
55
55
  end
56
56
 
57
57
  it 'returns a special selector' do
58
- expect(read_preferrable.send(:update_selector, context)).to eq(expected)
58
+ expect(read_preference.send(:update_selector, context)).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::ReadPreferrable do
70
70
  end
71
71
 
72
72
  it 'returns an unaltered special selector' do
73
- expect(read_preferrable.send(:update_selector, context)).to eq(expected)
73
+ expect(read_preference.send(:update_selector, context)).to eq(expected)
74
74
  end
75
75
  end
76
76
  end
@@ -82,7 +82,7 @@ describe Mongo::Operation::ReadPreferrable do
82
82
  end
83
83
 
84
84
  it 'returns a selector' do
85
- expect(read_preferrable.send(:update_selector, context)).to eq(selector)
85
+ expect(read_preference.send(:update_selector, context)).to eq(selector)
86
86
  end
87
87
  end
88
88
 
@@ -168,7 +168,7 @@ describe Mongo::Operation::ReadPreferrable do
168
168
  end
169
169
 
170
170
  it 'does not set the slave_ok flag' do
171
- expect(read_preferrable.send(:update_options, context)).to eq(expected)
171
+ expect(read_preference.send(:update_options, context)).to eq(expected)
172
172
  end
173
173
  end
174
174
 
@@ -183,7 +183,7 @@ describe Mongo::Operation::ReadPreferrable do
183
183
  end
184
184
 
185
185
  it 'sets the slave_ok flag' do
186
- expect(read_preferrable.send(:update_options, context)).to eq(expected)
186
+ expect(read_preference.send(:update_options, context)).to eq(expected)
187
187
  end
188
188
  end
189
189
  end
@@ -205,7 +205,7 @@ describe Mongo::Operation::ReadPreferrable do
205
205
  end
206
206
 
207
207
  it 'does not set the slave_ok flag' do
208
- expect(read_preferrable.send(:update_options, context)).to eq(expected)
208
+ expect(read_preference.send(:update_options, context)).to eq(expected)
209
209
  end
210
210
  end
211
211
 
@@ -222,7 +222,7 @@ describe Mongo::Operation::ReadPreferrable do
222
222
  end
223
223
 
224
224
  it 'sets the slave_ok flag' do
225
- expect(read_preferrable.send(:update_options, context)).to eq(expected)
225
+ expect(read_preference.send(:update_options, context)).to eq(expected)
226
226
  end
227
227
  end
228
228
 
@@ -237,7 +237,7 @@ describe Mongo::Operation::ReadPreferrable do
237
237
  end
238
238
 
239
239
  it 'does not set the slave_ok flag' do
240
- expect(read_preferrable.send(:update_options, context)).to eq(expected)
240
+ expect(read_preference.send(:update_options, context)).to eq(expected)
241
241
  end
242
242
  end
243
243
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mongo::Operation::Write::BulkDelete do
3
+ describe Mongo::Operation::Write::Bulk::Delete do
4
4
  include_context 'operation'
5
5
 
6
6
  let(:documents) do
@@ -62,17 +62,6 @@ describe Mongo::Operation::Write::BulkDelete do
62
62
  end
63
63
  end
64
64
 
65
- describe '#dup' do
66
-
67
- context 'deep copy' do
68
-
69
- it 'copies the list of deletes' do
70
- copy = op.dup
71
- expect(copy.spec[:deletes]).not_to be(op.spec[:deletes])
72
- end
73
- end
74
- end
75
-
76
65
  describe '#execute' do
77
66
 
78
67
  before do