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
@@ -8,80 +8,60 @@ describe 'Server Selection moving average round trip time calculation' do
|
|
8
8
|
|
9
9
|
spec = Mongo::ServerSelection::RTT::Spec.new(file)
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
module Mongo
|
14
|
-
class Server
|
15
|
-
|
16
|
-
# We monkey-patch the monitor here, so the last average rtt can be controlled.
|
17
|
-
# We keep the API of Monitor#initialize but add in an extra option and set the last rtt.
|
18
|
-
#
|
19
|
-
# @since 2.0.0
|
20
|
-
class Monitor
|
21
|
-
|
22
|
-
def initialize(address, listeners, options = {})
|
23
|
-
@description = Mongo::Server::Description.new(address, {})
|
24
|
-
@inspector = Mongo::Server::Description::Inspector.new(listeners)
|
25
|
-
@options = options.freeze
|
26
|
-
@connection = Connection.new(address, options)
|
27
|
-
@last_round_trip_time = options[:avg_rtt_ms]
|
28
|
-
@mutex = Mutex.new
|
29
|
-
end
|
11
|
+
context(spec.description) do
|
30
12
|
|
31
|
-
|
13
|
+
before(:all) do
|
32
14
|
|
33
|
-
|
15
|
+
module Mongo
|
16
|
+
class Server
|
17
|
+
|
18
|
+
# We monkey-patch the monitor here, so the last average rtt can be controlled.
|
19
|
+
# We keep the API of Monitor#initialize but add in an extra option and set the last rtt.
|
34
20
|
#
|
35
21
|
# @since 2.0.0
|
36
|
-
|
37
|
-
|
38
|
-
|
22
|
+
class Monitor
|
23
|
+
|
24
|
+
alias :original_initialize :initialize
|
25
|
+
def initialize(address, listeners, options = {})
|
26
|
+
@description = Mongo::Server::Description.new(address, {})
|
27
|
+
@inspector = Mongo::Server::Description::Inspector.new(listeners)
|
28
|
+
@options = options.freeze
|
29
|
+
@connection = Connection.new(address, options)
|
30
|
+
@last_round_trip_time = options[:avg_rtt_ms]
|
31
|
+
@mutex = Mutex.new
|
32
|
+
end
|
33
|
+
|
34
|
+
# We monkey patch this method to use an instance variable instead of calculating time elapsed.
|
35
|
+
#
|
36
|
+
# @since 2.0.0
|
37
|
+
alias :original_average_round_trip_time :average_round_trip_time
|
38
|
+
def average_round_trip_time(start)
|
39
|
+
new_rtt = @new_rtt_ms
|
40
|
+
RTT_WEIGHT_FACTOR * new_rtt + (1 - RTT_WEIGHT_FACTOR) * (@last_round_trip_time || new_rtt)
|
41
|
+
end
|
39
42
|
end
|
40
43
|
end
|
41
44
|
end
|
42
45
|
end
|
43
|
-
end
|
44
46
|
|
45
|
-
|
47
|
+
after(:all) do
|
46
48
|
|
47
|
-
|
48
|
-
|
49
|
+
module Mongo
|
50
|
+
class Server
|
49
51
|
|
50
|
-
|
51
|
-
|
52
|
-
|
52
|
+
# Return the monitor implementation to its original for the other
|
53
|
+
# tests in the suite.
|
54
|
+
class Monitor
|
53
55
|
|
54
|
-
|
55
|
-
|
56
|
-
# @example Create the server monitor.
|
57
|
-
# Mongo::Server::Monitor.new(address, listeners)
|
58
|
-
#
|
59
|
-
# @param [ Address ] address The address to monitor.
|
60
|
-
# @param [ Event::Listeners ] listeners The event listeners.
|
61
|
-
# @param [ Hash ] options The options.
|
62
|
-
#
|
63
|
-
# @since 2.0.0
|
64
|
-
def initialize(address, listeners, options = {})
|
65
|
-
@description = Description.new(address, {})
|
66
|
-
@inspector = Description::Inspector.new(listeners)
|
67
|
-
@options = options.freeze
|
68
|
-
@connection = Connection.new(address, options)
|
69
|
-
@last_round_trip_time = nil
|
70
|
-
@mutex = Mutex.new
|
71
|
-
end
|
72
|
-
|
73
|
-
private
|
56
|
+
alias :initialize :original_initialize
|
57
|
+
remove_method(:original_initialize)
|
74
58
|
|
75
|
-
|
76
|
-
|
77
|
-
RTT_WEIGHT_FACTOR * new_rtt + (1 - RTT_WEIGHT_FACTOR) * (@last_round_trip_time || new_rtt)
|
59
|
+
alias :average_round_trip_time :original_average_round_trip_time
|
60
|
+
remove_method(:original_average_round_trip_time)
|
78
61
|
end
|
79
62
|
end
|
80
63
|
end
|
81
64
|
end
|
82
|
-
end
|
83
|
-
|
84
|
-
context(spec.description) do
|
85
65
|
|
86
66
|
let(:address) do
|
87
67
|
Mongo::Address.new('127.0.0.1:27017')
|
@@ -39,6 +39,7 @@ describe 'Server Selection' do
|
|
39
39
|
allow(s).to receive(:tags).and_return(server['tags'])
|
40
40
|
allow(s).to receive(:secondary?).and_return(server['type'] == 'RSSecondary')
|
41
41
|
allow(s).to receive(:primary?).and_return(server['type'] == 'RSPrimary')
|
42
|
+
allow(s).to receive(:connectable?).and_return(true)
|
42
43
|
end
|
43
44
|
end
|
44
45
|
end
|
@@ -49,14 +50,15 @@ describe 'Server Selection' do
|
|
49
50
|
Mongo::Server.new(address, double('cluster'), monitoring, listeners, TEST_OPTIONS).tap do |s|
|
50
51
|
allow(s).to receive(:average_round_trip_time).and_return(server['avg_rtt_ms'])
|
51
52
|
allow(s).to receive(:tags).and_return(server['tags'])
|
53
|
+
allow(s).to receive(:connectable?).and_return(true)
|
52
54
|
end
|
53
55
|
end
|
54
56
|
end
|
55
57
|
|
56
58
|
let(:server_selector) do
|
57
|
-
Mongo::ServerSelector.get(
|
58
|
-
|
59
|
-
|
59
|
+
Mongo::ServerSelector.get(:mode => spec.read_preference['mode'],
|
60
|
+
:tag_sets => spec.read_preference['tag_sets'],
|
61
|
+
:server_selection_timeout => 1)
|
60
62
|
end
|
61
63
|
|
62
64
|
before do
|
@@ -2,30 +2,38 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Mongo::ServerSelector::Nearest do
|
4
4
|
|
5
|
+
let(:name) { :nearest }
|
6
|
+
|
5
7
|
include_context 'server selector'
|
6
8
|
|
7
|
-
it_behaves_like 'a
|
8
|
-
let(:name) { :nearest }
|
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'
|
14
|
+
it_behaves_like 'a server selector with sensitive data in its options'
|
13
15
|
|
14
16
|
describe '#to_mongos' do
|
15
17
|
|
16
18
|
context 'tag set not provided' do
|
19
|
+
|
20
|
+
let(:expected) do
|
21
|
+
{ :mode => 'nearest' }
|
22
|
+
end
|
23
|
+
|
17
24
|
it 'returns a read preference formatted for mongos' do
|
18
|
-
expect(
|
25
|
+
expect(selector.to_mongos).to eq(expected)
|
19
26
|
end
|
20
27
|
end
|
21
28
|
|
22
29
|
context 'tag set provided' do
|
30
|
+
|
23
31
|
let(:tag_sets) do
|
24
32
|
[tag_set]
|
25
33
|
end
|
26
34
|
|
27
35
|
it 'returns a read preference formatted for mongos' do
|
28
|
-
expect(
|
36
|
+
expect(selector.to_mongos).to eq(
|
29
37
|
{ :mode => 'nearest', :tags => tag_sets }
|
30
38
|
)
|
31
39
|
end
|
@@ -38,7 +46,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
38
46
|
let(:candidates) { [] }
|
39
47
|
|
40
48
|
it 'returns an empty array' do
|
41
|
-
expect(
|
49
|
+
expect(selector.send(:select, candidates)).to be_empty
|
42
50
|
end
|
43
51
|
end
|
44
52
|
|
@@ -46,7 +54,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
46
54
|
let(:candidates) { [primary] }
|
47
55
|
|
48
56
|
it 'returns an array with the primary' do
|
49
|
-
expect(
|
57
|
+
expect(selector.send(:select, candidates)).to eq([primary])
|
50
58
|
end
|
51
59
|
end
|
52
60
|
|
@@ -54,7 +62,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
54
62
|
let(:candidates) { [secondary] }
|
55
63
|
|
56
64
|
it 'returns an array with the secondary' do
|
57
|
-
expect(
|
65
|
+
expect(selector.send(:select, candidates)).to eq([secondary])
|
58
66
|
end
|
59
67
|
end
|
60
68
|
|
@@ -62,7 +70,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
62
70
|
let(:candidates) { [primary, secondary] }
|
63
71
|
|
64
72
|
it 'returns an array with the primary and secondary' do
|
65
|
-
expect(
|
73
|
+
expect(selector.send(:select, candidates)).to match_array([primary, secondary])
|
66
74
|
end
|
67
75
|
end
|
68
76
|
|
@@ -70,7 +78,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
70
78
|
let(:candidates) { [secondary, secondary] }
|
71
79
|
|
72
80
|
it 'returns an array with the secondaries' do
|
73
|
-
expect(
|
81
|
+
expect(selector.send(:select, candidates)).to match_array([secondary, secondary])
|
74
82
|
end
|
75
83
|
end
|
76
84
|
|
@@ -89,7 +97,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
89
97
|
let(:candidates) { [primary] }
|
90
98
|
|
91
99
|
it 'returns an empty array' do
|
92
|
-
expect(
|
100
|
+
expect(selector.send(:select, candidates)).to be_empty
|
93
101
|
end
|
94
102
|
end
|
95
103
|
|
@@ -97,7 +105,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
97
105
|
let(:candidates) { [matching_primary] }
|
98
106
|
|
99
107
|
it 'returns an array with the primary' do
|
100
|
-
expect(
|
108
|
+
expect(selector.send(:select, candidates)).to eq([matching_primary])
|
101
109
|
end
|
102
110
|
end
|
103
111
|
|
@@ -105,7 +113,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
105
113
|
let(:candidates) { [secondary] }
|
106
114
|
|
107
115
|
it 'returns an empty array' do
|
108
|
-
expect(
|
116
|
+
expect(selector.send(:select, candidates)).to be_empty
|
109
117
|
end
|
110
118
|
end
|
111
119
|
|
@@ -113,7 +121,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
113
121
|
let(:candidates) { [matching_secondary] }
|
114
122
|
|
115
123
|
it 'returns an array with the matching secondary' do
|
116
|
-
expect(
|
124
|
+
expect(selector.send(:select, candidates)).to eq([matching_secondary])
|
117
125
|
end
|
118
126
|
end
|
119
127
|
end
|
@@ -124,7 +132,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
124
132
|
let(:candidates) { [primary, secondary, secondary] }
|
125
133
|
|
126
134
|
it 'returns an empty array' do
|
127
|
-
expect(
|
135
|
+
expect(selector.send(:select, candidates)).to be_empty
|
128
136
|
end
|
129
137
|
end
|
130
138
|
|
@@ -132,7 +140,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
132
140
|
let(:candidates) { [matching_primary, secondary, secondary] }
|
133
141
|
|
134
142
|
it 'returns an array with the matching primary' do
|
135
|
-
expect(
|
143
|
+
expect(selector.send(:select, candidates)).to eq([matching_primary])
|
136
144
|
end
|
137
145
|
end
|
138
146
|
|
@@ -140,7 +148,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
140
148
|
let(:candidates) { [primary, matching_secondary, secondary] }
|
141
149
|
|
142
150
|
it 'returns an array with the matching secondary' do
|
143
|
-
expect(
|
151
|
+
expect(selector.send(:select, candidates)).to eq([matching_secondary])
|
144
152
|
end
|
145
153
|
end
|
146
154
|
|
@@ -149,7 +157,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
149
157
|
let(:expected) { [matching_secondary, matching_secondary] }
|
150
158
|
|
151
159
|
it 'returns an array with the matching secondaries' do
|
152
|
-
expect(
|
160
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
153
161
|
end
|
154
162
|
end
|
155
163
|
|
@@ -158,7 +166,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
158
166
|
let(:expected) { [matching_primary, matching_secondary] }
|
159
167
|
|
160
168
|
it 'returns an array with the matching primary and secondary' do
|
161
|
-
expect(
|
169
|
+
expect(selector.send(:select, candidates)).to match_array(expected)
|
162
170
|
end
|
163
171
|
end
|
164
172
|
end
|
@@ -174,7 +182,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
174
182
|
let(:candidates) { [far_primary] }
|
175
183
|
|
176
184
|
it 'returns array with far primary' do
|
177
|
-
expect(
|
185
|
+
expect(selector.send(:select, candidates)).to eq([far_primary])
|
178
186
|
end
|
179
187
|
end
|
180
188
|
|
@@ -182,7 +190,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
182
190
|
let(:candidates) { [far_secondary] }
|
183
191
|
|
184
192
|
it 'returns array with far primary' do
|
185
|
-
expect(
|
193
|
+
expect(selector.send(:select, candidates)).to eq([far_secondary])
|
186
194
|
end
|
187
195
|
end
|
188
196
|
end
|
@@ -193,7 +201,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
193
201
|
let(:candidates) { [primary, secondary] }
|
194
202
|
|
195
203
|
it 'returns array with primary and secondary' do
|
196
|
-
expect(
|
204
|
+
expect(selector.send(:select, candidates)).to match_array(
|
197
205
|
[primary, secondary]
|
198
206
|
)
|
199
207
|
end
|
@@ -203,7 +211,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
203
211
|
let(:candidates) { [primary, far_secondary] }
|
204
212
|
|
205
213
|
it 'returns array with local primary' do
|
206
|
-
expect(
|
214
|
+
expect(selector.send(:select, candidates)).to eq([primary])
|
207
215
|
end
|
208
216
|
end
|
209
217
|
|
@@ -211,7 +219,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
211
219
|
let(:candidates) { [far_primary, secondary] }
|
212
220
|
|
213
221
|
it 'returns array with local secondary' do
|
214
|
-
expect(
|
222
|
+
expect(selector.send(:select, candidates)).to eq([secondary])
|
215
223
|
end
|
216
224
|
end
|
217
225
|
|
@@ -220,7 +228,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
220
228
|
let(:expected) { [far_primary, far_secondary] }
|
221
229
|
|
222
230
|
it 'returns array with both servers' do
|
223
|
-
expect(
|
231
|
+
expect(selector.send(:select, candidates)).to match_array(expected)
|
224
232
|
end
|
225
233
|
end
|
226
234
|
|
@@ -231,7 +239,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
231
239
|
let(:expected) { [primary, secondary] }
|
232
240
|
|
233
241
|
it 'returns array with local primary and local secondary' do
|
234
|
-
expect(
|
242
|
+
expect(selector.send(:select, candidates)).to match_array(expected)
|
235
243
|
end
|
236
244
|
end
|
237
245
|
|
@@ -240,7 +248,7 @@ describe Mongo::ServerSelector::Nearest do
|
|
240
248
|
let(:expected) { [secondary, secondary] }
|
241
249
|
|
242
250
|
it 'returns array with the two local secondaries' do
|
243
|
-
expect(
|
251
|
+
expect(selector.send(:select, candidates)).to match_array(expected)
|
244
252
|
end
|
245
253
|
end
|
246
254
|
end
|
@@ -2,21 +2,23 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Mongo::ServerSelector::PrimaryPreferred do
|
4
4
|
|
5
|
+
let(:name) { :primary_preferred }
|
6
|
+
|
5
7
|
include_context 'server selector'
|
6
8
|
|
7
|
-
it_behaves_like 'a
|
8
|
-
let(:name) { :primary_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'
|
14
|
+
it_behaves_like 'a server selector with sensitive data in its options'
|
13
15
|
|
14
16
|
describe '#to_mongos' do
|
15
17
|
|
16
18
|
context 'tag sets not provided' do
|
17
19
|
|
18
20
|
it 'returns a read preference formatted for mongos' do
|
19
|
-
expect(
|
21
|
+
expect(selector.to_mongos).to eq({ :mode => 'primaryPreferred' })
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
@@ -24,7 +26,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
24
26
|
let(:tag_sets) { [tag_set] }
|
25
27
|
|
26
28
|
it 'returns a read preference formatted for mongos' do
|
27
|
-
expect(
|
29
|
+
expect(selector.to_mongos).to eq(
|
28
30
|
{ :mode => 'primaryPreferred', :tags => tag_sets}
|
29
31
|
)
|
30
32
|
end
|
@@ -37,7 +39,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
37
39
|
let(:candidates) { [] }
|
38
40
|
|
39
41
|
it 'returns an empty array' do
|
40
|
-
expect(
|
42
|
+
expect(selector.send(:select, candidates)).to be_empty
|
41
43
|
end
|
42
44
|
end
|
43
45
|
|
@@ -45,7 +47,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
45
47
|
let(:candidates) { [primary] }
|
46
48
|
|
47
49
|
it 'returns an array with the primary' do
|
48
|
-
expect(
|
50
|
+
expect(selector.send(:select, candidates)).to eq( [primary] )
|
49
51
|
end
|
50
52
|
end
|
51
53
|
|
@@ -53,7 +55,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
53
55
|
let(:candidates) { [secondary] }
|
54
56
|
|
55
57
|
it 'returns an array with the secondary' do
|
56
|
-
expect(
|
58
|
+
expect(selector.send(:select, candidates)).to eq( [secondary] )
|
57
59
|
end
|
58
60
|
end
|
59
61
|
|
@@ -62,7 +64,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
62
64
|
let(:expected) { [primary] }
|
63
65
|
|
64
66
|
it 'returns an array with the primary' do
|
65
|
-
expect(
|
67
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
66
68
|
end
|
67
69
|
end
|
68
70
|
|
@@ -71,7 +73,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
71
73
|
let(:expected) { [primary] }
|
72
74
|
|
73
75
|
it 'returns an array with the primary' do
|
74
|
-
expect(
|
76
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
75
77
|
end
|
76
78
|
end
|
77
79
|
|
@@ -92,7 +94,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
92
94
|
let(:candidates) { [primary] }
|
93
95
|
|
94
96
|
it 'returns array with primary' do
|
95
|
-
expect(
|
97
|
+
expect(selector.send(:select, candidates)).to eq([primary])
|
96
98
|
end
|
97
99
|
end
|
98
100
|
|
@@ -100,7 +102,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
100
102
|
let(:candidates) { [matching_primary] }
|
101
103
|
|
102
104
|
it 'returns array with matching primary' do
|
103
|
-
expect(
|
105
|
+
expect(selector.send(:select, candidates)).to eq([matching_primary])
|
104
106
|
end
|
105
107
|
end
|
106
108
|
|
@@ -108,7 +110,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
108
110
|
let(:candidates) { [matching_secondary] }
|
109
111
|
|
110
112
|
it 'returns array with matching secondary' do
|
111
|
-
expect(
|
113
|
+
expect(selector.send(:select, candidates)).to eq([matching_secondary])
|
112
114
|
end
|
113
115
|
end
|
114
116
|
|
@@ -116,7 +118,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
116
118
|
let(:candidates) { [secondary] }
|
117
119
|
|
118
120
|
it 'returns an empty array' do
|
119
|
-
expect(
|
121
|
+
expect(selector.send(:select, candidates)).to be_empty
|
120
122
|
end
|
121
123
|
end
|
122
124
|
end
|
@@ -127,7 +129,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
127
129
|
let(:candidates) { [primary, secondary, secondary] }
|
128
130
|
|
129
131
|
it 'returns an array with the primary' do
|
130
|
-
expect(
|
132
|
+
expect(selector.send(:select, candidates)).to eq([primary])
|
131
133
|
end
|
132
134
|
end
|
133
135
|
|
@@ -135,7 +137,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
135
137
|
let(:candidates) { [matching_primary, secondary, secondary] }
|
136
138
|
|
137
139
|
it 'returns an array of the primary' do
|
138
|
-
expect(
|
140
|
+
expect(selector.send(:select, candidates)).to eq([matching_primary])
|
139
141
|
end
|
140
142
|
end
|
141
143
|
|
@@ -144,7 +146,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
144
146
|
let(:expected) { [primary] }
|
145
147
|
|
146
148
|
it 'returns an array of the primary' do
|
147
|
-
expect(
|
149
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
148
150
|
end
|
149
151
|
end
|
150
152
|
|
@@ -153,7 +155,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
153
155
|
let(:expected) { [primary] }
|
154
156
|
|
155
157
|
it 'returns an array of the primary ' do
|
156
|
-
expect(
|
158
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
157
159
|
end
|
158
160
|
end
|
159
161
|
|
@@ -162,7 +164,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
162
164
|
let(:expected) { [primary] }
|
163
165
|
|
164
166
|
it 'returns an array of the primary' do
|
165
|
-
expect(
|
167
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
166
168
|
end
|
167
169
|
end
|
168
170
|
end
|
@@ -178,7 +180,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
178
180
|
let(:candidates) { [far_primary] }
|
179
181
|
|
180
182
|
it 'returns array with far primary' do
|
181
|
-
expect(
|
183
|
+
expect(selector.send(:select, candidates)).to eq([far_primary])
|
182
184
|
end
|
183
185
|
end
|
184
186
|
|
@@ -186,7 +188,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
186
188
|
let(:candidates) { [far_secondary] }
|
187
189
|
|
188
190
|
it 'returns array with far primary' do
|
189
|
-
expect(
|
191
|
+
expect(selector.send(:select, candidates)).to eq([far_secondary])
|
190
192
|
end
|
191
193
|
|
192
194
|
end
|
@@ -201,7 +203,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
201
203
|
let(:expected) { [primary] }
|
202
204
|
|
203
205
|
it 'returns an array of the primary' do
|
204
|
-
expect(
|
206
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
205
207
|
end
|
206
208
|
end
|
207
209
|
|
@@ -210,7 +212,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
210
212
|
let(:expected) { [primary] }
|
211
213
|
|
212
214
|
it 'returns an array of the primary' do
|
213
|
-
expect(
|
215
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
214
216
|
end
|
215
217
|
end
|
216
218
|
|
@@ -219,7 +221,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
219
221
|
let(:expected) { [far_primary] }
|
220
222
|
|
221
223
|
it 'returns an array of the far primary' do
|
222
|
-
expect(
|
224
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
223
225
|
end
|
224
226
|
end
|
225
227
|
|
@@ -228,7 +230,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
228
230
|
let(:expected) { [far_primary] }
|
229
231
|
|
230
232
|
it 'returns an array of the far primary' do
|
231
|
-
expect(
|
233
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
232
234
|
end
|
233
235
|
end
|
234
236
|
|
@@ -239,7 +241,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
239
241
|
let(:expected) { [primary] }
|
240
242
|
|
241
243
|
it 'returns an array of the primary' do
|
242
|
-
expect(
|
244
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
243
245
|
end
|
244
246
|
end
|
245
247
|
|
@@ -248,7 +250,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
248
250
|
let(:expected) { [far_primary] }
|
249
251
|
|
250
252
|
it 'returns an array with primary' do
|
251
|
-
expect(
|
253
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
252
254
|
end
|
253
255
|
end
|
254
256
|
end
|
@@ -261,7 +263,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
261
263
|
let(:expected) { [secondary] }
|
262
264
|
|
263
265
|
it 'returns an array with the secondary' do
|
264
|
-
expect(
|
266
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
265
267
|
end
|
266
268
|
end
|
267
269
|
|
@@ -270,7 +272,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
270
272
|
let(:expected) { [secondary] }
|
271
273
|
|
272
274
|
it 'returns an array of the secondary' do
|
273
|
-
expect(
|
275
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
274
276
|
end
|
275
277
|
end
|
276
278
|
|
@@ -279,7 +281,7 @@ describe Mongo::ServerSelector::PrimaryPreferred do
|
|
279
281
|
let(:expected) { [secondary, secondary] }
|
280
282
|
|
281
283
|
it 'returns an array of the secondary' do
|
282
|
-
expect(
|
284
|
+
expect(selector.send(:select, candidates)).to eq(expected)
|
283
285
|
end
|
284
286
|
end
|
285
287
|
end
|