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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +10 -3
- data/Rakefile +1 -7
- data/lib/mongo/address/ipv4.rb +6 -1
- data/lib/mongo/address/unix.rb +2 -2
- data/lib/mongo/address.rb +32 -10
- data/lib/mongo/auth/cr/conversation.rb +1 -1
- data/lib/mongo/auth/ldap/conversation.rb +7 -3
- data/lib/mongo/auth/scram/conversation.rb +9 -3
- data/lib/mongo/auth/user/view.rb +23 -2
- data/lib/mongo/auth/x509/conversation.rb +1 -1
- data/lib/mongo/bulk_write/combineable.rb +51 -0
- data/lib/mongo/bulk_write/ordered_combiner.rb +55 -0
- data/lib/mongo/bulk_write/result.rb +61 -8
- data/lib/mongo/bulk_write/result_combiner.rb +117 -0
- data/lib/mongo/bulk_write/transformable.rb +132 -0
- data/lib/mongo/bulk_write/unordered_combiner.rb +52 -0
- data/lib/mongo/bulk_write/validatable.rb +62 -0
- data/lib/mongo/bulk_write.rb +164 -23
- data/lib/mongo/client.rb +75 -18
- data/lib/mongo/cluster/topology/replica_set.rb +8 -6
- data/lib/mongo/cluster/topology/unknown.rb +5 -2
- data/lib/mongo/cluster.rb +85 -5
- data/lib/mongo/collection/view/aggregation.rb +19 -45
- data/lib/mongo/collection/view/builder/aggregation.rb +98 -0
- data/lib/mongo/collection/view/builder/find_command.rb +111 -0
- data/lib/mongo/collection/view/builder/flags.rb +62 -0
- data/lib/mongo/collection/view/builder/map_reduce.rb +134 -0
- data/lib/mongo/collection/view/builder/modifiers.rb +80 -0
- data/lib/mongo/collection/view/builder/op_query.rb +83 -0
- data/lib/mongo/collection/view/builder.rb +20 -0
- data/lib/mongo/collection/view/explainable.rb +15 -0
- data/lib/mongo/collection/view/immutable.rb +4 -11
- data/lib/mongo/collection/view/iterable.rb +40 -5
- data/lib/mongo/collection/view/map_reduce.rb +67 -37
- data/lib/mongo/collection/view/readable.rb +114 -100
- data/lib/mongo/collection/view/writable.rb +46 -22
- data/lib/mongo/collection/view.rb +25 -22
- data/lib/mongo/collection.rb +130 -12
- data/lib/mongo/cursor/builder/get_more_command.rb +71 -0
- data/lib/mongo/cursor/builder/kill_cursors_command.rb +62 -0
- data/lib/mongo/cursor/builder/op_get_more.rb +61 -0
- data/lib/mongo/cursor/builder/op_kill_cursors.rb +56 -0
- data/lib/mongo/cursor/builder.rb +18 -0
- data/lib/mongo/cursor.rb +76 -21
- data/lib/mongo/database/view.rb +11 -6
- data/lib/mongo/database.rb +16 -6
- data/lib/mongo/dbref.rb +9 -9
- data/lib/mongo/{bulk_write/unordered_bulk_write.rb → error/closed_stream.rb} +12 -21
- data/lib/mongo/{bulk_write/ordered_bulk_write.rb → error/extra_file_chunk.rb} +13 -27
- data/lib/mongo/error/file_not_found.rb +37 -0
- data/lib/mongo/error/invalid_file.rb +2 -2
- data/lib/mongo/error/invalid_file_revision.rb +37 -0
- data/lib/mongo/error/invalid_uri.rb +5 -4
- data/lib/mongo/error/invalid_write_concern.rb +35 -0
- data/lib/mongo/error/missing_file_chunk.rb +38 -0
- data/lib/mongo/error/operation_failure.rb +33 -2
- data/lib/mongo/error/unchangeable_collection_option.rb +38 -0
- data/lib/mongo/error/unexpected_chunk_length.rb +39 -0
- data/lib/mongo/error.rb +8 -0
- data/lib/mongo/grid/file/chunk.rb +9 -9
- data/lib/mongo/grid/file/{metadata.rb → info.rb} +41 -39
- data/lib/mongo/grid/file.rb +12 -9
- data/lib/mongo/grid/fs_bucket.rb +448 -0
- data/lib/mongo/grid/stream/read.rb +208 -0
- data/lib/mongo/grid/stream/write.rb +187 -0
- data/lib/mongo/grid/stream.rb +64 -0
- data/lib/mongo/grid.rb +2 -1
- data/lib/mongo/index/view.rb +7 -4
- data/lib/mongo/index.rb +5 -0
- data/lib/mongo/loggable.rb +34 -57
- data/lib/mongo/logger.rb +16 -78
- data/lib/mongo/monitoring/command_log_subscriber.rb +38 -14
- data/lib/mongo/monitoring/event/command_started.rb +2 -1
- data/lib/mongo/monitoring/event/command_succeeded.rb +24 -2
- data/lib/mongo/monitoring/event/secure.rb +58 -0
- data/lib/mongo/monitoring/event.rb +1 -0
- data/lib/mongo/monitoring/publishable.rb +22 -12
- data/lib/mongo/monitoring.rb +1 -5
- data/lib/mongo/operation/commands/aggregate/result.rb +89 -0
- data/lib/mongo/operation/commands/aggregate.rb +64 -0
- data/lib/mongo/operation/commands/collections_info/result.rb +41 -0
- data/lib/mongo/operation/{read → commands}/collections_info.rb +5 -3
- data/lib/mongo/operation/commands/command.rb +47 -0
- data/lib/mongo/operation/commands/find/result.rb +62 -0
- data/lib/mongo/operation/commands/find.rb +27 -0
- data/lib/mongo/operation/commands/get_more/result.rb +62 -0
- data/lib/mongo/operation/commands/get_more.rb +27 -0
- data/lib/mongo/operation/{read → commands}/indexes.rb +9 -6
- data/lib/mongo/operation/{list_collections → commands/list_collections}/result.rb +1 -21
- data/lib/mongo/operation/{read → commands}/list_collections.rb +4 -32
- data/lib/mongo/operation/{list_indexes → commands/list_indexes}/result.rb +1 -21
- data/lib/mongo/operation/{read → commands}/list_indexes.rb +3 -33
- data/lib/mongo/operation/commands/map_reduce/result.rb +119 -0
- data/lib/mongo/operation/commands/map_reduce.rb +49 -0
- data/lib/mongo/operation/commands/parallel_scan/result.rb +64 -0
- data/lib/mongo/operation/commands/parallel_scan.rb +52 -0
- data/lib/mongo/operation/commands/user_query.rb +71 -0
- data/lib/mongo/operation/commands/users_info/result.rb +38 -0
- data/lib/mongo/operation/commands/users_info.rb +48 -0
- data/lib/mongo/operation/commands.rb +26 -0
- data/lib/mongo/operation/executable.rb +4 -68
- data/lib/mongo/operation/kill_cursors.rb +3 -3
- data/lib/mongo/operation/object_id_generator.rb +36 -0
- data/lib/mongo/operation/read/get_more.rb +2 -22
- data/lib/mongo/operation/read/query/result.rb +40 -0
- data/lib/mongo/operation/read/query.rb +4 -21
- data/lib/mongo/operation/read.rb +0 -4
- data/lib/mongo/operation/{read_preferrable.rb → read_preference.rb} +3 -2
- data/lib/mongo/operation/result.rb +43 -1
- data/lib/mongo/operation/specifiable.rb +59 -1
- data/lib/mongo/operation/write/bulk/bulkable.rb +83 -0
- data/lib/mongo/operation/write/bulk/delete/result.rb +67 -0
- data/lib/mongo/operation/write/bulk/delete.rb +71 -0
- data/lib/mongo/operation/write/bulk/insert/result.rb +129 -0
- data/lib/mongo/operation/write/bulk/insert.rb +96 -0
- data/lib/mongo/operation/write/bulk/legacy_mergable.rb +87 -0
- data/lib/mongo/operation/write/bulk/mergable.rb +71 -0
- data/lib/mongo/operation/write/bulk/update/result.rb +174 -0
- data/lib/mongo/operation/write/bulk/update.rb +81 -0
- data/lib/mongo/operation/write/bulk.rb +6 -3
- data/lib/mongo/operation/write/command/create_index.rb +0 -1
- data/lib/mongo/operation/write/command/create_user.rb +0 -1
- data/lib/mongo/operation/write/command/delete.rb +3 -3
- data/lib/mongo/operation/write/command/drop_index.rb +0 -1
- data/lib/mongo/operation/write/command/insert.rb +4 -3
- data/lib/mongo/operation/write/command/remove_user.rb +0 -1
- data/lib/mongo/operation/write/command/update.rb +6 -4
- data/lib/mongo/operation/write/command/update_user.rb +0 -1
- data/lib/mongo/operation/write/command/writable.rb +13 -18
- data/lib/mongo/operation/write/create_index.rb +4 -27
- data/lib/mongo/operation/write/create_user.rb +4 -30
- data/lib/mongo/operation/write/delete.rb +6 -29
- data/lib/mongo/operation/write/drop_index.rb +3 -3
- data/lib/mongo/operation/write/gle.rb +49 -0
- data/lib/mongo/operation/write/idable.rb +24 -2
- data/lib/mongo/operation/write/insert.rb +2 -24
- data/lib/mongo/operation/write/remove_user.rb +4 -27
- data/lib/mongo/operation/write/update.rb +13 -36
- data/lib/mongo/operation/write/update_user.rb +4 -30
- data/lib/mongo/operation/write/write_command_enabled.rb +53 -0
- data/lib/mongo/operation/write.rb +2 -0
- data/lib/mongo/operation.rb +33 -5
- data/lib/mongo/options/mapper.rb +26 -2
- data/lib/mongo/options/redacted.rb +156 -0
- data/lib/mongo/options.rb +1 -0
- data/lib/mongo/protocol/bit_vector.rb +11 -9
- data/lib/mongo/protocol/delete.rb +78 -3
- data/lib/mongo/protocol/get_more.rb +59 -2
- data/lib/mongo/protocol/insert.rb +73 -1
- data/lib/mongo/protocol/kill_cursors.rb +66 -4
- data/lib/mongo/protocol/message.rb +44 -20
- data/lib/mongo/protocol/query.rb +153 -65
- data/lib/mongo/protocol/reply.rb +92 -1
- data/lib/mongo/protocol/serializers.rb +49 -40
- data/lib/mongo/protocol/update.rb +93 -1
- data/lib/mongo/retryable.rb +101 -0
- data/lib/mongo/server/connectable.rb +28 -8
- data/lib/mongo/server/connection.rb +52 -10
- data/lib/mongo/server/connection_pool/queue.rb +15 -0
- data/lib/mongo/server/connection_pool.rb +12 -15
- data/lib/mongo/server/description/features.rb +4 -2
- data/lib/mongo/server/description.rb +39 -3
- data/lib/mongo/server/monitor/connection.rb +49 -28
- data/lib/mongo/server/monitor.rb +3 -14
- data/lib/mongo/server.rb +31 -4
- data/lib/mongo/server_selector/selectable.rb +58 -32
- data/lib/mongo/server_selector.rb +19 -10
- data/lib/mongo/socket/ssl.rb +4 -1
- data/lib/mongo/socket/tcp.rb +2 -2
- data/lib/mongo/socket/unix.rb +5 -8
- data/lib/mongo/socket.rb +11 -4
- data/lib/mongo/uri.rb +245 -139
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo/write_concern.rb +21 -6
- data/lib/mongo.rb +4 -4
- data/mongo.gemspec +1 -2
- data/spec/mongo/address/unix_spec.rb +1 -1
- data/spec/mongo/address_spec.rb +25 -0
- data/spec/mongo/auth/ldap/conversation_spec.rb +43 -0
- data/spec/mongo/auth/user/view_spec.rb +26 -1
- data/spec/mongo/bulk_write/ordered_combiner_spec.rb +284 -0
- data/spec/mongo/bulk_write/unordered_combiner_spec.rb +239 -0
- data/spec/mongo/bulk_write_spec.rb +385 -161
- data/spec/mongo/client_spec.rb +193 -23
- data/spec/mongo/cluster/topology/replica_set_spec.rb +2 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +65 -0
- data/spec/mongo/collection/view/builder/find_command_spec.rb +167 -0
- data/spec/mongo/collection/view/builder/flags_spec.rb +106 -0
- data/spec/mongo/collection/view/builder/modifiers_spec.rb +210 -0
- data/spec/mongo/collection/view/builder/op_query_spec.rb +154 -0
- data/spec/mongo/collection/view/explainable_spec.rb +1 -2
- data/spec/mongo/collection/view/immutable_spec.rb +54 -0
- data/spec/mongo/collection/view/map_reduce_spec.rb +104 -9
- data/spec/mongo/collection/view/readable_spec.rb +109 -112
- data/spec/mongo/collection/view_spec.rb +119 -487
- data/spec/mongo/collection_spec.rb +1002 -33
- data/spec/mongo/command_monitoring_spec.rb +64 -0
- data/spec/mongo/connection_string_spec.rb +115 -0
- data/spec/mongo/cursor/builder/get_more_command_spec.rb +160 -0
- data/spec/mongo/cursor/builder/op_get_more_spec.rb +52 -0
- data/spec/mongo/cursor_spec.rb +10 -60
- data/spec/mongo/database_spec.rb +81 -12
- data/spec/mongo/dbref_spec.rb +4 -4
- data/spec/mongo/grid/file/chunk_spec.rb +6 -6
- data/spec/mongo/grid/file/{metadata_spec.rb → info_spec.rb} +29 -17
- data/spec/mongo/grid/file_spec.rb +8 -8
- data/spec/mongo/grid/fs_bucket_spec.rb +1020 -0
- data/spec/mongo/grid/stream/read_spec.rb +275 -0
- data/spec/mongo/grid/stream/write_spec.rb +440 -0
- data/spec/mongo/grid/stream_spec.rb +48 -0
- data/spec/mongo/gridfs_spec.rb +50 -0
- data/spec/mongo/index/view_spec.rb +41 -0
- data/spec/mongo/logger_spec.rb +0 -40
- data/spec/mongo/monitoring/command_log_subscriber_spec.rb +76 -0
- data/spec/mongo/monitoring/event/command_started_spec.rb +26 -0
- data/spec/mongo/monitoring/event/command_succeeded_spec.rb +26 -0
- data/spec/mongo/monitoring/event/secure_spec.rb +57 -0
- data/spec/mongo/operation/{aggregate → commands/aggregate}/result_spec.rb +1 -1
- data/spec/mongo/operation/commands/aggregate_spec.rb +69 -0
- data/spec/mongo/operation/{read → commands}/collections_info_spec.rb +1 -1
- data/spec/mongo/operation/{command_spec.rb → commands/command_spec.rb} +1 -19
- data/spec/mongo/operation/{read → commands}/indexes_spec.rb +1 -1
- data/spec/mongo/operation/{map_reduce_spec.rb → commands/map_reduce_spec.rb} +1 -19
- data/spec/mongo/operation/kill_cursors_spec.rb +1 -17
- data/spec/mongo/operation/read/get_more_spec.rb +0 -16
- data/spec/mongo/operation/read/query_spec.rb +19 -16
- data/spec/mongo/operation/{read_preferrable_spec.rb → read_preference_spec.rb} +11 -11
- data/spec/mongo/operation/result_spec.rb +19 -0
- data/spec/mongo/operation/write/bulk/{bulk_delete_spec.rb → delete_spec.rb} +17 -28
- data/spec/mongo/operation/write/bulk/{bulk_insert_spec.rb → insert_spec.rb} +1 -12
- data/spec/mongo/operation/write/bulk/{bulk_update_spec.rb → update_spec.rb} +7 -18
- data/spec/mongo/operation/write/command/delete_spec.rb +18 -9
- data/spec/mongo/operation/write/command/insert_spec.rb +18 -9
- data/spec/mongo/operation/write/command/update_spec.rb +18 -9
- data/spec/mongo/operation/write/delete_spec.rb +3 -3
- data/spec/mongo/operation/write/insert_spec.rb +0 -11
- data/spec/mongo/operation/write/update_spec.rb +6 -6
- data/spec/mongo/options/redacted_spec.rb +350 -0
- data/spec/mongo/protocol/delete_spec.rb +4 -4
- data/spec/mongo/protocol/get_more_spec.rb +4 -4
- data/spec/mongo/protocol/insert_spec.rb +3 -3
- data/spec/mongo/protocol/kill_cursors_spec.rb +8 -6
- data/spec/mongo/protocol/query_spec.rb +21 -7
- data/spec/mongo/protocol/update_spec.rb +5 -5
- data/spec/mongo/retryable_spec.rb +221 -0
- data/spec/mongo/server/connection_pool/queue_spec.rb +16 -0
- data/spec/mongo/server/connection_pool_spec.rb +42 -6
- data/spec/mongo/server/connection_spec.rb +86 -1
- data/spec/mongo/server/description/features_spec.rb +25 -0
- data/spec/mongo/server/description_spec.rb +42 -0
- data/spec/mongo/server/monitor_spec.rb +44 -0
- data/spec/mongo/server_discovery_and_monitoring_spec.rb +25 -59
- data/spec/mongo/server_selection_rtt_spec.rb +37 -57
- data/spec/mongo/server_selection_spec.rb +5 -3
- data/spec/mongo/server_selector/nearest_spec.rb +35 -27
- data/spec/mongo/server_selector/primary_preferred_spec.rb +32 -30
- data/spec/mongo/server_selector/primary_spec.rb +21 -14
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +28 -26
- data/spec/mongo/server_selector/secondary_spec.rb +24 -22
- data/spec/mongo/server_selector_spec.rb +87 -24
- data/spec/mongo/server_spec.rb +78 -15
- data/spec/mongo/socket/ssl_spec.rb +101 -57
- data/spec/mongo/socket/unix_spec.rb +52 -0
- data/spec/mongo/uri_spec.rb +271 -59
- data/spec/mongo/write_concern_spec.rb +126 -0
- data/spec/spec_helper.rb +29 -23
- data/spec/support/authorization.rb +4 -5
- data/spec/support/command_monitoring/bulkWrite.yml +73 -0
- data/spec/support/command_monitoring/command.yml +42 -0
- data/spec/support/command_monitoring/deleteMany.yml +55 -0
- data/spec/support/command_monitoring/deleteOne.yml +55 -0
- data/spec/support/command_monitoring/find.yml +268 -0
- data/spec/support/command_monitoring/insertMany.yml +81 -0
- data/spec/support/command_monitoring/insertOne.yml +51 -0
- data/spec/support/command_monitoring/updateMany.yml +67 -0
- data/spec/support/command_monitoring/updateOne.yml +95 -0
- data/spec/support/command_monitoring.rb +373 -0
- data/spec/support/connection_string.rb +228 -0
- data/spec/support/connection_string_tests/invalid-uris.yml +193 -0
- data/spec/support/connection_string_tests/valid-auth.yml +256 -0
- data/spec/support/connection_string_tests/valid-host_identifiers.yml +121 -0
- data/spec/support/connection_string_tests/valid-options.yml +30 -0
- data/spec/support/connection_string_tests/valid-unix_socket-absolute.yml +197 -0
- data/spec/support/connection_string_tests/valid-unix_socket-relative.yml +213 -0
- data/spec/support/connection_string_tests/valid-warnings.yml +55 -0
- data/spec/support/crud/read.rb +14 -10
- data/spec/support/crud/write.rb +36 -9
- data/spec/support/crud.rb +10 -2
- data/spec/support/gridfs.rb +637 -0
- data/spec/support/gridfs_tests/delete.yml +157 -0
- data/spec/support/gridfs_tests/download.yml +210 -0
- data/spec/support/gridfs_tests/download_by_name.yml +113 -0
- data/spec/support/gridfs_tests/upload.yml +158 -0
- data/spec/support/matchers.rb +2 -2
- data/spec/support/sdam/rs/equal_electionids.yml +1 -2
- data/spec/support/sdam/rs/new_primary_new_electionid.yml +0 -3
- data/spec/support/sdam/rs/primary_mismatched_me.yml +37 -0
- data/spec/support/sdam/rs/primary_to_no_primary_mismatched_me.yml +75 -0
- data/spec/support/sdam/rs/rsother_discovered.yml +24 -3
- data/spec/support/sdam/rs/secondary_mismatched_me.yml +37 -0
- data/spec/support/sdam/rs/stepdown_change_set_name.yml +59 -0
- data/spec/support/sdam/single/direct_connection_rsarbiter.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rsprimary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rssecondary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_slave.yml +1 -1
- data/spec/support/sdam/single/direct_connection_standalone.yml +1 -1
- data/spec/support/sdam/single/not_ok_response.yml +0 -1
- data/spec/support/server_discovery_and_monitoring.rb +3 -1
- data/spec/support/server_selection.rb +3 -1
- data/spec/support/shared/bulk_write.rb +192 -0
- data/spec/support/shared/protocol.rb +5 -5
- data/spec/support/shared/server_selector.rb +78 -13
- data/spec/support/travis.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +211 -72
- metadata.gz.sig +0 -0
- data/lib/mongo/bulk_write/bulk_writable.rb +0 -252
- data/lib/mongo/bulk_write/deletable.rb +0 -57
- data/lib/mongo/bulk_write/insertable.rb +0 -49
- data/lib/mongo/bulk_write/replacable.rb +0 -58
- data/lib/mongo/bulk_write/updatable.rb +0 -69
- data/lib/mongo/grid/fs.rb +0 -146
- data/lib/mongo/operation/aggregate/result.rb +0 -103
- data/lib/mongo/operation/aggregate.rb +0 -108
- data/lib/mongo/operation/command.rb +0 -61
- data/lib/mongo/operation/map_reduce/result.rb +0 -122
- data/lib/mongo/operation/map_reduce.rb +0 -95
- data/lib/mongo/operation/parallel_scan/result.rb +0 -72
- data/lib/mongo/operation/parallel_scan.rb +0 -76
- data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +0 -75
- data/lib/mongo/operation/write/bulk/bulk_delete.rb +0 -145
- data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +0 -130
- data/lib/mongo/operation/write/bulk/bulk_insert.rb +0 -132
- data/lib/mongo/operation/write/bulk/bulk_mergable.rb +0 -67
- data/lib/mongo/operation/write/bulk/bulk_update/result.rb +0 -174
- data/lib/mongo/operation/write/bulk/bulk_update.rb +0 -154
- data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +0 -83
- data/spec/mongo/grid/fs_spec.rb +0 -160
- data/spec/mongo/loggable_spec.rb +0 -63
- data/spec/mongo/operation/aggregate_spec.rb +0 -127
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Mongo::Operation::
|
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(:
|
29
|
+
let(:read_preference) do
|
30
30
|
Class.new do
|
31
|
-
include Mongo::Operation::
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
240
|
+
expect(read_preference.send(:update_options, context)).to eq(expected)
|
241
241
|
end
|
242
242
|
end
|
243
243
|
end
|
@@ -272,4 +272,23 @@ describe Mongo::Operation::Result do
|
|
272
272
|
end
|
273
273
|
end
|
274
274
|
end
|
275
|
+
|
276
|
+
context 'when there is a top-level Result class defined' do
|
277
|
+
|
278
|
+
before do
|
279
|
+
class Result
|
280
|
+
def get_result
|
281
|
+
Mongo::Client.new([DEFAULT_ADDRESS], TEST_OPTIONS).database.command(:ping => 1)
|
282
|
+
end
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
286
|
+
let(:result) do
|
287
|
+
Result.new.get_result
|
288
|
+
end
|
289
|
+
|
290
|
+
it 'uses the Result class of the operation' do
|
291
|
+
expect(result).to be_a(Mongo::Operation::Result)
|
292
|
+
end
|
293
|
+
end
|
275
294
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Mongo::Operation::Write::
|
3
|
+
describe Mongo::Operation::Write::Bulk::Delete do
|
4
4
|
include_context 'operation'
|
5
5
|
|
6
6
|
let(:documents) do
|
7
|
-
[ { q
|
7
|
+
[ { 'q' => { foo: 1 }, 'limit' => 1 } ]
|
8
8
|
end
|
9
9
|
|
10
10
|
let(:spec) do
|
@@ -42,7 +42,7 @@ describe Mongo::Operation::Write::BulkDelete do
|
|
42
42
|
|
43
43
|
context 'when two ops have different specs' do
|
44
44
|
let(:other_docs) do
|
45
|
-
[ { q
|
45
|
+
[ { 'q' => { bar: 1 }, 'limit' => 1 } ]
|
46
46
|
end
|
47
47
|
|
48
48
|
let(:other_spec) 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
|
@@ -100,7 +89,7 @@ describe Mongo::Operation::Write::BulkDelete do
|
|
100
89
|
context 'when the delete succeeds' do
|
101
90
|
|
102
91
|
let(:documents) do
|
103
|
-
[{ q
|
92
|
+
[{ 'q' => { field: 'test' }, 'limit' => 1 }]
|
104
93
|
end
|
105
94
|
|
106
95
|
it 'deletes the document from the database' do
|
@@ -124,7 +113,7 @@ describe Mongo::Operation::Write::BulkDelete do
|
|
124
113
|
context 'when the deletes succeed' do
|
125
114
|
|
126
115
|
let(:documents) do
|
127
|
-
[{ q
|
116
|
+
[{ 'q' => { field: 'test' }, 'limit' => 0 }]
|
128
117
|
end
|
129
118
|
|
130
119
|
it 'deletes the documents from the database' do
|
@@ -138,10 +127,10 @@ describe Mongo::Operation::Write::BulkDelete do
|
|
138
127
|
|
139
128
|
let(:documents) do
|
140
129
|
[ failing_delete_doc,
|
141
|
-
{ q
|
130
|
+
{ 'q' => { field: 'test' }, 'limit' => 1 }
|
142
131
|
]
|
143
132
|
end
|
144
|
-
|
133
|
+
|
145
134
|
let(:spec) do
|
146
135
|
{ :deletes => documents,
|
147
136
|
:db_name => TEST_DB,
|
@@ -150,7 +139,7 @@ describe Mongo::Operation::Write::BulkDelete do
|
|
150
139
|
:ordered => true
|
151
140
|
}
|
152
141
|
end
|
153
|
-
|
142
|
+
|
154
143
|
let(:failing_delete) do
|
155
144
|
described_class.new(spec)
|
156
145
|
end
|
@@ -162,7 +151,7 @@ describe Mongo::Operation::Write::BulkDelete do
|
|
162
151
|
let(:write_concern) do
|
163
152
|
Mongo::WriteConcern.get(w: 1)
|
164
153
|
end
|
165
|
-
|
154
|
+
|
166
155
|
it 'aborts after first error' do
|
167
156
|
failing_delete.execute(authorized_primary.context)
|
168
157
|
expect(authorized_collection.find.count).to eq(2)
|
@@ -170,11 +159,11 @@ describe Mongo::Operation::Write::BulkDelete do
|
|
170
159
|
end
|
171
160
|
|
172
161
|
context 'when write concern is unacknowledged' do
|
173
|
-
|
162
|
+
|
174
163
|
let(:write_concern) do
|
175
164
|
Mongo::WriteConcern.get(w: 0)
|
176
165
|
end
|
177
|
-
|
166
|
+
|
178
167
|
it 'aborts after first error' do
|
179
168
|
failing_delete.execute(authorized_primary.context)
|
180
169
|
expect(authorized_collection.find.count).to eq(2)
|
@@ -187,10 +176,10 @@ describe Mongo::Operation::Write::BulkDelete do
|
|
187
176
|
|
188
177
|
let(:documents) do
|
189
178
|
[ failing_delete_doc,
|
190
|
-
{ q
|
179
|
+
{ 'q' => { field: 'test' }, 'limit' => 1 }
|
191
180
|
]
|
192
181
|
end
|
193
|
-
|
182
|
+
|
194
183
|
let(:spec) do
|
195
184
|
{ :deletes => documents,
|
196
185
|
:db_name => TEST_DB,
|
@@ -199,7 +188,7 @@ describe Mongo::Operation::Write::BulkDelete do
|
|
199
188
|
:ordered => false
|
200
189
|
}
|
201
190
|
end
|
202
|
-
|
191
|
+
|
203
192
|
let(:failing_delete) do
|
204
193
|
described_class.new(spec)
|
205
194
|
end
|
@@ -211,7 +200,7 @@ describe Mongo::Operation::Write::BulkDelete do
|
|
211
200
|
let(:write_concern) do
|
212
201
|
Mongo::WriteConcern.get(w: 1)
|
213
202
|
end
|
214
|
-
|
203
|
+
|
215
204
|
it 'does not abort after first error' do
|
216
205
|
failing_delete.execute(authorized_primary.context)
|
217
206
|
expect(authorized_collection.find.count).to eq(1)
|
@@ -219,11 +208,11 @@ describe Mongo::Operation::Write::BulkDelete do
|
|
219
208
|
end
|
220
209
|
|
221
210
|
context 'when write concern is unacknowledged' do
|
222
|
-
|
211
|
+
|
223
212
|
let(:write_concern) do
|
224
213
|
Mongo::WriteConcern.get(w: 0)
|
225
214
|
end
|
226
|
-
|
215
|
+
|
227
216
|
it 'does not abort after first error' do
|
228
217
|
failing_delete.execute(authorized_primary.context)
|
229
218
|
sleep(1)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Mongo::Operation::Write::
|
3
|
+
describe Mongo::Operation::Write::Bulk::Insert do
|
4
4
|
include_context 'operation'
|
5
5
|
|
6
6
|
let(:documents) do
|
@@ -74,17 +74,6 @@ describe Mongo::Operation::Write::BulkInsert do
|
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
describe '#dup' do
|
78
|
-
|
79
|
-
context 'deep copy' do
|
80
|
-
|
81
|
-
it 'copies the list of documents' do
|
82
|
-
copy = op.dup
|
83
|
-
expect(copy.spec[:documents]).to_not be(op.spec[:documents])
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
77
|
describe 'document ids' do
|
89
78
|
|
90
79
|
context 'when documents do not contain an id' do
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Mongo::Operation::Write::
|
3
|
+
describe Mongo::Operation::Write::Bulk::Update do
|
4
4
|
include_context 'operation'
|
5
5
|
|
6
6
|
let(:documents) do
|
@@ -72,17 +72,6 @@ describe Mongo::Operation::Write::BulkUpdate do
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
-
describe '#dup' do
|
76
|
-
|
77
|
-
context 'deep copy' do
|
78
|
-
|
79
|
-
it 'copies the list of updates' do
|
80
|
-
copy = op.dup
|
81
|
-
expect(copy.spec[:updates]).not_to be(op.spec[:updates])
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
75
|
describe '#execute' do
|
87
76
|
|
88
77
|
before do
|
@@ -101,7 +90,7 @@ describe Mongo::Operation::Write::BulkUpdate do
|
|
101
90
|
context 'when the update passes' do
|
102
91
|
|
103
92
|
let(:documents) do
|
104
|
-
[{ q
|
93
|
+
[{ 'q' => { other: 'test' }, 'u' => { '$set' => { field: 'blah' }}, 'multi' => false }]
|
105
94
|
end
|
106
95
|
|
107
96
|
it 'updates the document' do
|
@@ -125,7 +114,7 @@ describe Mongo::Operation::Write::BulkUpdate do
|
|
125
114
|
context 'when the updates succeed' do
|
126
115
|
|
127
116
|
let(:documents) do
|
128
|
-
[{ q
|
117
|
+
[{ 'q' => { other: 'test' }, 'u' => { '$set' => { field: 'blah' }}, 'multi' => true }]
|
129
118
|
end
|
130
119
|
|
131
120
|
it 'updates the documents' do
|
@@ -138,8 +127,8 @@ describe Mongo::Operation::Write::BulkUpdate do
|
|
138
127
|
context 'when the updates are ordered' do
|
139
128
|
|
140
129
|
let(:documents) do
|
141
|
-
[ { q
|
142
|
-
{ q
|
130
|
+
[ { 'q' => { name: 'test' }, 'u' => { '$st' => { field: 'blah' }}, 'multi' => true},
|
131
|
+
{ 'q' => { field: 'test' }, 'u' => { '$set' => { other: 'blah' }}, 'multi' => true }
|
143
132
|
]
|
144
133
|
end
|
145
134
|
|
@@ -187,8 +176,8 @@ describe Mongo::Operation::Write::BulkUpdate do
|
|
187
176
|
context 'when the updates are unordered' do
|
188
177
|
|
189
178
|
let(:documents) do
|
190
|
-
[ { q
|
191
|
-
{ q
|
179
|
+
[ { 'q' => { name: 'test' }, 'u' => { '$st' => { field: 'blah' }}, 'multi' => true},
|
180
|
+
{ 'q' => { field: 'test' }, 'u' => { '$set' => { other: 'blah' }}, 'multi' => false }
|
192
181
|
]
|
193
182
|
end
|
194
183
|
|
@@ -56,19 +56,28 @@ describe Mongo::Operation::Write::Command::Delete do
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
|
60
|
-
let(:other_op) { described_class.new(spec) }
|
59
|
+
describe 'write concern' do
|
61
60
|
|
62
|
-
|
63
|
-
|
61
|
+
context 'when write concern is not specified' do
|
62
|
+
|
63
|
+
let(:spec) do
|
64
|
+
{ :deletes => deletes,
|
65
|
+
:db_name => db_name,
|
66
|
+
:coll_name => coll_name,
|
67
|
+
:ordered => true
|
68
|
+
}
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'does not include write concern in the selector' do
|
72
|
+
expect(op.send(:selector)[:writeConcern]).to be_nil
|
73
|
+
end
|
64
74
|
end
|
65
|
-
end
|
66
75
|
|
67
|
-
|
68
|
-
let(:other_op) { described_class.new(spec) }
|
76
|
+
context 'when write concern is specified' do
|
69
77
|
|
70
|
-
|
71
|
-
|
78
|
+
it 'includes write concern in the selector' do
|
79
|
+
expect(op.send(:selector)[:writeConcern]).to eq(write_concern.options)
|
80
|
+
end
|
72
81
|
end
|
73
82
|
end
|
74
83
|
|
@@ -56,19 +56,28 @@ describe Mongo::Operation::Write::Command::Insert do
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
|
60
|
-
let(:other_op) { described_class.new(spec) }
|
59
|
+
describe 'write concern' do
|
61
60
|
|
62
|
-
|
63
|
-
|
61
|
+
context 'when write concern is not specified' do
|
62
|
+
|
63
|
+
let(:spec) do
|
64
|
+
{ :documents => documents,
|
65
|
+
:db_name => db_name,
|
66
|
+
:coll_name => coll_name,
|
67
|
+
:ordered => true
|
68
|
+
}
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'does not include write concern in the selector' do
|
72
|
+
expect(op.send(:selector)[:writeConcern]).to be_nil
|
73
|
+
end
|
64
74
|
end
|
65
|
-
end
|
66
75
|
|
67
|
-
|
68
|
-
let(:other_op) { described_class.new(spec) }
|
76
|
+
context 'when write concern is specified' do
|
69
77
|
|
70
|
-
|
71
|
-
|
78
|
+
it 'includes write concern in the selector' do
|
79
|
+
expect(op.send(:selector)[:writeConcern]).to eq(write_concern.options)
|
80
|
+
end
|
72
81
|
end
|
73
82
|
end
|
74
83
|
|
@@ -62,19 +62,28 @@ describe Mongo::Operation::Write::Command::Update do
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
|
66
|
-
let(:other_op) { described_class.new(spec) }
|
65
|
+
describe 'write concern' do
|
67
66
|
|
68
|
-
|
69
|
-
|
67
|
+
context 'when write concern is not specified' do
|
68
|
+
|
69
|
+
let(:spec) do
|
70
|
+
{ :updates => updates,
|
71
|
+
:db_name => db_name,
|
72
|
+
:coll_name => coll_name,
|
73
|
+
:ordered => true
|
74
|
+
}
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'does not include write concern in the selector' do
|
78
|
+
expect(op.send(:selector)[:writeConcern]).to be_nil
|
79
|
+
end
|
70
80
|
end
|
71
|
-
end
|
72
81
|
|
73
|
-
|
74
|
-
let(:other_op) { described_class.new(spec) }
|
82
|
+
context 'when write concern is specified' do
|
75
83
|
|
76
|
-
|
77
|
-
|
84
|
+
it 'includes write concern in the selector' do
|
85
|
+
expect(op.send(:selector)[:writeConcern]).to eq(write_concern.options)
|
86
|
+
end
|
78
87
|
end
|
79
88
|
end
|
80
89
|
|
@@ -89,7 +89,7 @@ describe Mongo::Operation::Write::Delete do
|
|
89
89
|
context 'when the delete succeeds' do
|
90
90
|
|
91
91
|
let(:document) do
|
92
|
-
{ q
|
92
|
+
{ 'q' => { field: 'test' }, 'limit' => 1 }
|
93
93
|
end
|
94
94
|
|
95
95
|
let(:result) do
|
@@ -133,7 +133,7 @@ describe Mongo::Operation::Write::Delete do
|
|
133
133
|
context 'when the deletes succeed' do
|
134
134
|
|
135
135
|
let(:document) do
|
136
|
-
{ q
|
136
|
+
{ 'q' => { field: 'test' }, 'limit' => 0 }
|
137
137
|
end
|
138
138
|
|
139
139
|
let(:result) do
|
@@ -172,7 +172,7 @@ describe Mongo::Operation::Write::Delete do
|
|
172
172
|
context 'when a document exceeds max bson size' do
|
173
173
|
|
174
174
|
let(:document) do
|
175
|
-
{ q
|
175
|
+
{ 'q' => { field: 't'*17000000 }, 'limit' => 0 }
|
176
176
|
end
|
177
177
|
|
178
178
|
it 'raises an error' do
|
@@ -73,17 +73,6 @@ describe Mongo::Operation::Write::Insert do
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
-
describe '#dup' do
|
77
|
-
|
78
|
-
context 'deep copy' do
|
79
|
-
|
80
|
-
it 'copies the list of documents' do
|
81
|
-
copy = insert.dup
|
82
|
-
expect(copy.spec[:documents]).to_not be(insert.spec[:documents])
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
76
|
describe 'document ids' do
|
88
77
|
|
89
78
|
context 'when documents do not contain an id' do
|
@@ -95,7 +95,7 @@ describe Mongo::Operation::Write::Update do
|
|
95
95
|
context 'when the update succeeds' do
|
96
96
|
|
97
97
|
let(:document) do
|
98
|
-
{ q
|
98
|
+
{ 'q' => { name: 'test' }, 'u' => { '$set' => { field: 'blah' }}, limit: 1 }
|
99
99
|
end
|
100
100
|
|
101
101
|
let(:result) do
|
@@ -122,7 +122,7 @@ describe Mongo::Operation::Write::Update do
|
|
122
122
|
context 'when the update fails' do
|
123
123
|
|
124
124
|
let(:document) do
|
125
|
-
{ q
|
125
|
+
{ 'q' => { name: 'test' }, 'u' => { '$st' => { field: 'blah' } } }
|
126
126
|
end
|
127
127
|
|
128
128
|
it 'raises an exception' do
|
@@ -147,7 +147,7 @@ describe Mongo::Operation::Write::Update do
|
|
147
147
|
context 'when the updates succeed' do
|
148
148
|
|
149
149
|
let(:document) do
|
150
|
-
{ q
|
150
|
+
{ 'q' => { field: 'test' }, 'u' => { '$set' => { other: 'blah' }}, 'multi' => true }
|
151
151
|
end
|
152
152
|
|
153
153
|
let(:result) do
|
@@ -174,7 +174,7 @@ describe Mongo::Operation::Write::Update do
|
|
174
174
|
context 'when an update fails' do
|
175
175
|
|
176
176
|
let(:document) do
|
177
|
-
{ q
|
177
|
+
{ 'q' => { name: 'test' }, 'u' => { '$st' => { field: 'blah' } }, 'multi' => true }
|
178
178
|
end
|
179
179
|
|
180
180
|
it 'raises an exception' do
|
@@ -187,7 +187,7 @@ describe Mongo::Operation::Write::Update do
|
|
187
187
|
context 'when a document exceeds max bson size' do
|
188
188
|
|
189
189
|
let(:document) do
|
190
|
-
{ q
|
190
|
+
{ 'q' => { name: 't'*17000000}, 'u' => { '$set' => { field: 'blah' } } }
|
191
191
|
end
|
192
192
|
|
193
193
|
it 'raises an error' do
|
@@ -200,7 +200,7 @@ describe Mongo::Operation::Write::Update do
|
|
200
200
|
context 'when upsert is true' do
|
201
201
|
|
202
202
|
let(:document) do
|
203
|
-
{ q
|
203
|
+
{ 'q' => { field: 'non-existent' }, 'u' => { '$set' => { other: 'blah' }}, 'upsert' => true }
|
204
204
|
end
|
205
205
|
|
206
206
|
let(:result) do
|