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