mongo 1.12.5 → 2.0.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/CONTRIBUTING.md +64 -0
- data/LICENSE +1 -1
- data/README.md +21 -126
- data/Rakefile +39 -21
- data/bin/mongo_console +6 -38
- data/lib/mongo/address/ipv4.rb +85 -0
- data/lib/mongo/address/ipv6.rb +85 -0
- data/lib/mongo/address/unix.rb +76 -0
- data/lib/mongo/address.rb +111 -0
- data/lib/mongo/auth/cr/conversation.rb +119 -0
- data/lib/mongo/auth/cr.rb +44 -0
- data/lib/mongo/auth/executable.rb +52 -0
- data/lib/mongo/auth/ldap/conversation.rb +92 -0
- data/lib/mongo/auth/ldap.rb +48 -0
- data/lib/mongo/auth/roles.rb +104 -0
- data/lib/mongo/auth/scram/conversation.rb +450 -0
- data/lib/mongo/auth/scram.rb +53 -0
- data/lib/mongo/auth/user/view.rb +102 -0
- data/lib/mongo/auth/user.rb +159 -0
- data/lib/mongo/auth/x509/conversation.rb +92 -0
- data/lib/mongo/auth/x509.rb +48 -0
- data/lib/mongo/auth.rb +108 -0
- data/lib/mongo/bulk_write/bulk_writable.rb +191 -0
- data/lib/mongo/bulk_write/deletable.rb +60 -0
- data/lib/mongo/bulk_write/insertable.rb +52 -0
- data/lib/mongo/bulk_write/ordered_bulk_write.rb +48 -0
- data/lib/mongo/bulk_write/replacable.rb +57 -0
- data/lib/mongo/bulk_write/unordered_bulk_write.rb +46 -0
- data/lib/mongo/bulk_write/updatable.rb +68 -0
- data/lib/mongo/bulk_write.rb +52 -0
- data/lib/mongo/client.rb +246 -0
- data/lib/mongo/cluster/topology/replica_set.rb +160 -0
- data/lib/mongo/cluster/topology/sharded.rb +132 -0
- data/lib/mongo/cluster/topology/standalone.rb +132 -0
- data/lib/mongo/cluster/topology/unknown.rb +155 -0
- data/lib/mongo/cluster/topology.rb +60 -0
- data/lib/mongo/cluster.rb +203 -0
- data/lib/mongo/collection/view/aggregation.rb +108 -0
- data/lib/mongo/collection/view/explainable.rb +49 -0
- data/lib/mongo/collection/view/immutable.rb +43 -0
- data/lib/mongo/collection/view/iterable.rb +48 -0
- data/lib/mongo/collection/view/map_reduce.rb +191 -0
- data/lib/mongo/collection/view/readable.rb +363 -0
- data/lib/mongo/collection/view/writable.rb +185 -0
- data/lib/mongo/collection/view.rb +169 -0
- data/lib/mongo/collection.rb +130 -1101
- data/lib/mongo/cursor.rb +78 -681
- data/lib/mongo/database/view.rb +101 -0
- data/lib/mongo/database.rb +224 -0
- data/lib/mongo/error/bulk_write_error.rb +41 -0
- data/lib/mongo/error/invalid_bulk_operation.rb +36 -0
- data/lib/mongo/error/invalid_bulk_operation_type.rb +36 -0
- data/lib/mongo/error/invalid_collection_name.rb +39 -0
- data/lib/mongo/error/invalid_database_name.rb +39 -0
- data/{test/replica_set/ssl_test.rb → lib/mongo/error/invalid_document.rb} +21 -14
- data/lib/mongo/error/invalid_file.rb +38 -0
- data/lib/mongo/error/invalid_nonce.rb +46 -0
- data/lib/mongo/error/invalid_replacement_document.rb +39 -0
- data/lib/mongo/error/invalid_signature.rb +47 -0
- data/{test/functional/ssl_test.rb → lib/mongo/error/invalid_update_document.rb} +22 -12
- data/lib/mongo/error/max_bson_size.rb +40 -0
- data/lib/mongo/error/max_message_size.rb +42 -0
- data/{test/functional/db_connection_test.rb → lib/mongo/error/multi_index_drop.rb} +17 -8
- data/lib/mongo/{utils.rb → error/need_primary_server.rb} +10 -6
- data/lib/mongo/{connection.rb → error/operation_failure.rb} +10 -6
- data/lib/mongo/error/parser.rb +77 -0
- data/lib/mongo/{connection/socket.rb → error/socket_error.rb} +10 -5
- data/lib/mongo/error/socket_timeout_error.rb +23 -0
- data/lib/mongo/error/unsupported_features.rb +43 -0
- data/lib/mongo/error.rb +82 -0
- data/lib/mongo/event/listeners.rb +63 -0
- data/lib/mongo/event/primary_elected.rb +53 -0
- data/lib/mongo/event/publisher.rb +42 -0
- data/lib/mongo/event/server_added.rb +53 -0
- data/lib/mongo/event/server_removed.rb +53 -0
- data/lib/mongo/event/subscriber.rb +41 -0
- data/lib/mongo/event.rb +40 -0
- data/lib/mongo/grid/file/chunk.rb +184 -0
- data/lib/mongo/grid/file/metadata.rb +229 -0
- data/lib/mongo/grid/file.rb +106 -0
- data/lib/mongo/grid/fs.rb +149 -0
- data/lib/mongo/{gridfs.rb → grid.rb} +3 -5
- data/lib/mongo/index/view.rb +261 -0
- data/lib/mongo/index.rb +64 -0
- data/lib/mongo/loggable.rb +126 -0
- data/lib/mongo/logger.rb +132 -0
- data/lib/mongo/operation/aggregate/result.rb +88 -0
- data/lib/mongo/operation/aggregate.rb +100 -0
- data/lib/mongo/operation/command.rb +62 -0
- data/lib/mongo/operation/executable.rb +105 -0
- data/lib/mongo/operation/kill_cursors.rb +39 -0
- data/lib/mongo/operation/limited.rb +37 -0
- data/lib/mongo/operation/list_collections/result.rb +114 -0
- data/lib/mongo/operation/list_indexes/result.rb +118 -0
- data/lib/mongo/operation/map_reduce/result.rb +122 -0
- data/lib/mongo/operation/map_reduce.rb +96 -0
- data/lib/mongo/operation/read/collections_info.rb +67 -0
- data/lib/mongo/operation/read/get_more.rb +71 -0
- data/lib/mongo/operation/read/indexes.rb +68 -0
- data/lib/mongo/operation/read/list_collections.rb +75 -0
- data/lib/mongo/operation/read/list_indexes.rb +77 -0
- data/lib/mongo/operation/read/query.rb +71 -0
- data/lib/mongo/{functional.rb → operation/read.rb} +7 -7
- data/lib/mongo/operation/read_preferrable.rb +34 -0
- data/lib/mongo/operation/result.rb +259 -0
- data/lib/mongo/operation/specifiable.rb +397 -0
- data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +75 -0
- data/lib/mongo/operation/write/bulk/bulk_delete.rb +144 -0
- data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +68 -0
- data/lib/mongo/operation/write/bulk/bulk_insert.rb +129 -0
- data/lib/mongo/operation/write/bulk/bulk_mergable.rb +67 -0
- data/lib/mongo/operation/write/bulk/bulk_update/result.rb +162 -0
- data/lib/mongo/operation/write/bulk/bulk_update.rb +153 -0
- data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +83 -0
- data/lib/mongo/operation/write/bulk.rb +17 -0
- data/lib/mongo/operation/write/command/create_index.rb +50 -0
- data/lib/mongo/operation/write/command/create_user.rb +43 -0
- data/lib/mongo/operation/write/command/delete.rb +56 -0
- data/lib/mongo/operation/write/command/drop_index.rb +51 -0
- data/lib/mongo/operation/write/command/insert.rb +55 -0
- data/lib/mongo/operation/write/command/remove_user.rb +42 -0
- data/lib/mongo/operation/write/command/update.rb +60 -0
- data/lib/mongo/operation/write/command/writable.rb +61 -0
- data/lib/mongo/operation/write/command.rb +22 -0
- data/lib/mongo/operation/write/create_index.rb +89 -0
- data/lib/mongo/operation/write/create_user.rb +75 -0
- data/lib/mongo/operation/write/delete/result.rb +40 -0
- data/lib/mongo/operation/write/delete.rb +93 -0
- data/lib/mongo/operation/write/drop_index.rb +62 -0
- data/lib/mongo/{utils/thread_local_variable_manager.rb → operation/write/insert/result.rb} +15 -8
- data/lib/mongo/operation/write/insert.rb +90 -0
- data/lib/mongo/operation/write/remove_user.rb +70 -0
- data/lib/mongo/operation/write/update/result.rb +160 -0
- data/lib/mongo/operation/write/update.rb +103 -0
- data/lib/mongo/{connection/socket/socket_util.rb → operation/write.rb} +10 -24
- data/lib/mongo/operation.rb +25 -0
- data/lib/mongo/options/mapper.rb +78 -0
- data/lib/mongo/options.rb +15 -0
- data/lib/mongo/protocol/bit_vector.rb +61 -0
- data/lib/mongo/protocol/delete.rb +94 -0
- data/lib/mongo/protocol/get_more.rb +99 -0
- data/lib/mongo/protocol/insert.rb +99 -0
- data/lib/mongo/protocol/kill_cursors.rb +74 -0
- data/lib/mongo/protocol/message.rb +252 -0
- data/lib/mongo/protocol/query.rb +147 -0
- data/lib/mongo/protocol/reply.rb +72 -0
- data/lib/mongo/protocol/serializers.rb +180 -0
- data/lib/mongo/protocol/update.rb +111 -0
- data/lib/mongo/protocol.rb +15 -0
- data/lib/mongo/server/connectable.rb +110 -0
- data/lib/mongo/server/connection.rb +134 -0
- data/lib/mongo/server/connection_pool/queue.rb +182 -0
- data/lib/mongo/server/connection_pool.rb +141 -0
- data/lib/mongo/server/context.rb +66 -0
- data/lib/mongo/server/description/features.rb +85 -0
- data/lib/mongo/server/description/inspector/primary_elected.rb +58 -0
- data/lib/mongo/server/description/inspector/server_added.rb +59 -0
- data/lib/mongo/server/description/inspector/server_removed.rb +59 -0
- data/lib/mongo/server/description/inspector.rb +79 -0
- data/lib/mongo/server/description.rb +450 -0
- data/lib/mongo/server/monitor/connection.rb +89 -0
- data/lib/mongo/server/monitor.rb +176 -0
- data/lib/mongo/server.rb +163 -0
- data/lib/mongo/server_selector/nearest.rb +94 -0
- data/lib/mongo/server_selector/primary.rb +88 -0
- data/lib/mongo/server_selector/primary_preferred.rb +94 -0
- data/lib/mongo/server_selector/secondary.rb +91 -0
- data/lib/mongo/server_selector/secondary_preferred.rb +96 -0
- data/lib/mongo/server_selector/selectable.rb +209 -0
- data/lib/mongo/server_selector.rb +81 -0
- data/lib/mongo/socket/ssl.rb +130 -0
- data/lib/mongo/socket/tcp.rb +69 -0
- data/lib/mongo/socket/unix.rb +64 -0
- data/lib/mongo/socket.rb +179 -0
- data/lib/mongo/uri.rb +504 -0
- data/lib/mongo/version.rb +21 -0
- data/lib/mongo/write_concern/acknowledged.rb +52 -0
- data/lib/mongo/write_concern/normalizable.rb +51 -0
- data/lib/mongo/write_concern/unacknowledged.rb +55 -0
- data/lib/mongo/write_concern.rb +99 -0
- data/lib/mongo.rb +24 -82
- data/mongo.gemspec +17 -14
- data/spec/certificates/ca.pem +17 -0
- data/spec/certificates/client.pem +101 -0
- data/spec/certificates/crl.pem +10 -0
- data/spec/certificates/crl_client_revoked.pem +12 -0
- data/spec/certificates/password_protected.pem +51 -0
- data/spec/certificates/server.pem +34 -0
- data/spec/mongo/address/ipv4_spec.rb +74 -0
- data/spec/mongo/address/ipv6_spec.rb +74 -0
- data/spec/mongo/address/unix_spec.rb +30 -0
- data/spec/mongo/address_spec.rb +206 -0
- data/spec/mongo/auth/cr_spec.rb +59 -0
- data/spec/mongo/auth/ldap_spec.rb +40 -0
- data/spec/mongo/auth/scram/conversation_spec.rb +197 -0
- data/spec/mongo/auth/scram_spec.rb +55 -0
- data/spec/mongo/auth/user/view_spec.rb +76 -0
- data/spec/mongo/auth/user_spec.rb +190 -0
- data/spec/mongo/auth/x509_spec.rb +40 -0
- data/spec/mongo/auth_spec.rb +65 -0
- data/spec/mongo/bulk/bulk_write_spec.rb +262 -0
- data/spec/mongo/client_spec.rb +564 -0
- data/spec/mongo/cluster/topology/replica_set_spec.rb +101 -0
- data/spec/mongo/cluster/topology/sharded_spec.rb +74 -0
- data/spec/mongo/cluster/topology/standalone_spec.rb +79 -0
- data/spec/mongo/cluster/topology_spec.rb +65 -0
- data/spec/mongo/cluster_spec.rb +129 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +148 -0
- data/spec/mongo/collection/view/explainable_spec.rb +32 -0
- data/spec/mongo/collection/view/map_reduce_spec.rb +242 -0
- data/spec/mongo/collection/view/readable_spec.rb +603 -0
- data/spec/mongo/collection/view/writable_spec.rb +679 -0
- data/spec/mongo/collection/view_spec.rb +530 -0
- data/spec/mongo/collection_spec.rb +362 -0
- data/spec/mongo/crud_spec.rb +42 -0
- data/spec/mongo/cursor_spec.rb +295 -0
- data/spec/mongo/database_spec.rb +302 -0
- data/spec/mongo/error/parser_spec.rb +119 -0
- data/spec/mongo/event/publisher_spec.rb +50 -0
- data/spec/mongo/event/subscriber_spec.rb +34 -0
- data/spec/mongo/grid/file/chunk_spec.rb +226 -0
- data/spec/mongo/grid/file/metadata_spec.rb +92 -0
- data/spec/mongo/grid/file_spec.rb +172 -0
- data/spec/mongo/grid/fs_spec.rb +129 -0
- data/spec/mongo/index/view_spec.rb +330 -0
- data/spec/mongo/loggable_spec.rb +62 -0
- data/spec/mongo/logger_spec.rb +97 -0
- data/spec/mongo/operation/aggregate/result_spec.rb +80 -0
- data/spec/mongo/operation/aggregate_spec.rb +127 -0
- data/spec/mongo/operation/command_spec.rb +98 -0
- data/spec/mongo/operation/kill_cursors_spec.rb +66 -0
- data/spec/mongo/operation/limited_spec.rb +50 -0
- data/spec/mongo/operation/map_reduce_spec.rb +143 -0
- data/spec/mongo/operation/read/collections_info_spec.rb +40 -0
- data/spec/mongo/operation/read/get_more_spec.rb +81 -0
- data/spec/mongo/operation/read/indexes_spec.rb +31 -0
- data/spec/mongo/operation/read/query_spec.rb +84 -0
- data/spec/mongo/operation/result_spec.rb +275 -0
- data/spec/mongo/operation/specifiable_spec.rb +53 -0
- data/spec/mongo/operation/write/bulk_delete_spec.rb +235 -0
- data/spec/mongo/operation/write/bulk_insert_spec.rb +235 -0
- data/spec/mongo/operation/write/bulk_update_spec.rb +236 -0
- data/spec/mongo/operation/write/command/delete_spec.rb +103 -0
- data/spec/mongo/operation/write/command/insert_spec.rb +103 -0
- data/spec/mongo/operation/write/command/update_spec.rb +109 -0
- data/spec/mongo/operation/write/create_index_spec.rb +63 -0
- data/spec/mongo/operation/write/create_user_spec.rb +44 -0
- data/spec/mongo/operation/write/delete_spec.rb +186 -0
- data/spec/mongo/operation/write/drop_index_spec.rb +51 -0
- data/spec/mongo/operation/write/insert_spec.rb +244 -0
- data/spec/mongo/operation/write/remove_user_spec.rb +46 -0
- data/spec/mongo/operation/write/response_spec.rb +85 -0
- data/spec/mongo/operation/write/update_spec.rb +228 -0
- data/spec/mongo/protocol/delete_spec.rb +167 -0
- data/spec/mongo/protocol/get_more_spec.rb +146 -0
- data/spec/mongo/protocol/insert_spec.rb +161 -0
- data/spec/mongo/protocol/kill_cursors_spec.rb +101 -0
- data/spec/mongo/protocol/query_spec.rb +285 -0
- data/spec/mongo/protocol/reply_spec.rb +157 -0
- data/spec/mongo/protocol/update_spec.rb +186 -0
- data/spec/mongo/server/connection_pool/queue_spec.rb +170 -0
- data/spec/mongo/server/connection_pool_spec.rb +120 -0
- data/spec/mongo/server/connection_spec.rb +312 -0
- data/spec/mongo/server/description/features_spec.rb +138 -0
- data/spec/mongo/server/description/inspector/primary_elected_spec.rb +94 -0
- data/spec/mongo/server/description/inspector/server_added_spec.rb +92 -0
- data/spec/mongo/server/description/inspector/server_removed_spec.rb +95 -0
- data/spec/mongo/server/description_spec.rb +510 -0
- data/spec/mongo/server/monitor_spec.rb +144 -0
- data/spec/mongo/server_discovery_and_monitoring_spec.rb +103 -0
- data/spec/mongo/server_selection_rtt_spec.rb +104 -0
- data/spec/mongo/server_selection_spec.rb +89 -0
- data/spec/mongo/server_selector/nearest_spec.rb +250 -0
- data/spec/mongo/server_selector/primary_preferred_spec.rb +290 -0
- data/spec/mongo/server_selector/primary_spec.rb +114 -0
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +252 -0
- data/spec/mongo/server_selector/secondary_spec.rb +196 -0
- data/spec/mongo/server_selector_spec.rb +101 -0
- data/spec/mongo/server_spec.rb +131 -0
- data/spec/mongo/uri_spec.rb +517 -0
- data/spec/mongo/write_concern/acknowledged_spec.rb +44 -0
- data/spec/mongo/write_concern/unacknowledged_spec.rb +15 -0
- data/spec/spec_helper.rb +133 -0
- data/spec/support/authorization.rb +247 -0
- data/spec/support/crud/read.rb +144 -0
- data/spec/support/crud/write.rb +214 -0
- data/spec/support/crud.rb +203 -0
- data/spec/support/crud_tests/read/aggregate.yml +43 -0
- data/spec/support/crud_tests/read/count.yml +37 -0
- data/spec/support/crud_tests/read/distinct.yml +33 -0
- data/spec/support/crud_tests/read/find.yml +50 -0
- data/spec/support/crud_tests/write/deleteMany.yml +36 -0
- data/spec/support/crud_tests/write/deleteOne.yml +49 -0
- data/spec/support/crud_tests/write/findOneAndDelete.yml +54 -0
- data/spec/support/crud_tests/write/findOneAndReplace.yml +153 -0
- data/spec/support/crud_tests/write/findOneAndUpdate.yml +161 -0
- data/spec/support/crud_tests/write/insertMany.yml +24 -0
- data/spec/support/crud_tests/write/insertOne.yml +19 -0
- data/spec/support/crud_tests/write/replaceOne.yml +96 -0
- data/spec/support/crud_tests/write/updateMany.yml +83 -0
- data/spec/support/crud_tests/write/updateOne.yml +80 -0
- data/spec/support/helpers.rb +140 -0
- data/spec/support/matchers.rb +37 -0
- data/spec/support/sdam/rs/discover_arbiters.yml +41 -0
- data/spec/support/sdam/rs/discover_passives.yml +41 -0
- data/spec/support/sdam/rs/discover_primary.yml +40 -0
- data/spec/support/sdam/rs/discover_secondary.yml +41 -0
- data/spec/support/sdam/rs/discovery.yml +195 -0
- data/spec/support/sdam/rs/ghost_discovered.yml +39 -0
- data/spec/support/sdam/rs/hosts_differ_from_seeds.yml +34 -0
- data/spec/support/sdam/rs/member_reconfig.yml +68 -0
- data/spec/support/sdam/rs/member_standalone.yml +60 -0
- data/spec/support/sdam/rs/new_primary.yml +74 -0
- data/spec/support/sdam/rs/new_primary_wrong_set_name.yml +71 -0
- data/spec/support/sdam/rs/non_rs_member.yml +31 -0
- data/spec/support/sdam/rs/normalize_case.yml +49 -0
- data/spec/support/sdam/rs/primary_becomes_standalone.yml +52 -0
- data/spec/support/sdam/rs/primary_changes_set_name.yml +57 -0
- data/spec/support/sdam/rs/primary_disconnect.yml +56 -0
- data/spec/support/sdam/rs/primary_wrong_set_name.yml +27 -0
- data/spec/support/sdam/rs/response_from_removed.yml +63 -0
- data/spec/support/sdam/rs/rsother_discovered.yml +41 -0
- data/spec/support/sdam/rs/sec_not_auth.yml +49 -0
- data/spec/support/sdam/rs/secondary_wrong_set_name.yml +28 -0
- data/spec/support/sdam/rs/secondary_wrong_set_name_with_primary.yml +69 -0
- data/spec/support/sdam/rs/unexpected_mongos.yml +26 -0
- data/spec/support/sdam/rs/wrong_set_name.yml +35 -0
- data/spec/support/sdam/sharded/multiple_mongoses.yml +46 -0
- data/spec/support/sdam/sharded/non_mongos_removed.yml +41 -0
- data/spec/support/sdam/sharded/normalize_uri_case.yml +32 -0
- data/spec/support/sdam/single/direct_connection_external_ip.yml +34 -0
- data/spec/support/sdam/single/direct_connection_mongos.yml +33 -0
- data/spec/support/sdam/single/direct_connection_rsarbiter.yml +35 -0
- data/spec/support/sdam/single/direct_connection_rsprimary.yml +34 -0
- data/spec/support/sdam/single/direct_connection_rssecondary.yml +35 -0
- data/spec/support/sdam/single/direct_connection_slave.yml +32 -0
- data/spec/support/sdam/single/direct_connection_standalone.yml +32 -0
- data/spec/support/sdam/single/not_ok_response.yml +39 -0
- data/spec/support/sdam/single/standalone_removed.yml +32 -0
- data/spec/support/sdam/single/unavailable_seed.yml +28 -0
- data/spec/support/server_discovery_and_monitoring.rb +167 -0
- data/spec/support/server_selection/rtt/first_value.yml +4 -0
- data/spec/support/server_selection/rtt/first_value_zero.yml +4 -0
- data/spec/support/server_selection/rtt/value_test_1.yml +4 -0
- data/spec/support/server_selection/rtt/value_test_2.yml +4 -0
- data/spec/support/server_selection/rtt/value_test_3.yml +4 -0
- data/spec/support/server_selection/rtt/value_test_4.yml +4 -0
- data/spec/support/server_selection/rtt/value_test_5.yml +4 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest.yml +26 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +21 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Primary.yml +21 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +26 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +21 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary.yml +26 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +26 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +21 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +21 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest.yml +33 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +26 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Primary.yml +29 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +29 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +29 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary.yml +31 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred.yml +31 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred_non_matching.yml +29 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary_non_matching.yml +26 -0
- data/spec/support/server_selection/selection/Sharded/read/SecondaryPreferred.yml +26 -0
- data/spec/support/server_selection/selection/Single/read/SecondaryPreferred.yml +19 -0
- data/spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml +11 -0
- data/spec/support/server_selection.rb +157 -0
- data/spec/support/server_selection_rtt.rb +41 -0
- data/spec/support/shared/bulk_write.rb +535 -0
- data/spec/support/shared/cursor.rb +38 -0
- data/spec/support/shared/operation.rb +77 -0
- data/spec/support/shared/protocol.rb +31 -0
- data/spec/support/shared/server_selector.rb +111 -0
- data/spec/support/shared/socket.rb +82 -0
- data/spec/support/travis.rb +14 -0
- data.tar.gz.sig +2 -3
- metadata +583 -186
- metadata.gz.sig +0 -0
- data/VERSION +0 -1
- data/lib/mongo/bulk_write_collection_view.rb +0 -387
- data/lib/mongo/collection_writer.rb +0 -364
- data/lib/mongo/connection/node.rb +0 -249
- data/lib/mongo/connection/pool.rb +0 -340
- data/lib/mongo/connection/pool_manager.rb +0 -320
- data/lib/mongo/connection/sharding_pool_manager.rb +0 -67
- data/lib/mongo/connection/socket/ssl_socket.rb +0 -95
- data/lib/mongo/connection/socket/tcp_socket.rb +0 -87
- data/lib/mongo/connection/socket/unix_socket.rb +0 -39
- data/lib/mongo/db.rb +0 -808
- data/lib/mongo/exception.rb +0 -145
- data/lib/mongo/functional/authentication.rb +0 -455
- data/lib/mongo/functional/logging.rb +0 -85
- data/lib/mongo/functional/read_preference.rb +0 -183
- data/lib/mongo/functional/scram.rb +0 -556
- data/lib/mongo/functional/uri_parser.rb +0 -409
- data/lib/mongo/functional/write_concern.rb +0 -66
- data/lib/mongo/gridfs/grid.rb +0 -112
- data/lib/mongo/gridfs/grid_ext.rb +0 -53
- data/lib/mongo/gridfs/grid_file_system.rb +0 -163
- data/lib/mongo/gridfs/grid_io.rb +0 -484
- data/lib/mongo/legacy.rb +0 -140
- data/lib/mongo/mongo_client.rb +0 -697
- data/lib/mongo/mongo_replica_set_client.rb +0 -535
- data/lib/mongo/mongo_sharded_client.rb +0 -159
- data/lib/mongo/networking.rb +0 -372
- data/lib/mongo/utils/conversions.rb +0 -110
- data/lib/mongo/utils/core_ext.rb +0 -70
- data/lib/mongo/utils/server_version.rb +0 -69
- data/lib/mongo/utils/support.rb +0 -80
- data/test/functional/authentication_test.rb +0 -39
- data/test/functional/bulk_api_stress_test.rb +0 -133
- data/test/functional/bulk_write_collection_view_test.rb +0 -1198
- data/test/functional/client_test.rb +0 -627
- data/test/functional/collection_test.rb +0 -2175
- data/test/functional/collection_writer_test.rb +0 -83
- data/test/functional/conversions_test.rb +0 -163
- data/test/functional/cursor_fail_test.rb +0 -57
- data/test/functional/cursor_message_test.rb +0 -56
- data/test/functional/cursor_test.rb +0 -683
- data/test/functional/db_api_test.rb +0 -835
- data/test/functional/db_test.rb +0 -348
- data/test/functional/grid_file_system_test.rb +0 -285
- data/test/functional/grid_io_test.rb +0 -252
- data/test/functional/grid_test.rb +0 -273
- data/test/functional/pool_test.rb +0 -136
- data/test/functional/safe_test.rb +0 -98
- data/test/functional/support_test.rb +0 -62
- data/test/functional/timeout_test.rb +0 -60
- data/test/functional/uri_test.rb +0 -446
- data/test/functional/write_concern_test.rb +0 -118
- data/test/helpers/general.rb +0 -50
- data/test/helpers/test_unit.rb +0 -476
- data/test/replica_set/authentication_test.rb +0 -37
- data/test/replica_set/basic_test.rb +0 -189
- data/test/replica_set/client_test.rb +0 -393
- data/test/replica_set/connection_test.rb +0 -138
- data/test/replica_set/count_test.rb +0 -66
- data/test/replica_set/cursor_test.rb +0 -220
- data/test/replica_set/insert_test.rb +0 -157
- data/test/replica_set/max_values_test.rb +0 -151
- data/test/replica_set/pinning_test.rb +0 -105
- data/test/replica_set/query_test.rb +0 -73
- data/test/replica_set/read_preference_test.rb +0 -219
- data/test/replica_set/refresh_test.rb +0 -211
- data/test/replica_set/replication_ack_test.rb +0 -95
- data/test/sharded_cluster/basic_test.rb +0 -203
- data/test/shared/authentication/basic_auth_shared.rb +0 -260
- data/test/shared/authentication/bulk_api_auth_shared.rb +0 -249
- data/test/shared/authentication/gssapi_shared.rb +0 -176
- data/test/shared/authentication/sasl_plain_shared.rb +0 -96
- data/test/shared/authentication/scram_shared.rb +0 -92
- data/test/shared/ssl_shared.rb +0 -235
- data/test/test_helper.rb +0 -61
- data/test/threading/basic_test.rb +0 -120
- data/test/tools/mongo_config.rb +0 -708
- data/test/tools/mongo_config_test.rb +0 -160
- data/test/unit/client_test.rb +0 -381
- data/test/unit/collection_test.rb +0 -166
- data/test/unit/connection_test.rb +0 -335
- data/test/unit/cursor_test.rb +0 -307
- data/test/unit/db_test.rb +0 -136
- data/test/unit/grid_test.rb +0 -76
- data/test/unit/mongo_sharded_client_test.rb +0 -48
- data/test/unit/node_test.rb +0 -93
- data/test/unit/pool_manager_test.rb +0 -111
- data/test/unit/read_pref_test.rb +0 -406
- data/test/unit/read_test.rb +0 -159
- data/test/unit/safe_test.rb +0 -158
- data/test/unit/sharding_pool_manager_test.rb +0 -84
- data/test/unit/write_concern_test.rb +0 -175
data/test/unit/db_test.rb
DELETED
@@ -1,136 +0,0 @@
|
|
1
|
-
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'test_helper'
|
16
|
-
|
17
|
-
def insert_message(db, documents)
|
18
|
-
documents = [documents] unless documents.is_a?(Array)
|
19
|
-
message = ByteBuffer.new
|
20
|
-
message.put_int(0)
|
21
|
-
Mongo::BSON_CODER.serialize_cstr(message, "#{db.name}.test")
|
22
|
-
documents.each { |doc| message.put_array(Mongo::BSON_CODER.new.serialize(doc, true).to_a) }
|
23
|
-
message = db.add_message_headers(Mongo::Constants::OP_INSERT, message)
|
24
|
-
end
|
25
|
-
|
26
|
-
class DBUnitTest < Test::Unit::TestCase
|
27
|
-
context "DBTest: " do
|
28
|
-
context "DB commands" do
|
29
|
-
setup do
|
30
|
-
@client = stub()
|
31
|
-
@client.stubs(:write_concern).returns({})
|
32
|
-
@client.stubs(:read).returns(:primary)
|
33
|
-
@client.stubs(:tag_sets)
|
34
|
-
@client.stubs(:acceptable_latency)
|
35
|
-
@client.stubs(:add_auth).returns({})
|
36
|
-
@db = DB.new("testing", @client)
|
37
|
-
@db.stubs(:safe)
|
38
|
-
@db.stubs(:read)
|
39
|
-
@db.stubs(:tag_sets)
|
40
|
-
@db.stubs(:acceptable_latency)
|
41
|
-
@collection = mock()
|
42
|
-
@db.stubs(:system_command_collection).returns(@collection)
|
43
|
-
end
|
44
|
-
|
45
|
-
should "raise an error if given a hash with more than one key" do
|
46
|
-
if RUBY_VERSION < '1.9'
|
47
|
-
assert_raise MongoArgumentError do
|
48
|
-
@db.command(:buildinfo => 1, :somekey => 1)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
should "raise an error if the selector is omitted" do
|
54
|
-
assert_raise MongoArgumentError do
|
55
|
-
@db.command({}, :check_response => true)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
should "not include named nil opts in selector" do
|
60
|
-
@cursor = mock(:next_document => {"ok" => 1})
|
61
|
-
Cursor.expects(:new).with(@collection, :limit => -1,
|
62
|
-
:selector => {:ping => 1}, :socket => nil).returns(@cursor)
|
63
|
-
command = {:ping => 1}
|
64
|
-
@db.command(command, :socket => nil)
|
65
|
-
end
|
66
|
-
|
67
|
-
should "create the proper cursor" do
|
68
|
-
@cursor = mock(:next_document => {"ok" => 1})
|
69
|
-
Cursor.expects(:new).with(@collection,
|
70
|
-
:limit => -1, :selector => {:buildinfo => 1}).returns(@cursor)
|
71
|
-
command = {:buildinfo => 1}
|
72
|
-
@db.command(command, :check_response => true)
|
73
|
-
end
|
74
|
-
|
75
|
-
should "raise an error when the command fails" do
|
76
|
-
@cursor = mock(:next_document => {"ok" => 0})
|
77
|
-
Cursor.expects(:new).with(@collection,
|
78
|
-
:limit => -1, :selector => {:buildinfo => 1}).returns(@cursor)
|
79
|
-
assert_raise OperationFailure do
|
80
|
-
command = {:buildinfo => 1}
|
81
|
-
@db.command(command, :check_response => true)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
should "pass on the comment" do
|
86
|
-
@cursor = mock(:next_document => {"ok" => 0})
|
87
|
-
Cursor.expects(:new).with(@collection,
|
88
|
-
:limit => -1, :selector => {:buildinfo => 1},
|
89
|
-
:comment => "my comment").returns(@cursor)
|
90
|
-
assert_raise OperationFailure do
|
91
|
-
command = {:buildinfo => 1}
|
92
|
-
@db.command(command, :check_response => true, :comment => 'my comment')
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
should "raise an error if collection creation fails" do
|
97
|
-
@db.expects(:command).returns({'ok' => 0})
|
98
|
-
assert_raise Mongo::MongoDBError do
|
99
|
-
@db.create_collection("foo")
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
should "raise an error if getlasterror fails" do
|
104
|
-
@db.expects(:command).returns({})
|
105
|
-
assert_raise Mongo::MongoDBError do
|
106
|
-
@db.get_last_error
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
should "raise an error if drop_index fails" do
|
111
|
-
@db.expects(:command).returns({})
|
112
|
-
assert_raise Mongo::MongoDBError do
|
113
|
-
@db.drop_index("foo", "bar")
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
should "raise an error if set_profiling_level fails" do
|
118
|
-
@db.expects(:command).returns({})
|
119
|
-
assert_raise Mongo::MongoDBError do
|
120
|
-
@db.profiling_level = :slow_only
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
should "warn when save_auth is not nil" do
|
125
|
-
assert @db.expects(:warn).with(regexp_matches(/\[DEPRECATED\] Disabling the 'save_auth' option/))
|
126
|
-
@db.authenticate('foo', 'bar', false)
|
127
|
-
end
|
128
|
-
|
129
|
-
should "allow extra authentication options" do
|
130
|
-
extra_opts = { :service_name => 'example', :canonicalize_host_name => true }
|
131
|
-
assert @client.expects(:add_auth).with(@db.name, 'emily', nil, nil, 'GSSAPI', extra_opts)
|
132
|
-
@db.authenticate('emily', nil, nil, nil, 'GSSAPI', extra_opts)
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
data/test/unit/grid_test.rb
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'test_helper'
|
16
|
-
|
17
|
-
class GridUnitTest < Test::Unit::TestCase
|
18
|
-
|
19
|
-
context "GridFS: " do
|
20
|
-
setup do
|
21
|
-
@client = stub()
|
22
|
-
@client.stubs(:write_concern).returns({})
|
23
|
-
@client.stubs(:read).returns(:primary)
|
24
|
-
@client.stubs(:tag_sets)
|
25
|
-
@client.stubs(:acceptable_latency)
|
26
|
-
@db = DB.new("testing", @client)
|
27
|
-
@files = mock()
|
28
|
-
@chunks = mock()
|
29
|
-
|
30
|
-
@db.stubs(:[]).with('fs.files').returns(@files)
|
31
|
-
@db.stubs(:[]).with('fs.chunks').returns(@chunks)
|
32
|
-
@db.stubs(:safe)
|
33
|
-
@db.stubs(:read).returns(:primary)
|
34
|
-
end
|
35
|
-
|
36
|
-
context "Grid classes with standard connections" do
|
37
|
-
setup do
|
38
|
-
@chunks.expects(:ensure_index)
|
39
|
-
end
|
40
|
-
|
41
|
-
should "create indexes for Grid" do
|
42
|
-
Grid.new(@db)
|
43
|
-
end
|
44
|
-
|
45
|
-
should "create indexes for GridFileSystem" do
|
46
|
-
@files.expects(:ensure_index)
|
47
|
-
GridFileSystem.new(@db)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
context "Grid classes with slave connection" do
|
52
|
-
setup do
|
53
|
-
@chunks.stubs(:ensure_index).raises(Mongo::ConnectionFailure)
|
54
|
-
@files.stubs(:ensure_index).raises(Mongo::ConnectionFailure)
|
55
|
-
end
|
56
|
-
|
57
|
-
should "not create indexes for Grid" do
|
58
|
-
grid = Grid.new(@db)
|
59
|
-
data = "hello world!"
|
60
|
-
assert_raise Mongo::ConnectionFailure do
|
61
|
-
grid.put(data)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
should "not create indexes for GridFileSystem" do
|
66
|
-
gridfs = GridFileSystem.new(@db)
|
67
|
-
data = "hello world!"
|
68
|
-
assert_raise Mongo::ConnectionFailure do
|
69
|
-
gridfs.open('image.jpg', 'w') do |f|
|
70
|
-
f.write data
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require "test_helper"
|
16
|
-
|
17
|
-
class MongoShardedClientUnitTest < Test::Unit::TestCase
|
18
|
-
include Mongo
|
19
|
-
|
20
|
-
def test_initialize_with_single_mongos_uri
|
21
|
-
uri = "mongodb://localhost:27017"
|
22
|
-
with_preserved_env_uri(uri) do
|
23
|
-
client = MongoShardedClient.new(:connect => false)
|
24
|
-
assert_equal [[ "localhost", 27017 ]], client.seeds
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_initialize_with_multiple_mongos_uris
|
29
|
-
uri = "mongodb://localhost:27017,localhost:27018"
|
30
|
-
with_preserved_env_uri(uri) do
|
31
|
-
client = MongoShardedClient.new(:connect => false)
|
32
|
-
assert_equal [[ "localhost", 27017 ], [ "localhost", 27018 ]], client.seeds
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_from_uri_with_string
|
37
|
-
client = MongoShardedClient.from_uri("mongodb://localhost:27017,localhost:27018", :connect => false)
|
38
|
-
assert_equal [[ "localhost", 27017 ], [ "localhost", 27018 ]], client.seeds
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_from_uri_with_env_variable
|
42
|
-
uri = "mongodb://localhost:27017,localhost:27018"
|
43
|
-
with_preserved_env_uri(uri) do
|
44
|
-
client = MongoShardedClient.from_uri(nil, :connect => false)
|
45
|
-
assert_equal [[ "localhost", 27017 ], [ "localhost", 27018 ]], client.seeds
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
data/test/unit/node_test.rb
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'test_helper'
|
16
|
-
|
17
|
-
class NodeUnitTest < Test::Unit::TestCase
|
18
|
-
|
19
|
-
def setup
|
20
|
-
@client = stub()
|
21
|
-
manager = mock('pool_manager')
|
22
|
-
manager.stubs(:update_max_sizes)
|
23
|
-
@client.stubs(:local_manager).returns(manager)
|
24
|
-
end
|
25
|
-
|
26
|
-
should "refuse to connect to node without 'hosts' key" do
|
27
|
-
tcp = mock()
|
28
|
-
node = Node.new(@client, ['localhost', 27017])
|
29
|
-
tcp.stubs(:new).returns(new_mock_socket)
|
30
|
-
@client.stubs(:socket_class).returns(tcp)
|
31
|
-
|
32
|
-
admin_db = new_mock_db
|
33
|
-
admin_db.stubs(:command).returns({'ok' => 1, 'ismaster' => 1})
|
34
|
-
@client.stubs(:[]).with('admin').returns(admin_db)
|
35
|
-
@client.stubs(:op_timeout).returns(nil)
|
36
|
-
@client.stubs(:connect_timeout).returns(nil)
|
37
|
-
@client.expects(:log)
|
38
|
-
@client.expects(:mongos?).returns(false)
|
39
|
-
@client.stubs(:socket_opts)
|
40
|
-
|
41
|
-
assert node.connect
|
42
|
-
node.config
|
43
|
-
end
|
44
|
-
|
45
|
-
should "load a node from an array" do
|
46
|
-
node = Node.new(@client, ['power.level.com', 9001])
|
47
|
-
assert_equal 'power.level.com', node.host
|
48
|
-
assert_equal 9001, node.port
|
49
|
-
assert_equal 'power.level.com:9001', node.address
|
50
|
-
end
|
51
|
-
|
52
|
-
should "should default the port for an array" do
|
53
|
-
node = Node.new(@client, ['power.level.com'])
|
54
|
-
assert_equal 'power.level.com', node.host
|
55
|
-
assert_equal MongoClient::DEFAULT_PORT, node.port
|
56
|
-
assert_equal "power.level.com:#{MongoClient::DEFAULT_PORT}", node.address
|
57
|
-
end
|
58
|
-
|
59
|
-
should "load a node from a string" do
|
60
|
-
node = Node.new(@client, 'localhost:1234')
|
61
|
-
assert_equal 'localhost', node.host
|
62
|
-
assert_equal 1234, node.port
|
63
|
-
assert_equal 'localhost:1234', node.address
|
64
|
-
end
|
65
|
-
|
66
|
-
should "should default the port for a string" do
|
67
|
-
node = Node.new(@client, '192.168.0.1')
|
68
|
-
assert_equal '192.168.0.1', node.host
|
69
|
-
assert_equal MongoClient::DEFAULT_PORT, node.port
|
70
|
-
assert_equal "192.168.0.1:#{MongoClient::DEFAULT_PORT}", node.address
|
71
|
-
end
|
72
|
-
|
73
|
-
should "two nodes with the same address should be equal" do
|
74
|
-
assert_equal Node.new(@client, '192.168.0.1'),
|
75
|
-
Node.new(@client, ['192.168.0.1', MongoClient::DEFAULT_PORT])
|
76
|
-
end
|
77
|
-
|
78
|
-
should "two nodes with the same address should have the same hash" do
|
79
|
-
assert_equal Node.new(@client, '192.168.0.1').hash,
|
80
|
-
Node.new(@client, ['192.168.0.1', MongoClient::DEFAULT_PORT]).hash
|
81
|
-
end
|
82
|
-
|
83
|
-
should "two nodes with different addresses should not be equal" do
|
84
|
-
assert_not_equal Node.new(@client, '192.168.0.2'),
|
85
|
-
Node.new(@client, ['192.168.0.1', MongoClient::DEFAULT_PORT])
|
86
|
-
end
|
87
|
-
|
88
|
-
should "two nodes with the same address should have the same hash negate" do
|
89
|
-
assert_not_equal Node.new(@client, '192.168.0.1').hash,
|
90
|
-
Node.new(@client, '1239.33.4.2393:29949').hash
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
@@ -1,111 +0,0 @@
|
|
1
|
-
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'test_helper'
|
16
|
-
include Mongo
|
17
|
-
|
18
|
-
class PoolManagerUnitTest < Test::Unit::TestCase
|
19
|
-
|
20
|
-
context "Initialization: " do
|
21
|
-
|
22
|
-
setup do
|
23
|
-
TCPSocket.stubs(:new).returns(new_mock_socket)
|
24
|
-
@db = new_mock_db
|
25
|
-
|
26
|
-
@client = stub("MongoClient")
|
27
|
-
@client.stubs(:connect_timeout).returns(5)
|
28
|
-
@client.stubs(:op_timeout).returns(5)
|
29
|
-
@client.stubs(:pool_size).returns(2)
|
30
|
-
@client.stubs(:pool_timeout).returns(100)
|
31
|
-
@client.stubs(:seeds).returns(['localhost:30000'])
|
32
|
-
@client.stubs(:socket_class).returns(TCPSocket)
|
33
|
-
@client.stubs(:mongos?).returns(false)
|
34
|
-
@client.stubs(:[]).returns(@db)
|
35
|
-
@client.stubs(:socket_opts)
|
36
|
-
|
37
|
-
@client.stubs(:replica_set_name).returns(nil)
|
38
|
-
@client.stubs(:log)
|
39
|
-
@arbiters = ['localhost:27020']
|
40
|
-
@hosts = [
|
41
|
-
'localhost:27017',
|
42
|
-
'localhost:27018',
|
43
|
-
'localhost:27019',
|
44
|
-
'localhost:27020'
|
45
|
-
]
|
46
|
-
|
47
|
-
@ismaster = {
|
48
|
-
'hosts' => @hosts,
|
49
|
-
'arbiters' => @arbiters,
|
50
|
-
'maxBsonObjectSize' => 1024,
|
51
|
-
'maxMessageSizeBytes' => 1024 * 2.5,
|
52
|
-
'maxWireVersion' => 1,
|
53
|
-
'minWireVersion' => 0
|
54
|
-
}
|
55
|
-
end
|
56
|
-
|
57
|
-
should "populate pools correctly" do
|
58
|
-
|
59
|
-
@db.stubs(:command).returns(
|
60
|
-
# First call to get a socket.
|
61
|
-
@ismaster.merge({'ismaster' => true}),
|
62
|
-
|
63
|
-
# Subsequent calls to configure pools.
|
64
|
-
@ismaster.merge({'ismaster' => true}),
|
65
|
-
@ismaster.merge({'secondary' => true, 'maxBsonObjectSize' => 500}),
|
66
|
-
@ismaster.merge({'secondary' => true, 'maxMessageSizeBytes' => 700}),
|
67
|
-
@ismaster.merge({'arbiterOnly' => true})
|
68
|
-
)
|
69
|
-
|
70
|
-
seeds = [['localhost', 27017]]
|
71
|
-
manager = Mongo::PoolManager.new(@client, seeds)
|
72
|
-
@client.stubs(:local_manager).returns(manager)
|
73
|
-
manager.connect
|
74
|
-
|
75
|
-
assert_equal ['localhost', 27017], manager.primary
|
76
|
-
assert_equal 27017, manager.primary_pool.port
|
77
|
-
assert_equal 2, manager.secondaries.length
|
78
|
-
assert_equal [27018, 27019], manager.secondary_pools.map(&:port).sort
|
79
|
-
assert_equal [['localhost', 27020]], manager.arbiters
|
80
|
-
assert_equal 500, manager.max_bson_size
|
81
|
-
assert_equal 700, manager.max_message_size
|
82
|
-
end
|
83
|
-
|
84
|
-
should "populate pools with single unqueryable seed" do
|
85
|
-
|
86
|
-
@db.stubs(:command).returns(
|
87
|
-
# First call to recovering node
|
88
|
-
@ismaster.merge({'ismaster' => false, 'secondary' => false}),
|
89
|
-
|
90
|
-
# Subsequent calls to configure pools.
|
91
|
-
@ismaster.merge({'ismaster' => false, 'secondary' => false}),
|
92
|
-
@ismaster.merge({'ismaster' => true}),
|
93
|
-
@ismaster.merge({'secondary' => true}),
|
94
|
-
@ismaster.merge({'arbiterOnly' => true})
|
95
|
-
)
|
96
|
-
|
97
|
-
seeds = [['localhost', 27017]]
|
98
|
-
manager = PoolManager.new(@client, seeds)
|
99
|
-
@client.stubs(:local_manager).returns(manager)
|
100
|
-
manager.connect
|
101
|
-
|
102
|
-
assert_equal ['localhost', 27018], manager.primary
|
103
|
-
assert_equal 27018, manager.primary_pool.port
|
104
|
-
assert_equal 1, manager.secondaries.length
|
105
|
-
assert_equal 27019, manager.secondary_pools[0].port
|
106
|
-
assert_equal [['localhost', 27020]], manager.arbiters
|
107
|
-
end
|
108
|
-
|
109
|
-
end
|
110
|
-
|
111
|
-
end
|