mongo 2.5.1 → 2.5.2
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 +3 -2
- data.tar.gz.sig +0 -0
- data/Rakefile +1 -1
- data/lib/mongo/auth/user/view.rb +4 -4
- data/lib/mongo/bulk_write.rb +14 -19
- data/lib/mongo/cluster.rb +4 -2
- data/lib/mongo/cluster/app_metadata.rb +1 -1
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +1 -1
- data/lib/mongo/collection.rb +13 -13
- data/lib/mongo/collection/view.rb +2 -1
- data/lib/mongo/collection/view/aggregation.rb +1 -1
- data/lib/mongo/collection/view/change_stream.rb +1 -1
- data/lib/mongo/collection/view/iterable.rb +4 -4
- data/lib/mongo/collection/view/map_reduce.rb +3 -3
- data/lib/mongo/collection/view/readable.rb +26 -20
- data/lib/mongo/collection/view/writable.rb +12 -12
- data/lib/mongo/cursor.rb +4 -7
- data/lib/mongo/database.rb +2 -2
- data/lib/mongo/database/view.rb +1 -1
- data/lib/mongo/grid/stream/write.rb +1 -1
- data/lib/mongo/index/view.rb +3 -3
- data/lib/mongo/operation.rb +38 -24
- data/lib/mongo/operation/aggregate.rb +53 -0
- data/lib/mongo/operation/aggregate/command.rb +59 -0
- data/lib/mongo/operation/aggregate/op_msg.rb +54 -0
- data/lib/mongo/operation/aggregate/result.rb +87 -0
- data/lib/mongo/operation/collections_info.rb +62 -0
- data/lib/mongo/operation/collections_info/result.rb +39 -0
- data/lib/mongo/operation/{executable.rb → command.rb} +16 -13
- data/lib/mongo/operation/command/command.rb +38 -0
- data/lib/mongo/operation/command/op_msg.rb +53 -0
- data/lib/mongo/operation/count.rb +48 -0
- data/lib/mongo/operation/count/command.rb +38 -0
- data/lib/mongo/operation/count/op_msg.rb +38 -0
- data/lib/mongo/operation/create.rb +48 -0
- data/lib/mongo/operation/create/command.rb +38 -0
- data/lib/mongo/operation/create/op_msg.rb +37 -0
- data/lib/mongo/operation/create_index.rb +48 -0
- data/lib/mongo/operation/create_index/command.rb +42 -0
- data/lib/mongo/operation/create_index/op_msg.rb +41 -0
- data/lib/mongo/operation/create_user.rb +48 -0
- data/lib/mongo/operation/{commands → create_user}/command.rb +13 -19
- data/lib/mongo/operation/create_user/op_msg.rb +41 -0
- data/lib/mongo/operation/delete.rb +38 -0
- data/lib/mongo/operation/delete/bulk_result.rb +46 -0
- data/lib/mongo/operation/delete/command.rb +59 -0
- data/lib/mongo/operation/delete/legacy.rb +69 -0
- data/lib/mongo/operation/delete/op_msg.rb +60 -0
- data/lib/mongo/operation/{write/delete → delete}/result.rb +18 -16
- data/lib/mongo/operation/distinct.rb +48 -0
- data/lib/mongo/operation/distinct/command.rb +38 -0
- data/lib/mongo/operation/distinct/op_msg.rb +38 -0
- data/lib/mongo/operation/drop.rb +48 -0
- data/lib/mongo/operation/drop/command.rb +38 -0
- data/lib/mongo/operation/{commands/count.rb → drop/op_msg.rb} +16 -6
- data/lib/mongo/operation/drop_database.rb +48 -0
- data/lib/mongo/operation/drop_database/command.rb +38 -0
- data/lib/mongo/operation/drop_database/op_msg.rb +37 -0
- data/lib/mongo/operation/drop_index.rb +48 -0
- data/lib/mongo/operation/drop_index/command.rb +42 -0
- data/lib/mongo/operation/{limited.rb → drop_index/op_msg.rb} +19 -15
- data/lib/mongo/operation/explain.rb +52 -0
- data/lib/mongo/operation/explain/command.rb +54 -0
- data/lib/mongo/operation/explain/legacy.rb +53 -0
- data/lib/mongo/operation/explain/op_msg.rb +54 -0
- data/lib/mongo/operation/explain/result.rb +50 -0
- data/lib/mongo/operation/find.rb +52 -0
- data/lib/mongo/operation/find/command.rb +54 -0
- data/lib/mongo/operation/find/legacy.rb +55 -0
- data/lib/mongo/operation/{read/query → find/legacy}/result.rb +3 -3
- data/lib/mongo/operation/find/op_msg.rb +59 -0
- data/lib/mongo/operation/find/result.rb +60 -0
- data/lib/mongo/operation/{commands/users_info/result.rb → get_more.rb} +20 -22
- data/lib/mongo/operation/get_more/command.rb +54 -0
- data/lib/mongo/operation/{commands/find.rb → get_more/legacy.rb} +15 -8
- data/lib/mongo/operation/get_more/op_msg.rb +58 -0
- data/lib/mongo/operation/get_more/result.rb +60 -0
- data/lib/mongo/operation/indexes.rb +52 -0
- data/lib/mongo/operation/indexes/command.rb +54 -0
- data/lib/mongo/operation/indexes/legacy.rb +57 -0
- data/lib/mongo/operation/indexes/op_msg.rb +54 -0
- data/lib/mongo/operation/indexes/result.rb +97 -0
- data/lib/mongo/operation/insert.rb +40 -0
- data/lib/mongo/operation/insert/bulk_result.rb +70 -0
- data/lib/mongo/operation/insert/command.rb +65 -0
- data/lib/mongo/operation/insert/legacy.rb +72 -0
- data/lib/mongo/operation/insert/op_msg.rb +61 -0
- data/lib/mongo/operation/insert/result.rb +64 -0
- data/lib/mongo/operation/kill_cursors.rb +25 -14
- data/lib/mongo/operation/{takes_write_concern.rb → kill_cursors/command.rb} +14 -12
- data/lib/mongo/operation/kill_cursors/legacy.rb +37 -0
- data/lib/mongo/operation/kill_cursors/op_msg.rb +37 -0
- data/lib/mongo/operation/list_collections.rb +49 -0
- data/lib/mongo/operation/list_collections/command.rb +60 -0
- data/lib/mongo/operation/list_collections/op_msg.rb +53 -0
- data/lib/mongo/operation/list_collections/result.rb +92 -0
- data/lib/mongo/operation/map_reduce.rb +49 -0
- data/lib/mongo/operation/map_reduce/command.rb +55 -0
- data/lib/mongo/operation/map_reduce/op_msg.rb +54 -0
- data/lib/mongo/operation/map_reduce/result.rb +129 -0
- data/lib/mongo/operation/parallel_scan.rb +49 -0
- data/lib/mongo/operation/parallel_scan/command.rb +67 -0
- data/lib/mongo/operation/parallel_scan/op_msg.rb +61 -0
- data/lib/mongo/operation/parallel_scan/result.rb +61 -0
- data/lib/mongo/operation/remove_user.rb +48 -0
- data/lib/mongo/operation/remove_user/command.rb +42 -0
- data/lib/mongo/operation/remove_user/op_msg.rb +41 -0
- data/lib/mongo/operation/result.rb +3 -1
- data/lib/mongo/operation/shared/bypass_document_validation.rb +36 -0
- data/lib/mongo/operation/{causally_consistent.rb → shared/causal_consistency_supported.rb} +5 -5
- data/lib/mongo/operation/shared/executable.rb +45 -0
- data/lib/mongo/operation/shared/idable.rb +64 -0
- data/lib/mongo/operation/{commands/distinct.rb → shared/limited.rb} +10 -7
- data/lib/mongo/operation/{object_id_generator.rb → shared/object_id_generator.rb} +2 -2
- data/lib/mongo/operation/{read_preference.rb → shared/read_preference_supported.rb} +14 -24
- data/lib/mongo/operation/shared/result/aggregatable.rb +75 -0
- data/lib/mongo/operation/shared/sessions_supported.rb +79 -0
- data/lib/mongo/operation/{specifiable.rb → shared/specifiable.rb} +40 -4
- data/lib/mongo/operation/shared/write.rb +81 -0
- data/lib/mongo/operation/shared/write_concern_supported.rb +39 -0
- data/lib/mongo/operation/update.rb +38 -0
- data/lib/mongo/operation/update/bulk_result.rb +126 -0
- data/lib/mongo/operation/update/command.rb +60 -0
- data/lib/mongo/operation/update/legacy.rb +80 -0
- data/lib/mongo/operation/{write/update → update/legacy}/result.rb +4 -82
- data/lib/mongo/operation/update/op_msg.rb +60 -0
- data/lib/mongo/operation/update/result.rb +102 -0
- data/lib/mongo/operation/update_user.rb +48 -0
- data/lib/mongo/operation/update_user/command.rb +41 -0
- data/lib/mongo/operation/update_user/op_msg.rb +41 -0
- data/lib/mongo/operation/users_info.rb +49 -0
- data/lib/mongo/operation/users_info/command.rb +58 -0
- data/lib/mongo/operation/users_info/op_msg.rb +57 -0
- data/lib/mongo/operation/{commands/collections_info → users_info}/result.rb +18 -17
- data/lib/mongo/server.rb +3 -5
- data/lib/mongo/server/connectable.rb +3 -3
- data/lib/mongo/server/connection.rb +14 -0
- data/lib/mongo/server_selector.rb +1 -1
- data/lib/mongo/server_selector/selectable.rb +3 -12
- data/lib/mongo/session.rb +13 -1
- data/lib/mongo/session/session_pool.rb +1 -1
- data/lib/mongo/version.rb +1 -1
- data/spec/mongo/client_spec.rb +15 -22
- data/spec/mongo/cluster/app_metadata_spec.rb +19 -3
- data/spec/mongo/cluster/cursor_reaper_spec.rb +37 -0
- data/spec/mongo/cluster_spec.rb +2 -2
- data/spec/mongo/collection/view/change_stream_spec.rb +2 -2
- data/spec/mongo/collection_spec.rb +105 -14
- data/spec/mongo/cursor_spec.rb +11 -11
- data/spec/mongo/grid/fs_bucket_spec.rb +5 -0
- data/spec/mongo/max_staleness_spec.rb +3 -1
- data/spec/mongo/operation/{commands/aggregate → aggregate}/result_spec.rb +1 -1
- data/spec/mongo/operation/{commands/aggregate_spec.rb → aggregate_spec.rb} +1 -1
- data/spec/mongo/operation/{commands/collections_info_spec.rb → collections_info_spec.rb} +4 -2
- data/spec/mongo/operation/{commands/command_spec.rb → command_spec.rb} +1 -1
- data/spec/mongo/operation/{write/command/create_index_spec.rb → create_index_spec.rb} +1 -1
- data/spec/mongo/operation/{write/create_user_spec.rb → create_user_spec.rb} +1 -1
- data/spec/mongo/operation/{write/bulk/delete_spec.rb → delete/bulk_spec.rb} +8 -8
- data/spec/mongo/operation/delete/command_spec.rb +111 -0
- data/spec/mongo/operation/{write/command/delete_spec.rb → delete/op_msg_spec.rb} +40 -34
- data/spec/mongo/operation/{write/delete_spec.rb → delete_spec.rb} +7 -7
- data/spec/mongo/operation/{write/command/drop_index_spec.rb → drop_index_spec.rb} +1 -1
- data/spec/mongo/operation/{read/query_spec.rb → find/legacy_spec.rb} +2 -2
- data/spec/mongo/operation/{read/get_more_spec.rb → get_more_spec.rb} +3 -3
- data/spec/mongo/operation/{commands/indexes_spec.rb → indexes_spec.rb} +6 -4
- data/spec/mongo/operation/{write/bulk/insert_spec.rb → insert/bulk_spec.rb} +9 -9
- data/spec/mongo/operation/insert/command_spec.rb +110 -0
- data/spec/mongo/operation/{write/command/insert_spec.rb → insert/op_msg_spec.rb} +51 -41
- data/spec/mongo/operation/{write/insert_spec.rb → insert_spec.rb} +2 -2
- data/spec/mongo/operation/kill_cursors_spec.rb +2 -2
- data/spec/mongo/operation/limited_spec.rb +3 -3
- data/spec/mongo/operation/{commands/map_reduce_spec.rb → map_reduce_spec.rb} +1 -1
- data/spec/mongo/operation/read_preference_spec.rb +2 -2
- data/spec/mongo/operation/{write/command/remove_user_spec.rb → remove_user_spec.rb} +1 -1
- data/spec/mongo/operation/{write/bulk/update_spec.rb → update/bulk_spec.rb} +8 -8
- data/spec/mongo/operation/update/command_spec.rb +114 -0
- data/spec/mongo/operation/{write/command/update_spec.rb → update/op_msg_spec.rb} +49 -40
- data/spec/mongo/operation/{write/update_spec.rb → update_spec.rb} +6 -6
- data/spec/mongo/operation/{write/command/update_user_spec.rb → update_user_spec.rb} +1 -1
- data/spec/mongo/server/connection_spec.rb +0 -22
- data/spec/mongo/server_selector_spec.rb +55 -0
- data/spec/mongo/server_spec.rb +0 -42
- data/spec/mongo/session/session_pool_spec.rb +1 -1
- data/spec/mongo/uri/srv_protocol_spec.rb +2 -2
- data/spec/mongo/uri_spec.rb +2 -2
- data/spec/support/gridfs_tests/delete.yml +4 -38
- data/spec/support/gridfs_tests/download.yml +12 -30
- data/spec/support/server_selection.rb +1 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_multiple.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PossiblePrimary.yml +15 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PossiblePrimaryNearest.yml +15 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Primary.yml +0 -3
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_multiple.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Primary.yml +0 -3
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/Sharded/read/Nearest.yml +21 -0
- data/spec/support/server_selection/selection/Sharded/read/Primary.yml +19 -0
- data/spec/support/server_selection/selection/Sharded/read/PrimaryPreferred.yml +21 -0
- data/spec/support/server_selection/selection/Sharded/read/Secondary.yml +21 -0
- data/spec/support/server_selection/selection/Sharded/read/SecondaryPreferred.yml +0 -5
- data/spec/support/server_selection/selection/Single/read/SecondaryPreferred.yml +0 -1
- data/spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml +0 -1
- data/spec/support/shared/session.rb +46 -5
- metadata +174 -116
- metadata.gz.sig +1 -2
- data/lib/mongo/operation/commands.rb +0 -31
- data/lib/mongo/operation/commands/aggregate.rb +0 -63
- data/lib/mongo/operation/commands/aggregate/result.rb +0 -89
- data/lib/mongo/operation/commands/collections_info.rb +0 -71
- data/lib/mongo/operation/commands/create.rb +0 -49
- data/lib/mongo/operation/commands/drop.rb +0 -49
- data/lib/mongo/operation/commands/drop_database.rb +0 -49
- data/lib/mongo/operation/commands/explain.rb +0 -27
- data/lib/mongo/operation/commands/explain/result.rb +0 -52
- data/lib/mongo/operation/commands/find/result.rb +0 -62
- data/lib/mongo/operation/commands/get_more.rb +0 -27
- data/lib/mongo/operation/commands/get_more/result.rb +0 -62
- data/lib/mongo/operation/commands/indexes.rb +0 -73
- data/lib/mongo/operation/commands/list_collections.rb +0 -48
- data/lib/mongo/operation/commands/list_collections/result.rb +0 -94
- data/lib/mongo/operation/commands/list_indexes.rb +0 -48
- data/lib/mongo/operation/commands/list_indexes/result.rb +0 -98
- data/lib/mongo/operation/commands/map_reduce.rb +0 -65
- data/lib/mongo/operation/commands/map_reduce/result.rb +0 -131
- data/lib/mongo/operation/commands/parallel_scan.rb +0 -54
- data/lib/mongo/operation/commands/parallel_scan/result.rb +0 -64
- data/lib/mongo/operation/commands/users_info.rb +0 -52
- data/lib/mongo/operation/read.rb +0 -16
- data/lib/mongo/operation/read/get_more.rb +0 -52
- data/lib/mongo/operation/read/query.rb +0 -55
- data/lib/mongo/operation/uses_command_op_msg.rb +0 -78
- data/lib/mongo/operation/write.rb +0 -22
- data/lib/mongo/operation/write/bulk.rb +0 -20
- data/lib/mongo/operation/write/bulk/bulkable.rb +0 -82
- data/lib/mongo/operation/write/bulk/delete.rb +0 -71
- data/lib/mongo/operation/write/bulk/delete/result.rb +0 -71
- data/lib/mongo/operation/write/bulk/insert.rb +0 -96
- data/lib/mongo/operation/write/bulk/insert/result.rb +0 -129
- data/lib/mongo/operation/write/bulk/legacy_mergable.rb +0 -87
- data/lib/mongo/operation/write/bulk/mergable.rb +0 -73
- data/lib/mongo/operation/write/bulk/update.rb +0 -81
- data/lib/mongo/operation/write/bulk/update/result.rb +0 -196
- data/lib/mongo/operation/write/command.rb +0 -23
- data/lib/mongo/operation/write/command/create_index.rb +0 -79
- data/lib/mongo/operation/write/command/create_user.rb +0 -61
- data/lib/mongo/operation/write/command/delete.rb +0 -79
- data/lib/mongo/operation/write/command/drop_index.rb +0 -80
- data/lib/mongo/operation/write/command/insert.rb +0 -69
- data/lib/mongo/operation/write/command/remove_user.rb +0 -60
- data/lib/mongo/operation/write/command/update.rb +0 -77
- data/lib/mongo/operation/write/command/update_user.rb +0 -61
- data/lib/mongo/operation/write/command/writable.rb +0 -70
- data/lib/mongo/operation/write/delete.rb +0 -75
- data/lib/mongo/operation/write/gle.rb +0 -49
- data/lib/mongo/operation/write/idable.rb +0 -63
- data/lib/mongo/operation/write/insert.rb +0 -74
- data/lib/mongo/operation/write/insert/result.rb +0 -62
- data/lib/mongo/operation/write/update.rb +0 -91
- data/lib/mongo/operation/write/write_command_enabled.rb +0 -77
@@ -18,7 +18,7 @@ describe Mongo::Operation::Limited do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'returns a limit of -1' do
|
21
|
-
expect(limited.options).to eq({ :skip => 5, :limit => -1 })
|
21
|
+
expect(limited.send(:options)).to eq({ :skip => 5, :limit => -1 })
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -31,7 +31,7 @@ describe Mongo::Operation::Limited do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'returns a limit of -1' do
|
34
|
-
expect(limited.options).to eq({ :skip => 5, :limit => -1 })
|
34
|
+
expect(limited.send(:options)).to eq({ :skip => 5, :limit => -1 })
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -42,7 +42,7 @@ describe Mongo::Operation::Limited do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'returns a limit of -1' do
|
45
|
-
expect(limited.options).to eq({ :skip => 5, :limit => -1 })
|
45
|
+
expect(limited.send(:options)).to eq({ :skip => 5, :limit => -1 })
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Mongo::Operation::
|
3
|
+
describe Mongo::Operation::ReadPreferenceSupported do
|
4
4
|
|
5
5
|
let(:selector) do
|
6
6
|
{ name: 'test' }
|
@@ -28,7 +28,7 @@ describe Mongo::Operation::ReadPreference do
|
|
28
28
|
|
29
29
|
let(:operation) do
|
30
30
|
Class.new do
|
31
|
-
include Mongo::Operation::
|
31
|
+
include Mongo::Operation::ReadPreferenceSupported
|
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)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Mongo::Operation::
|
3
|
+
describe Mongo::Operation::Update do
|
4
4
|
|
5
5
|
let(:documents) do
|
6
6
|
[{ :q => { :foo => 1 },
|
@@ -75,7 +75,7 @@ describe Mongo::Operation::Write::Bulk::Update do
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
-
describe '#
|
78
|
+
describe '#bulk_execute' do
|
79
79
|
|
80
80
|
before do
|
81
81
|
authorized_collection.insert_many([
|
@@ -97,7 +97,7 @@ describe Mongo::Operation::Write::Bulk::Update do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
it 'updates the document' do
|
100
|
-
op.
|
100
|
+
op.bulk_execute(authorized_primary)
|
101
101
|
expect(authorized_collection.find(field: 'blah').count).to eq(1)
|
102
102
|
end
|
103
103
|
end
|
@@ -121,7 +121,7 @@ describe Mongo::Operation::Write::Bulk::Update do
|
|
121
121
|
end
|
122
122
|
|
123
123
|
it 'updates the documents' do
|
124
|
-
op.
|
124
|
+
op.bulk_execute(authorized_primary)
|
125
125
|
expect(authorized_collection.find(field: 'blah').count).to eq(2)
|
126
126
|
end
|
127
127
|
end
|
@@ -153,7 +153,7 @@ describe Mongo::Operation::Write::Bulk::Update do
|
|
153
153
|
context 'when write concern is acknowledged' do
|
154
154
|
|
155
155
|
it 'aborts after first error' do
|
156
|
-
failing_update.
|
156
|
+
failing_update.bulk_execute(authorized_primary)
|
157
157
|
expect(authorized_collection.find(other: 'blah').count).to eq(0)
|
158
158
|
end
|
159
159
|
end
|
@@ -165,7 +165,7 @@ describe Mongo::Operation::Write::Bulk::Update do
|
|
165
165
|
end
|
166
166
|
|
167
167
|
it 'aborts after first error' do
|
168
|
-
failing_update.
|
168
|
+
failing_update.bulk_execute(authorized_primary)
|
169
169
|
expect(authorized_collection.find(other: 'blah').count).to eq(0)
|
170
170
|
end
|
171
171
|
end
|
@@ -198,7 +198,7 @@ describe Mongo::Operation::Write::Bulk::Update do
|
|
198
198
|
context 'when write concern is acknowledged' do
|
199
199
|
|
200
200
|
it 'does not abort after first error' do
|
201
|
-
failing_update.
|
201
|
+
failing_update.bulk_execute(authorized_primary)
|
202
202
|
expect(authorized_collection.find(other: 'blah').count).to eq(1)
|
203
203
|
end
|
204
204
|
end
|
@@ -210,7 +210,7 @@ describe Mongo::Operation::Write::Bulk::Update do
|
|
210
210
|
end
|
211
211
|
|
212
212
|
it 'does not abort after first error' do
|
213
|
-
failing_update.
|
213
|
+
failing_update.bulk_execute(authorized_primary)
|
214
214
|
expect(authorized_collection.find(other: 'blah').count).to eq(1)
|
215
215
|
end
|
216
216
|
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Mongo::Operation::Update::Command do
|
4
|
+
|
5
|
+
let(:updates) { [{:q => { :foo => 1 },
|
6
|
+
:u => { :$set => { :bar => 1 } },
|
7
|
+
:multi => true,
|
8
|
+
:upsert => false }] }
|
9
|
+
|
10
|
+
let(:write_concern) do
|
11
|
+
Mongo::WriteConcern.get(WRITE_CONCERN)
|
12
|
+
end
|
13
|
+
let(:session) { nil }
|
14
|
+
let(:spec) do
|
15
|
+
{ :updates => updates,
|
16
|
+
:db_name => TEST_DB,
|
17
|
+
:coll_name => TEST_COLL,
|
18
|
+
:write_concern => write_concern,
|
19
|
+
:ordered => true,
|
20
|
+
:session => session
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
let(:op) { described_class.new(spec) }
|
25
|
+
|
26
|
+
describe '#initialize' do
|
27
|
+
|
28
|
+
context 'spec' do
|
29
|
+
|
30
|
+
it 'sets the spec' do
|
31
|
+
expect(op.spec).to eq(spec)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#==' do
|
37
|
+
|
38
|
+
context 'spec' do
|
39
|
+
|
40
|
+
context 'when two ops have the same specs' do
|
41
|
+
let(:other) { described_class.new(spec) }
|
42
|
+
|
43
|
+
it 'returns true' do
|
44
|
+
expect(op).to eq(other)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when two ops have different specs' do
|
49
|
+
let(:other_updates) { [{:q => { :bar => 1 },
|
50
|
+
:u => { :$set => { :bar => 2 } },
|
51
|
+
:multi => true,
|
52
|
+
:upsert => false }] }
|
53
|
+
let(:other_spec) do
|
54
|
+
{ :updates => other_updates,
|
55
|
+
:db_name => TEST_DB,
|
56
|
+
:coll_name => TEST_COLL,
|
57
|
+
:write_concern => Mongo::WriteConcern.get(WRITE_CONCERN),
|
58
|
+
:ordered => true
|
59
|
+
}
|
60
|
+
end
|
61
|
+
let(:other) { described_class.new(other_spec) }
|
62
|
+
|
63
|
+
it 'returns false' do
|
64
|
+
expect(op).not_to eq(other)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe 'write concern' do
|
71
|
+
|
72
|
+
context 'when write concern is not specified' do
|
73
|
+
|
74
|
+
let(:spec) do
|
75
|
+
{ :updates => updates,
|
76
|
+
:db_name => TEST_DB,
|
77
|
+
:coll_name => TEST_COLL,
|
78
|
+
:ordered => true
|
79
|
+
}
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'does not include write concern in the selector' do
|
83
|
+
expect(op.send(:command, double('server'))[:writeConcern]).to be_nil
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
context 'when write concern is specified' do
|
88
|
+
|
89
|
+
it 'includes write concern in the selector' do
|
90
|
+
expect(op.send(:command, double('server'))[:writeConcern]).to eq(write_concern.options)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe '#message' do
|
96
|
+
|
97
|
+
context 'when the server does not support OP_MSG' do
|
98
|
+
|
99
|
+
let(:expected_selector) do
|
100
|
+
{
|
101
|
+
:update => TEST_COLL,
|
102
|
+
:updates => updates,
|
103
|
+
:ordered => true,
|
104
|
+
:writeConcern => write_concern.options
|
105
|
+
}
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'creates the correct Command message', unless: op_msg_enabled? do
|
109
|
+
expect(Mongo::Protocol::Query).to receive(:new).with(TEST_DB, '$cmd', expected_selector, { limit: -1 })
|
110
|
+
op.send(:message, authorized_primary)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Mongo::Operation::
|
3
|
+
describe Mongo::Operation::Update::OpMsg do
|
4
4
|
|
5
5
|
let(:updates) { [{:q => { :foo => 1 },
|
6
6
|
:u => { :$set => { :bar => 1 } },
|
@@ -47,9 +47,9 @@ describe Mongo::Operation::Write::Command::Update do
|
|
47
47
|
|
48
48
|
context 'when two ops have different specs' do
|
49
49
|
let(:other_updates) { [{:q => { :bar => 1 },
|
50
|
-
|
51
|
-
|
52
|
-
|
50
|
+
:u => { :$set => { :bar => 2 } },
|
51
|
+
:multi => true,
|
52
|
+
:upsert => false }] }
|
53
53
|
let(:other_spec) do
|
54
54
|
{ :updates => other_updates,
|
55
55
|
:db_name => TEST_DB,
|
@@ -80,14 +80,14 @@ describe Mongo::Operation::Write::Command::Update do
|
|
80
80
|
end
|
81
81
|
|
82
82
|
it 'does not include write concern in the selector' do
|
83
|
-
expect(op.send(:
|
83
|
+
expect(op.send(:command, authorized_primary)[:writeConcern]).to be_nil
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
87
|
context 'when write concern is specified' do
|
88
88
|
|
89
89
|
it 'includes write concern in the selector' do
|
90
|
-
expect(op.send(:
|
90
|
+
expect(op.send(:command, authorized_primary)[:writeConcern]).to eq(write_concern.options)
|
91
91
|
end
|
92
92
|
end
|
93
93
|
end
|
@@ -108,10 +108,10 @@ describe Mongo::Operation::Write::Command::Update do
|
|
108
108
|
|
109
109
|
let(:expected_payload_1) do
|
110
110
|
{
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
111
|
+
type: 1,
|
112
|
+
payload: { identifier: 'updates',
|
113
|
+
sequence: updates
|
114
|
+
}
|
115
115
|
}
|
116
116
|
end
|
117
117
|
|
@@ -119,7 +119,7 @@ describe Mongo::Operation::Write::Command::Update do
|
|
119
119
|
authorized_client.start_session
|
120
120
|
end
|
121
121
|
|
122
|
-
context 'when the topology is replica set or sharded', if:
|
122
|
+
context 'when the topology is replica set or sharded', if: test_sessions? do
|
123
123
|
|
124
124
|
let(:expected_global_args) do
|
125
125
|
global_args.merge(Mongo::Operation::CLUSTER_TIME => authorized_client.cluster.cluster_time)
|
@@ -132,7 +132,7 @@ describe Mongo::Operation::Write::Command::Update do
|
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
135
|
-
context 'when the topology is standalone', if: standalone? &&
|
135
|
+
context 'when the topology is standalone', if: standalone? && sessions_enabled? do
|
136
136
|
|
137
137
|
let(:expected_global_args) do
|
138
138
|
global_args
|
@@ -170,28 +170,54 @@ describe Mongo::Operation::Write::Command::Update do
|
|
170
170
|
Mongo::WriteConcern.get(w: 0)
|
171
171
|
end
|
172
172
|
|
173
|
-
context 'when the
|
173
|
+
context 'when the session is implicit' do
|
174
174
|
|
175
|
-
let(:
|
176
|
-
|
177
|
-
|
175
|
+
let(:session) do
|
176
|
+
# Use client#get_session so the session is implicit
|
177
|
+
authorized_client.send(:get_session)
|
178
178
|
end
|
179
179
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
180
|
+
context 'when the topology is replica set or sharded', if: test_sessions? do
|
181
|
+
|
182
|
+
let(:expected_global_args) do
|
183
|
+
global_args.delete(:lsid)
|
184
|
+
global_args.merge(Mongo::Operation::CLUSTER_TIME => authorized_client.cluster.cluster_time)
|
185
|
+
end
|
186
|
+
|
187
|
+
it 'does not send a session id in the command' do
|
188
|
+
authorized_client.command(ping:1)
|
189
|
+
expect(Mongo::Protocol::Msg).to receive(:new).with([:more_to_come], {}, expected_global_args, expected_payload_1)
|
190
|
+
op.send(:message, authorized_primary)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
context 'when the topology is standalone', if: standalone? && sessions_enabled? do
|
195
|
+
|
196
|
+
let(:expected_global_args) do
|
197
|
+
global_args.delete(:lsid)
|
198
|
+
global_args
|
199
|
+
end
|
200
|
+
|
201
|
+
it 'creates the correct OP_MSG message' do
|
202
|
+
authorized_client.command(ping:1)
|
203
|
+
expect(Mongo::Protocol::Msg).to receive(:new).with([:more_to_come], {}, expected_global_args, expected_payload_1)
|
204
|
+
op.send(:message, authorized_primary)
|
205
|
+
end
|
184
206
|
end
|
185
207
|
end
|
186
208
|
|
187
|
-
context 'when the
|
209
|
+
context 'when the session is explicit', if: test_sessions? do
|
210
|
+
|
211
|
+
let(:session) do
|
212
|
+
authorized_client.start_session
|
213
|
+
end
|
188
214
|
|
189
215
|
let(:expected_global_args) do
|
190
216
|
global_args.delete(:lsid)
|
191
|
-
global_args
|
217
|
+
global_args.merge(Mongo::Operation::CLUSTER_TIME => authorized_client.cluster.cluster_time)
|
192
218
|
end
|
193
219
|
|
194
|
-
it '
|
220
|
+
it 'does not send a session id in the command' do
|
195
221
|
authorized_client.command(ping:1)
|
196
222
|
expect(Mongo::Protocol::Msg).to receive(:new).with([:more_to_come], {}, expected_global_args, expected_payload_1)
|
197
223
|
op.send(:message, authorized_primary)
|
@@ -199,22 +225,5 @@ describe Mongo::Operation::Write::Command::Update do
|
|
199
225
|
end
|
200
226
|
end
|
201
227
|
end
|
202
|
-
|
203
|
-
context 'when the server does not support OP_MSG' do
|
204
|
-
|
205
|
-
let(:expected_selector) do
|
206
|
-
{
|
207
|
-
:update => TEST_COLL,
|
208
|
-
:updates => updates,
|
209
|
-
:ordered => true,
|
210
|
-
:writeConcern => write_concern.options
|
211
|
-
}
|
212
|
-
end
|
213
|
-
|
214
|
-
it 'creates the correct Command message', unless: op_msg_enabled? do
|
215
|
-
expect(Mongo::Protocol::Query).to receive(:new).with(TEST_DB, '$cmd', expected_selector, { limit: -1 })
|
216
|
-
op.send(:message, authorized_primary)
|
217
|
-
end
|
218
|
-
end
|
219
228
|
end
|
220
229
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Mongo::Operation::
|
3
|
+
describe Mongo::Operation::Update do
|
4
4
|
|
5
5
|
let(:document) do
|
6
6
|
{ :q => { :foo => 1 },
|
@@ -10,7 +10,7 @@ describe Mongo::Operation::Write::Update do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
let(:spec) do
|
13
|
-
{ :
|
13
|
+
{ :updates => [ document ],
|
14
14
|
:db_name => TEST_DB,
|
15
15
|
:coll_name => TEST_COLL,
|
16
16
|
:write_concern => Mongo::WriteConcern.get(:w => 1),
|
@@ -85,7 +85,7 @@ describe Mongo::Operation::Write::Update do
|
|
85
85
|
|
86
86
|
let(:update) do
|
87
87
|
described_class.new({
|
88
|
-
|
88
|
+
updates: [ document ],
|
89
89
|
db_name: TEST_DB,
|
90
90
|
coll_name: TEST_COLL,
|
91
91
|
write_concern: Mongo::WriteConcern.get(:w => 1)
|
@@ -137,7 +137,7 @@ describe Mongo::Operation::Write::Update do
|
|
137
137
|
|
138
138
|
let(:update) do
|
139
139
|
described_class.new({
|
140
|
-
|
140
|
+
updates: [ document ],
|
141
141
|
db_name: TEST_DB,
|
142
142
|
coll_name: TEST_COLL,
|
143
143
|
write_concern: Mongo::WriteConcern.get(:w => 1)
|
@@ -229,7 +229,7 @@ describe Mongo::Operation::Write::Update do
|
|
229
229
|
|
230
230
|
let(:update) do
|
231
231
|
described_class.new({
|
232
|
-
|
232
|
+
updates: [ document ],
|
233
233
|
db_name: TEST_DB,
|
234
234
|
coll_name: TEST_COLL,
|
235
235
|
write_concern: Mongo::WriteConcern.get(:w => 0)
|
@@ -245,7 +245,7 @@ describe Mongo::Operation::Write::Update do
|
|
245
245
|
end
|
246
246
|
|
247
247
|
before do
|
248
|
-
expect(
|
248
|
+
expect(Mongo::Operation::Update::Legacy).to receive(:new).and_call_original
|
249
249
|
end
|
250
250
|
|
251
251
|
it 'uses op codes instead of write commands' do
|