mongo 2.18.2 → 2.19.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/README.md +12 -2
- data/Rakefile +4 -3
- data/bin/mongo_console +2 -0
- data/lib/mongo/active_support.rb +1 -1
- data/lib/mongo/address/ipv4.rb +1 -1
- data/lib/mongo/address/ipv6.rb +1 -1
- data/lib/mongo/address/unix.rb +1 -1
- data/lib/mongo/address/validator.rb +1 -1
- data/lib/mongo/address.rb +1 -1
- data/lib/mongo/auth/aws/conversation.rb +1 -5
- data/lib/mongo/auth/aws/credentials.rb +38 -0
- data/lib/mongo/auth/aws/credentials_cache.rb +75 -0
- data/lib/mongo/auth/aws/credentials_retriever.rb +172 -37
- data/lib/mongo/auth/aws/request.rb +1 -2
- data/lib/mongo/auth/aws.rb +6 -6
- data/lib/mongo/auth/base.rb +1 -1
- data/lib/mongo/auth/conversation_base.rb +1 -1
- data/lib/mongo/auth/cr/conversation.rb +1 -1
- data/lib/mongo/auth/cr.rb +1 -1
- data/lib/mongo/auth/credential_cache.rb +1 -1
- data/lib/mongo/auth/gssapi/conversation.rb +1 -1
- data/lib/mongo/auth/gssapi.rb +1 -1
- data/lib/mongo/auth/ldap/conversation.rb +1 -1
- data/lib/mongo/auth/ldap.rb +1 -1
- data/lib/mongo/auth/roles.rb +17 -17
- data/lib/mongo/auth/sasl_conversation_base.rb +1 -1
- data/lib/mongo/auth/scram/conversation.rb +1 -1
- data/lib/mongo/auth/scram.rb +1 -1
- data/lib/mongo/auth/scram256/conversation.rb +1 -1
- data/lib/mongo/auth/scram256.rb +1 -1
- data/lib/mongo/auth/scram_conversation_base.rb +1 -1
- data/lib/mongo/auth/stringprep/profiles/sasl.rb +1 -1
- data/lib/mongo/auth/stringprep/tables.rb +1 -1
- data/lib/mongo/auth/stringprep/unicode_normalize/normalize.rb +1 -1
- data/lib/mongo/auth/stringprep/unicode_normalize/tables.rb +2 -1
- data/lib/mongo/auth/stringprep.rb +1 -1
- data/lib/mongo/auth/user/view.rb +1 -1
- data/lib/mongo/auth/user.rb +1 -1
- data/lib/mongo/auth/x509/conversation.rb +1 -1
- data/lib/mongo/auth/x509.rb +1 -1
- data/lib/mongo/auth.rb +1 -1
- data/lib/mongo/background_thread.rb +1 -1
- data/lib/mongo/bson.rb +1 -1
- data/lib/mongo/bulk_write/combineable.rb +1 -1
- data/lib/mongo/bulk_write/ordered_combiner.rb +1 -1
- data/lib/mongo/bulk_write/result.rb +1 -1
- data/lib/mongo/bulk_write/result_combiner.rb +1 -1
- data/lib/mongo/bulk_write/transformable.rb +1 -1
- data/lib/mongo/bulk_write/unordered_combiner.rb +1 -1
- data/lib/mongo/bulk_write/validatable.rb +1 -1
- data/lib/mongo/bulk_write.rb +1 -1
- data/lib/mongo/caching_cursor.rb +1 -1
- data/lib/mongo/client.rb +52 -4
- data/lib/mongo/client_encryption.rb +102 -1
- data/lib/mongo/cluster/periodic_executor.rb +1 -1
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +2 -6
- data/lib/mongo/cluster/reapers/socket_reaper.rb +2 -2
- data/lib/mongo/cluster/sdam_flow.rb +42 -15
- data/lib/mongo/cluster/topology/base.rb +1 -1
- data/lib/mongo/cluster/topology/load_balanced.rb +1 -1
- data/lib/mongo/cluster/topology/no_replica_set_options.rb +1 -1
- data/lib/mongo/cluster/topology/replica_set_no_primary.rb +1 -1
- data/lib/mongo/cluster/topology/replica_set_with_primary.rb +1 -1
- data/lib/mongo/cluster/topology/sharded.rb +1 -1
- data/lib/mongo/cluster/topology/single.rb +1 -1
- data/lib/mongo/cluster/topology/unknown.rb +1 -1
- data/lib/mongo/cluster/topology.rb +1 -1
- data/lib/mongo/cluster.rb +29 -12
- data/lib/mongo/cluster_time.rb +1 -1
- data/lib/mongo/collection/helpers.rb +1 -1
- data/lib/mongo/collection/queryable_encryption.rb +83 -43
- data/lib/mongo/collection/view/aggregation.rb +1 -1
- data/lib/mongo/collection/view/builder/aggregation.rb +1 -1
- data/lib/mongo/collection/view/builder/map_reduce.rb +1 -1
- data/lib/mongo/collection/view/builder.rb +1 -1
- data/lib/mongo/collection/view/change_stream/retryable.rb +1 -1
- data/lib/mongo/collection/view/change_stream.rb +3 -3
- data/lib/mongo/collection/view/explainable.rb +1 -1
- data/lib/mongo/collection/view/immutable.rb +1 -1
- data/lib/mongo/collection/view/iterable.rb +16 -1
- data/lib/mongo/collection/view/map_reduce.rb +1 -1
- data/lib/mongo/collection/view/readable.rb +11 -12
- data/lib/mongo/collection/view/writable.rb +1 -1
- data/lib/mongo/collection/view.rb +2 -1
- data/lib/mongo/collection.rb +52 -13
- data/lib/mongo/condition_variable.rb +58 -0
- data/lib/mongo/config/options.rb +1 -0
- data/lib/mongo/config/validators/option.rb +1 -0
- data/lib/mongo/config.rb +1 -0
- data/lib/mongo/crypt/auto_decryption_context.rb +1 -1
- data/lib/mongo/crypt/auto_encrypter.rb +5 -3
- data/lib/mongo/crypt/auto_encryption_context.rb +1 -1
- data/lib/mongo/crypt/binary.rb +1 -1
- data/lib/mongo/crypt/binding.rb +224 -30
- data/lib/mongo/crypt/context.rb +67 -4
- data/lib/mongo/crypt/data_key_context.rb +1 -1
- data/lib/mongo/crypt/encryption_io.rb +2 -2
- data/lib/mongo/crypt/explicit_decryption_context.rb +1 -1
- data/lib/mongo/crypt/explicit_encrypter.rb +120 -34
- data/lib/mongo/crypt/explicit_encryption_context.rb +58 -27
- data/lib/mongo/crypt/explicit_encryption_expression_context.rb +30 -0
- data/lib/mongo/crypt/handle.rb +10 -2
- data/lib/mongo/crypt/hooks.rb +1 -1
- data/lib/mongo/crypt/kms/aws/credentials.rb +83 -0
- data/lib/mongo/crypt/kms/aws/master_document.rb +78 -0
- data/lib/mongo/crypt/kms/aws.rb +3 -119
- data/lib/mongo/crypt/kms/azure/access_token.rb +54 -0
- data/lib/mongo/crypt/kms/azure/credentials.rb +103 -0
- data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +122 -0
- data/lib/mongo/crypt/kms/azure/master_document.rb +79 -0
- data/lib/mongo/crypt/kms/azure.rb +5 -128
- data/lib/mongo/crypt/kms/credentials.rb +17 -2
- data/lib/mongo/crypt/kms/gcp/credentials.rb +127 -0
- data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +58 -0
- data/lib/mongo/crypt/kms/gcp/master_document.rb +99 -0
- data/lib/mongo/crypt/kms/gcp.rb +4 -172
- data/lib/mongo/crypt/kms/kmip/credentials.rb +68 -0
- data/lib/mongo/crypt/kms/kmip/master_document.rb +74 -0
- data/lib/mongo/crypt/kms/kmip.rb +3 -100
- data/lib/mongo/crypt/kms/local/credentials.rb +65 -0
- data/lib/mongo/crypt/kms/local/master_document.rb +43 -0
- data/lib/mongo/crypt/kms/local.rb +3 -66
- data/lib/mongo/crypt/kms/master_key_document.rb +1 -1
- data/lib/mongo/crypt/kms.rb +7 -1
- data/lib/mongo/crypt/kms_context.rb +1 -1
- data/lib/mongo/crypt/rewrap_many_data_key_context.rb +1 -1
- data/lib/mongo/crypt/rewrap_many_data_key_result.rb +1 -1
- data/lib/mongo/crypt/status.rb +1 -1
- data/lib/mongo/crypt.rb +13 -1
- data/lib/mongo/cursor/kill_spec.rb +1 -1
- data/lib/mongo/cursor.rb +40 -6
- data/lib/mongo/database/view.rb +41 -4
- data/lib/mongo/database.rb +2 -2
- data/lib/mongo/dbref.rb +1 -1
- data/lib/mongo/distinguishing_semaphore.rb +2 -2
- data/lib/mongo/error/auth_error.rb +1 -1
- data/lib/mongo/error/bad_load_balancer_target.rb +1 -1
- data/lib/mongo/error/bulk_write_error.rb +1 -1
- data/lib/mongo/error/change_stream_resumable.rb +1 -1
- data/lib/mongo/error/client_closed.rb +24 -0
- data/lib/mongo/error/closed_stream.rb +1 -1
- data/lib/mongo/error/connection_check_out_timeout.rb +1 -1
- data/lib/mongo/error/connection_perished.rb +3 -1
- data/lib/mongo/error/connection_unavailable.rb +27 -0
- data/lib/mongo/error/credential_check_error.rb +1 -1
- data/lib/mongo/error/crypt_error.rb +1 -1
- data/lib/mongo/error/extra_file_chunk.rb +1 -1
- data/lib/mongo/error/failed_string_prep_validation.rb +1 -1
- data/lib/mongo/error/file_not_found.rb +1 -1
- data/lib/mongo/error/handshake_error.rb +1 -1
- data/lib/mongo/error/insufficient_iteration_count.rb +1 -1
- data/lib/mongo/error/internal_driver_error.rb +1 -1
- data/lib/mongo/error/invalid_address.rb +1 -1
- data/lib/mongo/error/invalid_application_name.rb +1 -1
- data/lib/mongo/error/invalid_bulk_operation.rb +1 -1
- data/lib/mongo/error/invalid_bulk_operation_type.rb +1 -1
- data/lib/mongo/error/invalid_collection_name.rb +1 -1
- data/lib/mongo/error/invalid_config_option.rb +1 -0
- data/lib/mongo/error/invalid_cursor_operation.rb +1 -1
- data/lib/mongo/error/invalid_database_name.rb +1 -1
- data/lib/mongo/error/invalid_document.rb +1 -1
- data/lib/mongo/error/invalid_file.rb +1 -1
- data/lib/mongo/error/invalid_file_revision.rb +1 -1
- data/lib/mongo/error/invalid_max_connecting.rb +28 -0
- data/lib/mongo/error/invalid_min_pool_size.rb +1 -1
- data/lib/mongo/error/invalid_nonce.rb +1 -1
- data/lib/mongo/error/invalid_read_concern.rb +1 -1
- data/lib/mongo/error/invalid_read_option.rb +1 -1
- data/lib/mongo/error/invalid_replacement_document.rb +1 -1
- data/lib/mongo/error/invalid_server_auth_host.rb +1 -1
- data/lib/mongo/error/invalid_server_auth_response.rb +1 -1
- data/lib/mongo/error/invalid_server_preference.rb +1 -1
- data/lib/mongo/error/invalid_session.rb +1 -1
- data/lib/mongo/error/invalid_signature.rb +1 -1
- data/lib/mongo/error/invalid_transaction_operation.rb +1 -1
- data/lib/mongo/error/invalid_txt_record.rb +1 -1
- data/lib/mongo/error/invalid_update_document.rb +1 -1
- data/lib/mongo/error/invalid_uri.rb +1 -1
- data/lib/mongo/error/invalid_write_concern.rb +1 -1
- data/lib/mongo/error/kms_error.rb +1 -1
- data/lib/mongo/error/labelable.rb +1 -1
- data/lib/mongo/error/lint_error.rb +1 -1
- data/lib/mongo/error/max_bson_size.rb +1 -1
- data/lib/mongo/error/max_message_size.rb +1 -1
- data/lib/mongo/error/mismatched_domain.rb +1 -1
- data/lib/mongo/error/missing_connection.rb +4 -2
- data/lib/mongo/error/missing_file_chunk.rb +1 -1
- data/lib/mongo/error/missing_password.rb +1 -1
- data/lib/mongo/error/missing_resume_token.rb +1 -1
- data/lib/mongo/error/missing_scram_server_signature.rb +1 -1
- data/lib/mongo/error/missing_service_id.rb +1 -1
- data/lib/mongo/error/mongocryptd_spawn_error.rb +1 -1
- data/lib/mongo/error/multi_index_drop.rb +1 -1
- data/lib/mongo/error/need_primary_server.rb +1 -1
- data/lib/mongo/error/no_server_available.rb +1 -1
- data/lib/mongo/error/no_service_connection_available.rb +1 -1
- data/lib/mongo/error/no_srv_records.rb +1 -1
- data/lib/mongo/error/notable.rb +8 -1
- data/lib/mongo/error/operation_failure.rb +1 -1
- data/lib/mongo/error/parser.rb +1 -1
- data/lib/mongo/error/pool_cleared_error.rb +40 -0
- data/lib/mongo/error/pool_closed_error.rb +4 -17
- data/lib/mongo/error/pool_error.rb +45 -0
- data/lib/mongo/error/pool_paused_error.rb +40 -0
- data/lib/mongo/error/raise_original_error.rb +1 -1
- data/lib/mongo/error/read_write_retryable.rb +1 -1
- data/lib/mongo/error/sdam_error_detection.rb +1 -1
- data/lib/mongo/error/server_api_conflict.rb +1 -1
- data/lib/mongo/error/server_api_not_supported.rb +1 -1
- data/lib/mongo/error/server_certificate_revoked.rb +1 -1
- data/lib/mongo/error/server_not_usable.rb +36 -0
- data/lib/mongo/error/session_ended.rb +1 -1
- data/lib/mongo/error/session_not_materialized.rb +1 -1
- data/lib/mongo/error/sessions_not_supported.rb +1 -1
- data/lib/mongo/error/snapshot_session_invalid_server_version.rb +1 -1
- data/lib/mongo/error/snapshot_session_transaction_prohibited.rb +1 -1
- data/lib/mongo/error/socket_error.rb +1 -1
- data/lib/mongo/error/socket_timeout_error.rb +1 -1
- data/lib/mongo/error/unchangeable_collection_option.rb +1 -1
- data/lib/mongo/error/unexpected_chunk_length.rb +1 -1
- data/lib/mongo/error/unexpected_response.rb +1 -1
- data/lib/mongo/error/unknown_payload_type.rb +1 -1
- data/lib/mongo/error/unmet_dependency.rb +1 -1
- data/lib/mongo/error/unsupported_array_filters.rb +1 -1
- data/lib/mongo/error/unsupported_collation.rb +1 -1
- data/lib/mongo/error/unsupported_features.rb +1 -1
- data/lib/mongo/error/unsupported_message_type.rb +1 -1
- data/lib/mongo/error/unsupported_option.rb +1 -1
- data/lib/mongo/error/write_retryable.rb +1 -1
- data/lib/mongo/error.rb +8 -1
- data/lib/mongo/event/base.rb +1 -1
- data/lib/mongo/event/listeners.rb +1 -1
- data/lib/mongo/event/publisher.rb +1 -1
- data/lib/mongo/event/subscriber.rb +1 -1
- data/lib/mongo/event.rb +1 -1
- data/lib/mongo/grid/file/chunk.rb +3 -2
- data/lib/mongo/grid/file/info.rb +3 -2
- data/lib/mongo/grid/file.rb +1 -1
- data/lib/mongo/grid/fs_bucket.rb +1 -1
- data/lib/mongo/grid/stream/read.rb +1 -1
- data/lib/mongo/grid/stream/write.rb +1 -1
- data/lib/mongo/grid/stream.rb +1 -1
- data/lib/mongo/grid.rb +1 -1
- data/lib/mongo/id.rb +1 -1
- data/lib/mongo/index/view.rb +1 -1
- data/lib/mongo/index.rb +1 -1
- data/lib/mongo/lint.rb +1 -1
- data/lib/mongo/loggable.rb +3 -3
- data/lib/mongo/logger.rb +1 -1
- data/lib/mongo/monitoring/cmap_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/command_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/base.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_closed.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_created.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_ready.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +9 -2
- data/lib/mongo/monitoring/event/cmap/pool_closed.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/pool_created.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/pool_ready.rb +67 -0
- data/lib/mongo/monitoring/event/cmap.rb +2 -1
- data/lib/mongo/monitoring/event/command_failed.rb +1 -1
- data/lib/mongo/monitoring/event/command_started.rb +1 -1
- data/lib/mongo/monitoring/event/command_succeeded.rb +1 -1
- data/lib/mongo/monitoring/event/secure.rb +1 -1
- data/lib/mongo/monitoring/event/server_closed.rb +1 -1
- data/lib/mongo/monitoring/event/server_description_changed.rb +1 -1
- data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +1 -1
- data/lib/mongo/monitoring/event/server_heartbeat_started.rb +1 -1
- data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +1 -1
- data/lib/mongo/monitoring/event/server_opening.rb +1 -1
- data/lib/mongo/monitoring/event/topology_changed.rb +1 -1
- data/lib/mongo/monitoring/event/topology_closed.rb +1 -1
- data/lib/mongo/monitoring/event/topology_opening.rb +1 -1
- data/lib/mongo/monitoring/event.rb +1 -1
- data/lib/mongo/monitoring/publishable.rb +1 -1
- data/lib/mongo/monitoring/sdam_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/server_closed_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/server_opening_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/topology_closed_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/topology_opening_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/unified_sdam_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring.rb +1 -1
- data/lib/mongo/operation/aggregate/op_msg.rb +1 -1
- data/lib/mongo/operation/aggregate/result.rb +1 -1
- data/lib/mongo/operation/aggregate.rb +1 -1
- data/lib/mongo/operation/collections_info/result.rb +1 -1
- data/lib/mongo/operation/collections_info.rb +1 -1
- data/lib/mongo/operation/command/op_msg.rb +1 -1
- data/lib/mongo/operation/command.rb +1 -1
- data/lib/mongo/operation/context.rb +1 -1
- data/lib/mongo/operation/count/op_msg.rb +1 -1
- data/lib/mongo/operation/count.rb +1 -1
- data/lib/mongo/operation/create/op_msg.rb +1 -1
- data/lib/mongo/operation/create.rb +1 -1
- data/lib/mongo/operation/create_index/op_msg.rb +1 -1
- data/lib/mongo/operation/create_index.rb +1 -1
- data/lib/mongo/operation/create_search_indexes/op_msg.rb +31 -0
- data/lib/mongo/operation/create_search_indexes.rb +15 -0
- data/lib/mongo/operation/create_user/op_msg.rb +1 -1
- data/lib/mongo/operation/create_user.rb +1 -1
- data/lib/mongo/operation/delete/bulk_result.rb +1 -1
- data/lib/mongo/operation/delete/op_msg.rb +1 -1
- data/lib/mongo/operation/delete/result.rb +1 -1
- data/lib/mongo/operation/delete.rb +1 -1
- data/lib/mongo/operation/distinct/op_msg.rb +1 -1
- data/lib/mongo/operation/distinct.rb +1 -1
- data/lib/mongo/operation/drop/op_msg.rb +1 -1
- data/lib/mongo/operation/drop.rb +1 -1
- data/lib/mongo/operation/drop_database/op_msg.rb +1 -1
- data/lib/mongo/operation/drop_database.rb +1 -1
- data/lib/mongo/operation/drop_index/op_msg.rb +1 -1
- data/lib/mongo/operation/drop_index.rb +1 -1
- data/lib/mongo/operation/drop_search_index/op_msg.rb +33 -0
- data/lib/mongo/operation/drop_search_index.rb +15 -0
- data/lib/mongo/operation/explain/op_msg.rb +1 -1
- data/lib/mongo/operation/explain/result.rb +1 -1
- data/lib/mongo/operation/explain.rb +1 -1
- data/lib/mongo/operation/find/builder/command.rb +1 -1
- data/lib/mongo/operation/find/builder/flags.rb +1 -1
- data/lib/mongo/operation/find/builder/modifiers.rb +1 -1
- data/lib/mongo/operation/find/builder.rb +1 -1
- data/lib/mongo/operation/find/op_msg.rb +1 -1
- data/lib/mongo/operation/find/result.rb +1 -1
- data/lib/mongo/operation/find.rb +1 -1
- data/lib/mongo/operation/get_more/command_builder.rb +1 -1
- data/lib/mongo/operation/get_more/op_msg.rb +1 -1
- data/lib/mongo/operation/get_more/result.rb +1 -1
- data/lib/mongo/operation/get_more.rb +1 -1
- data/lib/mongo/operation/indexes/op_msg.rb +1 -1
- data/lib/mongo/operation/indexes/result.rb +1 -1
- data/lib/mongo/operation/indexes.rb +1 -1
- data/lib/mongo/operation/insert/bulk_result.rb +1 -1
- data/lib/mongo/operation/insert/op_msg.rb +1 -1
- data/lib/mongo/operation/insert/result.rb +1 -1
- data/lib/mongo/operation/insert.rb +1 -1
- data/lib/mongo/operation/kill_cursors/command_builder.rb +1 -1
- data/lib/mongo/operation/kill_cursors/op_msg.rb +1 -1
- data/lib/mongo/operation/kill_cursors.rb +1 -1
- data/lib/mongo/operation/list_collections/op_msg.rb +1 -1
- data/lib/mongo/operation/list_collections/result.rb +1 -1
- data/lib/mongo/operation/list_collections.rb +1 -1
- data/lib/mongo/operation/map_reduce/op_msg.rb +1 -1
- data/lib/mongo/operation/map_reduce/result.rb +1 -1
- data/lib/mongo/operation/map_reduce.rb +1 -1
- data/lib/mongo/operation/op_msg_base.rb +1 -1
- data/lib/mongo/operation/parallel_scan/op_msg.rb +1 -1
- data/lib/mongo/operation/parallel_scan/result.rb +1 -1
- data/lib/mongo/operation/parallel_scan.rb +1 -1
- data/lib/mongo/operation/remove_user/op_msg.rb +1 -1
- data/lib/mongo/operation/remove_user.rb +1 -1
- data/lib/mongo/operation/result.rb +1 -1
- data/lib/mongo/operation/shared/bypass_document_validation.rb +1 -1
- data/lib/mongo/operation/shared/causal_consistency_supported.rb +1 -1
- data/lib/mongo/operation/shared/executable.rb +1 -1
- data/lib/mongo/operation/shared/executable_no_validate.rb +1 -1
- data/lib/mongo/operation/shared/executable_transaction_label.rb +1 -1
- data/lib/mongo/operation/shared/idable.rb +1 -1
- data/lib/mongo/operation/shared/limited.rb +1 -1
- data/lib/mongo/operation/shared/object_id_generator.rb +1 -1
- data/lib/mongo/operation/shared/op_msg_executable.rb +1 -1
- data/lib/mongo/operation/shared/polymorphic_lookup.rb +1 -1
- data/lib/mongo/operation/shared/polymorphic_result.rb +1 -1
- data/lib/mongo/operation/shared/read_preference_supported.rb +1 -1
- data/lib/mongo/operation/shared/response_handling.rb +1 -1
- data/lib/mongo/operation/shared/result/aggregatable.rb +1 -1
- data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +1 -1
- data/lib/mongo/operation/shared/sessions_supported.rb +1 -2
- data/lib/mongo/operation/shared/specifiable.rb +8 -1
- data/lib/mongo/operation/shared/validatable.rb +1 -1
- data/lib/mongo/operation/shared/write.rb +1 -1
- data/lib/mongo/operation/shared/write_concern_supported.rb +1 -1
- data/lib/mongo/operation/update/bulk_result.rb +1 -1
- data/lib/mongo/operation/update/op_msg.rb +1 -1
- data/lib/mongo/operation/update/result.rb +1 -1
- data/lib/mongo/operation/update.rb +1 -1
- data/lib/mongo/operation/update_search_index/op_msg.rb +34 -0
- data/lib/mongo/operation/update_search_index.rb +15 -0
- data/lib/mongo/operation/update_user/op_msg.rb +1 -1
- data/lib/mongo/operation/update_user.rb +1 -1
- data/lib/mongo/operation/users_info/op_msg.rb +1 -1
- data/lib/mongo/operation/users_info/result.rb +1 -1
- data/lib/mongo/operation/users_info.rb +1 -1
- data/lib/mongo/operation/write_command/op_msg.rb +1 -1
- data/lib/mongo/operation/write_command.rb +1 -1
- data/lib/mongo/operation.rb +4 -1
- data/lib/mongo/options/mapper.rb +1 -1
- data/lib/mongo/options/redacted.rb +1 -1
- data/lib/mongo/options.rb +1 -1
- data/lib/mongo/protocol/bit_vector.rb +4 -2
- data/lib/mongo/protocol/caching_hash.rb +4 -21
- data/lib/mongo/protocol/compressed.rb +1 -1
- data/lib/mongo/protocol/get_more.rb +1 -1
- data/lib/mongo/protocol/kill_cursors.rb +1 -1
- data/lib/mongo/protocol/message.rb +5 -9
- data/lib/mongo/protocol/msg.rb +2 -1
- data/lib/mongo/protocol/query.rb +1 -1
- data/lib/mongo/protocol/registry.rb +1 -1
- data/lib/mongo/protocol/reply.rb +1 -1
- data/lib/mongo/protocol/serializers.rb +25 -18
- data/lib/mongo/protocol.rb +1 -1
- data/lib/mongo/query_cache.rb +1 -1
- data/lib/mongo/retryable/base_worker.rb +91 -0
- data/lib/mongo/retryable/read_worker.rb +296 -0
- data/lib/mongo/retryable/write_worker.rb +364 -0
- data/lib/mongo/retryable.rb +31 -502
- data/lib/mongo/search_index/view.rb +232 -0
- data/lib/mongo/semaphore.rb +2 -2
- data/lib/mongo/server/app_metadata/environment.rb +259 -0
- data/lib/mongo/server/app_metadata/platform.rb +114 -0
- data/lib/mongo/server/app_metadata/truncator.rb +142 -0
- data/lib/mongo/server/app_metadata.rb +75 -108
- data/lib/mongo/server/connection.rb +61 -20
- data/lib/mongo/server/connection_base.rb +1 -1
- data/lib/mongo/server/connection_common.rb +1 -1
- data/lib/mongo/server/connection_pool/generation_manager.rb +56 -12
- data/lib/mongo/server/connection_pool/populator.rb +33 -31
- data/lib/mongo/server/connection_pool.rb +726 -265
- data/lib/mongo/server/description/features.rb +2 -2
- data/lib/mongo/server/description/load_balancer.rb +1 -1
- data/lib/mongo/server/description.rb +7 -6
- data/lib/mongo/server/monitor/app_metadata.rb +1 -1
- data/lib/mongo/server/monitor/connection.rb +1 -1
- data/lib/mongo/server/monitor.rb +11 -7
- data/lib/mongo/server/pending_connection.rb +1 -1
- data/lib/mongo/server/push_monitor/connection.rb +1 -1
- data/lib/mongo/server/push_monitor.rb +1 -1
- data/lib/mongo/server/round_trip_time_averager.rb +1 -1
- data/lib/mongo/server.rb +96 -30
- data/lib/mongo/server_selector/base.rb +24 -3
- data/lib/mongo/server_selector/nearest.rb +1 -1
- data/lib/mongo/server_selector/primary.rb +1 -1
- data/lib/mongo/server_selector/primary_preferred.rb +1 -1
- data/lib/mongo/server_selector/secondary.rb +1 -1
- data/lib/mongo/server_selector/secondary_preferred.rb +1 -1
- data/lib/mongo/server_selector.rb +1 -1
- data/lib/mongo/session/server_session.rb +1 -1
- data/lib/mongo/session/session_pool.rb +1 -1
- data/lib/mongo/session.rb +1 -1
- data/lib/mongo/socket/ocsp_cache.rb +1 -1
- data/lib/mongo/socket/ocsp_verifier.rb +1 -1
- data/lib/mongo/socket/ssl.rb +1 -1
- data/lib/mongo/socket/tcp.rb +1 -1
- data/lib/mongo/socket/unix.rb +1 -1
- data/lib/mongo/socket.rb +29 -2
- data/lib/mongo/srv/monitor.rb +1 -3
- data/lib/mongo/srv/resolver.rb +1 -1
- data/lib/mongo/srv/result.rb +1 -1
- data/lib/mongo/srv.rb +1 -1
- data/lib/mongo/timeout.rb +2 -2
- data/lib/mongo/topology_version.rb +1 -1
- data/lib/mongo/uri/options_mapper.rb +322 -81
- data/lib/mongo/uri/srv_protocol.rb +1 -1
- data/lib/mongo/uri.rb +41 -13
- data/lib/mongo/utils.rb +1 -1
- data/lib/mongo/version.rb +2 -2
- data/lib/mongo/write_concern/acknowledged.rb +1 -1
- data/lib/mongo/write_concern/base.rb +1 -1
- data/lib/mongo/write_concern/unacknowledged.rb +1 -1
- data/lib/mongo/write_concern.rb +1 -1
- data/lib/mongo.rb +3 -1
- data/mongo.gemspec +5 -2
- data/spec/atlas/atlas_connectivity_spec.rb +2 -6
- data/spec/atlas/operations_spec.rb +4 -13
- data/spec/integration/auth_spec.rb +1 -1
- data/spec/integration/awaited_ismaster_spec.rb +1 -1
- data/spec/integration/aws_auth_credentials_cache_spec.rb +51 -0
- data/spec/integration/aws_auth_request_spec.rb +2 -2
- data/spec/integration/aws_credentials_retriever_spec.rb +32 -2
- data/spec/integration/aws_lambda_examples_spec.rb +1 -1
- data/spec/integration/bson_symbol_spec.rb +1 -1
- data/spec/integration/bulk_insert_spec.rb +1 -1
- data/spec/integration/bulk_write_error_message_spec.rb +1 -0
- data/spec/integration/bulk_write_spec.rb +1 -1
- data/spec/integration/change_stream_examples_spec.rb +1 -1
- data/spec/integration/change_stream_spec.rb +6 -1
- data/spec/integration/check_clean_slate_spec.rb +1 -1
- data/spec/integration/client_authentication_options_spec.rb +1 -1
- data/spec/integration/client_connectivity_spec.rb +1 -1
- data/spec/integration/client_construction_aws_auth_spec.rb +12 -3
- data/spec/integration/client_construction_spec.rb +23 -1
- data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +1 -1
- data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +1 -1
- data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +1 -1
- data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +1 -1
- data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +10 -5
- data/spec/integration/client_side_encryption/auto_encryption_spec.rb +38 -2
- data/spec/integration/client_side_encryption/automatic_data_encryption_keys_prose_spec.rb +153 -0
- data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +1 -1
- data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +1 -1
- data/spec/integration/client_side_encryption/client_close_spec.rb +1 -1
- data/spec/integration/client_side_encryption/corpus_spec.rb +1 -1
- data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +3 -3
- data/spec/integration/client_side_encryption/data_key_spec.rb +1 -1
- data/spec/integration/client_side_encryption/decryption_events_prose_spec.rb +59 -58
- data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +1 -1
- data/spec/integration/client_side_encryption/explicit_queryable_encryption_spec.rb +36 -33
- data/spec/integration/client_side_encryption/external_key_vault_spec.rb +1 -1
- data/spec/integration/client_side_encryption/kms_tls_options_spec.rb +3 -3
- data/spec/integration/client_side_encryption/kms_tls_spec.rb +1 -1
- data/spec/integration/client_side_encryption/mongocryptd_prose_spec.rb +105 -0
- data/spec/integration/client_side_encryption/on_demand_aws_credentials_spec.rb +49 -0
- data/spec/integration/client_side_encryption/on_demand_azure_credentials_spec.rb +46 -0
- data/spec/integration/client_side_encryption/on_demand_gcp_credentials_spec.rb +47 -0
- data/spec/integration/client_side_encryption/queryable_encryption_examples_spec.rb +14 -11
- data/spec/integration/client_side_encryption/range_explicit_encryption_prose_spec.rb +536 -0
- data/spec/integration/client_side_encryption/rewrap_prose_spec.rb +114 -0
- data/spec/integration/client_side_encryption/unique_index_on_key_alt_names_prose_spec.rb +20 -16
- data/spec/integration/client_side_encryption/views_spec.rb +1 -1
- data/spec/integration/client_spec.rb +8 -3
- data/spec/integration/client_update_spec.rb +7 -3
- data/spec/integration/collection_indexes_prose_spec.rb +1 -1
- data/spec/integration/command_monitoring_spec.rb +1 -1
- data/spec/integration/command_spec.rb +1 -1
- data/spec/integration/connect_single_rs_name_spec.rb +1 -1
- data/spec/integration/connection/faas_env_spec.rb +62 -0
- data/spec/integration/connection_pool_populator_spec.rb +27 -7
- data/spec/integration/connection_spec.rb +1 -1
- data/spec/integration/crud_spec.rb +1 -1
- data/spec/integration/cursor_pinning_spec.rb +6 -2
- data/spec/integration/cursor_reaping_spec.rb +1 -1
- data/spec/integration/docs_examples_spec.rb +2 -2
- data/spec/integration/error_detection_spec.rb +1 -1
- data/spec/integration/find_options_spec.rb +227 -0
- data/spec/integration/fork_reconnect_spec.rb +2 -2
- data/spec/integration/get_more_spec.rb +1 -1
- data/spec/integration/grid_fs_bucket_spec.rb +1 -1
- data/spec/integration/heartbeat_events_spec.rb +1 -1
- data/spec/integration/map_reduce_spec.rb +5 -1
- data/spec/integration/mmapv1_spec.rb +1 -1
- data/spec/integration/mongos_pinning_spec.rb +1 -1
- data/spec/integration/ocsp_connectivity_spec.rb +1 -1
- data/spec/integration/ocsp_verifier_cache_spec.rb +1 -1
- data/spec/integration/ocsp_verifier_spec.rb +2 -2
- data/spec/integration/operation_failure_code_spec.rb +1 -1
- data/spec/integration/operation_failure_message_spec.rb +1 -0
- data/spec/integration/query_cache_spec.rb +90 -3
- data/spec/integration/query_cache_transactions_spec.rb +1 -1
- data/spec/integration/read_concern_spec.rb +1 -1
- data/spec/integration/read_preference_spec.rb +1 -1
- data/spec/integration/reconnect_spec.rb +4 -1
- data/spec/integration/retryable_errors_spec.rb +1 -1
- data/spec/integration/retryable_reads_errors_spec.rb +110 -0
- data/spec/integration/retryable_writes/retryable_writes_36_and_older_spec.rb +1 -1
- data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +1 -1
- data/spec/integration/retryable_writes/shared/adds_diagnostics.rb +1 -1
- data/spec/integration/retryable_writes/shared/does_not_support_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/only_supports_legacy_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/performs_legacy_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/performs_modern_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/performs_no_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/supports_legacy_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/supports_modern_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/supports_retries.rb +1 -1
- data/spec/integration/retryable_writes_errors_spec.rb +160 -2
- data/spec/integration/sdam_error_handling_spec.rb +65 -4
- data/spec/integration/sdam_events_spec.rb +1 -1
- data/spec/integration/sdam_prose_spec.rb +3 -3
- data/spec/integration/search_indexes_prose_spec.rb +168 -0
- data/spec/integration/secondary_reads_spec.rb +1 -0
- data/spec/integration/server_description_spec.rb +1 -1
- data/spec/integration/server_monitor_spec.rb +1 -1
- data/spec/integration/server_selection_spec.rb +1 -1
- data/spec/integration/server_selector_spec.rb +5 -3
- data/spec/integration/server_spec.rb +23 -26
- data/spec/integration/shell_examples_spec.rb +1 -1
- data/spec/integration/size_limit_spec.rb +1 -1
- data/spec/integration/snappy_compression_spec.rb +1 -1
- data/spec/integration/snapshot_query_examples_spec.rb +9 -7
- data/spec/integration/srv_monitoring_spec.rb +2 -1
- data/spec/integration/srv_spec.rb +3 -3
- data/spec/integration/ssl_uri_options_spec.rb +1 -1
- data/spec/integration/step_down_spec.rb +5 -3
- data/spec/integration/time_zone_querying_spec.rb +1 -1
- data/spec/integration/transaction_pinning_spec.rb +18 -4
- data/spec/integration/transactions_api_examples_spec.rb +1 -1
- data/spec/integration/transactions_examples_spec.rb +1 -1
- data/spec/integration/truncated_utf8_spec.rb +1 -1
- data/spec/integration/versioned_api_examples_spec.rb +2 -2
- data/spec/integration/x509_auth_spec.rb +1 -1
- data/spec/integration/zlib_compression_spec.rb +1 -1
- data/spec/integration/zstd_compression_spec.rb +1 -1
- data/spec/kerberos/kerberos_spec.rb +1 -1
- data/spec/lite_spec_helper.rb +47 -12
- data/spec/mongo/address/ipv4_spec.rb +1 -1
- data/spec/mongo/address/ipv6_spec.rb +1 -1
- data/spec/mongo/address/unix_spec.rb +1 -1
- data/spec/mongo/address/validator_spec.rb +1 -1
- data/spec/mongo/address_spec.rb +8 -2
- data/spec/mongo/auth/aws/credential_cache_spec.rb +63 -0
- data/spec/mongo/auth/aws/credentials_retriever_spec.rb +90 -0
- data/spec/mongo/auth/aws/credentials_spec.rb +46 -0
- data/spec/mongo/auth/aws/request_region_spec.rb +1 -1
- data/spec/mongo/auth/aws/request_spec.rb +1 -1
- data/spec/mongo/auth/cr_spec.rb +2 -22
- data/spec/mongo/auth/gssapi/conversation_spec.rb +1 -1
- data/spec/mongo/auth/invalid_mechanism_spec.rb +1 -1
- data/spec/mongo/auth/ldap/conversation_spec.rb +1 -1
- data/spec/mongo/auth/ldap_spec.rb +1 -1
- data/spec/mongo/auth/scram/conversation_spec.rb +1 -1
- data/spec/mongo/auth/scram256/conversation_spec.rb +1 -1
- data/spec/mongo/auth/scram_negotiation_spec.rb +1 -1
- data/spec/mongo/auth/scram_spec.rb +1 -1
- data/spec/mongo/auth/stringprep/profiles/sasl_spec.rb +1 -1
- data/spec/mongo/auth/stringprep_spec.rb +1 -1
- data/spec/mongo/auth/user/view_spec.rb +96 -1
- data/spec/mongo/auth/user_spec.rb +1 -1
- data/spec/mongo/auth/x509/conversation_spec.rb +1 -1
- data/spec/mongo/auth/x509_spec.rb +1 -1
- data/spec/mongo/auth_spec.rb +1 -1
- data/spec/mongo/bson_spec.rb +1 -1
- data/spec/mongo/bulk_write/ordered_combiner_spec.rb +1 -1
- data/spec/mongo/bulk_write/result_spec.rb +1 -1
- data/spec/mongo/bulk_write/unordered_combiner_spec.rb +1 -1
- data/spec/mongo/bulk_write_spec.rb +1 -1
- data/spec/mongo/caching_cursor_spec.rb +1 -1
- data/spec/mongo/client_construction_spec.rb +619 -693
- data/spec/mongo/client_encryption_spec.rb +1 -1
- data/spec/mongo/client_spec.rb +172 -231
- data/spec/mongo/cluster/cursor_reaper_spec.rb +1 -1
- data/spec/mongo/cluster/periodic_executor_spec.rb +1 -1
- data/spec/mongo/cluster/socket_reaper_spec.rb +1 -1
- data/spec/mongo/cluster/topology/replica_set_spec.rb +1 -1
- data/spec/mongo/cluster/topology/sharded_spec.rb +1 -1
- data/spec/mongo/cluster/topology/single_spec.rb +1 -1
- data/spec/mongo/cluster/topology/unknown_spec.rb +1 -1
- data/spec/mongo/cluster/topology_spec.rb +1 -1
- data/spec/mongo/cluster_spec.rb +156 -154
- data/spec/mongo/cluster_time_spec.rb +1 -1
- data/spec/mongo/collection/view/aggregation_spec.rb +1 -1
- data/spec/mongo/collection/view/builder/find_command_spec.rb +1 -1
- data/spec/mongo/collection/view/builder/op_query_spec.rb +1 -1
- data/spec/mongo/collection/view/change_stream_resume_spec.rb +1 -1
- data/spec/mongo/collection/view/change_stream_spec.rb +1 -1
- data/spec/mongo/collection/view/explainable_spec.rb +1 -1
- data/spec/mongo/collection/view/immutable_spec.rb +1 -1
- data/spec/mongo/collection/view/iterable_spec.rb +1 -1
- data/spec/mongo/collection/view/map_reduce_spec.rb +11 -1
- data/spec/mongo/collection/view/readable_spec.rb +139 -1
- data/spec/mongo/collection/view/writable_spec.rb +1 -1
- data/spec/mongo/collection/view_spec.rb +1 -1
- data/spec/mongo/collection_crud_spec.rb +1 -1
- data/spec/mongo/collection_ddl_spec.rb +116 -66
- data/spec/mongo/collection_spec.rb +11 -7
- data/spec/mongo/condition_variable_spec.rb +104 -0
- data/spec/mongo/config/options_spec.rb +1 -0
- data/spec/mongo/config_spec.rb +2 -1
- data/spec/mongo/crypt/auto_decryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/auto_encrypter_spec.rb +8 -1
- data/spec/mongo/crypt/auto_encryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/binary_spec.rb +1 -1
- data/spec/mongo/crypt/binding/binary_spec.rb +1 -1
- data/spec/mongo/crypt/binding/context_spec.rb +1 -1
- data/spec/mongo/crypt/binding/helpers_spec.rb +1 -1
- data/spec/mongo/crypt/binding/mongocrypt_spec.rb +1 -1
- data/spec/mongo/crypt/binding/status_spec.rb +1 -1
- data/spec/mongo/crypt/binding/version_spec.rb +19 -5
- data/spec/mongo/crypt/binding_unloaded_spec.rb +1 -1
- data/spec/mongo/crypt/data_key_context_spec.rb +1 -1
- data/spec/mongo/crypt/encryption_io_spec.rb +1 -1
- data/spec/mongo/crypt/explicit_decryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/explicit_encryption_context_spec.rb +3 -3
- data/spec/mongo/crypt/handle_spec.rb +19 -4
- data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +1 -1
- data/spec/mongo/crypt/hooks_spec.rb +2 -2
- data/spec/mongo/crypt/kms/azure/credentials_retriever_spec.rb +86 -0
- data/spec/mongo/crypt/kms/credentials_spec.rb +17 -1
- data/spec/mongo/crypt/kms_spec.rb +1 -1
- data/spec/mongo/crypt/status_spec.rb +1 -1
- data/spec/mongo/crypt_spec.rb +21 -0
- data/spec/mongo/cursor/builder/get_more_command_spec.rb +1 -1
- data/spec/mongo/cursor/builder/op_get_more_spec.rb +1 -1
- data/spec/mongo/cursor_spec.rb +58 -11
- data/spec/mongo/database_spec.rb +1 -1
- data/spec/mongo/distinguishing_semaphore_spec.rb +7 -7
- data/spec/mongo/error/bulk_write_error_spec.rb +1 -1
- data/spec/mongo/error/crypt_error_spec.rb +1 -1
- data/spec/mongo/error/max_bson_size_spec.rb +1 -1
- data/spec/mongo/error/no_server_available_spec.rb +1 -1
- data/spec/mongo/error/notable_spec.rb +1 -1
- data/spec/mongo/error/operation_failure_heavy_spec.rb +1 -1
- data/spec/mongo/error/operation_failure_spec.rb +1 -1
- data/spec/mongo/error/parser_spec.rb +1 -1
- data/spec/mongo/error/unsupported_option_spec.rb +1 -1
- data/spec/mongo/event/publisher_spec.rb +1 -1
- data/spec/mongo/event/subscriber_spec.rb +1 -1
- data/spec/mongo/grid/file/chunk_spec.rb +1 -1
- data/spec/mongo/grid/file/info_spec.rb +1 -1
- data/spec/mongo/grid/file_spec.rb +1 -1
- data/spec/mongo/grid/fs_bucket_spec.rb +1 -1
- data/spec/mongo/grid/stream/read_spec.rb +1 -1
- data/spec/mongo/grid/stream/write_spec.rb +1 -1
- data/spec/mongo/grid/stream_spec.rb +1 -1
- data/spec/mongo/id_spec.rb +2 -2
- data/spec/mongo/index/view_spec.rb +4 -4
- data/spec/mongo/lint_spec.rb +2 -2
- data/spec/mongo/logger_spec.rb +1 -1
- data/spec/mongo/monitoring/command_log_subscriber_spec.rb +1 -1
- data/spec/mongo/monitoring/event/cmap/connection_check_out_failed_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/connection_check_out_started_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/connection_checked_in_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/connection_checked_out_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/connection_closed_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/connection_created_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/connection_ready_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/pool_cleared_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/pool_closed_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/pool_created_spec.rb +2 -2
- data/spec/mongo/monitoring/event/command_failed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/command_started_spec.rb +1 -1
- data/spec/mongo/monitoring/event/command_succeeded_spec.rb +1 -1
- data/spec/mongo/monitoring/event/secure_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_closed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_description_changed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_heartbeat_failed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_heartbeat_started_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_heartbeat_succeeded_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_opening_spec.rb +1 -1
- data/spec/mongo/monitoring/event/topology_changed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/topology_closed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/topology_opening_spec.rb +1 -1
- data/spec/mongo/monitoring_spec.rb +1 -1
- data/spec/mongo/operation/aggregate/result_spec.rb +1 -1
- 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 +1 -1
- data/spec/mongo/operation/create/op_msg_spec.rb +1 -1
- data/spec/mongo/operation/create_index_spec.rb +1 -1
- data/spec/mongo/operation/create_user_spec.rb +1 -1
- data/spec/mongo/operation/delete/bulk_spec.rb +1 -1
- data/spec/mongo/operation/delete/op_msg_spec.rb +1 -1
- data/spec/mongo/operation/delete_spec.rb +1 -1
- data/spec/mongo/operation/drop_index_spec.rb +1 -1
- data/spec/mongo/operation/find/builder/flags_spec.rb +1 -1
- data/spec/mongo/operation/find/builder/modifiers_spec.rb +1 -1
- data/spec/mongo/operation/indexes_spec.rb +1 -1
- data/spec/mongo/operation/insert/bulk_spec.rb +1 -1
- data/spec/mongo/operation/insert/op_msg_spec.rb +1 -1
- data/spec/mongo/operation/insert_spec.rb +1 -1
- data/spec/mongo/operation/limited_spec.rb +1 -1
- data/spec/mongo/operation/map_reduce_spec.rb +1 -1
- data/spec/mongo/operation/read_preference_legacy_spec.rb +1 -1
- data/spec/mongo/operation/read_preference_op_msg_spec.rb +1 -1
- data/spec/mongo/operation/remove_user_spec.rb +1 -1
- data/spec/mongo/operation/result_spec.rb +1 -1
- data/spec/mongo/operation/specifiable_spec.rb +1 -1
- data/spec/mongo/operation/update/bulk_spec.rb +1 -1
- data/spec/mongo/operation/update/op_msg_spec.rb +1 -1
- data/spec/mongo/operation/update_spec.rb +1 -1
- data/spec/mongo/operation/update_user_spec.rb +1 -1
- data/spec/mongo/options/redacted_spec.rb +2 -2
- data/spec/mongo/protocol/caching_hash_spec.rb +1 -46
- data/spec/mongo/protocol/compressed_spec.rb +1 -1
- data/spec/mongo/protocol/get_more_spec.rb +1 -1
- data/spec/mongo/protocol/kill_cursors_spec.rb +1 -1
- data/spec/mongo/protocol/msg_spec.rb +4 -66
- data/spec/mongo/protocol/query_spec.rb +1 -1
- data/spec/mongo/protocol/registry_spec.rb +1 -1
- data/spec/mongo/protocol/reply_spec.rb +1 -1
- data/spec/mongo/query_cache_middleware_spec.rb +1 -1
- data/spec/mongo/query_cache_spec.rb +1 -1
- data/spec/mongo/retryable_spec.rb +5 -3
- data/spec/mongo/semaphore_spec.rb +7 -7
- data/spec/mongo/server/app_metadata/environment_spec.rb +209 -0
- data/spec/mongo/server/app_metadata/truncator_spec.rb +158 -0
- data/spec/mongo/server/app_metadata_spec.rb +44 -66
- data/spec/mongo/server/connection_auth_spec.rb +1 -1
- data/spec/mongo/server/connection_common_spec.rb +1 -1
- data/spec/mongo/server/connection_pool/populator_spec.rb +17 -3
- data/spec/mongo/server/connection_pool_spec.rb +447 -10
- data/spec/mongo/server/connection_spec.rb +17 -4
- data/spec/mongo/server/description/features_spec.rb +1 -1
- data/spec/mongo/server/description_query_methods_spec.rb +1 -1
- data/spec/mongo/server/description_spec.rb +1 -1
- data/spec/mongo/server/monitor/app_metadata_spec.rb +1 -1
- data/spec/mongo/server/monitor/connection_spec.rb +3 -3
- data/spec/mongo/server/monitor_spec.rb +6 -5
- data/spec/mongo/server/push_monitor_spec.rb +1 -1
- data/spec/mongo/server/round_trip_time_averager_spec.rb +1 -1
- data/spec/mongo/server_selector/nearest_spec.rb +1 -1
- data/spec/mongo/server_selector/primary_preferred_spec.rb +1 -1
- data/spec/mongo/server_selector/primary_spec.rb +1 -1
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +1 -1
- data/spec/mongo/server_selector/secondary_spec.rb +1 -1
- data/spec/mongo/server_selector_spec.rb +1 -1
- data/spec/mongo/server_spec.rb +32 -5
- data/spec/mongo/session/server_session_spec.rb +1 -1
- data/spec/mongo/session/session_pool_spec.rb +1 -1
- data/spec/mongo/session_spec.rb +1 -1
- data/spec/mongo/session_transaction_spec.rb +2 -2
- data/spec/mongo/socket/ssl_spec.rb +3 -9
- data/spec/mongo/socket/tcp_spec.rb +1 -1
- data/spec/mongo/socket/unix_spec.rb +1 -1
- data/spec/mongo/socket_spec.rb +1 -1
- data/spec/mongo/srv/monitor_spec.rb +1 -1
- data/spec/mongo/srv/result_spec.rb +1 -1
- data/spec/mongo/timeout_spec.rb +1 -1
- data/spec/mongo/tls_context_hooks_spec.rb +1 -1
- data/spec/mongo/uri/options_mapper_spec.rb +1605 -0
- data/spec/mongo/uri/srv_protocol_spec.rb +162 -2
- data/spec/mongo/uri_option_parsing_spec.rb +1 -1
- data/spec/mongo/uri_spec.rb +143 -2
- data/spec/mongo/utils_spec.rb +1 -1
- data/spec/mongo/write_concern/acknowledged_spec.rb +1 -1
- data/spec/mongo/write_concern/unacknowledged_spec.rb +1 -1
- data/spec/mongo/write_concern_spec.rb +1 -1
- data/spec/runners/auth.rb +1 -1
- data/spec/runners/change_streams/outcome.rb +1 -1
- data/spec/runners/change_streams/spec.rb +1 -1
- data/spec/runners/change_streams/test.rb +1 -1
- data/spec/runners/cmap/verifier.rb +2 -2
- data/spec/runners/cmap.rb +188 -45
- data/spec/runners/command_monitoring.rb +1 -1
- data/spec/runners/connection_string.rb +1 -1
- data/spec/runners/crud/context.rb +1 -1
- data/spec/runners/crud/operation.rb +2 -2
- data/spec/runners/crud/outcome.rb +1 -1
- data/spec/runners/crud/requirement.rb +3 -3
- data/spec/runners/crud/spec.rb +2 -2
- data/spec/runners/crud/test.rb +1 -1
- data/spec/runners/crud/test_base.rb +2 -2
- data/spec/runners/crud/verifier.rb +3 -3
- data/spec/runners/crud.rb +1 -1
- data/spec/runners/gridfs.rb +1 -1
- data/spec/runners/read_write_concern_document.rb +1 -1
- data/spec/runners/sdam/verifier.rb +1 -1
- data/spec/runners/sdam.rb +1 -1
- data/spec/runners/server_selection.rb +1 -1
- data/spec/runners/server_selection_rtt.rb +1 -1
- data/spec/runners/transactions/operation.rb +15 -9
- data/spec/runners/transactions/spec.rb +1 -1
- data/spec/runners/transactions/test.rb +44 -3
- data/spec/runners/transactions.rb +1 -1
- data/spec/runners/unified/assertions.rb +94 -77
- data/spec/runners/unified/change_stream_operations.rb +14 -3
- data/spec/runners/unified/client_side_encryption_operations.rb +1 -1
- data/spec/runners/unified/crud_operations.rb +11 -2
- data/spec/runners/unified/ddl_operations.rb +80 -4
- data/spec/runners/unified/entity_map.rb +1 -1
- data/spec/runners/unified/error.rb +1 -1
- data/spec/runners/unified/event_subscriber.rb +9 -3
- data/spec/runners/unified/exceptions.rb +1 -1
- data/spec/runners/unified/grid_fs_operations.rb +1 -1
- data/spec/runners/unified/search_index_operations.rb +63 -0
- data/spec/runners/unified/support_operations.rb +66 -2
- data/spec/runners/unified/test.rb +101 -25
- data/spec/runners/unified/test_group.rb +1 -1
- data/spec/runners/unified/thread_operations.rb +73 -0
- data/spec/runners/unified.rb +9 -6
- data/spec/shared/lib/mrss/docker_runner.rb +4 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +10 -2
- data/spec/shared/lib/mrss/server_version_registry.rb +16 -23
- data/spec/shared/lib/mrss/utils.rb +28 -6
- data/spec/shared/share/Dockerfile.erb +24 -19
- data/spec/shared/shlib/server.sh +32 -8
- data/spec/shared/shlib/set_env.sh +4 -4
- data/spec/solo/clean_exit_spec.rb +4 -11
- data/spec/spec_helper.rb +2 -2
- data/spec/spec_tests/auth_spec.rb +1 -1
- data/spec/spec_tests/change_streams_unified_spec.rb +2 -1
- data/spec/spec_tests/client_side_encryption_spec.rb +25 -2
- data/spec/spec_tests/client_side_encryption_unified_spec.rb +12 -2
- data/spec/spec_tests/cmap_spec.rb +29 -15
- data/spec/spec_tests/collection_management_spec.rb +1 -1
- data/spec/spec_tests/command_monitoring_unified_spec.rb +1 -1
- data/spec/spec_tests/connection_string_spec.rb +1 -1
- data/spec/spec_tests/crud_spec.rb +1 -1
- data/spec/spec_tests/crud_unified_spec.rb +1 -1
- data/spec/spec_tests/data/change_streams_unified/change-streams-clusterTime.yml +41 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-disambiguatedPaths.yml +103 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-errors.yml +2 -6
- data/spec/spec_tests/data/change_streams_unified/change-streams-pre_and_post_images.yml +1 -1
- data/spec/spec_tests/data/change_streams_unified/change-streams-resume-allowlist.yml +1 -3
- data/spec/spec_tests/data/change_streams_unified/change-streams-resume-errorLabels.yml +1 -3
- data/spec/spec_tests/data/change_streams_unified/change-streams-showExpandedEvents.yml +15 -6
- data/spec/spec_tests/data/client_side_encryption/awsTemporary.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/bypassedCommand.yml +5 -4
- data/spec/spec_tests/data/client_side_encryption/{fle2-BypassQueryAnalysis.yml → fle2v2-BypassQueryAnalysis.yml} +18 -30
- data/spec/spec_tests/data/client_side_encryption/{fle2-Compact.yml → fle2v2-Compact.yml} +5 -3
- data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection-OldServer.yml +61 -0
- data/spec/spec_tests/data/client_side_encryption/{fle2-CreateCollection.yml → fle2v2-CreateCollection.yml} +212 -538
- data/spec/spec_tests/data/client_side_encryption/{fle2-DecryptExistingData.yml → fle2v2-DecryptExistingData.yml} +4 -2
- data/spec/spec_tests/data/client_side_encryption/{fle2-Delete.yml → fle2v2-Delete.yml} +17 -24
- data/spec/spec_tests/data/client_side_encryption/{fle2-EncryptedFields-vs-EncryptedFieldsMap.yml → fle2v2-EncryptedFields-vs-EncryptedFieldsMap.yml} +5 -6
- data/spec/spec_tests/data/client_side_encryption/{fle2-EncryptedFields-vs-jsonSchema.yml → fle2v2-EncryptedFields-vs-jsonSchema.yml} +18 -6
- data/spec/spec_tests/data/client_side_encryption/{fle2-EncryptedFieldsMap-defaults.yml → fle2v2-EncryptedFieldsMap-defaults.yml} +6 -5
- data/spec/spec_tests/data/client_side_encryption/{fle2-FindOneAndUpdate.yml → fle2v2-FindOneAndUpdate.yml} +31 -44
- data/spec/spec_tests/data/client_side_encryption/{fle2-InsertFind-Indexed.yml → fle2v2-InsertFind-Indexed.yml} +16 -6
- data/spec/spec_tests/data/client_side_encryption/{fle2-InsertFind-Unindexed.yml → fle2v2-InsertFind-Unindexed.yml} +10 -4
- data/spec/spec_tests/data/client_side_encryption/{fle2-MissingKey.yml → fle2v2-MissingKey.yml} +5 -3
- data/spec/spec_tests/data/client_side_encryption/{fle2-NoEncryption.yml → fle2v2-NoEncryption.yml} +4 -2
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Aggregate.yml +241 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Correctness.yml +422 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Delete.yml +182 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-FindOneAndUpdate.yml +239 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-InsertFind.yml +235 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Update.yml +252 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Aggregate.yml +1687 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Correctness.yml +293 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Delete.yml +905 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-FindOneAndUpdate.yml +1684 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-InsertFind.yml +1680 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Update.yml +1697 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Aggregate.yml +329 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Correctness.yml +424 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Delete.yml +226 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-FindOneAndUpdate.yml +327 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-InsertFind.yml +319 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Update.yml +336 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Aggregate.yml +913 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Correctness.yml +292 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Delete.yml +518 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-FindOneAndUpdate.yml +911 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-InsertFind.yml +907 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Update.yml +924 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Aggregate.yml +325 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Correctness.yml +424 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Delete.yml +224 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-FindOneAndUpdate.yml +323 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-InsertFind.yml +319 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Update.yml +338 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Aggregate.yml +241 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Correctness.yml +423 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Delete.yml +182 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-FindOneAndUpdate.yml +239 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-InsertFind.yml +235 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Update.yml +254 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Aggregate.yml +241 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Correctness.yml +422 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Delete.yml +182 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-FindOneAndUpdate.yml +239 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-InsertFind.yml +235 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Update.yml +254 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-WrongType.yml +43 -0
- data/spec/spec_tests/data/client_side_encryption/{fle2-Update.yml → fle2v2-Update.yml} +33 -44
- data/spec/spec_tests/data/client_side_encryption/{fle2-validatorAndPartialFieldExpression.yml → fle2v2-validatorAndPartialFieldExpression.yml} +10 -9
- data/spec/spec_tests/data/client_side_encryption/maxWireVersion.yml +1 -1
- data/spec/spec_tests/data/client_side_encryption/unified/createDataKey-kms_providers-invalid.yml +1 -1
- data/spec/spec_tests/data/cmap/connection-must-have-id.yml +2 -0
- data/spec/spec_tests/data/cmap/connection-must-order-ids.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-checkin-destroy-closed.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-checkin-destroy-stale.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-checkin-make-available.yml +3 -1
- data/spec/spec_tests/data/cmap/pool-checkin.yml +5 -0
- data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-checkout-custom-maxConnecting-is-enforced.yml +50 -0
- data/spec/spec_tests/data/cmap/pool-checkout-error-closed.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-checkout-maxConnecting-is-enforced.yml +81 -0
- data/spec/spec_tests/data/cmap/pool-checkout-maxConnecting-timeout.yml +71 -0
- data/spec/spec_tests/data/cmap/pool-checkout-minPoolSize-connection-maxConnecting.yml +64 -0
- data/spec/spec_tests/data/cmap/pool-checkout-multiple.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-checkout-no-idle.yml +6 -0
- data/spec/spec_tests/data/cmap/pool-checkout-no-stale.yml +8 -0
- data/spec/spec_tests/data/cmap/pool-checkout-returned-connection-maxConnecting.yml +88 -0
- data/spec/spec_tests/data/cmap/pool-clear-interrupt-immediately.yml +49 -0
- data/spec/spec_tests/data/cmap/pool-clear-interrupting-pending-connections.yml +43 -0
- data/spec/spec_tests/data/cmap/pool-clear-min-size.yml +41 -0
- data/spec/spec_tests/data/cmap/pool-clear-paused.yml +18 -0
- data/spec/spec_tests/data/cmap/pool-clear-ready.yml +39 -0
- data/spec/spec_tests/data/cmap/pool-clear-schedule-run-interruptInUseConnections-false.yml +48 -0
- data/spec/spec_tests/data/cmap/pool-close-destroy-conns.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-create-max-size.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-create-min-size-error.yml +43 -0
- data/spec/spec_tests/data/cmap/pool-create-min-size.yml +9 -0
- data/spec/spec_tests/data/cmap/pool-ready-ready.yml +22 -0
- data/spec/spec_tests/data/cmap/pool-ready.yml +30 -0
- data/spec/spec_tests/data/cmap/wait-queue-fairness.yml +2 -0
- data/spec/spec_tests/data/cmap/wait-queue-timeout.yml +6 -1
- data/spec/spec_tests/data/collection_management/modifyCollection-errorResponse.yml +59 -0
- data/spec/spec_tests/data/collection_management/timeseries-collection.yml +35 -0
- data/spec/spec_tests/data/command_monitoring_unified/redacted-commands.yml +8 -0
- data/spec/spec_tests/data/command_monitoring_unified/writeConcernError.yml +80 -0
- data/spec/spec_tests/data/crud_unified/aggregate-merge-errorResponse.yml +42 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-errorResponse.yml +50 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-errorResponse.yml +46 -0
- data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +44 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-errorResponse.yml +69 -0
- data/spec/spec_tests/data/crud_unified/insertOne-errorResponse.yml +46 -0
- data/spec/spec_tests/data/crud_unified/updateOne-errorResponse.yml +47 -0
- data/spec/spec_tests/data/index_management/createSearchIndex.yml +62 -0
- data/spec/spec_tests/data/index_management/createSearchIndexes.yml +83 -0
- data/spec/spec_tests/data/index_management/dropSearchIndex.yml +42 -0
- data/spec/spec_tests/data/index_management/listSearchIndexes.yml +85 -0
- data/spec/spec_tests/data/index_management/updateSearchIndex.yml +45 -0
- data/spec/spec_tests/data/retryable_reads/unified/handshakeError.yml +1266 -53
- data/spec/spec_tests/data/retryable_writes/unified/bulkWrite-serverErrors.yml +1 -1
- data/spec/spec_tests/data/retryable_writes/unified/handshakeError.yml +706 -58
- data/spec/spec_tests/data/retryable_writes/unified/insertOne-noWritesPerformedError.yml +54 -0
- data/spec/spec_tests/data/retryable_writes/unified/insertOne-serverErrors.yml +1 -1
- data/spec/spec_tests/data/sdam/rs/electionId_precedence_setVersion.yml +62 -0
- data/spec/spec_tests/data/sdam/rs/null_election_id-pre-6.0.yml +175 -0
- data/spec/spec_tests/data/sdam/rs/null_election_id.yml +20 -18
- data/spec/spec_tests/data/sdam/rs/secondary_ignore_ok_0-pre-6.0.yml +87 -0
- data/spec/spec_tests/data/sdam/rs/secondary_ignore_ok_0.yml +1 -1
- data/spec/spec_tests/data/sdam/rs/set_version_can_rollback.yml +101 -0
- data/spec/spec_tests/data/sdam/rs/setversion_equal_max_without_electionid.yml +78 -0
- data/spec/spec_tests/data/sdam/rs/setversion_greaterthan_max_without_electionid.yml +79 -0
- data/spec/spec_tests/data/sdam/rs/setversion_without_electionid-pre-6.0.yml +79 -0
- data/spec/spec_tests/data/sdam/rs/setversion_without_electionid.yml +9 -10
- data/spec/spec_tests/data/sdam/rs/use_setversion_without_electionid-pre-6.0.yml +117 -0
- data/spec/spec_tests/data/sdam/rs/use_setversion_without_electionid.yml +23 -21
- data/spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml +1 -1
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_no_primary.yml +38 -39
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_primary.yml +38 -39
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml +1 -1
- data/spec/spec_tests/data/sdam_monitoring/required_replica_set.yml +1 -1
- data/spec/spec_tests/data/sdam_monitoring/standalone.yml +1 -1
- data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +2 -2
- data/spec/spec_tests/data/sdam_unified/auth-error.yml +130 -0
- data/spec/spec_tests/data/sdam_unified/auth-misc-command-error.yml +132 -0
- data/spec/spec_tests/data/sdam_unified/auth-network-error.yml +132 -0
- data/spec/spec_tests/data/sdam_unified/auth-network-timeout-error.yml +138 -0
- data/spec/spec_tests/data/sdam_unified/auth-shutdown-error.yml +133 -0
- data/spec/spec_tests/data/sdam_unified/cancel-server-check.yml +143 -0
- data/spec/spec_tests/data/sdam_unified/connectTimeoutMS.yml +130 -0
- data/spec/spec_tests/data/sdam_unified/find-network-error.yml +135 -0
- data/spec/spec_tests/data/sdam_unified/find-network-timeout-error.yml +119 -0
- data/spec/spec_tests/data/sdam_unified/find-shutdown-error.yml +163 -0
- data/spec/spec_tests/data/sdam_unified/hello-command-error.yml +233 -0
- data/spec/spec_tests/data/sdam_unified/hello-network-error.yml +228 -0
- data/spec/spec_tests/data/sdam_unified/hello-timeout.yml +318 -0
- data/spec/spec_tests/data/sdam_unified/insert-network-error.yml +137 -0
- data/spec/spec_tests/data/sdam_unified/insert-shutdown-error.yml +162 -0
- data/spec/spec_tests/data/sdam_unified/interruptInUse-pool-clear.yml +340 -0
- data/spec/spec_tests/data/sdam_unified/minPoolSize-error.yml +125 -0
- data/spec/spec_tests/data/sdam_unified/pool-cleared-error.yml +239 -0
- data/spec/spec_tests/data/sdam_unified/rediscover-quickly-after-step-down.yml +144 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-directConnection.yml +6 -5
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-replicaSet-errors.yml +2 -2
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-true-txt.yml +5 -4
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-conflicts_with_loadBalanced-true-txt.yml +1 -1
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero-txt.yml +4 -3
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero.yml +4 -3
- data/spec/spec_tests/data/sessions_unified/implicit-sessions-default-causal-consistency.yml +119 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-unsupported-ops.yml +1 -1
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions.yml +1 -1
- data/spec/spec_tests/data/transactions_unified/mongos-unpin.yml +1 -1
- data/spec/spec_tests/data/unified/valid-fail/entity-findCursor-malformed.yml +31 -0
- data/spec/spec_tests/data/unified/valid-fail/entity-findCursor.yml +31 -0
- data/spec/spec_tests/data/unified/valid-fail/ignoreResultAndError-malformed.yml +34 -0
- data/spec/spec_tests/data/unified/valid-fail/ignoreResultAndError.yml +35 -0
- data/spec/spec_tests/data/unified/valid-pass/assertNumberConnectionsCheckedOut.yml +17 -0
- data/spec/spec_tests/data/unified/valid-pass/collectionData-createOptions.yml +37 -0
- data/spec/spec_tests/data/unified/valid-pass/entity-client-cmap-events.yml +40 -0
- data/spec/spec_tests/data/unified/valid-pass/entity-client-storeEventsAsEntities.yml +37 -0
- data/spec/spec_tests/data/unified/valid-pass/expectedError-errorResponse.yml +39 -0
- data/spec/spec_tests/data/unified/valid-pass/expectedEventsForClient-eventType.yml +66 -0
- data/spec/spec_tests/data/unified/valid-pass/ignoreResultAndError.yml +34 -0
- data/spec/spec_tests/data/unified/valid-pass/observeSensitiveCommands.yml +255 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-change-streams.yml +18 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-crud.yml +18 -12
- data/spec/spec_tests/data/unified/valid-pass/poc-retryable-reads.yml +3 -3
- data/spec/spec_tests/data/unified/valid-pass/poc-retryable-writes.yml +2 -2
- data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +1 -1
- data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +1 -1
- data/spec/spec_tests/data/versioned_api/transaction-handling.yml +4 -4
- data/spec/spec_tests/gridfs_spec.rb +1 -1
- data/spec/spec_tests/gridfs_unified_spec.rb +1 -1
- data/spec/spec_tests/index_management_unified_spec.rb +13 -0
- data/spec/spec_tests/load_balancers_spec.rb +1 -1
- data/spec/spec_tests/max_staleness_spec.rb +1 -1
- data/spec/spec_tests/read_write_concern_connection_string_spec.rb +1 -1
- data/spec/spec_tests/read_write_concern_document_spec.rb +1 -1
- data/spec/spec_tests/read_write_concern_operaton_spec.rb +1 -1
- data/spec/spec_tests/retryable_reads_spec.rb +3 -1
- data/spec/spec_tests/retryable_reads_unified_spec.rb +1 -1
- data/spec/spec_tests/retryable_writes_spec.rb +1 -1
- data/spec/spec_tests/retryable_writes_unified_spec.rb +1 -1
- data/spec/spec_tests/sdam_monitoring_spec.rb +1 -1
- data/spec/spec_tests/sdam_spec.rb +5 -1
- data/spec/spec_tests/sdam_unified_spec.rb +13 -0
- data/spec/spec_tests/seed_list_discovery_spec.rb +1 -1
- data/spec/spec_tests/server_selection_rtt_spec.rb +1 -1
- data/spec/spec_tests/server_selection_spec.rb +1 -1
- data/spec/spec_tests/sessions_unified_spec.rb +1 -1
- data/spec/spec_tests/transactions_api_spec.rb +1 -1
- data/spec/spec_tests/transactions_spec.rb +1 -1
- data/spec/spec_tests/transactions_unified_spec.rb +1 -1
- data/spec/spec_tests/unified_spec.rb +1 -6
- data/spec/spec_tests/uri_options_spec.rb +1 -1
- data/spec/spec_tests/versioned_api_spec.rb +1 -1
- data/spec/stress/cleanup_spec.rb +1 -1
- data/spec/stress/connection_pool_stress_spec.rb +1 -62
- data/spec/stress/connection_pool_timing_spec.rb +9 -34
- data/spec/stress/fork_reconnect_stress_spec.rb +7 -8
- data/spec/stress/push_monitor_close_spec.rb +1 -1
- data/spec/support/authorization.rb +1 -1
- data/spec/support/aws_utils/base.rb +1 -1
- data/spec/support/aws_utils/inspector.rb +1 -1
- data/spec/support/aws_utils/orchestrator.rb +20 -8
- data/spec/support/aws_utils/provisioner.rb +1 -1
- data/spec/support/aws_utils.rb +4 -3
- data/spec/support/background_thread_registry.rb +1 -1
- data/spec/support/certificates/atlas-ocsp-ca.crt +67 -67
- data/spec/support/certificates/atlas-ocsp.crt +103 -103
- data/spec/support/certificates/retrieve-atlas-cert +2 -0
- data/spec/support/client_registry.rb +6 -2
- data/spec/support/client_registry_macros.rb +1 -1
- data/spec/support/cluster_tools.rb +13 -8
- data/spec/support/common_shortcuts.rb +30 -5
- data/spec/support/constraints.rb +15 -1
- data/spec/support/crypt/{encryptedFields.json → encrypted_fields/encryptedFields.json} +0 -1
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-Date.json +30 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalNoPrecision.json +21 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalPrecision.json +29 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoubleNoPrecision.json +21 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoublePrecision.json +30 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-Int.json +27 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-Long.json +27 -0
- data/spec/support/crypt.rb +13 -3
- data/spec/support/dns.rb +1 -1
- data/spec/support/faas/app/aws_lambda/mongodb/Gemfile.lock +19 -0
- data/spec/support/json_ext_formatter.rb +1 -1
- data/spec/support/keyword_struct.rb +1 -1
- data/spec/support/local_resource_registry.rb +1 -1
- data/spec/support/macros.rb +1 -0
- data/spec/support/matchers.rb +5 -5
- data/spec/support/mongos_macros.rb +7 -0
- data/spec/support/monitoring_ext.rb +1 -1
- data/spec/support/primary_socket.rb +1 -1
- data/spec/support/sdam_formatter_integration.rb +1 -1
- data/spec/support/shared/app_metadata.rb +15 -3
- data/spec/support/shared/auth_context.rb +1 -0
- data/spec/support/shared/protocol.rb +1 -1
- data/spec/support/shared/scram_conversation.rb +1 -1
- data/spec/support/shared/server_selector.rb +1 -1
- data/spec/support/shared/session.rb +1 -1
- data/spec/support/spec_config.rb +45 -3
- data/spec/support/spec_setup.rb +1 -1
- data/spec/support/using_hash.rb +11 -2
- data/spec/support/utils.rb +277 -249
- data.tar.gz.sig +0 -0
- metadata +1504 -1191
- metadata.gz.sig +0 -0
- data/spec/spec_tests/data/sdam_integration/cancel-server-check.yml +0 -96
- data/spec/spec_tests/data/sdam_integration/connectTimeoutMS.yml +0 -88
- data/spec/spec_tests/data/sdam_integration/find-network-error.yml +0 -85
- data/spec/spec_tests/data/sdam_integration/find-shutdown-error.yml +0 -118
- data/spec/spec_tests/data/sdam_integration/hello-command-error.yml +0 -152
- data/spec/spec_tests/data/sdam_integration/hello-network-error.yml +0 -148
- data/spec/spec_tests/data/sdam_integration/hello-timeout.yml +0 -219
- data/spec/spec_tests/data/sdam_integration/insert-network-error.yml +0 -88
- data/spec/spec_tests/data/sdam_integration/insert-shutdown-error.yml +0 -117
- data/spec/spec_tests/data/sdam_integration/rediscover-quickly-after-step-down.yml +0 -98
- data/spec/spec_tests/data/unified/invalid/expectedEventsForClient-ignoreExtraEvents-type.yml +0 -15
- data/spec/spec_tests/sdam_integration_spec.rb +0 -16
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
#
|
|
2
|
+
# rubocop:todo all
|
|
3
3
|
|
|
4
4
|
# Copyright (C) 2020 MongoDB Inc.
|
|
5
5
|
#
|
|
@@ -102,11 +102,7 @@ module Mongo
|
|
|
102
102
|
uri_options
|
|
103
103
|
end
|
|
104
104
|
|
|
105
|
-
|
|
106
|
-
value = value.to_sym
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
#value = apply_transform(key, value, strategy[:type])
|
|
105
|
+
value = apply_transform(key, value, strategy[:type])
|
|
110
106
|
# Sometimes the value here would be nil, for example if we are processing
|
|
111
107
|
# read preference tags or auth mechanism properties and all of the
|
|
112
108
|
# data within is invalid. Ignore such options.
|
|
@@ -119,7 +115,6 @@ module Mongo
|
|
|
119
115
|
end
|
|
120
116
|
end
|
|
121
117
|
|
|
122
|
-
#p uri_options
|
|
123
118
|
uri_options
|
|
124
119
|
end
|
|
125
120
|
|
|
@@ -138,8 +133,51 @@ module Mongo
|
|
|
138
133
|
v = opts[spec[:name]]
|
|
139
134
|
end
|
|
140
135
|
unless v.nil?
|
|
141
|
-
if spec[:type]
|
|
142
|
-
v = send("revert_#{
|
|
136
|
+
if type = spec[:type]
|
|
137
|
+
v = send("revert_#{type}", v)
|
|
138
|
+
end
|
|
139
|
+
canonical_key = URI_OPTION_CANONICAL_NAMES[uri_key]
|
|
140
|
+
unless canonical_key
|
|
141
|
+
raise ArgumentError, "Option #{uri_key} is not known"
|
|
142
|
+
end
|
|
143
|
+
rv[canonical_key] = v
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
# For options that default to true, remove the value if it is true.
|
|
147
|
+
%w(retryReads retryWrites).each do |k|
|
|
148
|
+
if rv[k]
|
|
149
|
+
rv.delete(k)
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
# Remove auth source when it is $external for mechanisms that default
|
|
153
|
+
# (or require) that auth source.
|
|
154
|
+
if %w(MONGODB-AWS).include?(rv['authMechanism']) && rv['authSource'] == '$external'
|
|
155
|
+
rv.delete('authSource')
|
|
156
|
+
end
|
|
157
|
+
# ssl and tls are aliases, remove ssl ones
|
|
158
|
+
rv.delete('ssl')
|
|
159
|
+
# TODO remove authSource if it is the same as the database,
|
|
160
|
+
# requires this method to know the database specified in the client.
|
|
161
|
+
rv
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# Converts Ruby options provided to their representation in a URI string.
|
|
165
|
+
#
|
|
166
|
+
# @param [ Hash ] opts Ruby options to convert.
|
|
167
|
+
#
|
|
168
|
+
# @return [ Hash ] URI string hash.
|
|
169
|
+
def ruby_to_string(opts)
|
|
170
|
+
rv = {}
|
|
171
|
+
URI_OPTION_MAP.each do |uri_key, spec|
|
|
172
|
+
if spec[:group]
|
|
173
|
+
v = opts[spec[:group]]
|
|
174
|
+
v = v && v[spec[:name]]
|
|
175
|
+
else
|
|
176
|
+
v = opts[spec[:name]]
|
|
177
|
+
end
|
|
178
|
+
unless v.nil?
|
|
179
|
+
if type = spec[:type]
|
|
180
|
+
v = send("stringify_#{type}", v)
|
|
143
181
|
end
|
|
144
182
|
canonical_key = URI_OPTION_CANONICAL_NAMES[uri_key]
|
|
145
183
|
unless canonical_key
|
|
@@ -171,9 +209,9 @@ module Mongo
|
|
|
171
209
|
# Applies URI value transformation by either using the default cast
|
|
172
210
|
# or a transformation appropriate for the given type.
|
|
173
211
|
#
|
|
174
|
-
# @param
|
|
175
|
-
# @param
|
|
176
|
-
# @param
|
|
212
|
+
# @param [ String ] key URI option name.
|
|
213
|
+
# @param [ String ] value The value to be transformed.
|
|
214
|
+
# @param [ Symbol ] type The transform method.
|
|
177
215
|
def apply_transform(key, value, type)
|
|
178
216
|
if type
|
|
179
217
|
send("convert_#{type}", key, value)
|
|
@@ -190,9 +228,9 @@ module Mongo
|
|
|
190
228
|
# Specifically required to append an additional tag set
|
|
191
229
|
# to the array of tag sets without overwriting the original.
|
|
192
230
|
#
|
|
193
|
-
# @param
|
|
194
|
-
# @param
|
|
195
|
-
# @param
|
|
231
|
+
# @param [ Hash ] target The destination.
|
|
232
|
+
# @param [ Object ] value The value to be merged.
|
|
233
|
+
# @param [ Symbol ] name The name of the option.
|
|
196
234
|
def merge_uri_option(target, value, name)
|
|
197
235
|
if target.key?(name)
|
|
198
236
|
if REPEATABLE_OPTIONS.include?(name)
|
|
@@ -214,11 +252,11 @@ module Mongo
|
|
|
214
252
|
|
|
215
253
|
# Simple internal dsl to register a MongoDB URI option in the URI_OPTION_MAP.
|
|
216
254
|
#
|
|
217
|
-
# @param
|
|
218
|
-
# @param
|
|
219
|
-
# @param
|
|
220
|
-
# * :group [Symbol] Nested hash where option will go.
|
|
221
|
-
# * :type [Symbol] Name of function to transform value.
|
|
255
|
+
# @param [ String ] uri_key The MongoDB URI option to register.
|
|
256
|
+
# @param [ Symbol ] name The name of the option in the driver.
|
|
257
|
+
# @param [ Hash ] extra Extra options.
|
|
258
|
+
# * :group [ Symbol ] Nested hash where option will go.
|
|
259
|
+
# * :type [ Symbol ] Name of function to transform value.
|
|
222
260
|
def self.uri_option(uri_key, name, **extra)
|
|
223
261
|
URI_OPTION_MAP[uri_key.downcase] = { name: name }.update(extra)
|
|
224
262
|
URI_OPTION_CANONICAL_NAMES[uri_key.downcase] = uri_key
|
|
@@ -247,6 +285,7 @@ module Mongo
|
|
|
247
285
|
uri_option 'maxStalenessSeconds', :max_staleness, group: :read, type: :max_staleness
|
|
248
286
|
|
|
249
287
|
# Pool options
|
|
288
|
+
uri_option 'maxConnecting', :max_connecting, type: :integer
|
|
250
289
|
uri_option 'minPoolSize', :min_pool_size, type: :integer
|
|
251
290
|
uri_option 'maxPoolSize', :max_pool_size, type: :integer
|
|
252
291
|
uri_option 'waitQueueTimeoutMS', :wait_queue_timeout, type: :ms
|
|
@@ -290,14 +329,14 @@ module Mongo
|
|
|
290
329
|
# Returns true for 'true', false for 'false', otherwise nil.
|
|
291
330
|
#
|
|
292
331
|
# @param [ String ] name Name of the URI option being processed.
|
|
293
|
-
# @param
|
|
332
|
+
# @param [ String | true | false ] value URI option value.
|
|
294
333
|
#
|
|
295
334
|
# @return [ true | false | nil ] Converted value.
|
|
296
335
|
def convert_bool(name, value)
|
|
297
336
|
case value
|
|
298
|
-
when "true", 'TRUE'
|
|
337
|
+
when true, "true", 'TRUE'
|
|
299
338
|
true
|
|
300
|
-
when "false", 'FALSE'
|
|
339
|
+
when false, "false", 'FALSE'
|
|
301
340
|
false
|
|
302
341
|
else
|
|
303
342
|
log_warn("invalid boolean option for #{name}: #{value}")
|
|
@@ -305,31 +344,64 @@ module Mongo
|
|
|
305
344
|
end
|
|
306
345
|
end
|
|
307
346
|
|
|
347
|
+
# Reverts a boolean type.
|
|
348
|
+
#
|
|
349
|
+
# @param [ true | false | nil ] value The boolean to revert.
|
|
350
|
+
#
|
|
351
|
+
# @return [ true | false | nil ] The passed value.
|
|
308
352
|
def revert_bool(value)
|
|
309
353
|
value
|
|
310
354
|
end
|
|
311
355
|
|
|
356
|
+
# Stringifies a boolean type.
|
|
357
|
+
#
|
|
358
|
+
# @param [ true | false | nil ] value The boolean.
|
|
359
|
+
#
|
|
360
|
+
# @return [ String | nil ] The string.
|
|
361
|
+
def stringify_bool(value)
|
|
362
|
+
revert_bool(value)&.to_s
|
|
363
|
+
end
|
|
364
|
+
|
|
312
365
|
# Converts the value into a boolean and returns it wrapped in an array.
|
|
313
366
|
#
|
|
314
|
-
# @param
|
|
315
|
-
# @param
|
|
367
|
+
# @param [ String ] name Name of the URI option being processed.
|
|
368
|
+
# @param [ String ] value URI option value.
|
|
316
369
|
#
|
|
317
|
-
# @return [ Array<true | false> ] The boolean value parsed and wraped
|
|
370
|
+
# @return [ Array<true | false> | nil ] The boolean value parsed and wraped
|
|
318
371
|
# in an array.
|
|
319
372
|
def convert_repeated_bool(name, value)
|
|
320
373
|
[convert_bool(name, value)]
|
|
321
374
|
end
|
|
322
375
|
|
|
376
|
+
# Reverts a repeated boolean type.
|
|
377
|
+
#
|
|
378
|
+
# @param [ Array<true | false> | true | false | nil ] value The repeated boolean to revert.
|
|
379
|
+
#
|
|
380
|
+
# @return [ Array<true | false> | true | false | nil ] The passed value.
|
|
323
381
|
def revert_repeated_bool(value)
|
|
324
382
|
value
|
|
325
383
|
end
|
|
326
384
|
|
|
385
|
+
# Stringifies a repeated boolean type.
|
|
386
|
+
#
|
|
387
|
+
# @param [ Array<true | false> | nil ] value The repeated boolean.
|
|
388
|
+
#
|
|
389
|
+
# @return [ Array<true | false> | nil ] The string.
|
|
390
|
+
def stringify_repeated_bool(value)
|
|
391
|
+
rep = revert_repeated_bool(value)
|
|
392
|
+
if rep&.is_a?(Array)
|
|
393
|
+
rep.join(",")
|
|
394
|
+
else
|
|
395
|
+
rep
|
|
396
|
+
end
|
|
397
|
+
end
|
|
398
|
+
|
|
327
399
|
# Parses a boolean value and returns its inverse.
|
|
328
400
|
#
|
|
329
401
|
# @param [ String ] name Name of the URI option being processed.
|
|
330
|
-
# @param
|
|
402
|
+
# @param [ String | true | false ] value The URI option value.
|
|
331
403
|
#
|
|
332
|
-
# @return [ true | false | nil ] The inverse of the
|
|
404
|
+
# @return [ true | false | nil ] The inverse of the boolean value parsed out, otherwise nil
|
|
333
405
|
# (and a warning will be logged).
|
|
334
406
|
def convert_inverse_bool(name, value)
|
|
335
407
|
b = convert_bool(name, value)
|
|
@@ -341,20 +413,34 @@ module Mongo
|
|
|
341
413
|
end
|
|
342
414
|
end
|
|
343
415
|
|
|
416
|
+
# Reverts and inverts a boolean type.
|
|
417
|
+
#
|
|
418
|
+
# @param [ true | false | nil ] value The boolean to revert and invert.
|
|
419
|
+
#
|
|
420
|
+
# @return [ true | false | nil ] The inverted boolean.
|
|
344
421
|
def revert_inverse_bool(value)
|
|
345
|
-
!value
|
|
422
|
+
value.nil? ? nil : !value
|
|
346
423
|
end
|
|
347
424
|
|
|
348
|
-
#
|
|
425
|
+
# Inverts and stringifies a boolean.
|
|
426
|
+
#
|
|
427
|
+
# @param [ true | false | nil ] value The boolean.
|
|
428
|
+
#
|
|
429
|
+
# @return [ String | nil ] The string.
|
|
430
|
+
def stringify_inverse_bool(value)
|
|
431
|
+
revert_inverse_bool(value)&.to_s
|
|
432
|
+
end
|
|
433
|
+
|
|
434
|
+
# Converts +value+ into an integer. Only converts positive integers.
|
|
349
435
|
#
|
|
350
436
|
# If the value is not a valid integer, warns and returns nil.
|
|
351
437
|
#
|
|
352
438
|
# @param [ String ] name Name of the URI option being processed.
|
|
353
|
-
# @param
|
|
439
|
+
# @param [ String | Integer ] value URI option value.
|
|
354
440
|
#
|
|
355
441
|
# @return [ nil | Integer ] Converted value.
|
|
356
442
|
def convert_integer(name, value)
|
|
357
|
-
|
|
443
|
+
if value.is_a?(String) && /\A\d+\z/ !~ value
|
|
358
444
|
log_warn("#{value} is not a valid integer for #{name}")
|
|
359
445
|
return nil
|
|
360
446
|
end
|
|
@@ -362,78 +448,143 @@ module Mongo
|
|
|
362
448
|
value.to_i
|
|
363
449
|
end
|
|
364
450
|
|
|
451
|
+
# Reverts an integer.
|
|
452
|
+
#
|
|
453
|
+
# @param [ Integer | nil ] value The integer.
|
|
454
|
+
#
|
|
455
|
+
# @return [ Integer | nil ] The passed value.
|
|
365
456
|
def revert_integer(value)
|
|
366
457
|
value
|
|
367
458
|
end
|
|
368
459
|
|
|
460
|
+
# Stringifies an integer.
|
|
461
|
+
#
|
|
462
|
+
# @param [ Integer | nil ] value The integer.
|
|
463
|
+
#
|
|
464
|
+
# @return [ String | nil ] The string.
|
|
465
|
+
def stringify_integer(value)
|
|
466
|
+
revert_integer(value)&.to_s
|
|
467
|
+
end
|
|
468
|
+
|
|
369
469
|
# Ruby's convention is to provide timeouts in seconds, not milliseconds and
|
|
370
470
|
# to use fractions where more precision is necessary. The connection string
|
|
371
471
|
# options are always in MS so we provide an easy conversion type.
|
|
372
472
|
#
|
|
373
473
|
# @param [ String ] name Name of the URI option being processed.
|
|
374
|
-
# @param [ Integer ] value The millisecond value.
|
|
474
|
+
# @param [ String | Integer | Float ] value The millisecond value.
|
|
375
475
|
#
|
|
376
476
|
# @return [ Float ] The seconds value.
|
|
377
477
|
#
|
|
378
478
|
# @since 2.0.0
|
|
379
479
|
def convert_ms(name, value)
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
480
|
+
case value
|
|
481
|
+
when String
|
|
482
|
+
if /\A-?\d+(\.\d+)?\z/ !~ value
|
|
483
|
+
log_warn("Invalid ms value for #{name}: #{value}")
|
|
484
|
+
return nil
|
|
485
|
+
end
|
|
486
|
+
if value.to_s[0] == '-'
|
|
487
|
+
log_warn("#{name} cannot be a negative number")
|
|
488
|
+
return nil
|
|
489
|
+
end
|
|
490
|
+
when Integer, Float
|
|
491
|
+
if value < 0
|
|
492
|
+
log_warn("#{name} cannot be a negative number")
|
|
493
|
+
return nil
|
|
494
|
+
end
|
|
495
|
+
else
|
|
496
|
+
raise ArgumentError, "Can only convert Strings, Integers, or Floats to ms. Given: #{value.class}"
|
|
388
497
|
end
|
|
389
498
|
|
|
390
499
|
value.to_f / 1000
|
|
391
500
|
end
|
|
392
501
|
|
|
502
|
+
# Reverts an ms.
|
|
503
|
+
#
|
|
504
|
+
# @param [ Float ] value The float.
|
|
505
|
+
#
|
|
506
|
+
# @return [ Integer ] The number multiplied by 1000 as an integer.
|
|
393
507
|
def revert_ms(value)
|
|
394
508
|
(value * 1000).round
|
|
395
509
|
end
|
|
396
510
|
|
|
511
|
+
# Stringifies an ms.
|
|
512
|
+
#
|
|
513
|
+
# @param [ Float ] value The float.
|
|
514
|
+
#
|
|
515
|
+
# @return [ String ] The string.
|
|
516
|
+
def stringify_ms(value)
|
|
517
|
+
revert_ms(value).to_s
|
|
518
|
+
end
|
|
519
|
+
|
|
397
520
|
# Converts +value+ into a symbol.
|
|
398
521
|
#
|
|
399
522
|
# @param [ String ] name Name of the URI option being processed.
|
|
400
|
-
# @param
|
|
523
|
+
# @param [ String | Symbol ] value URI option value.
|
|
401
524
|
#
|
|
402
525
|
# @return [ Symbol ] Converted value.
|
|
403
526
|
def convert_symbol(name, value)
|
|
404
527
|
value.to_sym
|
|
405
528
|
end
|
|
406
529
|
|
|
530
|
+
# Reverts a symbol.
|
|
531
|
+
#
|
|
532
|
+
# @param [ Symbol ] value The symbol.
|
|
533
|
+
#
|
|
534
|
+
# @return [ String ] The passed value as a string.
|
|
407
535
|
def revert_symbol(value)
|
|
408
536
|
value.to_s
|
|
409
537
|
end
|
|
538
|
+
alias :stringify_symbol :revert_symbol
|
|
410
539
|
|
|
411
540
|
# Extract values from the string and put them into an array.
|
|
412
541
|
#
|
|
413
542
|
# @param [ String ] name Name of the URI option being processed.
|
|
414
543
|
# @param [ String ] value The string to build an array from.
|
|
415
544
|
#
|
|
416
|
-
# @return [ Array ] The array built from the string.
|
|
545
|
+
# @return [ Array<String> ] The array built from the string.
|
|
417
546
|
def convert_array(name, value)
|
|
418
547
|
value.split(',')
|
|
419
548
|
end
|
|
420
549
|
|
|
550
|
+
# Reverts an array.
|
|
551
|
+
#
|
|
552
|
+
# @param [ Array<String> ] value An array of strings.
|
|
553
|
+
#
|
|
554
|
+
# @return [ Array<String> ] The passed value.
|
|
421
555
|
def revert_array(value)
|
|
422
556
|
value
|
|
423
557
|
end
|
|
424
558
|
|
|
559
|
+
# Stringifies an array.
|
|
560
|
+
#
|
|
561
|
+
# @param [ Array<String> ] value An array of strings.
|
|
562
|
+
#
|
|
563
|
+
# @return [ String ] The array joined by commas.
|
|
564
|
+
def stringify_array(value)
|
|
565
|
+
value.join(',')
|
|
566
|
+
end
|
|
567
|
+
|
|
425
568
|
# Authentication mechanism transformation.
|
|
426
569
|
#
|
|
427
570
|
# @param [ String ] name Name of the URI option being processed.
|
|
428
|
-
# @param
|
|
571
|
+
# @param [ String ] value The authentication mechanism.
|
|
429
572
|
#
|
|
430
|
-
# @return [Symbol] The transformed authentication mechanism.
|
|
573
|
+
# @return [ Symbol ] The transformed authentication mechanism.
|
|
431
574
|
def convert_auth_mech(name, value)
|
|
432
|
-
|
|
433
|
-
|
|
575
|
+
auth_mech = AUTH_MECH_MAP[value.upcase]
|
|
576
|
+
(auth_mech || value).tap do |mech|
|
|
577
|
+
log_warn("#{value} is not a valid auth mechanism") unless auth_mech
|
|
434
578
|
end
|
|
435
579
|
end
|
|
436
580
|
|
|
581
|
+
# Reverts auth mechanism.
|
|
582
|
+
#
|
|
583
|
+
# @param [ Symbol ] value The auth mechanism.
|
|
584
|
+
#
|
|
585
|
+
# @return [ String ] The auth mechanism as a string.
|
|
586
|
+
#
|
|
587
|
+
# @raise [ ArgumentError ] if its an invalid auth mechanism.
|
|
437
588
|
def revert_auth_mech(value)
|
|
438
589
|
found = AUTH_MECH_MAP.detect do |k, v|
|
|
439
590
|
v == value
|
|
@@ -445,12 +596,21 @@ module Mongo
|
|
|
445
596
|
end
|
|
446
597
|
end
|
|
447
598
|
|
|
599
|
+
# Stringifies auth mechanism.
|
|
600
|
+
#
|
|
601
|
+
# @param [ Symbol ] value The auth mechanism.
|
|
602
|
+
#
|
|
603
|
+
# @return [ String | nil ] The auth mechanism as a string.
|
|
604
|
+
def stringify_auth_mech(value)
|
|
605
|
+
revert_auth_mech(value) rescue nil
|
|
606
|
+
end
|
|
607
|
+
|
|
448
608
|
# Auth mechanism properties extractor.
|
|
449
609
|
#
|
|
450
610
|
# @param [ String ] name Name of the URI option being processed.
|
|
451
|
-
# @param
|
|
611
|
+
# @param [ String ] value The auth mechanism properties string.
|
|
452
612
|
#
|
|
453
|
-
# @return [ Hash ] The auth mechanism properties hash.
|
|
613
|
+
# @return [ Hash | nil ] The auth mechanism properties hash.
|
|
454
614
|
def convert_auth_mech_props(name, value)
|
|
455
615
|
properties = hash_extractor('authMechanismProperties', value)
|
|
456
616
|
if properties
|
|
@@ -463,62 +623,101 @@ module Mongo
|
|
|
463
623
|
properties
|
|
464
624
|
end
|
|
465
625
|
|
|
626
|
+
# Reverts auth mechanism properties.
|
|
627
|
+
#
|
|
628
|
+
# @param [ Hash | nil ] value The auth mech properties.
|
|
629
|
+
#
|
|
630
|
+
# @return [ Hash | nil ] The passed value.
|
|
466
631
|
def revert_auth_mech_props(value)
|
|
467
632
|
value
|
|
468
633
|
end
|
|
469
634
|
|
|
635
|
+
# Stringifies auth mechanism properties.
|
|
636
|
+
#
|
|
637
|
+
# @param [ Hash | nil ] value The auth mech properties.
|
|
638
|
+
#
|
|
639
|
+
# @return [ String | nil ] The string.
|
|
640
|
+
def stringify_auth_mech_props(value)
|
|
641
|
+
return if value.nil?
|
|
642
|
+
value.map { |k, v| "#{k}:#{v}" }.join(',')
|
|
643
|
+
end
|
|
644
|
+
|
|
470
645
|
# Parses the max staleness value, which must be either "0" or an integer
|
|
471
646
|
# greater or equal to 90.
|
|
472
647
|
#
|
|
473
648
|
# @param [ String ] name Name of the URI option being processed.
|
|
474
|
-
# @param
|
|
649
|
+
# @param [ String | Integer ] value The max staleness string.
|
|
475
650
|
#
|
|
476
651
|
# @return [ Integer | nil ] The max staleness integer parsed out if it is valid, otherwise nil
|
|
477
652
|
# (and a warning will be logged).
|
|
478
653
|
def convert_max_staleness(name, value)
|
|
479
|
-
if /\A-?\d+\z/ =~ value
|
|
480
|
-
|
|
654
|
+
int = if value.is_a?(String) && /\A-?\d+\z/ =~ value
|
|
655
|
+
value.to_i
|
|
656
|
+
elsif value.is_a?(Integer)
|
|
657
|
+
value
|
|
658
|
+
end
|
|
481
659
|
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
660
|
+
if int.nil?
|
|
661
|
+
log_warn("Invalid max staleness value: #{value}")
|
|
662
|
+
return nil
|
|
663
|
+
end
|
|
485
664
|
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
end
|
|
665
|
+
if int == -1
|
|
666
|
+
int = nil
|
|
667
|
+
end
|
|
490
668
|
|
|
491
|
-
|
|
669
|
+
if int && (int > 0 && int < 90 || int < 0)
|
|
670
|
+
log_warn("max staleness should be either 0 or greater than 90: #{value}")
|
|
671
|
+
int = nil
|
|
492
672
|
end
|
|
493
673
|
|
|
494
|
-
|
|
495
|
-
nil
|
|
674
|
+
int
|
|
496
675
|
end
|
|
497
676
|
|
|
677
|
+
# Reverts max staleness.
|
|
678
|
+
#
|
|
679
|
+
# @param [ Integer | nil ] value The max staleness.
|
|
680
|
+
#
|
|
681
|
+
# @return [ Integer | nil ] The passed value.
|
|
498
682
|
def revert_max_staleness(value)
|
|
499
683
|
value
|
|
500
684
|
end
|
|
501
685
|
|
|
686
|
+
# Stringifies max staleness.
|
|
687
|
+
#
|
|
688
|
+
# @param [ Integer | nil ] value The max staleness.
|
|
689
|
+
#
|
|
690
|
+
# @return [ String | nil ] The string.
|
|
691
|
+
def stringify_max_staleness(value)
|
|
692
|
+
revert_max_staleness(value)&.to_s
|
|
693
|
+
end
|
|
694
|
+
|
|
502
695
|
# Read preference mode transformation.
|
|
503
696
|
#
|
|
504
697
|
# @param [ String ] name Name of the URI option being processed.
|
|
505
|
-
# @param
|
|
698
|
+
# @param [ String ] value The read mode string value.
|
|
506
699
|
#
|
|
507
|
-
# @return [Symbol] The read mode
|
|
700
|
+
# @return [ Symbol | String ] The read mode.
|
|
508
701
|
def convert_read_mode(name, value)
|
|
509
702
|
READ_MODE_MAP[value.downcase] || value
|
|
510
703
|
end
|
|
511
704
|
|
|
705
|
+
# Reverts read mode.
|
|
706
|
+
#
|
|
707
|
+
# @param [ Symbol | String ] value The read mode.
|
|
708
|
+
#
|
|
709
|
+
# @return [ String ] The read mode as a string.
|
|
512
710
|
def revert_read_mode(value)
|
|
513
711
|
value.to_s.gsub(/_(\w)/) { $1.upcase }
|
|
514
712
|
end
|
|
713
|
+
alias :stringify_read_mode :revert_read_mode
|
|
515
714
|
|
|
516
715
|
# Read preference tags transformation.
|
|
517
716
|
#
|
|
518
717
|
# @param [ String ] name Name of the URI option being processed.
|
|
519
|
-
# @param
|
|
718
|
+
# @param [ String ] value The string representing tag set.
|
|
520
719
|
#
|
|
521
|
-
# @return [Array<Hash>] Array with tag set.
|
|
720
|
+
# @return [ Array<Hash> | nil ] Array with tag set.
|
|
522
721
|
def convert_read_tags(name, value)
|
|
523
722
|
converted = convert_read_set(name, value)
|
|
524
723
|
if converted
|
|
@@ -528,16 +727,30 @@ module Mongo
|
|
|
528
727
|
end
|
|
529
728
|
end
|
|
530
729
|
|
|
730
|
+
# Reverts read tags.
|
|
731
|
+
#
|
|
732
|
+
# @param [ Array<Hash> | nil ] value The read tags.
|
|
733
|
+
#
|
|
734
|
+
# @return [ Array<Hash> | nil ] The passed value.
|
|
531
735
|
def revert_read_tags(value)
|
|
532
736
|
value
|
|
533
737
|
end
|
|
534
738
|
|
|
739
|
+
# Stringifies read tags.
|
|
740
|
+
#
|
|
741
|
+
# @param [ Array<Hash> | nil ] value The read tags.
|
|
742
|
+
#
|
|
743
|
+
# @return [ String | nil ] The joined string of read tags.
|
|
744
|
+
def stringify_read_tags(value)
|
|
745
|
+
value&.map { |ar| ar.map { |k, v| "#{k}:#{v}" }.join(',') }
|
|
746
|
+
end
|
|
747
|
+
|
|
535
748
|
# Read preference tag set extractor.
|
|
536
749
|
#
|
|
537
750
|
# @param [ String ] name Name of the URI option being processed.
|
|
538
|
-
# @param
|
|
751
|
+
# @param [ String ] value The tag set string.
|
|
539
752
|
#
|
|
540
|
-
# @return [Hash] The tag set hash.
|
|
753
|
+
# @return [ Hash ] The tag set hash.
|
|
541
754
|
def convert_read_set(name, value)
|
|
542
755
|
hash_extractor('readPreferenceTags', value)
|
|
543
756
|
end
|
|
@@ -549,7 +762,7 @@ module Mongo
|
|
|
549
762
|
# Otherwise returns the string +value+ unchanged.
|
|
550
763
|
#
|
|
551
764
|
# @param [ String ] name Name of the URI option being processed.
|
|
552
|
-
# @param
|
|
765
|
+
# @param [ String | Integer ] value URI option value.
|
|
553
766
|
#
|
|
554
767
|
# @return [ Integer | Symbol | String ] Converted value.
|
|
555
768
|
def convert_w(name, value)
|
|
@@ -563,6 +776,11 @@ module Mongo
|
|
|
563
776
|
end
|
|
564
777
|
end
|
|
565
778
|
|
|
779
|
+
# Reverts write concern.
|
|
780
|
+
#
|
|
781
|
+
# @param [ Integer | Symbol | String ] value The write concern.
|
|
782
|
+
#
|
|
783
|
+
# @return [ Integer | String ] The write concern as a string.
|
|
566
784
|
def revert_w(value)
|
|
567
785
|
case value
|
|
568
786
|
when Symbol
|
|
@@ -572,34 +790,59 @@ module Mongo
|
|
|
572
790
|
end
|
|
573
791
|
end
|
|
574
792
|
|
|
793
|
+
# Stringifies write concern.
|
|
794
|
+
#
|
|
795
|
+
# @param [ Integer | Symbol | String ] value The write concern.
|
|
796
|
+
#
|
|
797
|
+
# @return [ String ] The write concern as a string.
|
|
798
|
+
def stringify_w(value)
|
|
799
|
+
revert_w(value)&.to_s
|
|
800
|
+
end
|
|
801
|
+
|
|
575
802
|
# Parses the zlib compression level.
|
|
576
803
|
#
|
|
577
804
|
# @param [ String ] name Name of the URI option being processed.
|
|
578
|
-
# @param
|
|
805
|
+
# @param [ String | Integer ] value The zlib compression level string.
|
|
579
806
|
#
|
|
580
807
|
# @return [ Integer | nil ] The compression level value if it is between -1 and 9 (inclusive),
|
|
581
808
|
# otherwise nil (and a warning will be logged).
|
|
582
809
|
def convert_zlib_compression_level(name, value)
|
|
583
|
-
if /\A-?\d+\z/ =~ value
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
return i
|
|
588
|
-
end
|
|
810
|
+
i = if value.is_a?(String) && /\A-?\d+\z/ =~ value
|
|
811
|
+
value.to_i
|
|
812
|
+
elsif value.is_a?(Integer)
|
|
813
|
+
value
|
|
589
814
|
end
|
|
590
815
|
|
|
591
|
-
|
|
592
|
-
|
|
816
|
+
if i && (i >= -1 && i <= 9)
|
|
817
|
+
i
|
|
818
|
+
else
|
|
819
|
+
log_warn("#{value} is not a valid zlibCompressionLevel")
|
|
820
|
+
nil
|
|
821
|
+
end
|
|
593
822
|
end
|
|
594
823
|
|
|
824
|
+
# Reverts zlib compression level
|
|
825
|
+
#
|
|
826
|
+
# @param [ Integer | nil ] value The write concern.
|
|
827
|
+
#
|
|
828
|
+
# @return [ Integer | nil ] The passed value.
|
|
595
829
|
def revert_zlib_compression_level(value)
|
|
596
830
|
value
|
|
597
831
|
end
|
|
598
832
|
|
|
833
|
+
# Stringifies zlib compression level
|
|
834
|
+
#
|
|
835
|
+
# @param [ Integer | nil ] value The write concern.
|
|
836
|
+
#
|
|
837
|
+
# @return [ String | nil ] The string.
|
|
838
|
+
def stringify_zlib_compression_level(value)
|
|
839
|
+
revert_zlib_compression_level(value)&.to_s
|
|
840
|
+
end
|
|
841
|
+
|
|
599
842
|
# Extract values from the string and put them into a nested hash.
|
|
600
843
|
#
|
|
601
844
|
# @param [ String ] name Name of the URI option being processed.
|
|
602
|
-
# @param
|
|
845
|
+
# @param [ String ] value The string to build a hash from.
|
|
603
846
|
#
|
|
604
847
|
# @return [ Hash ] The hash built from the string.
|
|
605
848
|
def hash_extractor(name, value)
|
|
@@ -619,8 +862,6 @@ module Mongo
|
|
|
619
862
|
h
|
|
620
863
|
end
|
|
621
864
|
end
|
|
622
|
-
|
|
623
865
|
end
|
|
624
|
-
|
|
625
866
|
end
|
|
626
867
|
end
|