mongo 2.11.4 → 2.12.3
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/CONTRIBUTING.md +1 -1
- data/README.md +2 -1
- data/lib/mongo.rb +3 -0
- data/lib/mongo/address.rb +44 -19
- data/lib/mongo/auth.rb +1 -0
- data/lib/mongo/auth/credential_cache.rb +51 -0
- data/lib/mongo/auth/scram/conversation.rb +20 -16
- data/lib/mongo/auth/user.rb +0 -8
- data/lib/mongo/auth/user/view.rb +4 -4
- data/lib/mongo/background_thread.rb +1 -1
- data/lib/mongo/bulk_write.rb +5 -5
- data/lib/mongo/client.rb +143 -14
- data/lib/mongo/client_encryption.rb +103 -0
- data/lib/mongo/cluster.rb +8 -4
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +18 -6
- data/lib/mongo/cluster/sdam_flow.rb +54 -58
- data/lib/mongo/collection.rb +3 -3
- data/lib/mongo/collection/view.rb +1 -1
- data/lib/mongo/collection/view/aggregation.rb +1 -1
- data/lib/mongo/collection/view/change_stream.rb +12 -3
- data/lib/mongo/collection/view/iterable.rb +14 -5
- data/lib/mongo/collection/view/map_reduce.rb +2 -2
- data/lib/mongo/collection/view/readable.rb +9 -7
- data/lib/mongo/collection/view/writable.rb +7 -7
- data/lib/mongo/crypt.rb +33 -0
- data/lib/mongo/crypt/auto_decryption_context.rb +40 -0
- data/lib/mongo/crypt/auto_encrypter.rb +179 -0
- data/lib/mongo/crypt/auto_encryption_context.rb +44 -0
- data/lib/mongo/crypt/binary.rb +155 -0
- data/lib/mongo/crypt/binding.rb +1229 -0
- data/lib/mongo/crypt/context.rb +135 -0
- data/lib/mongo/crypt/data_key_context.rb +162 -0
- data/lib/mongo/crypt/encryption_io.rb +289 -0
- data/lib/mongo/crypt/explicit_decryption_context.rb +40 -0
- data/lib/mongo/crypt/explicit_encrypter.rb +117 -0
- data/lib/mongo/crypt/explicit_encryption_context.rb +89 -0
- data/lib/mongo/crypt/handle.rb +315 -0
- data/lib/mongo/crypt/hooks.rb +90 -0
- data/lib/mongo/crypt/kms_context.rb +67 -0
- data/lib/mongo/crypt/status.rb +131 -0
- data/lib/mongo/cursor.rb +64 -32
- data/lib/mongo/database.rb +23 -6
- data/lib/mongo/database/view.rb +13 -4
- data/lib/mongo/dbref.rb +9 -2
- data/lib/mongo/error.rb +5 -1
- data/lib/mongo/error/bulk_write_error.rb +16 -14
- data/lib/mongo/error/crypt_error.rb +31 -0
- data/lib/mongo/error/{failed_stringprep_validation.rb → failed_string_prep_validation.rb} +0 -0
- data/lib/mongo/error/invalid_cursor_operation.rb +27 -0
- data/lib/mongo/error/kms_error.rb +22 -0
- data/lib/mongo/error/max_bson_size.rb +14 -3
- data/lib/mongo/error/mongocryptd_spawn_error.rb +22 -0
- data/lib/mongo/error/no_server_available.rb +8 -3
- data/lib/mongo/error/notable.rb +0 -15
- data/lib/mongo/error/operation_failure.rb +1 -0
- data/lib/mongo/error/parser.rb +1 -1
- data/lib/mongo/grid/file.rb +5 -0
- data/lib/mongo/grid/file/chunk.rb +2 -0
- data/lib/mongo/grid/file/info.rb +3 -2
- data/lib/mongo/grid/fs_bucket.rb +15 -13
- data/lib/mongo/grid/stream/write.rb +9 -3
- data/lib/mongo/index/view.rb +3 -3
- data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +1 -1
- data/lib/mongo/monitoring/event/command_started.rb +6 -1
- data/lib/mongo/operation/collections_info.rb +6 -3
- data/lib/mongo/operation/delete/op_msg.rb +1 -1
- data/lib/mongo/operation/find/op_msg.rb +4 -1
- data/lib/mongo/operation/get_more/op_msg.rb +4 -1
- data/lib/mongo/operation/insert/command.rb +3 -2
- data/lib/mongo/operation/insert/legacy.rb +3 -2
- data/lib/mongo/operation/insert/op_msg.rb +3 -3
- data/lib/mongo/operation/result.rb +36 -27
- data/lib/mongo/operation/shared/executable.rb +11 -9
- data/lib/mongo/operation/shared/executable_no_validate.rb +2 -2
- data/lib/mongo/operation/shared/op_msg_or_command.rb +2 -2
- data/lib/mongo/operation/shared/op_msg_or_find_command.rb +2 -2
- data/lib/mongo/operation/shared/op_msg_or_list_indexes_command.rb +2 -2
- data/lib/mongo/operation/shared/read_preference_supported.rb +68 -19
- data/lib/mongo/operation/shared/response_handling.rb +1 -1
- data/lib/mongo/operation/shared/sessions_supported.rb +44 -3
- data/lib/mongo/operation/shared/write.rb +17 -10
- data/lib/mongo/operation/update/op_msg.rb +1 -1
- data/lib/mongo/protocol/bit_vector.rb +2 -1
- data/lib/mongo/protocol/compressed.rb +6 -5
- data/lib/mongo/protocol/insert.rb +3 -1
- data/lib/mongo/protocol/message.rb +94 -15
- data/lib/mongo/protocol/msg.rb +207 -37
- data/lib/mongo/protocol/query.rb +7 -9
- data/lib/mongo/protocol/serializers.rb +43 -15
- data/lib/mongo/retryable.rb +1 -1
- data/lib/mongo/server.rb +10 -4
- data/lib/mongo/server/connection.rb +20 -9
- data/lib/mongo/server/connection_base.rb +118 -18
- data/lib/mongo/server/connection_common.rb +61 -0
- data/lib/mongo/server/connection_pool.rb +37 -1
- data/lib/mongo/server/connection_pool/populator.rb +1 -1
- data/lib/mongo/server/description.rb +9 -11
- data/lib/mongo/server/monitor.rb +2 -0
- data/lib/mongo/server/monitor/connection.rb +3 -18
- data/lib/mongo/server/pending_connection.rb +2 -1
- data/lib/mongo/session.rb +3 -3
- data/lib/mongo/session/session_pool.rb +8 -3
- data/lib/mongo/socket.rb +29 -16
- data/lib/mongo/socket/ssl.rb +23 -8
- data/lib/mongo/socket/tcp.rb +12 -3
- data/lib/mongo/srv/monitor.rb +73 -42
- data/lib/mongo/srv/result.rb +0 -1
- data/lib/mongo/timeout.rb +49 -0
- data/lib/mongo/uri.rb +30 -1
- data/lib/mongo/uri/srv_protocol.rb +1 -1
- data/lib/mongo/version.rb +1 -1
- data/mongo.gemspec +1 -3
- data/spec/README.md +228 -7
- data/spec/integration/auth_spec.rb +53 -0
- data/spec/integration/bulk_write_spec.rb +19 -0
- data/spec/integration/{client_options_spec.rb → client_authentication_options_spec.rb} +10 -10
- data/spec/integration/client_construction_spec.rb +100 -1
- data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +353 -0
- data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +303 -0
- data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +72 -0
- data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +79 -0
- data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +221 -0
- data/spec/integration/client_side_encryption/auto_encryption_spec.rb +601 -0
- data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +187 -0
- data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +78 -0
- data/spec/integration/client_side_encryption/client_close_spec.rb +63 -0
- data/spec/integration/client_side_encryption/corpus_spec.rb +233 -0
- data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +132 -0
- data/spec/integration/client_side_encryption/data_key_spec.rb +165 -0
- data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +114 -0
- data/spec/integration/client_side_encryption/external_key_vault_spec.rb +141 -0
- data/spec/integration/client_side_encryption/views_spec.rb +44 -0
- data/spec/integration/client_update_spec.rb +154 -0
- data/spec/integration/command_monitoring_spec.rb +3 -1
- data/spec/integration/command_spec.rb +44 -10
- data/spec/integration/connection_spec.rb +57 -0
- data/spec/integration/crud_spec.rb +89 -0
- data/spec/integration/grid_fs_bucket_spec.rb +48 -0
- data/spec/integration/read_preference_spec.rb +26 -0
- data/spec/integration/reconnect_spec.rb +7 -6
- data/spec/integration/size_limit_spec.rb +111 -0
- data/spec/integration/srv_monitoring_spec.rb +16 -8
- data/spec/integration/zlib_compression_spec.rb +25 -0
- data/spec/kerberos/kerberos_spec.rb +87 -0
- data/spec/lite_spec_helper.rb +34 -29
- data/spec/mongo/auth/cr_spec.rb +8 -0
- data/spec/mongo/auth/ldap_spec.rb +5 -1
- data/spec/mongo/auth/scram/conversation_spec.rb +5 -6
- data/spec/mongo/auth/scram/negotiation_spec.rb +74 -75
- data/spec/mongo/auth/scram_spec.rb +45 -35
- data/spec/mongo/auth/user/view_spec.rb +3 -6
- data/spec/mongo/auth/x509_spec.rb +5 -1
- data/spec/mongo/bulk_write/result_spec.rb +11 -7
- data/spec/mongo/client_construction_spec.rb +206 -2
- data/spec/mongo/client_encryption_spec.rb +405 -0
- data/spec/mongo/cluster/cursor_reaper_spec.rb +12 -8
- data/spec/mongo/cluster/socket_reaper_spec.rb +14 -3
- data/spec/mongo/collection/view/aggregation_spec.rb +0 -2
- data/spec/mongo/collection/view/change_stream_spec.rb +7 -7
- data/spec/mongo/collection/view/map_reduce_spec.rb +3 -3
- data/spec/mongo/collection/view_spec.rb +1 -1
- data/spec/mongo/collection_spec.rb +28 -9
- data/spec/mongo/crypt/auto_decryption_context_spec.rb +90 -0
- data/spec/mongo/crypt/auto_encrypter_spec.rb +187 -0
- data/spec/mongo/crypt/auto_encryption_context_spec.rb +107 -0
- data/spec/mongo/crypt/binary_spec.rb +115 -0
- data/spec/mongo/crypt/binding/binary_spec.rb +56 -0
- data/spec/mongo/crypt/binding/context_spec.rb +257 -0
- data/spec/mongo/crypt/binding/helpers_spec.rb +46 -0
- data/spec/mongo/crypt/binding/mongocrypt_spec.rb +144 -0
- data/spec/mongo/crypt/binding/status_spec.rb +99 -0
- data/spec/mongo/crypt/binding/version_spec.rb +22 -0
- data/spec/mongo/crypt/binding_unloaded_spec.rb +20 -0
- data/spec/mongo/crypt/data_key_context_spec.rb +213 -0
- data/spec/mongo/crypt/encryption_io_spec.rb +136 -0
- data/spec/mongo/crypt/explicit_decryption_context_spec.rb +72 -0
- data/spec/mongo/crypt/explicit_encryption_context_spec.rb +170 -0
- data/spec/mongo/crypt/handle_spec.rb +232 -0
- data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +108 -0
- data/spec/mongo/crypt/status_spec.rb +152 -0
- data/spec/mongo/cursor_spec.rb +24 -4
- data/spec/mongo/database_spec.rb +20 -0
- data/spec/mongo/error/bulk_write_error_spec.rb +49 -0
- data/spec/mongo/error/crypt_error_spec.rb +26 -0
- data/spec/mongo/error/max_bson_size_spec.rb +35 -0
- data/spec/mongo/error/no_server_available_spec.rb +11 -1
- data/spec/mongo/error/notable_spec.rb +59 -0
- data/spec/mongo/error/operation_failure_spec.rb +6 -6
- data/spec/mongo/operation/aggregate_spec.rb +1 -1
- data/spec/mongo/operation/collections_info_spec.rb +1 -1
- data/spec/mongo/operation/command_spec.rb +3 -3
- data/spec/mongo/operation/create_index_spec.rb +3 -3
- data/spec/mongo/operation/create_user_spec.rb +3 -3
- data/spec/mongo/operation/delete/bulk_spec.rb +6 -6
- data/spec/mongo/operation/delete/op_msg_spec.rb +1 -6
- data/spec/mongo/operation/delete_spec.rb +7 -7
- data/spec/mongo/operation/drop_index_spec.rb +2 -2
- data/spec/mongo/operation/find/legacy_spec.rb +2 -1
- data/spec/mongo/operation/get_more_spec.rb +1 -1
- data/spec/mongo/operation/indexes_spec.rb +1 -1
- data/spec/mongo/operation/insert/bulk_spec.rb +7 -7
- data/spec/mongo/operation/insert/op_msg_spec.rb +3 -6
- data/spec/mongo/operation/insert_spec.rb +12 -12
- data/spec/mongo/operation/map_reduce_spec.rb +2 -2
- data/spec/mongo/operation/read_preference_legacy_spec.rb +351 -0
- data/spec/mongo/operation/read_preference_op_msg_spec.rb +194 -0
- data/spec/mongo/operation/remove_user_spec.rb +3 -3
- data/spec/mongo/operation/update/bulk_spec.rb +6 -6
- data/spec/mongo/operation/update/op_msg_spec.rb +3 -6
- data/spec/mongo/operation/update_spec.rb +7 -7
- data/spec/mongo/operation/update_user_spec.rb +1 -1
- data/spec/mongo/protocol/compressed_spec.rb +2 -3
- data/spec/mongo/protocol/delete_spec.rb +9 -8
- data/spec/mongo/protocol/get_more_spec.rb +9 -8
- data/spec/mongo/protocol/insert_spec.rb +9 -8
- data/spec/mongo/protocol/kill_cursors_spec.rb +6 -5
- data/spec/mongo/protocol/msg_spec.rb +57 -53
- data/spec/mongo/protocol/query_spec.rb +12 -12
- data/spec/mongo/protocol/registry_spec.rb +1 -1
- data/spec/mongo/protocol/reply_spec.rb +1 -1
- data/spec/mongo/protocol/update_spec.rb +10 -9
- data/spec/mongo/server/connection_pool_spec.rb +1 -1
- data/spec/mongo/server/connection_spec.rb +28 -7
- data/spec/mongo/socket_spec.rb +1 -1
- data/spec/mongo/srv/monitor_spec.rb +88 -69
- data/spec/mongo/timeout_spec.rb +85 -0
- data/spec/mongo/uri/srv_protocol_spec.rb +2 -2
- data/spec/mongo/uri_spec.rb +52 -5
- data/spec/mongo/write_concern_spec.rb +13 -1
- data/spec/{support → runners}/auth.rb +14 -1
- data/spec/{support → runners}/change_streams.rb +1 -1
- data/spec/{support → runners}/change_streams/operation.rb +0 -0
- data/spec/{support → runners}/cmap.rb +1 -1
- data/spec/{support → runners}/cmap/verifier.rb +0 -0
- data/spec/{support → runners}/command_monitoring.rb +0 -0
- data/spec/runners/connection_string.rb +358 -4
- data/spec/{support → runners}/crud.rb +9 -9
- data/spec/{support → runners}/crud/context.rb +0 -0
- data/spec/{support → runners}/crud/operation.rb +7 -3
- data/spec/{support → runners}/crud/outcome.rb +0 -0
- data/spec/{support → runners}/crud/requirement.rb +1 -1
- data/spec/{support → runners}/crud/spec.rb +12 -1
- data/spec/{support → runners}/crud/test.rb +0 -0
- data/spec/{support → runners}/crud/test_base.rb +0 -0
- data/spec/{support → runners}/crud/verifier.rb +10 -12
- data/spec/{support → runners}/gridfs.rb +0 -0
- data/spec/{support → runners}/sdam_monitoring.rb +0 -0
- data/spec/{support → runners}/server_discovery_and_monitoring.rb +0 -0
- data/spec/{support → runners}/server_selection.rb +0 -0
- data/spec/{support → runners}/server_selection_rtt.rb +0 -0
- data/spec/{support → runners}/transactions.rb +9 -11
- data/spec/{support → runners}/transactions/context.rb +0 -0
- data/spec/{support → runners}/transactions/operation.rb +0 -0
- data/spec/{support → runners}/transactions/spec.rb +0 -0
- data/spec/{support → runners}/transactions/test.rb +37 -5
- data/spec/spec_helper.rb +0 -5
- data/spec/spec_tests/auth_spec.rb +3 -3
- data/spec/spec_tests/client_side_encryption_spec.rb +8 -0
- data/spec/spec_tests/connection_string_spec.rb +1 -1
- data/spec/spec_tests/data/auth/connection-string.yml +13 -0
- data/spec/spec_tests/data/client_side_encryption/aggregate.yml +134 -0
- data/spec/spec_tests/data/client_side_encryption/badQueries.yml +526 -0
- data/spec/spec_tests/data/client_side_encryption/badSchema.yml +73 -0
- data/spec/spec_tests/data/client_side_encryption/basic.yml +116 -0
- data/spec/spec_tests/data/client_side_encryption/bulk.yml +88 -0
- data/spec/spec_tests/data/client_side_encryption/bypassAutoEncryption.yml +100 -0
- data/spec/spec_tests/data/client_side_encryption/bypassedCommand.yml +42 -0
- data/spec/spec_tests/data/client_side_encryption/count.yml +61 -0
- data/spec/spec_tests/data/client_side_encryption/countDocuments.yml +59 -0
- data/spec/spec_tests/data/client_side_encryption/delete.yml +105 -0
- data/spec/spec_tests/data/client_side_encryption/distinct.yml +73 -0
- data/spec/spec_tests/data/client_side_encryption/explain.yml +64 -0
- data/spec/spec_tests/data/client_side_encryption/find.yml +119 -0
- data/spec/spec_tests/data/client_side_encryption/findOneAndDelete.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/findOneAndReplace.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/findOneAndUpdate.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/getMore.yml +68 -0
- data/spec/spec_tests/data/client_side_encryption/insert.yml +102 -0
- data/spec/spec_tests/data/client_side_encryption/keyAltName.yml +71 -0
- data/spec/spec_tests/data/client_side_encryption/localKMS.yml +54 -0
- data/spec/spec_tests/data/client_side_encryption/localSchema.yml +72 -0
- data/spec/spec_tests/data/client_side_encryption/malformedCiphertext.yml +69 -0
- data/spec/spec_tests/data/client_side_encryption/maxWireVersion.yml +20 -0
- data/spec/spec_tests/data/client_side_encryption/missingKey.yml +49 -0
- data/spec/spec_tests/data/client_side_encryption/replaceOne.yml +64 -0
- data/spec/spec_tests/data/client_side_encryption/types.yml +527 -0
- data/spec/spec_tests/data/client_side_encryption/unsupportedCommand.yml +25 -0
- data/spec/spec_tests/data/client_side_encryption/updateMany.yml +77 -0
- data/spec/spec_tests/data/client_side_encryption/updateOne.yml +171 -0
- data/spec/spec_tests/data/read_write_concern/connection-string/write-concern.yml +1 -4
- data/spec/spec_tests/data/retryable_writes/insertOne-serverErrors.yml +21 -0
- data/spec/spec_tests/data/sdam/rs/incompatible_ghost.yml +2 -4
- data/spec/spec_tests/data/sdam/rs/incompatible_other.yml +1 -1
- data/spec/spec_tests/data/sdam/rs/primary_mismatched_me_not_removed.yml +73 -0
- data/spec/spec_tests/data/sdam/rs/primary_to_no_primary_mismatched_me.yml +1 -2
- data/spec/spec_tests/data/sdam/rs/repeated.yml +101 -0
- data/spec/spec_tests/data/sdam/rs/{primary_address_change.yml → ruby_primary_address_change.yml} +2 -0
- data/spec/spec_tests/data/sdam/rs/{secondary_wrong_set_name_with_primary_second.yml → ruby_secondary_wrong_set_name_with_primary_second.yml} +0 -0
- data/spec/spec_tests/data/sdam/sharded/ruby_discovered_single_mongos.yml +27 -0
- data/spec/spec_tests/data/sdam/sharded/{primary_address_change.yml → ruby_primary_different_address.yml} +1 -1
- data/spec/spec_tests/data/sdam/sharded/{primary_mismatched_me.yml → ruby_primary_mismatched_me.yml} +1 -1
- data/spec/spec_tests/data/sdam/single/{primary_address_change.yml → ruby_primary_different_address.yml} +1 -1
- data/spec/spec_tests/data/sdam/single/{primary_mismatched_me.yml → ruby_primary_mismatched_me.yml} +1 -1
- data/spec/spec_tests/data/sdam_monitoring/{replica_set_with_primary_change.yml → replica_set_primary_address_change.yml} +27 -5
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_me_mismatch.yml +26 -74
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml +20 -16
- data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +73 -0
- data/spec/spec_tests/data/transactions/pin-mongos.yml +2 -3
- data/spec/spec_tests/data/uri_options/auth-options.yml +10 -0
- data/spec/spec_tests/data/uri_options/tls-options.yml +75 -4
- data/spec/spec_tests/read_write_concern_connection_string_spec.rb +1 -1
- data/spec/spec_tests/uri_options_spec.rb +6 -8
- data/spec/stress/connection_pool_timing_spec.rb +6 -3
- data/spec/support/certificates/README.md +4 -0
- data/spec/support/certificates/server-second-level-bundle.pem +77 -77
- data/spec/support/certificates/server-second-level.crt +52 -52
- data/spec/support/certificates/server-second-level.key +25 -25
- data/spec/support/certificates/server-second-level.pem +77 -77
- data/spec/support/client_registry.rb +19 -3
- data/spec/support/cluster_config.rb +9 -1
- data/spec/support/cluster_tools.rb +6 -1
- data/spec/support/common_shortcuts.rb +12 -0
- data/spec/support/constraints.rb +16 -0
- data/spec/support/crypt.rb +154 -0
- data/spec/support/crypt/corpus/corpus-key-aws.json +33 -0
- data/spec/support/crypt/corpus/corpus-key-local.json +31 -0
- data/spec/support/crypt/corpus/corpus-schema.json +2057 -0
- data/spec/support/crypt/corpus/corpus.json +3657 -0
- data/spec/support/crypt/corpus/corpus_encrypted.json +4152 -0
- data/spec/support/crypt/data_keys/key_document_aws.json +34 -0
- data/spec/support/crypt/data_keys/key_document_local.json +31 -0
- data/spec/support/crypt/external/external-key.json +31 -0
- data/spec/support/crypt/external/external-schema.json +19 -0
- data/spec/support/crypt/limits/limits-doc.json +102 -0
- data/spec/support/crypt/limits/limits-key.json +31 -0
- data/spec/support/crypt/limits/limits-schema.json +1405 -0
- data/spec/support/crypt/schema_maps/schema_map_aws.json +17 -0
- data/spec/support/crypt/schema_maps/schema_map_aws_key_alt_names.json +12 -0
- data/spec/support/crypt/schema_maps/schema_map_local.json +18 -0
- data/spec/support/crypt/schema_maps/schema_map_local_key_alt_names.json +12 -0
- data/spec/support/lite_constraints.rb +19 -1
- data/spec/support/matchers.rb +19 -0
- data/spec/support/shared/protocol.rb +2 -0
- data/spec/support/spec_config.rb +53 -13
- data/spec/support/utils.rb +140 -10
- metadata +894 -687
- metadata.gz.sig +0 -0
- data/lib/mongo/cluster/srv_monitor.rb +0 -127
- data/lib/mongo/srv/warning_result.rb +0 -35
- data/spec/enterprise_auth/kerberos_spec.rb +0 -58
- data/spec/mongo/cluster/srv_monitor_spec.rb +0 -214
- data/spec/mongo/operation/read_preference_spec.rb +0 -245
- data/spec/spec_tests/data/sdam/sharded/single_mongos.yml +0 -33
- data/spec/support/connection_string.rb +0 -354
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'lite_spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Error::NoServerAvailable do
|
4
4
|
describe 'message' do
|
@@ -18,5 +18,15 @@ describe Mongo::Error::NoServerAvailable do
|
|
18
18
|
it 'is correct' do
|
19
19
|
expect(error.message).to eq('No primary server is available in cluster: #<Cluster topology=Unknown[127.0.0.1:27017] servers=[#<Server address=127.0.0.1:27017 UNKNOWN>]> with timeout=30, LT=0.015')
|
20
20
|
end
|
21
|
+
|
22
|
+
context 'when cluster is nil' do
|
23
|
+
let(:error) do
|
24
|
+
Mongo::Error::NoServerAvailable.new(selector, nil)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'is correct' do
|
28
|
+
expect(error.message).to eq('No primary server is available with timeout=30, LT=0.015')
|
29
|
+
end
|
30
|
+
end
|
21
31
|
end
|
22
32
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'lite_spec_helper'
|
2
|
+
|
3
|
+
describe Mongo::Error::Notable do
|
4
|
+
let(:exception_cls) do
|
5
|
+
# Since Notable is a module, we need a class that includes it for testing
|
6
|
+
Mongo::Error
|
7
|
+
end
|
8
|
+
|
9
|
+
context 'when there are no notes' do
|
10
|
+
let(:exception) do
|
11
|
+
exception_cls.new('hello world')
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#message' do
|
15
|
+
it 'is correct' do
|
16
|
+
exception.message.should == 'hello world'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#to_s' do
|
21
|
+
it 'is correct' do
|
22
|
+
exception.to_s.should == 'hello world'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#inspect' do
|
27
|
+
it 'is correct' do
|
28
|
+
exception.inspect.should == '#<Mongo::Error: hello world>'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when there are notes' do
|
34
|
+
let(:exception) do
|
35
|
+
exception_cls.new('hello world').tap do |exception|
|
36
|
+
exception.add_note('brilliant')
|
37
|
+
exception.add_note('weird')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '#message' do
|
42
|
+
it 'is correct' do
|
43
|
+
exception.message.should == 'hello world (brilliant, weird)'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#to_s' do
|
48
|
+
it 'is correct' do
|
49
|
+
exception.to_s.should == 'hello world (brilliant, weird)'
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#inspect' do
|
54
|
+
it 'is correct' do
|
55
|
+
exception.inspect.should == '#<Mongo::Error: hello world (brilliant, weird)>'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -72,7 +72,7 @@ describe Mongo::Error::OperationFailure do
|
|
72
72
|
context 'when there is a network error' do
|
73
73
|
context 'getMore' do
|
74
74
|
let(:error) { Mongo::Error::OperationFailure.new('problem: socket exception',
|
75
|
-
Mongo::Operation::GetMore::Result.new(
|
75
|
+
Mongo::Operation::GetMore::Result.new(nil)) }
|
76
76
|
|
77
77
|
it 'returns true' do
|
78
78
|
expect(error.change_stream_resumable?).to be true
|
@@ -91,7 +91,7 @@ describe Mongo::Error::OperationFailure do
|
|
91
91
|
context 'when there is a resumable message' do
|
92
92
|
context 'getMore response' do
|
93
93
|
let(:error) { Mongo::Error::OperationFailure.new('problem: node is recovering',
|
94
|
-
Mongo::Operation::GetMore::Result.new(
|
94
|
+
Mongo::Operation::GetMore::Result.new(nil)) }
|
95
95
|
|
96
96
|
it 'returns true' do
|
97
97
|
expect(error.change_stream_resumable?).to eql(true)
|
@@ -110,7 +110,7 @@ describe Mongo::Error::OperationFailure do
|
|
110
110
|
context 'when there is a resumable code' do
|
111
111
|
context 'getMore response' do
|
112
112
|
let(:error) { Mongo::Error::OperationFailure.new('no message',
|
113
|
-
Mongo::Operation::GetMore::Result.new(
|
113
|
+
Mongo::Operation::GetMore::Result.new(nil),
|
114
114
|
:code => 91, :code_name => 'ShutdownInProgress') }
|
115
115
|
|
116
116
|
it 'returns true' do
|
@@ -131,7 +131,7 @@ describe Mongo::Error::OperationFailure do
|
|
131
131
|
context 'when there is a non-resumable code' do
|
132
132
|
context 'getMore response' do
|
133
133
|
let(:error) { Mongo::Error::OperationFailure.new('no message',
|
134
|
-
Mongo::Operation::GetMore::Result.new(
|
134
|
+
Mongo::Operation::GetMore::Result.new(nil),
|
135
135
|
:code => 136, :code_name => 'CappedPositionLost') }
|
136
136
|
|
137
137
|
it 'returns false' do
|
@@ -152,7 +152,7 @@ describe Mongo::Error::OperationFailure do
|
|
152
152
|
context 'when there is a non-resumable label' do
|
153
153
|
context 'getMore response' do
|
154
154
|
let(:error) { Mongo::Error::OperationFailure.new('no message',
|
155
|
-
Mongo::Operation::GetMore::Result.new(
|
155
|
+
Mongo::Operation::GetMore::Result.new(nil),
|
156
156
|
:code => 91, :code_name => 'ShutdownInProgress',
|
157
157
|
:labels => ['NonResumableChangeStreamError']) }
|
158
158
|
|
@@ -175,7 +175,7 @@ describe Mongo::Error::OperationFailure do
|
|
175
175
|
context 'when there is another label' do
|
176
176
|
context 'getMore response' do
|
177
177
|
let(:error) { Mongo::Error::OperationFailure.new('no message',
|
178
|
-
Mongo::Operation::GetMore::Result.new(
|
178
|
+
Mongo::Operation::GetMore::Result.new(nil),
|
179
179
|
:code => 91, :code_name => 'ShutdownInProgress',
|
180
180
|
:labels => %w(TransientTransactionError)) }
|
181
181
|
|
@@ -31,7 +31,7 @@ describe Mongo::Operation::CollectionsInfo do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
let(:info) do
|
34
|
-
docs = op.execute(authorized_primary).documents
|
34
|
+
docs = op.execute(authorized_primary, client: nil).documents
|
35
35
|
docs.collect { |info| info['name'].sub("#{SpecConfig.instance.test_db}.", '') }
|
36
36
|
end
|
37
37
|
|
@@ -43,7 +43,7 @@ describe Mongo::Operation::Command do
|
|
43
43
|
context 'when the command succeeds' do
|
44
44
|
|
45
45
|
let(:response) do
|
46
|
-
op.execute(authorized_primary)
|
46
|
+
op.execute(authorized_primary, client: nil)
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'returns the reponse' do
|
@@ -59,7 +59,7 @@ describe Mongo::Operation::Command do
|
|
59
59
|
|
60
60
|
it 'raises an exception' do
|
61
61
|
expect {
|
62
|
-
op.execute(authorized_primary)
|
62
|
+
op.execute(authorized_primary, client: nil)
|
63
63
|
}.to raise_error(Mongo::Error::OperationFailure)
|
64
64
|
end
|
65
65
|
end
|
@@ -72,7 +72,7 @@ describe Mongo::Operation::Command do
|
|
72
72
|
|
73
73
|
it 'raises an error' do
|
74
74
|
expect {
|
75
|
-
op.execute(authorized_primary)
|
75
|
+
op.execute(authorized_primary, client: nil)
|
76
76
|
}.to raise_error(Mongo::Error::MaxBSONSize)
|
77
77
|
end
|
78
78
|
end
|
@@ -20,7 +20,7 @@ describe Mongo::Operation::CreateIndex do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
let(:response) do
|
23
|
-
operation.execute(authorized_primary)
|
23
|
+
operation.execute(authorized_primary, client: nil)
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'returns ok' do
|
@@ -43,12 +43,12 @@ describe Mongo::Operation::CreateIndex do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
before do
|
46
|
-
operation.execute(authorized_primary)
|
46
|
+
operation.execute(authorized_primary, client: nil)
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'raises an exception' do
|
50
50
|
expect {
|
51
|
-
second_operation.execute(authorized_primary)
|
51
|
+
second_operation.execute(authorized_primary, client: nil)
|
52
52
|
}.to raise_error(Mongo::Error::OperationFailure)
|
53
53
|
end
|
54
54
|
end
|
@@ -26,7 +26,7 @@ describe Mongo::Operation::CreateUser do
|
|
26
26
|
context 'when user creation was successful' do
|
27
27
|
|
28
28
|
let!(:response) do
|
29
|
-
operation.execute(root_authorized_primary)
|
29
|
+
operation.execute(root_authorized_primary, client: nil)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'saves the user in the database' do
|
@@ -38,8 +38,8 @@ describe Mongo::Operation::CreateUser do
|
|
38
38
|
|
39
39
|
it 'raises an exception' do
|
40
40
|
expect {
|
41
|
-
operation.execute(root_authorized_primary)
|
42
|
-
operation.execute(root_authorized_primary)
|
41
|
+
operation.execute(root_authorized_primary, client: nil)
|
42
|
+
operation.execute(root_authorized_primary, client: nil)
|
43
43
|
}.to raise_error(Mongo::Error::OperationFailure)
|
44
44
|
end
|
45
45
|
end
|
@@ -99,7 +99,7 @@ describe Mongo::Operation::Delete do
|
|
99
99
|
end
|
100
100
|
|
101
101
|
it 'deletes the document from the database' do
|
102
|
-
op.bulk_execute(authorized_primary)
|
102
|
+
op.bulk_execute(authorized_primary, client: nil)
|
103
103
|
expect(authorized_collection.find.count).to eq(1)
|
104
104
|
end
|
105
105
|
end
|
@@ -122,7 +122,7 @@ describe Mongo::Operation::Delete do
|
|
122
122
|
end
|
123
123
|
|
124
124
|
it 'deletes the documents from the database' do
|
125
|
-
op.bulk_execute(authorized_primary)
|
125
|
+
op.bulk_execute(authorized_primary, client: nil)
|
126
126
|
expect(authorized_collection.find.count).to eq(0)
|
127
127
|
end
|
128
128
|
end
|
@@ -157,7 +157,7 @@ describe Mongo::Operation::Delete do
|
|
157
157
|
end
|
158
158
|
|
159
159
|
it 'aborts after first error' do
|
160
|
-
failing_delete.bulk_execute(authorized_primary)
|
160
|
+
failing_delete.bulk_execute(authorized_primary, client: nil)
|
161
161
|
expect(authorized_collection.find.count).to eq(2)
|
162
162
|
end
|
163
163
|
end
|
@@ -169,7 +169,7 @@ describe Mongo::Operation::Delete do
|
|
169
169
|
end
|
170
170
|
|
171
171
|
it 'aborts after first error' do
|
172
|
-
failing_delete.bulk_execute(authorized_primary)
|
172
|
+
failing_delete.bulk_execute(authorized_primary, client: nil)
|
173
173
|
expect(authorized_collection.find.count).to eq(2)
|
174
174
|
end
|
175
175
|
end
|
@@ -205,7 +205,7 @@ describe Mongo::Operation::Delete do
|
|
205
205
|
end
|
206
206
|
|
207
207
|
it 'does not abort after first error' do
|
208
|
-
failing_delete.bulk_execute(authorized_primary)
|
208
|
+
failing_delete.bulk_execute(authorized_primary, client: nil)
|
209
209
|
expect(authorized_collection.find.count).to eq(1)
|
210
210
|
end
|
211
211
|
end
|
@@ -217,7 +217,7 @@ describe Mongo::Operation::Delete do
|
|
217
217
|
end
|
218
218
|
|
219
219
|
it 'does not abort after first error' do
|
220
|
-
failing_delete.bulk_execute(authorized_primary)
|
220
|
+
failing_delete.bulk_execute(authorized_primary, client: nil)
|
221
221
|
expect(authorized_collection.find.count).to eq(1)
|
222
222
|
end
|
223
223
|
end
|
@@ -101,12 +101,7 @@ describe Mongo::Operation::Delete::OpMsg do
|
|
101
101
|
end
|
102
102
|
|
103
103
|
let(:expected_payload_1) do
|
104
|
-
|
105
|
-
type: 1,
|
106
|
-
payload: { identifier: 'deletes',
|
107
|
-
sequence: deletes
|
108
|
-
}
|
109
|
-
}
|
104
|
+
Mongo::Protocol::Msg::Section1.new('deletes', deletes)
|
110
105
|
end
|
111
106
|
|
112
107
|
let(:session) do
|
@@ -103,7 +103,7 @@ describe Mongo::Operation::Delete do
|
|
103
103
|
end
|
104
104
|
|
105
105
|
let(:result) do
|
106
|
-
delete.execute(authorized_primary)
|
106
|
+
delete.execute(authorized_primary, client: nil)
|
107
107
|
end
|
108
108
|
|
109
109
|
it 'deletes the documents from the database' do
|
@@ -123,7 +123,7 @@ describe Mongo::Operation::Delete do
|
|
123
123
|
|
124
124
|
it 'raises an exception' do
|
125
125
|
expect {
|
126
|
-
delete.execute(authorized_primary)
|
126
|
+
delete.execute(authorized_primary, client: nil)
|
127
127
|
}.to raise_error(Mongo::Error::OperationFailure)
|
128
128
|
end
|
129
129
|
end
|
@@ -147,7 +147,7 @@ describe Mongo::Operation::Delete do
|
|
147
147
|
end
|
148
148
|
|
149
149
|
let(:result) do
|
150
|
-
delete.execute(authorized_primary)
|
150
|
+
delete.execute(authorized_primary, client: nil)
|
151
151
|
end
|
152
152
|
|
153
153
|
it 'deletes the documents from the database' do
|
@@ -166,13 +166,13 @@ describe Mongo::Operation::Delete do
|
|
166
166
|
end
|
167
167
|
|
168
168
|
let(:result) do
|
169
|
-
delete.execute(authorized_primary)
|
169
|
+
delete.execute(authorized_primary, client: nil)
|
170
170
|
end
|
171
171
|
|
172
172
|
it 'does not delete any documents' do
|
173
173
|
|
174
174
|
expect {
|
175
|
-
op.execute(authorized_primary)
|
175
|
+
op.execute(authorized_primary, client: nil)
|
176
176
|
}.to raise_error(Mongo::Error::OperationFailure)
|
177
177
|
|
178
178
|
expect(authorized_collection.find.count).to eq(2)
|
@@ -187,7 +187,7 @@ describe Mongo::Operation::Delete do
|
|
187
187
|
|
188
188
|
it 'raises an error' do
|
189
189
|
expect {
|
190
|
-
op.execute(authorized_primary)
|
190
|
+
op.execute(authorized_primary, client: nil)
|
191
191
|
}.to raise_error(Mongo::Error::MaxBSONSize)
|
192
192
|
end
|
193
193
|
end
|
@@ -211,7 +211,7 @@ describe Mongo::Operation::Delete do
|
|
211
211
|
end
|
212
212
|
|
213
213
|
let(:result) do
|
214
|
-
delete.execute(authorized_primary)
|
214
|
+
delete.execute(authorized_primary, client: nil)
|
215
215
|
end
|
216
216
|
|
217
217
|
before do
|
@@ -26,7 +26,7 @@ describe Mongo::Operation::DropIndex do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
let(:response) do
|
29
|
-
operation.execute(authorized_primary)
|
29
|
+
operation.execute(authorized_primary, client: nil)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'removes the index' do
|
@@ -46,7 +46,7 @@ describe Mongo::Operation::DropIndex do
|
|
46
46
|
|
47
47
|
it 'raises an exception' do
|
48
48
|
expect {
|
49
|
-
operation.execute(authorized_primary)
|
49
|
+
operation.execute(authorized_primary, client: nil)
|
50
50
|
}.to raise_error(Mongo::Error::OperationFailure)
|
51
51
|
end
|
52
52
|
end
|
@@ -71,6 +71,7 @@ describe Mongo::Operation::Find::Legacy do
|
|
71
71
|
let(:secondary_server_single) do
|
72
72
|
double('secondary_server').tap do |server|
|
73
73
|
allow(server).to receive(:mongos?) { false }
|
74
|
+
allow(server).to receive(:standalone?) { false }
|
74
75
|
allow(server).to receive(:cluster) { cluster_single }
|
75
76
|
allow(server).to receive(:features) { authorized_primary.features }
|
76
77
|
end
|
@@ -96,7 +97,7 @@ describe Mongo::Operation::Find::Legacy do
|
|
96
97
|
end
|
97
98
|
|
98
99
|
it 'does not raise an exception' do
|
99
|
-
expect(op.execute(authorized_primary)).to be_a(Mongo::Operation::Find::Legacy::Result)
|
100
|
+
expect(op.execute(authorized_primary, client: nil)).to be_a(Mongo::Operation::Find::Legacy::Result)
|
100
101
|
end
|
101
102
|
end
|
102
103
|
end
|
@@ -47,7 +47,7 @@ describe Mongo::Operation::GetMore::Legacy do
|
|
47
47
|
|
48
48
|
it 'creates a get more wire protocol message with correct specs' do
|
49
49
|
expect(Mongo::Protocol::GetMore).to receive(:new).with(SpecConfig.instance.test_db, TEST_COLL, to_return, cursor_id).and_call_original
|
50
|
-
begin; op.execute(authorized_primary); rescue; end
|
50
|
+
begin; op.execute(authorized_primary, client: nil); rescue; end
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
@@ -99,7 +99,7 @@ describe Mongo::Operation::Insert do
|
|
99
99
|
end
|
100
100
|
|
101
101
|
let(:inserted_ids) do
|
102
|
-
op.bulk_execute(authorized_primary).inserted_ids
|
102
|
+
op.bulk_execute(authorized_primary, client: nil).inserted_ids
|
103
103
|
end
|
104
104
|
|
105
105
|
let(:collection_ids) do
|
@@ -128,7 +128,7 @@ describe Mongo::Operation::Insert do
|
|
128
128
|
context 'when the insert succeeds' do
|
129
129
|
|
130
130
|
let(:response) do
|
131
|
-
op.bulk_execute(authorized_primary)
|
131
|
+
op.bulk_execute(authorized_primary, client: nil)
|
132
132
|
end
|
133
133
|
|
134
134
|
it 'inserts the documents into the database' do
|
@@ -146,7 +146,7 @@ describe Mongo::Operation::Insert do
|
|
146
146
|
end
|
147
147
|
|
148
148
|
let(:response) do
|
149
|
-
op.bulk_execute(authorized_primary)
|
149
|
+
op.bulk_execute(authorized_primary, client: nil)
|
150
150
|
end
|
151
151
|
|
152
152
|
it 'inserts the documents into the database' do
|
@@ -183,7 +183,7 @@ describe Mongo::Operation::Insert do
|
|
183
183
|
context 'when the insert fails' do
|
184
184
|
|
185
185
|
it 'aborts after first error' do
|
186
|
-
failing_insert.bulk_execute(authorized_primary)
|
186
|
+
failing_insert.bulk_execute(authorized_primary, client: nil)
|
187
187
|
expect(authorized_collection.find.count).to eq(1)
|
188
188
|
end
|
189
189
|
end
|
@@ -197,7 +197,7 @@ describe Mongo::Operation::Insert do
|
|
197
197
|
context 'when the insert fails' do
|
198
198
|
|
199
199
|
it 'aborts after first error' do
|
200
|
-
failing_insert.bulk_execute(authorized_primary)
|
200
|
+
failing_insert.bulk_execute(authorized_primary, client: nil)
|
201
201
|
expect(authorized_collection.find.count).to eq(1)
|
202
202
|
end
|
203
203
|
end
|
@@ -228,7 +228,7 @@ describe Mongo::Operation::Insert do
|
|
228
228
|
context 'when the insert fails' do
|
229
229
|
|
230
230
|
it 'does not abort after first error' do
|
231
|
-
failing_insert.bulk_execute(authorized_primary)
|
231
|
+
failing_insert.bulk_execute(authorized_primary, client: nil)
|
232
232
|
expect(authorized_collection.find.count).to eq(2)
|
233
233
|
end
|
234
234
|
end
|
@@ -243,7 +243,7 @@ describe Mongo::Operation::Insert do
|
|
243
243
|
context 'when the insert fails' do
|
244
244
|
|
245
245
|
it 'does not after first error' do
|
246
|
-
failing_insert.bulk_execute(authorized_primary)
|
246
|
+
failing_insert.bulk_execute(authorized_primary, client: nil)
|
247
247
|
expect(authorized_collection.find.count).to eq(2)
|
248
248
|
end
|
249
249
|
end
|