mongo 2.13.1 → 2.19.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +36 -39
- data/Rakefile +49 -20
- data/bin/mongo_console +2 -0
- data/lib/mongo/active_support.rb +3 -0
- data/lib/mongo/address/ipv4.rb +4 -1
- data/lib/mongo/address/ipv6.rb +4 -1
- data/lib/mongo/address/unix.rb +3 -0
- data/lib/mongo/address/validator.rb +3 -0
- data/lib/mongo/address.rb +4 -1
- data/lib/mongo/auth/aws/conversation.rb +4 -8
- 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 +174 -36
- data/lib/mongo/auth/aws/request.rb +3 -2
- data/lib/mongo/auth/aws.rb +8 -5
- data/lib/mongo/auth/base.rb +25 -9
- data/lib/mongo/auth/conversation_base.rb +35 -0
- data/lib/mongo/auth/cr/conversation.rb +9 -29
- data/lib/mongo/auth/cr.rb +3 -0
- data/lib/mongo/auth/credential_cache.rb +3 -0
- data/lib/mongo/auth/gssapi/conversation.rb +7 -15
- data/lib/mongo/auth/gssapi.rb +3 -0
- data/lib/mongo/auth/ldap/conversation.rb +6 -14
- data/lib/mongo/auth/ldap.rb +3 -0
- data/lib/mongo/auth/roles.rb +19 -16
- data/lib/mongo/auth/sasl_conversation_base.rb +4 -13
- data/lib/mongo/auth/scram/conversation.rb +3 -0
- data/lib/mongo/auth/scram.rb +5 -2
- data/lib/mongo/auth/scram256/conversation.rb +3 -0
- data/lib/mongo/auth/scram256.rb +3 -0
- data/lib/mongo/auth/scram_conversation_base.rb +10 -34
- data/lib/mongo/auth/stringprep/profiles/sasl.rb +3 -0
- data/lib/mongo/auth/stringprep/tables.rb +3 -0
- data/lib/mongo/auth/stringprep/unicode_normalize/normalize.rb +2 -2
- data/lib/mongo/auth/stringprep/unicode_normalize/tables.rb +2 -1
- data/lib/mongo/auth/stringprep.rb +4 -1
- data/lib/mongo/auth/user/view.rb +19 -9
- data/lib/mongo/auth/user.rb +3 -0
- data/lib/mongo/auth/x509/conversation.rb +7 -25
- data/lib/mongo/auth/x509.rb +3 -0
- data/lib/mongo/auth.rb +16 -2
- data/lib/mongo/background_thread.rb +16 -2
- data/lib/mongo/bson.rb +3 -0
- data/lib/mongo/bulk_write/combineable.rb +3 -0
- data/lib/mongo/bulk_write/ordered_combiner.rb +3 -0
- data/lib/mongo/bulk_write/result.rb +13 -1
- data/lib/mongo/bulk_write/result_combiner.rb +5 -4
- data/lib/mongo/bulk_write/transformable.rb +3 -0
- data/lib/mongo/bulk_write/unordered_combiner.rb +3 -0
- data/lib/mongo/bulk_write/validatable.rb +3 -0
- data/lib/mongo/bulk_write.rb +156 -45
- data/lib/mongo/caching_cursor.rb +77 -0
- data/lib/mongo/client.rb +367 -41
- data/lib/mongo/client_encryption.rb +217 -10
- data/lib/mongo/cluster/periodic_executor.rb +7 -3
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +101 -43
- data/lib/mongo/cluster/reapers/socket_reaper.rb +4 -1
- data/lib/mongo/cluster/sdam_flow.rb +67 -17
- data/lib/mongo/cluster/topology/base.rb +16 -9
- data/lib/mongo/cluster/topology/load_balanced.rb +102 -0
- data/lib/mongo/cluster/topology/no_replica_set_options.rb +3 -0
- data/lib/mongo/cluster/topology/replica_set_no_primary.rb +3 -0
- data/lib/mongo/cluster/topology/replica_set_with_primary.rb +3 -0
- data/lib/mongo/cluster/topology/sharded.rb +3 -0
- data/lib/mongo/cluster/topology/single.rb +4 -1
- data/lib/mongo/cluster/topology/unknown.rb +3 -0
- data/lib/mongo/cluster/topology.rb +31 -8
- data/lib/mongo/cluster.rb +210 -116
- data/lib/mongo/cluster_time.rb +3 -0
- data/lib/mongo/collection/helpers.rb +43 -0
- data/lib/mongo/collection/queryable_encryption.rb +162 -0
- data/lib/mongo/collection/view/aggregation.rb +94 -24
- data/lib/mongo/collection/view/builder/aggregation.rb +19 -17
- data/lib/mongo/collection/view/builder/map_reduce.rb +18 -49
- data/lib/mongo/collection/view/builder.rb +3 -4
- data/lib/mongo/collection/view/change_stream/retryable.rb +3 -0
- data/lib/mongo/collection/view/change_stream.rb +71 -22
- data/lib/mongo/collection/view/explainable.rb +30 -8
- data/lib/mongo/collection/view/immutable.rb +3 -0
- data/lib/mongo/collection/view/iterable.rb +121 -24
- data/lib/mongo/collection/view/map_reduce.rb +76 -25
- data/lib/mongo/collection/view/readable.rb +147 -67
- data/lib/mongo/collection/view/writable.rb +296 -162
- data/lib/mongo/collection/view.rb +42 -41
- data/lib/mongo/collection.rb +356 -89
- data/lib/mongo/condition_variable.rb +58 -0
- data/lib/mongo/config/options.rb +63 -0
- data/lib/mongo/config/validators/option.rb +27 -0
- data/lib/mongo/config.rb +43 -0
- data/lib/mongo/crypt/auto_decryption_context.rb +3 -0
- data/lib/mongo/crypt/auto_encrypter.rb +142 -15
- data/lib/mongo/crypt/auto_encryption_context.rb +3 -0
- data/lib/mongo/crypt/binary.rb +3 -0
- data/lib/mongo/crypt/binding.rb +717 -151
- data/lib/mongo/crypt/context.rb +74 -5
- data/lib/mongo/crypt/data_key_context.rb +15 -104
- data/lib/mongo/crypt/encryption_io.rb +101 -64
- data/lib/mongo/crypt/explicit_decryption_context.rb +3 -0
- data/lib/mongo/crypt/explicit_encrypter.rb +235 -29
- data/lib/mongo/crypt/explicit_encryption_context.rb +78 -21
- data/lib/mongo/crypt/explicit_encryption_expression_context.rb +30 -0
- data/lib/mongo/crypt/handle.rb +171 -86
- data/lib/mongo/crypt/hooks.rb +28 -2
- 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 +20 -0
- 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 +21 -0
- data/lib/mongo/crypt/kms/credentials.rb +96 -0
- 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 +21 -0
- 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 +19 -0
- 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 +19 -0
- data/lib/mongo/crypt/kms/master_key_document.rb +65 -0
- data/lib/mongo/crypt/kms.rb +122 -0
- data/lib/mongo/crypt/kms_context.rb +3 -0
- data/lib/mongo/crypt/rewrap_many_data_key_context.rb +46 -0
- data/lib/mongo/crypt/rewrap_many_data_key_result.rb +37 -0
- data/lib/mongo/crypt/status.rb +11 -2
- data/lib/mongo/crypt.rb +18 -0
- data/lib/mongo/cursor/kill_spec.rb +76 -0
- data/lib/mongo/cursor.rb +150 -43
- data/lib/mongo/database/view.rb +55 -10
- data/lib/mongo/database.rb +95 -25
- data/lib/mongo/dbref.rb +4 -105
- data/lib/mongo/distinguishing_semaphore.rb +4 -1
- data/lib/mongo/error/auth_error.rb +3 -0
- data/lib/mongo/error/bad_load_balancer_target.rb +26 -0
- data/lib/mongo/error/bulk_write_error.rb +49 -5
- data/lib/mongo/error/change_stream_resumable.rb +3 -0
- data/lib/mongo/error/client_closed.rb +24 -0
- data/lib/mongo/error/closed_stream.rb +3 -0
- data/lib/mongo/error/connection_check_out_timeout.rb +3 -0
- data/lib/mongo/error/connection_perished.rb +5 -0
- data/lib/mongo/error/connection_unavailable.rb +27 -0
- data/lib/mongo/error/credential_check_error.rb +3 -0
- data/lib/mongo/error/crypt_error.rb +3 -0
- data/lib/mongo/error/extra_file_chunk.rb +3 -0
- data/lib/mongo/error/failed_string_prep_validation.rb +3 -0
- data/lib/mongo/error/file_not_found.rb +3 -0
- data/lib/mongo/error/handshake_error.rb +3 -0
- data/lib/mongo/error/insufficient_iteration_count.rb +3 -0
- data/lib/mongo/error/internal_driver_error.rb +25 -0
- data/lib/mongo/error/invalid_address.rb +3 -0
- data/lib/mongo/error/invalid_application_name.rb +3 -0
- data/lib/mongo/error/invalid_bulk_operation.rb +3 -0
- data/lib/mongo/error/invalid_bulk_operation_type.rb +3 -0
- data/lib/mongo/error/invalid_collection_name.rb +3 -0
- data/lib/mongo/error/invalid_config_option.rb +21 -0
- data/lib/mongo/error/invalid_cursor_operation.rb +3 -0
- data/lib/mongo/error/invalid_database_name.rb +3 -0
- data/lib/mongo/error/invalid_document.rb +3 -0
- data/lib/mongo/error/invalid_file.rb +3 -0
- data/lib/mongo/error/invalid_file_revision.rb +3 -0
- data/lib/mongo/error/invalid_max_connecting.rb +28 -0
- data/lib/mongo/error/invalid_min_pool_size.rb +3 -0
- data/lib/mongo/error/invalid_nonce.rb +3 -0
- data/lib/mongo/error/invalid_read_concern.rb +31 -0
- data/lib/mongo/error/invalid_read_option.rb +4 -1
- data/lib/mongo/error/invalid_replacement_document.rb +30 -9
- data/lib/mongo/error/invalid_server_auth_host.rb +3 -0
- data/lib/mongo/error/invalid_server_auth_response.rb +3 -0
- data/lib/mongo/error/invalid_server_preference.rb +3 -0
- data/lib/mongo/error/invalid_session.rb +3 -0
- data/lib/mongo/error/invalid_signature.rb +3 -0
- data/lib/mongo/error/invalid_transaction_operation.rb +3 -0
- data/lib/mongo/error/invalid_txt_record.rb +3 -0
- data/lib/mongo/error/invalid_update_document.rb +30 -7
- data/lib/mongo/error/invalid_uri.rb +3 -0
- data/lib/mongo/error/invalid_write_concern.rb +3 -0
- data/lib/mongo/error/kms_error.rb +3 -0
- data/lib/mongo/error/labelable.rb +72 -0
- data/lib/mongo/error/lint_error.rb +3 -0
- data/lib/mongo/error/max_bson_size.rb +3 -0
- data/lib/mongo/error/max_message_size.rb +3 -0
- data/lib/mongo/error/mismatched_domain.rb +3 -0
- data/lib/mongo/error/missing_connection.rb +27 -0
- data/lib/mongo/error/missing_file_chunk.rb +11 -2
- data/lib/mongo/error/missing_password.rb +3 -0
- data/lib/mongo/error/missing_resume_token.rb +3 -0
- data/lib/mongo/error/missing_scram_server_signature.rb +3 -0
- data/lib/mongo/error/missing_service_id.rb +26 -0
- data/lib/mongo/error/mongocryptd_spawn_error.rb +3 -0
- data/lib/mongo/error/multi_index_drop.rb +3 -0
- data/lib/mongo/error/need_primary_server.rb +3 -0
- data/lib/mongo/error/no_server_available.rb +3 -0
- data/lib/mongo/error/no_service_connection_available.rb +49 -0
- data/lib/mongo/error/no_srv_records.rb +3 -0
- data/lib/mongo/error/notable.rb +24 -0
- data/lib/mongo/error/operation_failure.rb +57 -87
- data/lib/mongo/error/parser.rb +69 -13
- data/lib/mongo/error/pool_cleared_error.rb +40 -0
- data/lib/mongo/error/pool_closed_error.rb +6 -16
- 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 +3 -0
- data/lib/mongo/error/read_write_retryable.rb +108 -0
- data/lib/mongo/error/sdam_error_detection.rb +16 -5
- data/lib/mongo/error/server_api_conflict.rb +26 -0
- data/lib/mongo/error/server_api_not_supported.rb +27 -0
- data/lib/mongo/error/server_certificate_revoked.rb +25 -0
- data/lib/mongo/error/server_not_usable.rb +36 -0
- data/lib/mongo/error/session_ended.rb +3 -0
- data/lib/mongo/error/session_not_materialized.rb +29 -0
- data/lib/mongo/error/sessions_not_supported.rb +3 -0
- data/lib/mongo/error/snapshot_session_invalid_server_version.rb +31 -0
- data/lib/mongo/error/snapshot_session_transaction_prohibited.rb +30 -0
- data/lib/mongo/error/socket_error.rb +3 -0
- data/lib/mongo/error/socket_timeout_error.rb +3 -0
- data/lib/mongo/error/unchangeable_collection_option.rb +3 -0
- data/lib/mongo/error/unexpected_chunk_length.rb +3 -0
- data/lib/mongo/error/unexpected_response.rb +3 -0
- data/lib/mongo/error/unknown_payload_type.rb +3 -0
- data/lib/mongo/error/unmet_dependency.rb +24 -0
- data/lib/mongo/error/unsupported_array_filters.rb +3 -0
- data/lib/mongo/error/unsupported_collation.rb +3 -0
- data/lib/mongo/error/unsupported_features.rb +3 -0
- data/lib/mongo/error/unsupported_message_type.rb +3 -0
- data/lib/mongo/error/unsupported_option.rb +17 -12
- data/lib/mongo/error/write_retryable.rb +3 -0
- data/lib/mongo/error.rb +31 -38
- data/lib/mongo/event/base.rb +3 -0
- data/lib/mongo/event/listeners.rb +3 -0
- data/lib/mongo/event/publisher.rb +3 -0
- data/lib/mongo/event/subscriber.rb +3 -0
- data/lib/mongo/event.rb +3 -0
- data/lib/mongo/grid/file/chunk.rb +6 -2
- data/lib/mongo/grid/file/info.rb +5 -1
- data/lib/mongo/grid/file.rb +3 -0
- data/lib/mongo/grid/fs_bucket.rb +86 -46
- data/lib/mongo/grid/stream/read.rb +28 -7
- data/lib/mongo/grid/stream/write.rb +3 -0
- data/lib/mongo/grid/stream.rb +3 -0
- data/lib/mongo/grid.rb +3 -0
- data/lib/mongo/id.rb +10 -5
- data/lib/mongo/index/view.rb +68 -58
- data/lib/mongo/index.rb +3 -0
- data/lib/mongo/lint.rb +5 -1
- data/lib/mongo/loggable.rb +5 -2
- data/lib/mongo/logger.rb +6 -3
- data/lib/mongo/monitoring/cmap_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/command_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/base.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_closed.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_created.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_ready.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +17 -4
- data/lib/mongo/monitoring/event/cmap/pool_closed.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/pool_created.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/pool_ready.rb +67 -0
- data/lib/mongo/monitoring/event/cmap.rb +4 -0
- data/lib/mongo/monitoring/event/command_failed.rb +38 -5
- data/lib/mongo/monitoring/event/command_started.rb +23 -3
- data/lib/mongo/monitoring/event/command_succeeded.rb +36 -3
- data/lib/mongo/monitoring/event/secure.rb +39 -5
- data/lib/mongo/monitoring/event/server_closed.rb +3 -0
- data/lib/mongo/monitoring/event/server_description_changed.rb +4 -1
- data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +32 -18
- data/lib/mongo/monitoring/event/server_heartbeat_started.rb +3 -0
- data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +30 -16
- data/lib/mongo/monitoring/event/server_opening.rb +3 -0
- data/lib/mongo/monitoring/event/topology_changed.rb +3 -0
- data/lib/mongo/monitoring/event/topology_closed.rb +3 -0
- data/lib/mongo/monitoring/event/topology_opening.rb +3 -0
- data/lib/mongo/monitoring/event.rb +3 -0
- data/lib/mongo/monitoring/publishable.rb +38 -12
- data/lib/mongo/monitoring/sdam_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/server_closed_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/server_opening_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/topology_closed_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/topology_opening_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/unified_sdam_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring.rb +20 -8
- data/lib/mongo/operation/aggregate/op_msg.rb +3 -0
- data/lib/mongo/operation/aggregate/result.rb +12 -8
- data/lib/mongo/operation/aggregate.rb +4 -2
- data/lib/mongo/operation/collections_info/result.rb +24 -1
- data/lib/mongo/operation/collections_info.rb +10 -2
- data/lib/mongo/operation/command/op_msg.rb +9 -0
- data/lib/mongo/operation/command.rb +4 -2
- data/lib/mongo/operation/context.rb +138 -0
- data/lib/mongo/operation/count/op_msg.rb +12 -0
- data/lib/mongo/operation/count.rb +4 -2
- data/lib/mongo/operation/create/op_msg.rb +13 -0
- data/lib/mongo/operation/create.rb +4 -2
- data/lib/mongo/operation/create_index/op_msg.rb +21 -4
- data/lib/mongo/operation/create_index.rb +4 -2
- data/lib/mongo/operation/create_user/op_msg.rb +3 -0
- data/lib/mongo/operation/create_user.rb +4 -2
- data/lib/mongo/operation/delete/bulk_result.rb +5 -0
- data/lib/mongo/operation/delete/op_msg.rb +13 -1
- data/lib/mongo/operation/delete/result.rb +6 -0
- data/lib/mongo/operation/delete.rb +3 -2
- data/lib/mongo/operation/distinct/op_msg.rb +13 -0
- data/lib/mongo/operation/distinct.rb +4 -2
- data/lib/mongo/operation/drop/op_msg.rb +3 -0
- data/lib/mongo/operation/drop.rb +4 -2
- data/lib/mongo/operation/drop_database/op_msg.rb +3 -0
- data/lib/mongo/operation/drop_database.rb +4 -2
- data/lib/mongo/operation/drop_index/op_msg.rb +8 -1
- data/lib/mongo/operation/drop_index.rb +4 -2
- data/lib/mongo/operation/explain/op_msg.rb +17 -0
- data/lib/mongo/operation/explain/result.rb +6 -0
- data/lib/mongo/operation/explain.rb +4 -3
- data/lib/mongo/operation/find/builder/command.rb +111 -0
- data/lib/mongo/operation/find/builder/flags.rb +61 -0
- data/lib/mongo/operation/find/builder/modifiers.rb +89 -0
- data/lib/mongo/operation/find/builder.rb +20 -0
- data/lib/mongo/operation/find/op_msg.rb +15 -0
- data/lib/mongo/operation/find/result.rb +16 -0
- data/lib/mongo/operation/find.rb +5 -3
- data/lib/mongo/operation/get_more/command_builder.rb +42 -0
- data/lib/mongo/operation/get_more/op_msg.rb +4 -0
- data/lib/mongo/operation/get_more/result.rb +6 -0
- data/lib/mongo/operation/get_more.rb +5 -3
- data/lib/mongo/operation/indexes/op_msg.rb +3 -0
- data/lib/mongo/operation/indexes/result.rb +8 -0
- data/lib/mongo/operation/indexes.rb +4 -3
- data/lib/mongo/operation/insert/bulk_result.rb +13 -1
- data/lib/mongo/operation/insert/op_msg.rb +11 -5
- data/lib/mongo/operation/insert/result.rb +14 -3
- data/lib/mongo/operation/insert.rb +3 -2
- data/lib/mongo/operation/kill_cursors/command_builder.rb +35 -0
- data/lib/mongo/operation/kill_cursors/op_msg.rb +13 -0
- data/lib/mongo/operation/kill_cursors.rb +5 -3
- data/lib/mongo/operation/list_collections/op_msg.rb +7 -1
- data/lib/mongo/operation/list_collections/result.rb +12 -1
- data/lib/mongo/operation/list_collections.rb +4 -2
- data/lib/mongo/operation/map_reduce/op_msg.rb +4 -1
- data/lib/mongo/operation/map_reduce/result.rb +29 -0
- data/lib/mongo/operation/map_reduce.rb +4 -2
- data/lib/mongo/operation/op_msg_base.rb +3 -0
- data/lib/mongo/operation/parallel_scan/op_msg.rb +3 -0
- data/lib/mongo/operation/parallel_scan/result.rb +7 -0
- data/lib/mongo/operation/parallel_scan.rb +4 -2
- data/lib/mongo/operation/remove_user/op_msg.rb +3 -0
- data/lib/mongo/operation/remove_user.rb +4 -2
- data/lib/mongo/operation/result.rb +67 -11
- data/lib/mongo/operation/shared/bypass_document_validation.rb +4 -0
- data/lib/mongo/operation/shared/causal_consistency_supported.rb +4 -0
- data/lib/mongo/operation/shared/executable.rb +61 -17
- data/lib/mongo/operation/shared/executable_no_validate.rb +5 -2
- data/lib/mongo/operation/shared/executable_transaction_label.rb +3 -0
- data/lib/mongo/operation/shared/idable.rb +5 -1
- data/lib/mongo/operation/shared/limited.rb +4 -0
- data/lib/mongo/operation/shared/object_id_generator.rb +4 -0
- data/lib/mongo/operation/shared/op_msg_executable.rb +59 -0
- data/lib/mongo/operation/shared/polymorphic_lookup.rb +3 -0
- data/lib/mongo/operation/shared/polymorphic_result.rb +3 -0
- data/lib/mongo/operation/shared/read_preference_supported.rb +44 -37
- data/lib/mongo/operation/shared/response_handling.rb +32 -27
- data/lib/mongo/operation/shared/result/aggregatable.rb +4 -0
- data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +3 -0
- data/lib/mongo/operation/shared/sessions_supported.rb +55 -20
- data/lib/mongo/operation/shared/specifiable.rb +15 -29
- data/lib/mongo/operation/shared/validatable.rb +87 -0
- data/lib/mongo/operation/shared/write.rb +28 -28
- data/lib/mongo/operation/shared/write_concern_supported.rb +4 -0
- data/lib/mongo/operation/update/bulk_result.rb +3 -0
- data/lib/mongo/operation/update/op_msg.rb +12 -4
- data/lib/mongo/operation/update/result.rb +11 -0
- data/lib/mongo/operation/update.rb +3 -2
- data/lib/mongo/operation/update_user/op_msg.rb +3 -0
- data/lib/mongo/operation/update_user.rb +4 -2
- data/lib/mongo/operation/users_info/op_msg.rb +3 -0
- data/lib/mongo/operation/users_info/result.rb +6 -0
- data/lib/mongo/operation/users_info.rb +4 -2
- data/lib/mongo/operation/write_command/op_msg.rb +43 -0
- data/lib/mongo/operation/write_command.rb +31 -0
- data/lib/mongo/operation.rb +17 -4
- data/lib/mongo/options/mapper.rb +3 -0
- data/lib/mongo/options/redacted.rb +3 -0
- data/lib/mongo/options.rb +3 -0
- data/lib/mongo/protocol/bit_vector.rb +6 -1
- data/lib/mongo/protocol/caching_hash.rb +52 -0
- data/lib/mongo/protocol/compressed.rb +54 -5
- data/lib/mongo/protocol/get_more.rb +3 -0
- data/lib/mongo/protocol/kill_cursors.rb +3 -0
- data/lib/mongo/protocol/message.rb +27 -10
- data/lib/mongo/protocol/msg.rb +61 -17
- data/lib/mongo/protocol/query.rb +53 -32
- data/lib/mongo/protocol/registry.rb +3 -0
- data/lib/mongo/protocol/reply.rb +3 -0
- data/lib/mongo/protocol/serializers.rb +27 -17
- data/lib/mongo/protocol.rb +4 -3
- data/lib/mongo/query_cache.rb +300 -0
- 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 +33 -446
- data/lib/mongo/semaphore.rb +4 -1
- 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 +117 -94
- data/lib/mongo/server/connection.rb +126 -22
- data/lib/mongo/server/connection_base.rb +49 -21
- data/lib/mongo/server/connection_common.rb +76 -3
- data/lib/mongo/server/connection_pool/generation_manager.rb +115 -0
- data/lib/mongo/server/connection_pool/populator.rb +35 -30
- data/lib/mongo/server/connection_pool.rb +776 -206
- data/lib/mongo/server/description/features.rb +34 -25
- data/lib/mongo/server/description/load_balancer.rb +33 -0
- data/lib/mongo/server/description.rb +126 -17
- data/lib/mongo/server/monitor/app_metadata.rb +4 -1
- data/lib/mongo/server/monitor/connection.rb +66 -50
- data/lib/mongo/server/monitor.rb +62 -32
- data/lib/mongo/server/pending_connection.rb +77 -44
- data/lib/mongo/server/push_monitor/connection.rb +3 -0
- data/lib/mongo/server/push_monitor.rb +54 -20
- data/lib/mongo/server/round_trip_time_averager.rb +6 -3
- data/lib/mongo/server.rb +197 -67
- data/lib/mongo/server_selector/base.rb +65 -11
- data/lib/mongo/server_selector/nearest.rb +6 -4
- data/lib/mongo/server_selector/primary.rb +6 -4
- data/lib/mongo/server_selector/primary_preferred.rb +6 -4
- data/lib/mongo/server_selector/secondary.rb +6 -4
- data/lib/mongo/server_selector/secondary_preferred.rb +8 -11
- data/lib/mongo/server_selector.rb +3 -0
- data/lib/mongo/session/server_session.rb +3 -0
- data/lib/mongo/session/session_pool.rb +26 -2
- data/lib/mongo/session.rb +164 -38
- data/lib/mongo/socket/ocsp_cache.rb +99 -0
- data/lib/mongo/socket/ocsp_verifier.rb +344 -0
- data/lib/mongo/socket/ssl.rb +56 -24
- data/lib/mongo/socket/tcp.rb +6 -0
- data/lib/mongo/socket/unix.rb +3 -0
- data/lib/mongo/socket.rb +71 -16
- data/lib/mongo/srv/monitor.rb +10 -26
- data/lib/mongo/srv/resolver.rb +41 -13
- data/lib/mongo/srv/result.rb +3 -0
- data/lib/mongo/srv.rb +3 -0
- data/lib/mongo/timeout.rb +6 -1
- data/lib/mongo/topology_version.rb +4 -1
- data/lib/mongo/uri/options_mapper.rb +867 -0
- data/lib/mongo/uri/srv_protocol.rb +13 -11
- data/lib/mongo/uri.rb +100 -400
- data/lib/mongo/utils.rb +44 -1
- data/lib/mongo/version.rb +4 -1
- data/lib/mongo/write_concern/acknowledged.rb +3 -0
- data/lib/mongo/write_concern/base.rb +3 -0
- data/lib/mongo/write_concern/unacknowledged.rb +3 -0
- data/lib/mongo/write_concern.rb +3 -0
- data/lib/mongo.rb +58 -0
- data/mongo.gemspec +16 -7
- data/spec/NOTES.aws-auth.md +12 -7
- data/spec/README.md +106 -3
- data/spec/atlas/atlas_connectivity_spec.rb +3 -0
- data/spec/atlas/operations_spec.rb +5 -7
- data/spec/integration/auth_spec.rb +58 -15
- data/spec/integration/awaited_ismaster_spec.rb +9 -6
- data/spec/integration/aws_auth_credentials_cache_spec.rb +51 -0
- data/spec/integration/aws_auth_request_spec.rb +4 -1
- data/spec/integration/aws_credentials_retriever_spec.rb +34 -1
- data/spec/integration/aws_lambda_examples_spec.rb +68 -0
- data/spec/integration/bson_symbol_spec.rb +8 -3
- data/spec/integration/bulk_insert_spec.rb +3 -0
- data/spec/integration/bulk_write_error_message_spec.rb +74 -0
- data/spec/integration/bulk_write_spec.rb +67 -0
- data/spec/integration/change_stream_examples_spec.rb +3 -0
- data/spec/integration/change_stream_spec.rb +18 -9
- data/spec/integration/check_clean_slate_spec.rb +3 -0
- data/spec/integration/client_authentication_options_spec.rb +76 -36
- data/spec/integration/client_connectivity_spec.rb +4 -1
- data/spec/integration/client_construction_aws_auth_spec.rb +14 -2
- data/spec/integration/client_construction_spec.rb +153 -8
- data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +13 -10
- data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +172 -169
- data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +3 -1
- data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +3 -0
- data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +43 -4
- data/spec/integration/client_side_encryption/auto_encryption_spec.rb +148 -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 +6 -3
- data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +6 -3
- data/spec/integration/client_side_encryption/client_close_spec.rb +4 -1
- data/spec/integration/client_side_encryption/corpus_spec.rb +67 -35
- data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +42 -42
- data/spec/integration/client_side_encryption/data_key_spec.rb +101 -8
- data/spec/integration/client_side_encryption/decryption_events_prose_spec.rb +159 -0
- data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +62 -0
- data/spec/integration/client_side_encryption/explicit_queryable_encryption_spec.rb +150 -0
- data/spec/integration/client_side_encryption/external_key_vault_spec.rb +9 -6
- data/spec/integration/client_side_encryption/kms_tls_options_spec.rb +436 -0
- data/spec/integration/client_side_encryption/kms_tls_spec.rb +92 -0
- 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 +114 -0
- 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 +89 -0
- data/spec/integration/client_side_encryption/views_spec.rb +4 -1
- data/spec/integration/client_spec.rb +14 -4
- data/spec/integration/client_update_spec.rb +9 -2
- data/spec/integration/collection_indexes_prose_spec.rb +3 -0
- data/spec/integration/command_monitoring_spec.rb +64 -26
- data/spec/integration/command_spec.rb +5 -24
- data/spec/integration/connect_single_rs_name_spec.rb +6 -3
- data/spec/integration/connection/faas_env_spec.rb +62 -0
- data/spec/integration/connection_pool_populator_spec.rb +33 -8
- data/spec/integration/connection_spec.rb +58 -36
- data/spec/integration/crud_spec.rb +217 -1
- data/spec/integration/cursor_pinning_spec.rb +125 -0
- data/spec/integration/cursor_reaping_spec.rb +62 -19
- data/spec/integration/docs_examples_spec.rb +12 -2
- data/spec/integration/error_detection_spec.rb +3 -0
- data/spec/integration/fork_reconnect_spec.rb +73 -9
- data/spec/integration/get_more_spec.rb +4 -1
- data/spec/integration/grid_fs_bucket_spec.rb +7 -4
- data/spec/integration/heartbeat_events_spec.rb +8 -5
- data/spec/integration/map_reduce_spec.rb +81 -0
- data/spec/integration/mmapv1_spec.rb +3 -0
- data/spec/integration/mongos_pinning_spec.rb +3 -0
- data/spec/integration/ocsp_connectivity_spec.rb +29 -0
- data/spec/integration/ocsp_verifier_cache_spec.rb +191 -0
- data/spec/integration/ocsp_verifier_spec.rb +358 -0
- data/spec/integration/operation_failure_code_spec.rb +4 -1
- data/spec/integration/operation_failure_message_spec.rb +91 -0
- data/spec/integration/query_cache_spec.rb +1343 -0
- data/spec/integration/query_cache_transactions_spec.rb +193 -0
- data/spec/integration/read_concern_spec.rb +4 -1
- data/spec/integration/read_preference_spec.rb +20 -13
- data/spec/integration/reconnect_spec.rb +39 -13
- data/spec/integration/retryable_errors_spec.rb +4 -1
- data/spec/integration/retryable_reads_errors_spec.rb +110 -0
- data/spec/integration/retryable_writes/retryable_writes_36_and_older_spec.rb +5 -2
- data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +5 -1
- data/spec/integration/retryable_writes/shared/adds_diagnostics.rb +3 -0
- data/spec/integration/retryable_writes/shared/does_not_support_retries.rb +3 -0
- data/spec/integration/retryable_writes/shared/only_supports_legacy_retries.rb +3 -0
- data/spec/integration/retryable_writes/shared/performs_legacy_retries.rb +5 -0
- data/spec/integration/retryable_writes/shared/performs_modern_retries.rb +3 -0
- data/spec/integration/retryable_writes/shared/performs_no_retries.rb +3 -0
- data/spec/integration/retryable_writes/shared/supports_legacy_retries.rb +3 -0
- data/spec/integration/retryable_writes/shared/supports_modern_retries.rb +3 -0
- data/spec/integration/retryable_writes/shared/supports_retries.rb +3 -0
- data/spec/integration/retryable_writes_errors_spec.rb +162 -1
- data/spec/integration/sdam_error_handling_spec.rb +159 -8
- data/spec/integration/sdam_events_spec.rb +94 -31
- data/spec/integration/sdam_prose_spec.rb +7 -4
- data/spec/integration/secondary_reads_spec.rb +103 -0
- data/spec/integration/server_description_spec.rb +3 -0
- data/spec/integration/server_monitor_spec.rb +7 -2
- data/spec/integration/server_selection_spec.rb +39 -0
- data/spec/integration/server_selector_spec.rb +29 -7
- data/spec/integration/server_spec.rb +27 -25
- data/spec/integration/shell_examples_spec.rb +3 -0
- data/spec/integration/size_limit_spec.rb +7 -1
- data/spec/integration/snappy_compression_spec.rb +28 -0
- data/spec/integration/snapshot_query_examples_spec.rb +129 -0
- data/spec/integration/srv_monitoring_spec.rb +82 -5
- data/spec/integration/srv_spec.rb +60 -0
- data/spec/integration/ssl_uri_options_spec.rb +3 -0
- data/spec/integration/step_down_spec.rb +28 -7
- data/spec/integration/time_zone_querying_spec.rb +3 -0
- data/spec/integration/transaction_pinning_spec.rb +134 -0
- data/spec/integration/transactions_api_examples_spec.rb +3 -0
- data/spec/integration/transactions_examples_spec.rb +26 -7
- data/spec/integration/truncated_utf8_spec.rb +26 -0
- data/spec/integration/versioned_api_examples_spec.rb +120 -0
- data/spec/integration/x509_auth_spec.rb +5 -2
- data/spec/integration/zlib_compression_spec.rb +4 -1
- data/spec/integration/zstd_compression_spec.rb +29 -0
- data/spec/kerberos/kerberos_spec.rb +3 -0
- data/spec/lite_spec_helper.rb +59 -16
- data/spec/mongo/address/ipv4_spec.rb +3 -0
- data/spec/mongo/address/ipv6_spec.rb +10 -0
- data/spec/mongo/address/unix_spec.rb +4 -0
- data/spec/mongo/address/validator_spec.rb +3 -0
- data/spec/mongo/address_spec.rb +33 -13
- 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 +3 -0
- data/spec/mongo/auth/aws/request_spec.rb +3 -0
- data/spec/mongo/auth/cr_spec.rb +6 -24
- data/spec/mongo/auth/gssapi/conversation_spec.rb +3 -0
- data/spec/mongo/auth/invalid_mechanism_spec.rb +3 -0
- data/spec/mongo/auth/ldap/conversation_spec.rb +4 -1
- data/spec/mongo/auth/ldap_spec.rb +10 -4
- data/spec/mongo/auth/scram/conversation_spec.rb +26 -23
- data/spec/mongo/auth/scram256/conversation_spec.rb +23 -20
- data/spec/mongo/auth/scram_negotiation_spec.rb +5 -1
- data/spec/mongo/auth/scram_spec.rb +5 -3
- data/spec/mongo/auth/stringprep/profiles/sasl_spec.rb +3 -0
- data/spec/mongo/auth/stringprep_spec.rb +3 -0
- data/spec/mongo/auth/user/view_spec.rb +99 -1
- data/spec/mongo/auth/user_spec.rb +4 -1
- data/spec/mongo/auth/x509/conversation_spec.rb +6 -3
- data/spec/mongo/auth/x509_spec.rb +5 -3
- data/spec/mongo/auth_spec.rb +3 -0
- data/spec/mongo/bson_spec.rb +3 -0
- data/spec/mongo/bulk_write/ordered_combiner_spec.rb +3 -0
- data/spec/mongo/bulk_write/result_spec.rb +18 -1
- data/spec/mongo/bulk_write/unordered_combiner_spec.rb +3 -0
- data/spec/mongo/bulk_write_spec.rb +149 -25
- data/spec/mongo/caching_cursor_spec.rb +73 -0
- data/spec/mongo/client_construction_spec.rb +1112 -546
- data/spec/mongo/client_encryption_spec.rb +27 -30
- data/spec/mongo/client_spec.rb +445 -139
- data/spec/mongo/cluster/cursor_reaper_spec.rb +66 -23
- data/spec/mongo/cluster/periodic_executor_spec.rb +6 -1
- data/spec/mongo/cluster/socket_reaper_spec.rb +3 -0
- data/spec/mongo/cluster/topology/replica_set_spec.rb +13 -10
- data/spec/mongo/cluster/topology/sharded_spec.rb +6 -3
- data/spec/mongo/cluster/topology/single_spec.rb +20 -8
- data/spec/mongo/cluster/topology/unknown_spec.rb +4 -1
- data/spec/mongo/cluster/topology_spec.rb +4 -1
- data/spec/mongo/cluster_spec.rb +183 -192
- data/spec/mongo/cluster_time_spec.rb +3 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +181 -83
- data/spec/mongo/collection/view/builder/find_command_spec.rb +7 -0
- data/spec/mongo/collection/view/builder/op_query_spec.rb +7 -0
- data/spec/mongo/collection/view/change_stream_resume_spec.rb +8 -3
- data/spec/mongo/collection/view/change_stream_spec.rb +18 -2
- data/spec/mongo/collection/view/explainable_spec.rb +90 -4
- data/spec/mongo/collection/view/immutable_spec.rb +3 -0
- data/spec/mongo/collection/view/iterable_spec.rb +3 -0
- data/spec/mongo/collection/view/map_reduce_spec.rb +46 -2
- data/spec/mongo/collection/view/readable_spec.rb +868 -1
- data/spec/mongo/collection/view/writable_spec.rb +147 -32
- data/spec/mongo/collection/view_spec.rb +3 -0
- data/spec/mongo/collection_crud_spec.rb +4471 -0
- data/spec/mongo/collection_ddl_spec.rb +587 -0
- data/spec/mongo/collection_spec.rb +106 -4839
- data/spec/mongo/condition_variable_spec.rb +104 -0
- data/spec/mongo/config/options_spec.rb +76 -0
- data/spec/mongo/config_spec.rb +74 -0
- data/spec/mongo/crypt/auto_decryption_context_spec.rb +21 -2
- data/spec/mongo/crypt/auto_encrypter_spec.rb +266 -5
- data/spec/mongo/crypt/auto_encryption_context_spec.rb +21 -2
- data/spec/mongo/crypt/binary_spec.rb +3 -5
- data/spec/mongo/crypt/binding/binary_spec.rb +3 -5
- data/spec/mongo/crypt/binding/context_spec.rb +71 -23
- data/spec/mongo/crypt/binding/helpers_spec.rb +3 -5
- data/spec/mongo/crypt/binding/mongocrypt_spec.rb +21 -52
- data/spec/mongo/crypt/binding/status_spec.rb +3 -5
- data/spec/mongo/crypt/binding/version_spec.rb +50 -5
- data/spec/mongo/crypt/binding_unloaded_spec.rb +17 -0
- data/spec/mongo/crypt/data_key_context_spec.rb +45 -114
- data/spec/mongo/crypt/encryption_io_spec.rb +5 -0
- data/spec/mongo/crypt/explicit_decryption_context_spec.rb +36 -2
- data/spec/mongo/crypt/explicit_encryption_context_spec.rb +98 -2
- data/spec/mongo/crypt/handle_spec.rb +189 -155
- data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +3 -0
- data/spec/mongo/crypt/hooks_spec.rb +30 -0
- data/spec/mongo/crypt/kms/azure/credentials_retriever_spec.rb +86 -0
- data/spec/mongo/crypt/kms/credentials_spec.rb +373 -0
- data/spec/mongo/crypt/kms_spec.rb +62 -0
- data/spec/mongo/crypt/status_spec.rb +3 -5
- data/spec/mongo/crypt_spec.rb +21 -0
- data/spec/mongo/cursor/builder/get_more_command_spec.rb +11 -2
- data/spec/mongo/cursor/builder/op_get_more_spec.rb +11 -2
- data/spec/mongo/cursor_spec.rb +230 -19
- data/spec/mongo/database_spec.rb +263 -25
- data/spec/mongo/distinguishing_semaphore_spec.rb +9 -6
- data/spec/mongo/error/bulk_write_error_spec.rb +6 -3
- data/spec/mongo/error/crypt_error_spec.rb +3 -0
- data/spec/mongo/error/max_bson_size_spec.rb +3 -0
- data/spec/mongo/error/no_server_available_spec.rb +4 -1
- data/spec/mongo/error/notable_spec.rb +3 -0
- data/spec/mongo/error/operation_failure_heavy_spec.rb +53 -1
- data/spec/mongo/error/operation_failure_spec.rb +94 -31
- data/spec/mongo/error/parser_spec.rb +40 -6
- data/spec/mongo/error/unsupported_option_spec.rb +3 -0
- data/spec/mongo/event/publisher_spec.rb +3 -0
- data/spec/mongo/event/subscriber_spec.rb +3 -0
- data/spec/mongo/grid/file/chunk_spec.rb +7 -4
- data/spec/mongo/grid/file/info_spec.rb +3 -0
- data/spec/mongo/grid/file_spec.rb +4 -1
- data/spec/mongo/grid/fs_bucket_spec.rb +40 -17
- data/spec/mongo/grid/stream/read_spec.rb +33 -10
- data/spec/mongo/grid/stream/write_spec.rb +6 -9
- data/spec/mongo/grid/stream_spec.rb +4 -1
- data/spec/mongo/id_spec.rb +4 -1
- data/spec/mongo/index/view_spec.rb +138 -4
- data/spec/mongo/lint_spec.rb +4 -1
- data/spec/mongo/logger_spec.rb +16 -11
- data/spec/mongo/monitoring/command_log_subscriber_spec.rb +3 -0
- data/spec/mongo/monitoring/event/cmap/connection_check_out_failed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/connection_check_out_started_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/connection_checked_in_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/connection_checked_out_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/connection_closed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/connection_created_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/connection_ready_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/pool_cleared_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/pool_closed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/pool_created_spec.rb +4 -1
- data/spec/mongo/monitoring/event/command_failed_spec.rb +59 -2
- data/spec/mongo/monitoring/event/command_started_spec.rb +3 -0
- data/spec/mongo/monitoring/event/command_succeeded_spec.rb +46 -6
- data/spec/mongo/monitoring/event/secure_spec.rb +28 -4
- data/spec/mongo/monitoring/event/server_closed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/server_description_changed_spec.rb +3 -0
- data/spec/mongo/monitoring/event/server_heartbeat_failed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/server_heartbeat_started_spec.rb +3 -0
- data/spec/mongo/monitoring/event/server_heartbeat_succeeded_spec.rb +4 -1
- data/spec/mongo/monitoring/event/server_opening_spec.rb +4 -1
- data/spec/mongo/monitoring/event/topology_changed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/topology_closed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/topology_opening_spec.rb +4 -1
- data/spec/mongo/monitoring_spec.rb +3 -0
- data/spec/mongo/operation/aggregate/result_spec.rb +7 -2
- data/spec/mongo/operation/aggregate_spec.rb +5 -1
- data/spec/mongo/operation/collections_info_spec.rb +7 -1
- data/spec/mongo/operation/command_spec.rb +11 -5
- data/spec/mongo/operation/create/op_msg_spec.rb +244 -0
- data/spec/mongo/operation/create_index_spec.rb +9 -3
- data/spec/mongo/operation/create_user_spec.rb +9 -3
- data/spec/mongo/operation/delete/bulk_spec.rb +12 -6
- data/spec/mongo/operation/delete/op_msg_spec.rb +20 -8
- data/spec/mongo/operation/delete_spec.rb +13 -36
- data/spec/mongo/operation/drop_index_spec.rb +9 -2
- data/spec/mongo/operation/find/builder/flags_spec.rb +109 -0
- data/spec/mongo/operation/find/builder/modifiers_spec.rb +213 -0
- data/spec/mongo/operation/indexes_spec.rb +8 -1
- data/spec/mongo/operation/insert/bulk_spec.rb +14 -8
- data/spec/mongo/operation/insert/op_msg_spec.rb +25 -14
- data/spec/mongo/operation/insert_spec.rb +17 -43
- data/spec/mongo/operation/limited_spec.rb +3 -0
- data/spec/mongo/operation/map_reduce_spec.rb +8 -2
- data/spec/mongo/operation/read_preference_legacy_spec.rb +39 -42
- data/spec/mongo/operation/read_preference_op_msg_spec.rb +33 -5
- data/spec/mongo/operation/remove_user_spec.rb +9 -3
- data/spec/mongo/operation/result_spec.rb +30 -5
- data/spec/mongo/operation/specifiable_spec.rb +3 -0
- data/spec/mongo/operation/update/bulk_spec.rb +13 -7
- data/spec/mongo/operation/update/op_msg_spec.rb +20 -8
- data/spec/mongo/operation/update_spec.rb +12 -35
- data/spec/mongo/operation/update_user_spec.rb +7 -1
- data/spec/mongo/options/redacted_spec.rb +4 -1
- data/spec/mongo/protocol/caching_hash_spec.rb +37 -0
- data/spec/mongo/protocol/compressed_spec.rb +29 -12
- data/spec/mongo/protocol/get_more_spec.rb +3 -0
- data/spec/mongo/protocol/kill_cursors_spec.rb +3 -0
- data/spec/mongo/protocol/msg_spec.rb +48 -66
- data/spec/mongo/protocol/query_spec.rb +6 -3
- data/spec/mongo/protocol/registry_spec.rb +3 -0
- data/spec/mongo/protocol/reply_spec.rb +3 -0
- data/spec/mongo/query_cache_middleware_spec.rb +55 -0
- data/spec/mongo/query_cache_spec.rb +453 -0
- data/spec/mongo/retryable_spec.rb +42 -7
- data/spec/mongo/semaphore_spec.rb +9 -6
- 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 +55 -52
- data/spec/mongo/server/connection_auth_spec.rb +9 -10
- data/spec/mongo/server/connection_common_spec.rb +87 -0
- data/spec/mongo/server/connection_pool/populator_spec.rb +22 -3
- data/spec/mongo/server/connection_pool_spec.rb +635 -58
- data/spec/mongo/server/connection_spec.rb +226 -204
- data/spec/mongo/server/description/features_spec.rb +27 -0
- data/spec/mongo/server/description_query_methods_spec.rb +4 -1
- data/spec/mongo/server/description_spec.rb +625 -594
- data/spec/mongo/server/monitor/app_metadata_spec.rb +3 -1
- data/spec/mongo/server/monitor/connection_spec.rb +81 -9
- data/spec/mongo/server/monitor_spec.rb +31 -18
- data/spec/mongo/server/push_monitor_spec.rb +95 -0
- data/spec/mongo/server/round_trip_time_averager_spec.rb +3 -0
- data/spec/mongo/server_selector/nearest_spec.rb +8 -2
- data/spec/mongo/server_selector/primary_preferred_spec.rb +8 -2
- data/spec/mongo/server_selector/primary_spec.rb +8 -2
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +14 -8
- data/spec/mongo/server_selector/secondary_spec.rb +8 -2
- data/spec/mongo/server_selector_spec.rb +143 -18
- data/spec/mongo/server_spec.rb +49 -6
- data/spec/mongo/session/server_session_spec.rb +3 -0
- data/spec/mongo/session/session_pool_spec.rb +45 -10
- data/spec/mongo/session_spec.rb +29 -6
- data/spec/mongo/session_transaction_spec.rb +17 -36
- data/spec/mongo/socket/ssl_spec.rb +91 -75
- data/spec/mongo/socket/tcp_spec.rb +3 -0
- data/spec/mongo/socket/unix_spec.rb +4 -0
- data/spec/mongo/socket_spec.rb +5 -2
- data/spec/mongo/srv/monitor_spec.rb +3 -0
- data/spec/mongo/srv/result_spec.rb +3 -0
- data/spec/mongo/timeout_spec.rb +3 -0
- data/spec/mongo/tls_context_hooks_spec.rb +40 -0
- data/spec/mongo/uri/options_mapper_spec.rb +1605 -0
- data/spec/mongo/uri/srv_protocol_spec.rb +330 -36
- data/spec/mongo/uri_option_parsing_spec.rb +52 -16
- data/spec/mongo/uri_spec.rb +238 -42
- data/spec/mongo/utils_spec.rb +42 -0
- data/spec/mongo/write_concern/acknowledged_spec.rb +3 -0
- data/spec/mongo/write_concern/unacknowledged_spec.rb +3 -0
- data/spec/mongo/write_concern_spec.rb +3 -0
- data/spec/runners/auth.rb +26 -2
- data/spec/runners/change_streams/outcome.rb +3 -0
- data/spec/runners/change_streams/spec.rb +4 -1
- data/spec/runners/change_streams/test.rb +5 -2
- data/spec/runners/cmap/verifier.rb +4 -1
- data/spec/runners/cmap.rb +192 -46
- data/spec/runners/command_monitoring.rb +4 -1
- data/spec/runners/connection_string.rb +48 -126
- data/spec/runners/crud/context.rb +3 -0
- data/spec/runners/crud/operation.rb +21 -7
- data/spec/runners/crud/outcome.rb +3 -0
- data/spec/runners/crud/requirement.rb +76 -6
- data/spec/runners/crud/spec.rb +9 -3
- data/spec/runners/crud/test.rb +4 -1
- data/spec/runners/crud/test_base.rb +4 -20
- data/spec/runners/crud/verifier.rb +20 -4
- data/spec/runners/crud.rb +23 -1
- data/spec/runners/gridfs.rb +4 -1
- data/spec/runners/read_write_concern_document.rb +4 -1
- data/spec/runners/sdam/verifier.rb +3 -0
- data/spec/runners/sdam.rb +9 -5
- data/spec/runners/server_selection.rb +5 -2
- data/spec/runners/server_selection_rtt.rb +5 -2
- data/spec/runners/transactions/operation.rb +30 -10
- data/spec/runners/transactions/spec.rb +5 -2
- data/spec/runners/transactions/test.rb +69 -21
- data/spec/runners/transactions.rb +14 -8
- data/spec/runners/unified/assertions.rb +379 -0
- data/spec/runners/unified/change_stream_operations.rb +52 -0
- data/spec/runners/unified/client_side_encryption_operations.rb +83 -0
- data/spec/runners/unified/crud_operations.rb +332 -0
- data/spec/runners/unified/ddl_operations.rb +255 -0
- data/spec/runners/unified/entity_map.rb +42 -0
- data/spec/runners/unified/error.rb +29 -0
- data/spec/runners/unified/event_subscriber.rb +110 -0
- data/spec/runners/unified/exceptions.rb +24 -0
- data/spec/runners/unified/grid_fs_operations.rb +79 -0
- data/spec/runners/unified/support_operations.rb +333 -0
- data/spec/runners/unified/test.rb +585 -0
- data/spec/runners/unified/test_group.rb +31 -0
- data/spec/runners/unified/thread_operations.rb +73 -0
- data/spec/runners/unified.rb +109 -0
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +231 -0
- data/spec/shared/lib/mrss/constraints.rb +378 -0
- data/spec/shared/lib/mrss/docker_runner.rb +295 -0
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +210 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +238 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +113 -0
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +179 -0
- data/spec/shared/lib/mrss/utils.rb +37 -0
- data/spec/shared/share/Dockerfile.erb +330 -0
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/distro.sh +74 -0
- data/spec/shared/shlib/server.sh +416 -0
- data/spec/shared/shlib/set_env.sh +169 -0
- data/spec/solo/clean_exit_spec.rb +22 -0
- data/spec/spec_helper.rb +11 -5
- data/spec/spec_tests/auth_spec.rb +30 -13
- data/spec/spec_tests/change_streams_unified_spec.rb +14 -0
- data/spec/spec_tests/client_side_encryption_spec.rb +27 -1
- data/spec/spec_tests/client_side_encryption_unified_spec.rb +26 -0
- data/spec/spec_tests/cmap_spec.rb +41 -17
- data/spec/spec_tests/collection_management_spec.rb +13 -0
- data/spec/spec_tests/command_monitoring_unified_spec.rb +13 -0
- data/spec/spec_tests/connection_string_spec.rb +3 -0
- data/spec/spec_tests/crud_spec.rb +3 -10
- data/spec/spec_tests/crud_unified_spec.rb +13 -0
- 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 +120 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-pre_and_post_images.yml +351 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-resume-allowlist.yml +1169 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-resume-errorLabels.yml +1069 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-showExpandedEvents.yml +307 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams.yml +927 -0
- data/spec/spec_tests/data/client_side_encryption/aggregate.yml +3 -17
- data/spec/spec_tests/data/client_side_encryption/awsTemporary.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/azureKMS.yml +46 -0
- data/spec/spec_tests/data/client_side_encryption/badQueries.yml +12 -2
- data/spec/spec_tests/data/client_side_encryption/basic.yml +3 -17
- data/spec/spec_tests/data/client_side_encryption/bulk.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/bypassAutoEncryption.yml +2 -2
- data/spec/spec_tests/data/client_side_encryption/bypassedCommand.yml +5 -4
- data/spec/spec_tests/data/client_side_encryption/count.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/countDocuments.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/create-and-createIndexes.yml +58 -0
- data/spec/spec_tests/data/client_side_encryption/delete.yml +2 -16
- data/spec/spec_tests/data/client_side_encryption/distinct.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/explain.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/find.yml +2 -16
- data/spec/spec_tests/data/client_side_encryption/findOneAndDelete.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/findOneAndReplace.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/findOneAndUpdate.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/fle2v2-BypassQueryAnalysis.yml +89 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Compact.yml +82 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection-OldServer.yml +61 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection.yml +937 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-DecryptExistingData.yml +66 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Delete.yml +100 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-EncryptedFieldsMap.yml +79 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-jsonSchema.yml +102 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFieldsMap-defaults.yml +58 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-FindOneAndUpdate.yml +200 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Indexed.yml +96 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Unindexed.yml +89 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-MissingKey.yml +43 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-NoEncryption.yml +44 -0
- 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/fle2v2-Update.yml +210 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-validatorAndPartialFieldExpression.yml +169 -0
- data/spec/spec_tests/data/client_side_encryption/gcpKMS.yml +46 -0
- data/spec/spec_tests/data/client_side_encryption/getMore.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/insert.yml +2 -16
- data/spec/spec_tests/data/client_side_encryption/keyAltName.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/localKMS.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/localSchema.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/maxWireVersion.yml +3 -1
- data/spec/spec_tests/data/client_side_encryption/missingKey.yml +2 -9
- data/spec/spec_tests/data/client_side_encryption/noSchema.yml +39 -0
- data/spec/spec_tests/data/client_side_encryption/replaceOne.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/types.yml +44 -70
- data/spec/spec_tests/data/client_side_encryption/unified/addKeyAltName.yml +194 -0
- data/spec/spec_tests/data/client_side_encryption/unified/createDataKey-kms_providers-invalid.yml +67 -0
- data/spec/spec_tests/data/client_side_encryption/unified/createDataKey.yml +309 -0
- data/spec/spec_tests/data/client_side_encryption/unified/deleteKey.yml +159 -0
- data/spec/spec_tests/data/client_side_encryption/unified/getKey.yml +105 -0
- data/spec/spec_tests/data/client_side_encryption/unified/getKeyByAltName.yml +104 -0
- data/spec/spec_tests/data/client_side_encryption/unified/getKeys.yml +122 -0
- data/spec/spec_tests/data/client_side_encryption/unified/removeKeyAltName.yml +157 -0
- data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey-decrypt_failure.yml +69 -0
- data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey-encrypt_failure.yml +122 -0
- data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey.yml +432 -0
- data/spec/spec_tests/data/client_side_encryption/updateMany.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/updateOne.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/validatorAndPartialFieldExpression.yml +166 -0
- 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 +8 -2
- 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 +12 -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/clustered-indexes.yml +135 -0
- data/spec/spec_tests/data/collection_management/createCollection-pre_and_post_images.yml +50 -0
- data/spec/spec_tests/data/collection_management/modifyCollection-errorResponse.yml +59 -0
- data/spec/spec_tests/data/collection_management/modifyCollection-pre_and_post_images.yml +58 -0
- data/spec/spec_tests/data/collection_management/timeseries-collection.yml +164 -0
- data/spec/spec_tests/data/command_monitoring_unified/bulkWrite.yml +68 -0
- data/spec/spec_tests/data/command_monitoring_unified/command.yml +50 -0
- data/spec/spec_tests/data/command_monitoring_unified/deleteMany.yml +79 -0
- data/spec/spec_tests/data/command_monitoring_unified/deleteOne.yml +79 -0
- data/spec/spec_tests/data/command_monitoring_unified/find.yml +254 -0
- data/spec/spec_tests/data/command_monitoring_unified/insertMany.yml +79 -0
- data/spec/spec_tests/data/command_monitoring_unified/insertOne.yml +77 -0
- data/spec/spec_tests/data/command_monitoring_unified/pre-42-server-connection-id.yml +56 -0
- data/spec/spec_tests/data/command_monitoring_unified/redacted-commands.yml +348 -0
- data/spec/spec_tests/data/command_monitoring_unified/server-connection-id.yml +56 -0
- data/spec/spec_tests/data/command_monitoring_unified/unacknowledgedBulkWrite.yml +55 -0
- data/spec/spec_tests/data/command_monitoring_unified/updateMany.yml +87 -0
- data/spec/spec_tests/data/command_monitoring_unified/updateOne.yml +118 -0
- data/spec/spec_tests/data/command_monitoring_unified/writeConcernError.yml +80 -0
- data/spec/spec_tests/data/connection_string/valid-warnings.yml +24 -0
- data/spec/spec_tests/data/crud/read/aggregate-collation.yml +2 -1
- data/spec/spec_tests/data/crud/read/aggregate-out.yml +1 -0
- data/spec/spec_tests/data/crud/read/count-collation.yml +2 -1
- data/spec/spec_tests/data/crud/read/distinct-collation.yml +2 -1
- data/spec/spec_tests/data/crud/read/find-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/bulkWrite-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/bulkWrite.yml +26 -22
- data/spec/spec_tests/data/crud/write/deleteMany-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/deleteOne-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/findOneAndDelete-collation.yml +3 -2
- data/spec/spec_tests/data/crud/write/findOneAndReplace-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/findOneAndUpdate-collation.yml +3 -2
- data/spec/spec_tests/data/crud/write/insertMany.yml +26 -22
- data/spec/spec_tests/data/crud/write/replaceOne-collation.yml +3 -2
- data/spec/spec_tests/data/crud/write/updateMany-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/updateOne-collation.yml +2 -1
- data/spec/spec_tests/data/crud_unified/aggregate-allowdiskuse.yml +75 -0
- data/spec/spec_tests/data/crud_unified/aggregate-let.yml +138 -0
- data/spec/spec_tests/data/crud_unified/aggregate-merge-errorResponse.yml +42 -0
- data/spec/spec_tests/data/crud_unified/aggregate-merge.yml +185 -0
- data/spec/spec_tests/data/crud_unified/aggregate-out-readConcern.yml +171 -0
- data/spec/spec_tests/data/crud_unified/aggregate-write-readPreference.yml +155 -0
- data/spec/spec_tests/data/crud_unified/aggregate.yml +215 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-arrayFilters-clientError.yml +98 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-arrayFilters.yml +174 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-comment.yml +189 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint-clientError.yml +113 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint-serverError.yml +142 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint.yml +154 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-deleteMany-hint-unacknowledged.yml +98 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-deleteMany-let.yml +86 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-deleteOne-hint-unacknowledged.yml +97 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-deleteOne-let.yml +86 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-errorResponse.yml +50 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-insertOne-dots_and_dollars.yml +138 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-dots_and_dollars.yml +165 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-hint-unacknowledged.yml +103 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-let.yml +93 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint-clientError.yml +148 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint-serverError.yml +239 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint.yml +256 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-update-validation.yml +73 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-dots_and_dollars.yml +150 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-hint-unacknowledged.yml +104 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-let.yml +96 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-dots_and_dollars.yml +150 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-hint-unacknowledged.yml +103 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-let.yml +95 -0
- data/spec/spec_tests/data/crud_unified/countDocuments-comment.yml +92 -0
- data/spec/spec_tests/data/crud_unified/db-aggregate-write-readPreference.yml +151 -0
- data/spec/spec_tests/data/crud_unified/db-aggregate.yml +73 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-comment.yml +97 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-hint-clientError.yml +87 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-hint-serverError.yml +107 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-hint-unacknowledged.yml +90 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-hint.yml +99 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-let.yml +93 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-comment.yml +98 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-errorResponse.yml +46 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-hint-clientError.yml +80 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-hint-serverError.yml +100 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-hint-unacknowledged.yml +89 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-hint.yml +95 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-let.yml +91 -0
- data/spec/spec_tests/data/crud_unified/distinct-comment.yml +98 -0
- data/spec/spec_tests/data/crud_unified/estimatedDocumentCount-comment.yml +95 -0
- data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +181 -0
- data/spec/spec_tests/data/crud_unified/find-allowdiskuse-clientError.yml +55 -0
- data/spec/spec_tests/data/crud_unified/find-allowdiskuse-serverError.yml +68 -0
- data/spec/spec_tests/data/crud_unified/find-allowdiskuse.yml +79 -0
- data/spec/spec_tests/data/crud_unified/find-comment.yml +166 -0
- data/spec/spec_tests/data/crud_unified/find-let.yml +71 -0
- data/spec/spec_tests/data/crud_unified/find.yml +68 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-comment.yml +96 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-clientError.yml +91 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-serverError.yml +107 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-unacknowledged.yml +88 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint.yml +102 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-let.yml +86 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-comment.yml +101 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-dots_and_dollars.yml +140 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-clientError.yml +83 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-serverError.yml +99 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-unacknowledged.yml +96 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint.yml +98 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-let.yml +94 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-comment.yml +95 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-dots_and_dollars.yml +127 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-errorResponse.yml +69 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-clientError.yml +84 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-serverError.yml +100 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-unacknowledged.yml +92 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint.yml +99 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-let.yml +96 -0
- data/spec/spec_tests/data/crud_unified/insertMany-comment.yml +93 -0
- data/spec/spec_tests/data/crud_unified/insertMany-dots_and_dollars.yml +128 -0
- data/spec/spec_tests/data/crud_unified/insertOne-comment.yml +91 -0
- data/spec/spec_tests/data/crud_unified/insertOne-dots_and_dollars.yml +238 -0
- data/spec/spec_tests/data/crud_unified/insertOne-errorResponse.yml +46 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-comment.yml +105 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-dots_and_dollars.yml +180 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-hint-unacknowledged.yml +95 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-hint.yml +108 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-let.yml +98 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-validation.yml +37 -0
- data/spec/spec_tests/data/crud_unified/updateMany-comment.yml +104 -0
- data/spec/spec_tests/data/crud_unified/updateMany-dots_and_dollars.yml +138 -0
- data/spec/spec_tests/data/crud_unified/updateMany-hint-clientError.yml +91 -0
- data/spec/spec_tests/data/crud_unified/updateMany-hint-serverError.yml +115 -0
- data/spec/spec_tests/data/crud_unified/updateMany-hint-unacknowledged.yml +96 -0
- data/spec/spec_tests/data/crud_unified/updateMany-hint.yml +115 -0
- data/spec/spec_tests/data/crud_unified/updateMany-let.yml +107 -0
- data/spec/spec_tests/data/crud_unified/updateMany-validation.yml +39 -0
- data/spec/spec_tests/data/crud_unified/updateOne-comment.yml +104 -0
- data/spec/spec_tests/data/crud_unified/updateOne-dots_and_dollars.yml +138 -0
- data/spec/spec_tests/data/crud_unified/updateOne-errorResponse.yml +47 -0
- data/spec/spec_tests/data/crud_unified/updateOne-hint-clientError.yml +85 -0
- data/spec/spec_tests/data/crud_unified/updateOne-hint-serverError.yml +109 -0
- data/spec/spec_tests/data/crud_unified/updateOne-hint-unacknowledged.yml +95 -0
- data/spec/spec_tests/data/crud_unified/updateOne-hint.yml +109 -0
- data/spec/spec_tests/data/crud_unified/updateOne-let.yml +102 -0
- data/spec/spec_tests/data/crud_unified/updateOne-validation.yml +37 -0
- data/spec/spec_tests/data/crud_unified/updateWithPipelines.yml +299 -0
- data/spec/spec_tests/data/gridfs_unified/delete.yml +198 -0
- data/spec/spec_tests/data/gridfs_unified/download.yml +241 -0
- data/spec/spec_tests/data/gridfs_unified/downloadByName.yml +159 -0
- data/spec/spec_tests/data/gridfs_unified/upload-disableMD5.yml +92 -0
- data/spec/spec_tests/data/gridfs_unified/upload.yml +288 -0
- data/spec/spec_tests/data/load_balancers/event-monitoring.yml +99 -0
- data/spec/spec_tests/data/load_balancers/lb-connection-establishment.yml +36 -0
- data/spec/spec_tests/data/load_balancers/non-lb-connection-establishment.yml +56 -0
- data/spec/spec_tests/data/load_balancers/server-selection.yml +50 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/DefaultNoMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/LastUpdateTime.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred_tags.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Secondary.yml +4 -4
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred_tags.yml +4 -4
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/ZeroMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/DefaultNoMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LastUpdateTime.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat2.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessTooSmall.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessWithModePrimary.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest_tags.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags.yml +5 -5
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags.yml +5 -5
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/ZeroMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/Sharded/SmallMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/Single/SmallMaxStaleness.yml +1 -1
- data/spec/spec_tests/data/max_staleness/Unknown/SmallMaxStaleness.yml +1 -1
- data/spec/spec_tests/data/retryable_reads/legacy/aggregate-serverErrors.yml +157 -0
- data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-client.watch-serverErrors.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-client.watch.yml +62 -0
- data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.coll.watch-serverErrors.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.coll.watch.yml +66 -0
- data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.watch-serverErrors.yml +154 -0
- data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.watch.yml +62 -0
- data/spec/spec_tests/data/retryable_reads/legacy/count-serverErrors.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/legacy/countDocuments-serverErrors.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/legacy/distinct-serverErrors.yml +156 -0
- data/spec/spec_tests/data/retryable_reads/legacy/estimatedDocumentCount-serverErrors.yml +148 -0
- data/spec/spec_tests/data/retryable_reads/legacy/find-serverErrors.yml +160 -0
- data/spec/spec_tests/data/retryable_reads/legacy/findOne-serverErrors.yml +154 -0
- data/spec/spec_tests/data/retryable_reads/legacy/gridfs-download-serverErrors.yml +173 -0
- data/spec/spec_tests/data/retryable_reads/legacy/gridfs-downloadByName-serverErrors.yml +174 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listCollectionNames-serverErrors.yml +143 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listCollectionObjects-serverErrors.yml +144 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listCollections-serverErrors.yml +143 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listDatabaseNames-serverErrors.yml +143 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listDatabaseObjects-serverErrors.yml +144 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listDatabases-serverErrors.yml +144 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listIndexNames-serverErrors.yml +144 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listIndexNames.yml +60 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listIndexes-serverErrors.yml +145 -0
- data/spec/spec_tests/data/retryable_reads/legacy/mapReduce.yml +62 -0
- data/spec/spec_tests/data/retryable_reads/unified/handshakeError.yml +1342 -0
- data/spec/spec_tests/data/retryable_writes/legacy/bulkWrite-serverErrors.yml +130 -0
- data/spec/spec_tests/data/retryable_writes/legacy/bulkWrite.yml +402 -0
- data/spec/spec_tests/data/retryable_writes/legacy/deleteOne-serverErrors.yml +73 -0
- data/spec/spec_tests/data/retryable_writes/legacy/findOneAndDelete-serverErrors.yml +74 -0
- data/spec/spec_tests/data/retryable_writes/legacy/findOneAndReplace-serverErrors.yml +80 -0
- data/spec/spec_tests/data/retryable_writes/legacy/findOneAndUpdate-serverErrors.yml +79 -0
- data/spec/spec_tests/data/retryable_writes/legacy/insertMany-serverErrors.yml +84 -0
- data/spec/spec_tests/data/retryable_writes/legacy/insertOne-serverErrors.yml +527 -0
- data/spec/spec_tests/data/retryable_writes/legacy/replaceOne-serverErrors.yml +82 -0
- data/spec/spec_tests/data/retryable_writes/legacy/updateOne-serverErrors.yml +82 -0
- data/spec/spec_tests/data/retryable_writes/unified/bulkWrite-serverErrors.yml +96 -0
- data/spec/spec_tests/data/retryable_writes/unified/handshakeError.yml +785 -0
- data/spec/spec_tests/data/retryable_writes/unified/insertOne-noWritesPerformedError.yml +54 -0
- data/spec/spec_tests/data/retryable_writes/unified/insertOne-serverErrors.yml +78 -0
- data/spec/spec_tests/data/sdam/errors/error_handling_handshake.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-network-error.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-network-timeout-error.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-InterruptedAtShutdown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-InterruptedDueToReplStateChange.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-LegacyNotPrimary.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotPrimaryNoSecondaryOk.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotPrimaryOrSecondary.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotWritablePrimary.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-PrimarySteppedDown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-ShutdownInProgress.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-InterruptedAtShutdown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-InterruptedDueToReplStateChange.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-LegacyNotPrimary.yml +52 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotPrimaryNoSecondaryOk.yml +52 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotPrimaryOrSecondary.yml +52 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotWritablePrimary.yml +52 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-PrimarySteppedDown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-ShutdownInProgress.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-InterruptedAtShutdown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-InterruptedDueToReplStateChange.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-LegacyNotPrimary.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotPrimaryNoSecondaryOk.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotPrimaryOrSecondary.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotWritablePrimary.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-PrimarySteppedDown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-ShutdownInProgress.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/post-42-InterruptedAtShutdown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/post-42-InterruptedDueToReplStateChange.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/post-42-LegacyNotPrimary.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/post-42-NotPrimaryNoSecondaryOk.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/post-42-NotPrimaryOrSecondary.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/post-42-NotWritablePrimary.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/post-42-PrimarySteppedDown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/post-42-ShutdownInProgress.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/pre-42-InterruptedAtShutdown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/pre-42-InterruptedDueToReplStateChange.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/pre-42-LegacyNotPrimary.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/pre-42-NotPrimaryNoSecondaryOk.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/pre-42-NotPrimaryOrSecondary.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/pre-42-NotWritablePrimary.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/pre-42-PrimarySteppedDown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/pre-42-ShutdownInProgress.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/prefer-error-code.yml +54 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-InterruptedAtShutdown.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-InterruptedDueToReplStateChange.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-NotPrimaryNoSecondaryOk.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-NotPrimaryOrSecondary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-NotWritablePrimary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-PrimarySteppedDown.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-ShutdownInProgress.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-InterruptedAtShutdown.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-InterruptedDueToReplStateChange.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-LegacyNotPrimary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotPrimaryNoSecondaryOk.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotPrimaryOrSecondary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotWritablePrimary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-PrimarySteppedDown.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-ShutdownInProgress.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-network.yml +6 -4
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-timeout.yml +6 -4
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-InterruptedAtShutdown.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-InterruptedDueToReplStateChange.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-LegacyNotPrimary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotPrimaryNoSecondaryOk.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotPrimaryOrSecondary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotWritablePrimary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-PrimarySteppedDown.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-ShutdownInProgress.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-network.yml +6 -4
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-timeout.yml +6 -4
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-InterruptedAtShutdown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-InterruptedDueToReplStateChange.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-LegacyNotPrimary.yml +65 -0
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotPrimaryNoSecondaryOk.yml +65 -0
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotPrimaryOrSecondary.yml +65 -0
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotWritablePrimary.yml +65 -0
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-PrimarySteppedDown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-ShutdownInProgress.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/write_errors_ignored.yml +42 -0
- data/spec/spec_tests/data/sdam/load-balanced/discover_load_balancer.yml +25 -0
- data/spec/spec_tests/data/sdam/rs/compatible.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/compatible_unknown.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_arbiters.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_arbiters_replicaset.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_ghost.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_ghost_replicaset.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_hidden.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_hidden_replicaset.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_passives.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/discover_passives_replicaset.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/discover_primary.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_primary_replicaset.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_rsother.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_rsother_replicaset.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/discover_secondary.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_secondary_replicaset.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discovery.yml +8 -4
- data/spec/spec_tests/data/sdam/rs/electionId_precedence_setVersion.yml +62 -0
- data/spec/spec_tests/data/sdam/rs/equal_electionids.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/hosts_differ_from_seeds.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/incompatible_arbiter.yml +3 -1
- data/spec/spec_tests/data/sdam/rs/incompatible_ghost.yml +3 -1
- data/spec/spec_tests/data/sdam/rs/incompatible_other.yml +3 -1
- data/spec/spec_tests/data/sdam/rs/ls_timeout.yml +12 -6
- data/spec/spec_tests/data/sdam/rs/member_reconfig.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/member_standalone.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/new_primary.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/new_primary_new_electionid.yml +6 -3
- data/spec/spec_tests/data/sdam/rs/new_primary_new_setversion.yml +6 -3
- data/spec/spec_tests/data/sdam/rs/new_primary_wrong_set_name.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/non_rs_member.yml +1 -0
- data/spec/spec_tests/data/sdam/rs/normalize_case.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/normalize_case_me.yml +4 -2
- 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 +28 -22
- data/spec/spec_tests/data/sdam/rs/primary_becomes_ghost.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/primary_becomes_mongos.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/primary_becomes_standalone.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/primary_changes_set_name.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/primary_disconnect.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/primary_disconnect_electionid.yml +10 -5
- data/spec/spec_tests/data/sdam/rs/primary_disconnect_setversion.yml +10 -5
- data/spec/spec_tests/data/sdam/rs/primary_hint_from_secondary_with_mismatched_me.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/primary_mismatched_me.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/primary_mismatched_me_not_removed.yml +5 -3
- data/spec/spec_tests/data/sdam/rs/primary_reports_new_member.yml +8 -4
- data/spec/spec_tests/data/sdam/rs/primary_to_no_primary_mismatched_me.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/primary_wrong_set_name.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/repeated.yml +9 -5
- data/spec/spec_tests/data/sdam/rs/replicaset_rsnp.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/response_from_removed.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/sec_not_auth.yml +4 -2
- 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 +5 -3
- data/spec/spec_tests/data/sdam/rs/secondary_mismatched_me.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/secondary_wrong_set_name.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/secondary_wrong_set_name_with_primary.yml +4 -2
- 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 +13 -12
- data/spec/spec_tests/data/sdam/rs/stepdown_change_set_name.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/too_new.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/too_old.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/topology_version_equal.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/topology_version_greater.yml +10 -5
- data/spec/spec_tests/data/sdam/rs/topology_version_less.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/unexpected_mongos.yml +2 -1
- 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 +29 -24
- data/spec/spec_tests/data/sdam/rs/wrong_set_name.yml +2 -1
- data/spec/spec_tests/data/sdam/sharded/compatible.yml +4 -2
- data/spec/spec_tests/data/sdam/sharded/discover_single_mongos.yml +2 -1
- data/spec/spec_tests/data/sdam/sharded/ls_timeout_mongos.yml +9 -5
- data/spec/spec_tests/data/sdam/sharded/mongos_disconnect.yml +6 -3
- data/spec/spec_tests/data/sdam/sharded/multiple_mongoses.yml +4 -2
- data/spec/spec_tests/data/sdam/sharded/non_mongos_removed.yml +4 -2
- data/spec/spec_tests/data/sdam/sharded/too_new.yml +4 -2
- data/spec/spec_tests/data/sdam/sharded/too_old.yml +4 -2
- data/spec/spec_tests/data/sdam/single/compatible.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_external_ip.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_mongos.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_replicaset.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_rsarbiter.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_rsprimary.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_rssecondary.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_standalone.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_wrong_set_name.yml +4 -2
- data/spec/spec_tests/data/sdam/single/discover_standalone.yml +2 -1
- data/spec/spec_tests/data/sdam/single/ls_timeout_standalone.yml +2 -1
- data/spec/spec_tests/data/sdam/single/not_ok_response.yml +5 -3
- data/spec/spec_tests/data/sdam/single/standalone_removed.yml +2 -1
- data/spec/spec_tests/data/sdam/single/standalone_using_legacy_hello.yml +34 -0
- data/spec/spec_tests/data/sdam/single/too_new.yml +2 -1
- data/spec/spec_tests/data/sdam/single/too_old.yml +2 -1
- data/spec/spec_tests/data/sdam/single/too_old_then_upgraded.yml +4 -2
- data/spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml +2 -4
- data/spec/spec_tests/data/sdam_monitoring/load_balancer.yml +65 -0
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_no_primary.yml +40 -40
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_primary.yml +40 -40
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml +4 -3
- data/spec/spec_tests/data/sdam_monitoring/required_replica_set.yml +3 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone.yml +3 -3
- data/spec/spec_tests/data/sdam_monitoring/standalone_repeated.yml +2 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +4 -4
- data/spec/spec_tests/data/sdam_monitoring/standalone_to_rs_with_me_mismatch.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 +14 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-no-results.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-replicaSet-errors.yml +6 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-true-multiple-hosts.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-true-txt.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-conflicts_with_loadBalanced-true-txt.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-conflicts_with_loadBalanced-true.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero-txt.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/encoded-userinfo-and-db.yml +15 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/loadBalanced-false-txt.yml +10 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srv-service-name.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-conflicts_with_replicaSet-txt.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-conflicts_with_replicaSet.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-equal_to_srv_records.yml +16 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-greater_than_srv_records.yml +15 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-less_than_srv_records.yml +15 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-zero-txt.yml +15 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-zero.yml +15 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/uri-with-admin-database.yml +13 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/uri-with-auth.yml +12 -0
- data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-equal_to_srv_records.yml +13 -0
- data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-greater_than_srv_records.yml +12 -0
- data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-less_than_srv_records.yml +10 -0
- data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-zero.yml +11 -0
- data/spec/spec_tests/data/server_selection/Unknown/read/ghost.yml +11 -0
- data/spec/spec_tests/data/server_selection/Unknown/write/ghost.yml +11 -0
- data/spec/spec_tests/data/sessions_unified/driver-sessions-server-support.yml +123 -0
- data/spec/spec_tests/data/sessions_unified/implicit-sessions-default-causal-consistency.yml +119 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-client-error.yml +75 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-server-error.yml +102 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-unsupported-ops.yml +258 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions.yml +482 -0
- data/spec/spec_tests/data/transactions/error-labels.yml +4 -1
- data/spec/spec_tests/data/transactions/errors-client.yml +8 -9
- data/spec/spec_tests/data/transactions/mongos-pin-auto.yml +3 -0
- data/spec/spec_tests/data/transactions/mongos-recovery-token.yml +3 -1
- data/spec/spec_tests/data/transactions/pin-mongos.yml +6 -3
- data/spec/spec_tests/data/transactions/retryable-abort.yml +7 -7
- data/spec/spec_tests/data/transactions/retryable-commit.yml +7 -7
- data/spec/spec_tests/data/transactions_unified/do-not-retry-read-in-transaction.yml +64 -0
- data/spec/spec_tests/data/transactions_unified/mongos-unpin.yml +172 -0
- data/spec/spec_tests/data/transactions_unified/retryable-abort-handshake.yml +118 -0
- data/spec/spec_tests/data/transactions_unified/retryable-commit-handshake.yml +118 -0
- 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-fail/operation-failure.yml +31 -0
- data/spec/spec_tests/data/unified/valid-fail/operation-unsupported.yml +13 -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/expectedEventsForClient-ignoreExtraEvents.yml +78 -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 +241 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-command-monitoring.yml +102 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-crud.yml +190 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-gridfs.yml +155 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-retryable-reads.yml +193 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-retryable-writes.yml +210 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-sessions.yml +215 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions-convenient-api.yml +235 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions-mongos-pin-auto.yml +169 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions.yml +171 -0
- data/spec/spec_tests/data/uri_options/auth-options.yml +25 -0
- data/spec/spec_tests/data/uri_options/compression-options.yml +7 -4
- data/spec/spec_tests/data/uri_options/connection-options.yml +60 -0
- data/spec/spec_tests/data/uri_options/read-preference-options.yml +24 -0
- data/spec/spec_tests/data/uri_options/ruby-connection-options.yml +1 -0
- data/spec/spec_tests/data/uri_options/srv-options.yml +96 -0
- data/spec/spec_tests/data/uri_options/tls-options.yml +160 -4
- data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +419 -0
- data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +413 -0
- data/spec/spec_tests/data/versioned_api/runcommand-helper-no-api-version-declared.yml +75 -0
- data/spec/spec_tests/data/versioned_api/test-commands-deprecation-errors.yml +47 -0
- data/spec/spec_tests/data/versioned_api/test-commands-strict-mode.yml +46 -0
- data/spec/spec_tests/data/versioned_api/transaction-handling.yml +128 -0
- data/spec/spec_tests/gridfs_spec.rb +3 -0
- data/spec/spec_tests/gridfs_unified_spec.rb +13 -0
- data/spec/spec_tests/load_balancers_spec.rb +15 -0
- data/spec/spec_tests/max_staleness_spec.rb +3 -0
- data/spec/spec_tests/read_write_concern_connection_string_spec.rb +3 -0
- data/spec/spec_tests/read_write_concern_document_spec.rb +3 -0
- data/spec/spec_tests/read_write_concern_operaton_spec.rb +3 -0
- data/spec/spec_tests/retryable_reads_spec.rb +11 -3
- data/spec/spec_tests/retryable_reads_unified_spec.rb +22 -0
- data/spec/spec_tests/retryable_writes_spec.rb +14 -8
- data/spec/spec_tests/retryable_writes_unified_spec.rb +21 -0
- data/spec/spec_tests/sdam_monitoring_spec.rb +14 -6
- data/spec/spec_tests/sdam_spec.rb +9 -2
- data/spec/spec_tests/sdam_unified_spec.rb +13 -0
- data/spec/spec_tests/seed_list_discovery_spec.rb +127 -0
- data/spec/spec_tests/server_selection_rtt_spec.rb +3 -0
- data/spec/spec_tests/server_selection_spec.rb +3 -0
- data/spec/spec_tests/sessions_unified_spec.rb +13 -0
- data/spec/spec_tests/transactions_api_spec.rb +3 -0
- data/spec/spec_tests/transactions_spec.rb +3 -0
- data/spec/spec_tests/transactions_unified_spec.rb +13 -0
- data/spec/spec_tests/unified_spec.rb +18 -0
- data/spec/spec_tests/uri_options_spec.rb +50 -33
- data/spec/spec_tests/versioned_api_spec.rb +13 -0
- data/spec/stress/cleanup_spec.rb +3 -0
- data/spec/stress/connection_pool_stress_spec.rb +3 -61
- data/spec/stress/connection_pool_timing_spec.rb +14 -35
- data/spec/stress/fork_reconnect_stress_spec.rb +17 -18
- data/spec/stress/push_monitor_close_spec.rb +44 -0
- data/spec/support/authorization.rb +4 -1
- data/spec/support/aws_utils/base.rb +3 -0
- data/spec/support/aws_utils/inspector.rb +3 -0
- data/spec/support/aws_utils/orchestrator.rb +22 -7
- data/spec/support/aws_utils/provisioner.rb +3 -0
- data/spec/support/aws_utils.rb +6 -2
- data/spec/support/background_thread_registry.rb +7 -14
- data/spec/support/certificates/README.md +3 -2
- data/spec/support/certificates/atlas-ocsp-ca.crt +103 -0
- data/spec/support/certificates/atlas-ocsp.crt +152 -0
- data/spec/support/certificates/retrieve-atlas-cert +40 -0
- data/spec/support/client_registry.rb +17 -6
- data/spec/support/client_registry_macros.rb +17 -5
- data/spec/support/cluster_tools.rb +17 -9
- data/spec/support/common_shortcuts.rb +134 -10
- data/spec/support/constraints.rb +16 -246
- data/spec/support/crypt/corpus/corpus-encrypted.json +9515 -0
- data/spec/support/crypt/corpus/corpus-key-aws.json +32 -32
- data/spec/support/crypt/corpus/corpus-key-azure.json +33 -0
- data/spec/support/crypt/corpus/corpus-key-gcp.json +35 -0
- data/spec/support/crypt/corpus/corpus-key-kmip.json +32 -0
- data/spec/support/crypt/corpus/corpus-key-local.json +30 -30
- data/spec/support/crypt/corpus/corpus-schema.json +4399 -121
- data/spec/support/crypt/corpus/corpus.json +4999 -37
- data/spec/support/crypt/data_keys/key_document_azure.json +33 -0
- data/spec/support/crypt/data_keys/key_document_gcp.json +37 -0
- data/spec/support/crypt/data_keys/key_document_kmip.json +32 -0
- data/spec/support/crypt/encrypted_fields/encryptedFields.json +32 -0
- 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/keys/key1-document.json +30 -0
- data/spec/support/crypt/schema_maps/schema_map_azure.json +17 -0
- data/spec/support/crypt/schema_maps/schema_map_azure_key_alt_names.json +12 -0
- data/spec/support/crypt/schema_maps/schema_map_gcp.json +17 -0
- data/spec/support/crypt/schema_maps/schema_map_gcp_key_alt_names.json +12 -0
- data/spec/support/crypt/schema_maps/schema_map_kmip.json +17 -0
- data/spec/support/crypt/schema_maps/schema_map_kmip_key_alt_names.json +12 -0
- data/spec/support/crypt.rb +271 -13
- data/spec/support/dns.rb +3 -0
- data/spec/support/json_ext_formatter.rb +3 -0
- data/spec/support/keyword_struct.rb +3 -0
- data/spec/support/local_resource_registry.rb +3 -0
- data/spec/support/macros.rb +29 -0
- data/spec/support/matchers.rb +33 -1
- data/spec/support/mongos_macros.rb +24 -0
- data/spec/support/monitoring_ext.rb +3 -0
- data/spec/support/ocsp +1 -0
- data/spec/support/primary_socket.rb +3 -0
- data/spec/support/sdam_formatter_integration.rb +3 -0
- data/spec/support/shared/app_metadata.rb +179 -0
- data/spec/support/shared/auth_context.rb +17 -0
- data/spec/support/shared/protocol.rb +3 -0
- data/spec/support/shared/scram_conversation.rb +5 -1
- data/spec/support/shared/server_selector.rb +6 -3
- data/spec/support/shared/session.rb +20 -11
- data/spec/support/spec_config.rb +248 -24
- data/spec/support/spec_setup.rb +51 -38
- data/spec/support/using_hash.rb +40 -0
- data/spec/support/utils.rb +353 -172
- data.tar.gz.sig +0 -0
- metadata +2052 -1217
- metadata.gz.sig +0 -0
- data/lib/mongo/collection/view/builder/find_command.rb +0 -150
- data/lib/mongo/collection/view/builder/flags.rb +0 -62
- data/lib/mongo/collection/view/builder/modifiers.rb +0 -80
- data/lib/mongo/collection/view/builder/op_query.rb +0 -91
- data/lib/mongo/cursor/builder/get_more_command.rb +0 -77
- data/lib/mongo/cursor/builder/kill_cursors_command.rb +0 -108
- data/lib/mongo/cursor/builder/op_get_more.rb +0 -61
- data/lib/mongo/cursor/builder/op_kill_cursors.rb +0 -103
- data/lib/mongo/cursor/builder.rb +0 -18
- data/lib/mongo/operation/aggregate/command.rb +0 -44
- data/lib/mongo/operation/collections_info/command.rb +0 -40
- data/lib/mongo/operation/command/command.rb +0 -38
- data/lib/mongo/operation/count/command.rb +0 -38
- data/lib/mongo/operation/create/command.rb +0 -38
- data/lib/mongo/operation/create_index/command.rb +0 -42
- data/lib/mongo/operation/create_user/command.rb +0 -43
- data/lib/mongo/operation/delete/command.rb +0 -46
- data/lib/mongo/operation/delete/legacy.rb +0 -54
- data/lib/mongo/operation/distinct/command.rb +0 -38
- data/lib/mongo/operation/drop/command.rb +0 -38
- data/lib/mongo/operation/drop_database/command.rb +0 -38
- data/lib/mongo/operation/drop_index/command.rb +0 -42
- data/lib/mongo/operation/explain/command.rb +0 -39
- data/lib/mongo/operation/explain/legacy.rb +0 -38
- data/lib/mongo/operation/find/command.rb +0 -39
- data/lib/mongo/operation/find/legacy/result.rb +0 -41
- data/lib/mongo/operation/find/legacy.rb +0 -40
- data/lib/mongo/operation/get_more/command.rb +0 -39
- data/lib/mongo/operation/get_more/legacy.rb +0 -36
- data/lib/mongo/operation/indexes/command.rb +0 -39
- data/lib/mongo/operation/indexes/legacy.rb +0 -45
- data/lib/mongo/operation/insert/command.rb +0 -56
- data/lib/mongo/operation/insert/legacy.rb +0 -65
- data/lib/mongo/operation/kill_cursors/command.rb +0 -37
- data/lib/mongo/operation/kill_cursors/legacy.rb +0 -37
- data/lib/mongo/operation/list_collections/command.rb +0 -43
- data/lib/mongo/operation/map_reduce/command.rb +0 -40
- data/lib/mongo/operation/parallel_scan/command.rb +0 -55
- data/lib/mongo/operation/remove_user/command.rb +0 -43
- data/lib/mongo/operation/shared/collections_info_or_list_collections.rb +0 -56
- data/lib/mongo/operation/shared/op_msg_or_command.rb +0 -44
- data/lib/mongo/operation/shared/op_msg_or_find_command.rb +0 -47
- data/lib/mongo/operation/shared/op_msg_or_list_indexes_command.rb +0 -47
- data/lib/mongo/operation/update/command.rb +0 -47
- data/lib/mongo/operation/update/legacy/result.rb +0 -102
- data/lib/mongo/operation/update/legacy.rb +0 -65
- data/lib/mongo/operation/update_user/command.rb +0 -42
- data/lib/mongo/operation/users_info/command.rb +0 -43
- data/lib/mongo/protocol/delete.rb +0 -169
- data/lib/mongo/protocol/insert.rb +0 -178
- data/lib/mongo/protocol/update.rb +0 -211
- data/lib/mongo/server/context.rb +0 -69
- data/spec/mongo/collection/view/builder/flags_spec.rb +0 -106
- data/spec/mongo/collection/view/builder/modifiers_spec.rb +0 -210
- data/spec/mongo/cursor/builder/op_kill_cursors_spec.rb +0 -61
- data/spec/mongo/dbref_spec.rb +0 -149
- data/spec/mongo/operation/delete/command_spec.rb +0 -112
- data/spec/mongo/operation/find/legacy_spec.rb +0 -125
- data/spec/mongo/operation/get_more_spec.rb +0 -58
- data/spec/mongo/operation/insert/command_spec.rb +0 -115
- data/spec/mongo/operation/kill_cursors_spec.rb +0 -41
- data/spec/mongo/operation/update/command_spec.rb +0 -119
- data/spec/mongo/protocol/delete_spec.rb +0 -182
- data/spec/mongo/protocol/insert_spec.rb +0 -176
- data/spec/mongo/protocol/update_spec.rb +0 -201
- data/spec/mongo/server/app_metadata_shared.rb +0 -136
- data/spec/spec_tests/change_streams_spec.rb +0 -90
- data/spec/spec_tests/command_monitoring_spec.rb +0 -66
- data/spec/spec_tests/data/change_streams/change-streams-errors.yml +0 -102
- data/spec/spec_tests/data/change_streams/change-streams-resume-errorLabels.yml +0 -1105
- data/spec/spec_tests/data/change_streams/change-streams-resume-whitelist.yml +0 -1173
- data/spec/spec_tests/data/change_streams/change-streams.yml +0 -537
- data/spec/spec_tests/data/command_monitoring/bulkWrite.yml +0 -49
- data/spec/spec_tests/data/command_monitoring/command.yml +0 -61
- data/spec/spec_tests/data/command_monitoring/deleteMany.yml +0 -55
- data/spec/spec_tests/data/command_monitoring/deleteOne.yml +0 -55
- data/spec/spec_tests/data/command_monitoring/find.yml +0 -266
- data/spec/spec_tests/data/command_monitoring/insertMany.yml +0 -75
- data/spec/spec_tests/data/command_monitoring/insertOne.yml +0 -51
- data/spec/spec_tests/data/command_monitoring/unacknowledgedBulkWrite.yml +0 -34
- data/spec/spec_tests/data/command_monitoring/updateMany.yml +0 -65
- data/spec/spec_tests/data/command_monitoring/updateOne.yml +0 -90
- data/spec/spec_tests/data/crud_v2/aggregate-merge.yml +0 -103
- data/spec/spec_tests/data/crud_v2/aggregate-out-readConcern.yml +0 -110
- data/spec/spec_tests/data/crud_v2/bulkWrite-arrayFilters.yml +0 -103
- data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint-clientError.yml +0 -63
- data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint-serverError.yml +0 -92
- data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint.yml +0 -103
- data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint-clientError.yml +0 -90
- data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint-serverError.yml +0 -147
- data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint.yml +0 -164
- data/spec/spec_tests/data/crud_v2/db-aggregate.yml +0 -38
- data/spec/spec_tests/data/crud_v2/deleteMany-hint-clientError.yml +0 -43
- data/spec/spec_tests/data/crud_v2/deleteMany-hint-serverError.yml +0 -62
- data/spec/spec_tests/data/crud_v2/deleteMany-hint.yml +0 -58
- data/spec/spec_tests/data/crud_v2/deleteOne-hint-clientError.yml +0 -41
- data/spec/spec_tests/data/crud_v2/deleteOne-hint-serverError.yml +0 -60
- data/spec/spec_tests/data/crud_v2/deleteOne-hint.yml +0 -57
- data/spec/spec_tests/data/crud_v2/find-allowdiskuse-clientError.yml +0 -28
- data/spec/spec_tests/data/crud_v2/find-allowdiskuse-serverError.yml +0 -44
- data/spec/spec_tests/data/crud_v2/find-allowdiskuse.yml +0 -50
- data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint-clientError.yml +0 -45
- data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint-serverError.yml +0 -60
- data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint.yml +0 -56
- data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint-serverError.yml +0 -59
- data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint.yml +0 -55
- data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint-serverError.yml +0 -58
- data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint.yml +0 -55
- data/spec/spec_tests/data/crud_v2/replaceOne-hint.yml +0 -61
- data/spec/spec_tests/data/crud_v2/unacknowledged-bulkWrite-delete-hint-clientError.yml +0 -60
- data/spec/spec_tests/data/crud_v2/unacknowledged-bulkWrite-update-hint-clientError.yml +0 -88
- data/spec/spec_tests/data/crud_v2/unacknowledged-deleteMany-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/unacknowledged-deleteOne-hint-clientError.yml +0 -38
- data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndDelete-hint-clientError.yml +0 -42
- data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndReplace-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndUpdate-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/unacknowledged-replaceOne-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/unacknowledged-updateMany-hint-clientError.yml +0 -43
- data/spec/spec_tests/data/crud_v2/unacknowledged-updateOne-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/updateMany-hint-clientError.yml +0 -45
- data/spec/spec_tests/data/crud_v2/updateMany-hint-serverError.yml +0 -66
- data/spec/spec_tests/data/crud_v2/updateMany-hint.yml +0 -65
- data/spec/spec_tests/data/crud_v2/updateOne-hint-clientError.yml +0 -43
- data/spec/spec_tests/data/crud_v2/updateOne-hint-serverError.yml +0 -62
- data/spec/spec_tests/data/crud_v2/updateOne-hint.yml +0 -61
- data/spec/spec_tests/data/crud_v2/updateWithPipelines.yml +0 -157
- data/spec/spec_tests/data/retryable_reads/aggregate-serverErrors.yml +0 -157
- data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch-serverErrors.yml +0 -149
- data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch.yml +0 -61
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch-serverErrors.yml +0 -149
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch.yml +0 -65
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch-serverErrors.yml +0 -153
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch.yml +0 -61
- data/spec/spec_tests/data/retryable_reads/count-serverErrors.yml +0 -150
- data/spec/spec_tests/data/retryable_reads/countDocuments-serverErrors.yml +0 -150
- data/spec/spec_tests/data/retryable_reads/distinct-serverErrors.yml +0 -156
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors.yml +0 -148
- data/spec/spec_tests/data/retryable_reads/find-serverErrors.yml +0 -160
- data/spec/spec_tests/data/retryable_reads/findOne-serverErrors.yml +0 -154
- data/spec/spec_tests/data/retryable_reads/gridfs-download-serverErrors.yml +0 -173
- data/spec/spec_tests/data/retryable_reads/gridfs-downloadByName-serverErrors.yml +0 -174
- data/spec/spec_tests/data/retryable_reads/listCollectionNames-serverErrors.yml +0 -143
- data/spec/spec_tests/data/retryable_reads/listCollectionObjects-serverErrors.yml +0 -144
- data/spec/spec_tests/data/retryable_reads/listCollections-serverErrors.yml +0 -143
- data/spec/spec_tests/data/retryable_reads/listDatabaseNames-serverErrors.yml +0 -143
- data/spec/spec_tests/data/retryable_reads/listDatabaseObjects-serverErrors.yml +0 -144
- data/spec/spec_tests/data/retryable_reads/listDatabases-serverErrors.yml +0 -144
- data/spec/spec_tests/data/retryable_reads/listIndexNames-serverErrors.yml +0 -144
- data/spec/spec_tests/data/retryable_reads/listIndexNames.yml +0 -60
- data/spec/spec_tests/data/retryable_reads/listIndexes-serverErrors.yml +0 -145
- data/spec/spec_tests/data/retryable_reads/mapReduce.yml +0 -60
- data/spec/spec_tests/data/retryable_writes/bulkWrite-serverErrors.yml +0 -130
- data/spec/spec_tests/data/retryable_writes/bulkWrite.yml +0 -396
- data/spec/spec_tests/data/retryable_writes/deleteOne-serverErrors.yml +0 -73
- data/spec/spec_tests/data/retryable_writes/findOneAndDelete-serverErrors.yml +0 -74
- data/spec/spec_tests/data/retryable_writes/findOneAndReplace-serverErrors.yml +0 -80
- data/spec/spec_tests/data/retryable_writes/findOneAndUpdate-serverErrors.yml +0 -79
- data/spec/spec_tests/data/retryable_writes/insertMany-serverErrors.yml +0 -84
- data/spec/spec_tests/data/retryable_writes/insertOne-serverErrors.yml +0 -526
- data/spec/spec_tests/data/retryable_writes/replaceOne-serverErrors.yml +0 -82
- data/spec/spec_tests/data/retryable_writes/updateOne-serverErrors.yml +0 -82
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotMaster.yml +0 -60
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotMasterNoSlaveOk.yml +0 -60
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotMasterOrSecondary.yml +0 -60
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotMaster.yml +0 -51
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotMasterNoSlaveOk.yml +0 -51
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotMasterOrSecondary.yml +0 -51
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotMaster.yml +0 -60
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotMasterNoSlaveOk.yml +0 -60
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotMasterOrSecondary.yml +0 -60
- data/spec/spec_tests/data/sdam/errors/post-42-NotMaster.yml +0 -46
- data/spec/spec_tests/data/sdam/errors/post-42-NotMasterNoSlaveOk.yml +0 -46
- data/spec/spec_tests/data/sdam/errors/post-42-NotMasterOrSecondary.yml +0 -46
- data/spec/spec_tests/data/sdam/errors/pre-42-NotMaster.yml +0 -46
- data/spec/spec_tests/data/sdam/errors/pre-42-NotMasterNoSlaveOk.yml +0 -46
- data/spec/spec_tests/data/sdam/errors/pre-42-NotMasterOrSecondary.yml +0 -46
- data/spec/spec_tests/data/sdam/errors/stale-generation-NotMaster.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-NotMasterNoSlaveOk.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-NotMasterOrSecondary.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotMaster.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotMasterNoSlaveOk.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotMasterOrSecondary.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotMaster.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotMasterNoSlaveOk.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotMasterOrSecondary.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotMaster.yml +0 -64
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotMasterNoSlaveOk.yml +0 -64
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotMasterOrSecondary.yml +0 -64
- data/spec/spec_tests/data/sdam/single/direct_connection_slave.yml +0 -34
- 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 -83
- data/spec/spec_tests/data/sdam_integration/find-shutdown-error.yml +0 -116
- data/spec/spec_tests/data/sdam_integration/insert-network-error.yml +0 -86
- data/spec/spec_tests/data/sdam_integration/insert-shutdown-error.yml +0 -115
- data/spec/spec_tests/data/sdam_integration/isMaster-command-error.yml +0 -168
- data/spec/spec_tests/data/sdam_integration/isMaster-network-error.yml +0 -162
- data/spec/spec_tests/data/sdam_integration/isMaster-timeout.yml +0 -229
- data/spec/spec_tests/data/sdam_integration/rediscover-quickly-after-step-down.yml +0 -87
- data/spec/spec_tests/dns_seedlist_discovery_spec.rb +0 -68
- data/spec/spec_tests/sdam_integration_spec.rb +0 -13
- data/spec/support/child_process_helper.rb +0 -78
- data/spec/support/cluster_config.rb +0 -207
- data/spec/support/crypt/corpus/corpus_encrypted.json +0 -4152
- data/spec/support/event_subscriber.rb +0 -212
- data/spec/support/lite_constraints.rb +0 -141
- data/spec/support/spec_organizer.rb +0 -129
- /data/spec/spec_tests/data/retryable_reads/{aggregate-merge.yml → legacy/aggregate-merge.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{aggregate.yml → legacy/aggregate.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{count.yml → legacy/count.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{countDocuments.yml → legacy/countDocuments.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{distinct.yml → legacy/distinct.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount.yml → legacy/estimatedDocumentCount.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{find.yml → legacy/find.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{findOne.yml → legacy/findOne.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{gridfs-download.yml → legacy/gridfs-download.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{gridfs-downloadByName.yml → legacy/gridfs-downloadByName.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listCollectionNames.yml → legacy/listCollectionNames.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listCollectionObjects.yml → legacy/listCollectionObjects.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listCollections.yml → legacy/listCollections.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listDatabaseNames.yml → legacy/listDatabaseNames.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listDatabaseObjects.yml → legacy/listDatabaseObjects.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listDatabases.yml → legacy/listDatabases.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listIndexes.yml → legacy/listIndexes.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{bulkWrite-errorLabels.yml → legacy/bulkWrite-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{deleteMany.yml → legacy/deleteMany.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{deleteOne-errorLabels.yml → legacy/deleteOne-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{deleteOne.yml → legacy/deleteOne.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{findOneAndDelete-errorLabels.yml → legacy/findOneAndDelete-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{findOneAndDelete.yml → legacy/findOneAndDelete.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{findOneAndReplace-errorLabels.yml → legacy/findOneAndReplace-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{findOneAndReplace.yml → legacy/findOneAndReplace.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{findOneAndUpdate-errorLabels.yml → legacy/findOneAndUpdate-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{findOneAndUpdate.yml → legacy/findOneAndUpdate.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{insertMany-errorLabels.yml → legacy/insertMany-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{insertMany.yml → legacy/insertMany.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{insertOne-errorLabels.yml → legacy/insertOne-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{insertOne.yml → legacy/insertOne.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{replaceOne-errorLabels.yml → legacy/replaceOne-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{replaceOne.yml → legacy/replaceOne.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{updateMany.yml → legacy/updateMany.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{updateOne-errorLabels.yml → legacy/updateOne-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{updateOne.yml → legacy/updateOne.yml} +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/direct-connection-false.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/direct-connection-true.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/longer-parent-in-return.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/misformatted-option.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/no-results.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/not-enough-parts.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/one-result-default-port.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/one-txt-record-multiple-strings.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/one-txt-record.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch1.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch2.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch3.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch4.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch5.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/returned-parent-too-short.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/returned-parent-wrong.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/two-results-default-port.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/two-results-nonstandard-port.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/two-txt-records.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-not-allowed-option.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-with-overridden-ssl-option.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-with-overridden-uri-option.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-with-unallowed-option.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/uri-with-port.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/uri-with-two-hosts.yml +0 -0
@@ -1,3 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# rubocop:todo all
|
3
|
+
|
1
4
|
require 'spec_helper'
|
2
5
|
|
3
6
|
describe 'Connection pool stress test' do
|
@@ -137,65 +140,4 @@ describe 'Connection pool stress test' do
|
|
137
140
|
it_behaves_like 'does not raise error'
|
138
141
|
end
|
139
142
|
end
|
140
|
-
|
141
|
-
context 'when primary pool is disconnected' do
|
142
|
-
let(:threads) do
|
143
|
-
threads = operation_threads
|
144
|
-
|
145
|
-
# thread that disconnects primary's pool
|
146
|
-
threads << Thread.new do
|
147
|
-
sleep 0.2
|
148
|
-
server = client.cluster.next_primary
|
149
|
-
server.pool.disconnect!
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
it_behaves_like 'does not raise error'
|
154
|
-
end
|
155
|
-
|
156
|
-
context 'when all pools are disconnected' do
|
157
|
-
let(:threads) do
|
158
|
-
threads = operation_threads
|
159
|
-
|
160
|
-
# thread that disconnects each server's pool
|
161
|
-
threads << Thread.new do
|
162
|
-
sleep 0.2
|
163
|
-
|
164
|
-
client.cluster.servers_list.each do |server|
|
165
|
-
if server.description.data_bearing?
|
166
|
-
server.pool.disconnect!
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
it_behaves_like 'does not raise error'
|
173
|
-
end
|
174
|
-
|
175
|
-
context 'when populator connection auth sometimes fails' do
|
176
|
-
let(:threads) { operation_threads }
|
177
|
-
|
178
|
-
it 'does not raise error' do
|
179
|
-
server = client.cluster.next_primary
|
180
|
-
|
181
|
-
# We only want to test connection failure on the populator; connection failures
|
182
|
-
# occurring in the check_out method should raise an error.
|
183
|
-
# The populator calls create_and_add_connection, which calls connection.connect!
|
184
|
-
# and raises if an error occurs (eg, an auth error), so in this test we
|
185
|
-
# randomly raise errors on this method.
|
186
|
-
expect(server.pool).to receive(:create_and_add_connection).at_least(:once).and_wrap_original do |m, *args|
|
187
|
-
if rand < 0.1
|
188
|
-
raise Mongo::Error::SocketError
|
189
|
-
else
|
190
|
-
m.call(*args)
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
server.pool.clear(stop_populator: false)
|
195
|
-
|
196
|
-
expect do
|
197
|
-
threads.collect { |t| t.join }
|
198
|
-
end.not_to raise_error
|
199
|
-
end
|
200
|
-
end
|
201
143
|
end
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# rubocop:todo all
|
3
|
+
|
1
4
|
require 'spec_helper'
|
2
5
|
|
3
6
|
describe 'Connection pool timing test' do
|
@@ -22,7 +25,7 @@ describe 'Connection pool timing test' do
|
|
22
25
|
end
|
23
26
|
|
24
27
|
let(:client) do
|
25
|
-
authorized_client.with(options.merge(
|
28
|
+
authorized_client.with(options.merge(monitoring_io: true))
|
26
29
|
end
|
27
30
|
|
28
31
|
let!(:collection) do
|
@@ -64,11 +67,11 @@ describe 'Connection pool timing test' do
|
|
64
67
|
let(:threads) { operation_threads }
|
65
68
|
|
66
69
|
it 'does not error' do
|
67
|
-
start =
|
70
|
+
start = Mongo::Utils.monotonic_time
|
68
71
|
expect {
|
69
72
|
threads.collect { |t| t.join }
|
70
73
|
}.not_to raise_error
|
71
|
-
puts "[Connection Pool Timing] Duration with no max idle time: #{
|
74
|
+
puts "[Connection Pool Timing] Duration with no max idle time: #{Mongo::Utils.monotonic_time - start}"
|
72
75
|
end
|
73
76
|
end
|
74
77
|
|
@@ -80,36 +83,11 @@ describe 'Connection pool timing test' do
|
|
80
83
|
let(:threads) { operation_threads }
|
81
84
|
|
82
85
|
it 'does not error' do
|
83
|
-
start =
|
84
|
-
expect {
|
85
|
-
threads.collect { |t| t.join }
|
86
|
-
}.not_to raise_error
|
87
|
-
puts "[Connection Pool Timing] Duration with low max idle time: #{Time.now - start}"
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
context 'when clear is called periodically' do
|
92
|
-
let(:options) do
|
93
|
-
{ max_pool_size: 10, min_pool_size: 5 }
|
94
|
-
end
|
95
|
-
|
96
|
-
let(:threads) do
|
97
|
-
threads = operation_threads
|
98
|
-
threads << Thread.new do
|
99
|
-
10.times do
|
100
|
-
sleep 0.1
|
101
|
-
client.cluster.next_primary.pool.clear
|
102
|
-
end
|
103
|
-
end
|
104
|
-
threads
|
105
|
-
end
|
106
|
-
|
107
|
-
it 'does not error' do
|
108
|
-
start = Time.now
|
86
|
+
start = Mongo::Utils.monotonic_time
|
109
87
|
expect {
|
110
88
|
threads.collect { |t| t.join }
|
111
89
|
}.not_to raise_error
|
112
|
-
puts "[Connection Pool Timing] Duration
|
90
|
+
puts "[Connection Pool Timing] Duration with low max idle time: #{Mongo::Utils.monotonic_time - start}"
|
113
91
|
end
|
114
92
|
end
|
115
93
|
|
@@ -153,9 +131,9 @@ describe 'Connection pool timing test' do
|
|
153
131
|
# when trying to perform operations during primary change
|
154
132
|
sleep 1
|
155
133
|
|
156
|
-
@primary_change_start =
|
134
|
+
@primary_change_start = Mongo::Utils.monotonic_time
|
157
135
|
ClusterTools.instance.change_primary
|
158
|
-
@primary_change_end =
|
136
|
+
@primary_change_end = Mongo::Utils.monotonic_time
|
159
137
|
|
160
138
|
# Primary change is complete; execute more operations
|
161
139
|
more_threads.collect { |t| t.join }
|
@@ -166,16 +144,17 @@ describe 'Connection pool timing test' do
|
|
166
144
|
# On JRuby, sometimes the following error is produced indicating
|
167
145
|
# possible data corruption or an interpreter bug:
|
168
146
|
# RSpec::Expectations::ExpectationNotMetError: expected no Exception, got #<Mongo::Error::OperationFailure: Invalid ns [ruby-driver.] (73) (on localhost:27018, modern retry, attempt 1) (on localhost:27018, modern retry, attempt 1)>
|
169
|
-
|
147
|
+
retry_test tries: (BSON::Environment.jruby? ? 3 : 1)
|
148
|
+
it 'does not error' do
|
170
149
|
threads
|
171
|
-
start =
|
150
|
+
start = Mongo::Utils.monotonic_time
|
172
151
|
expect do
|
173
152
|
threads.each do |t|
|
174
153
|
t.join
|
175
154
|
end
|
176
155
|
end.not_to raise_error
|
177
156
|
puts "[Connection Pool Timing] Duration before primary change: #{@primary_change_start - start}. "\
|
178
|
-
"Duration after primary change: #{
|
157
|
+
"Duration after primary change: #{Mongo::Utils.monotonic_time - @primary_change_end}"
|
179
158
|
end
|
180
159
|
end
|
181
160
|
end
|
@@ -1,17 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# rubocop:todo all
|
3
|
+
|
1
4
|
require 'spec_helper'
|
2
5
|
|
3
6
|
describe 'fork reconnect' do
|
4
7
|
require_fork
|
5
|
-
|
8
|
+
require_mri
|
6
9
|
|
7
10
|
# On multi-shard sharded clusters a succeeding write request does not
|
8
11
|
# guarantee that the next operation will succeed (since it could be sent to
|
9
12
|
# another shard with a dead connection).
|
10
|
-
|
11
|
-
|
12
|
-
# On Ruby 2.3 $?.exitstatus is sometimes nil after Process.wait returns which
|
13
|
-
# is not supposed to happen.
|
14
|
-
ruby_version_gte '2.4'
|
13
|
+
require_no_multi_mongos
|
15
14
|
|
16
15
|
require_stress
|
17
16
|
|
@@ -28,20 +27,20 @@ describe 'fork reconnect' do
|
|
28
27
|
client['foo'].insert_one(test: 1)
|
29
28
|
|
30
29
|
pids = []
|
31
|
-
deadline =
|
30
|
+
deadline = Mongo::Utils.monotonic_time + 5
|
32
31
|
1.upto(10) do
|
33
32
|
if pid = fork
|
34
33
|
pids << pid
|
35
34
|
else
|
36
35
|
Utils.wrap_forked_child do
|
37
|
-
while
|
38
|
-
client.database.command(
|
36
|
+
while Mongo::Utils.monotonic_time < deadline
|
37
|
+
client.database.command(hello: 1).should be_a(Mongo::Operation::Result)
|
39
38
|
end
|
40
39
|
end
|
41
40
|
end
|
42
41
|
end
|
43
42
|
|
44
|
-
while
|
43
|
+
while Mongo::Utils.monotonic_time < deadline
|
45
44
|
# Use a read which is retried in case of an error
|
46
45
|
client['foo'].find(test: 1).to_a
|
47
46
|
end
|
@@ -52,7 +51,8 @@ describe 'fork reconnect' do
|
|
52
51
|
end
|
53
52
|
end
|
54
53
|
|
55
|
-
|
54
|
+
retry_test
|
55
|
+
context 'when parent is operating on client during the fork' do
|
56
56
|
# This test intermittently fails in evergreen with pool size of 5,
|
57
57
|
# with a number of pending connections in the pool.
|
58
58
|
# The reason could be that handshaking is slow or operations are slow
|
@@ -60,13 +60,13 @@ describe 'fork reconnect' do
|
|
60
60
|
# Sometimes it seems the monitoring connection experiences network
|
61
61
|
# errors (despite being a loopback connection) which causes the test
|
62
62
|
# to fail as then server selection fails.
|
63
|
-
# The
|
63
|
+
# The retry_test is to deal with network errors on monitoring connection.
|
64
64
|
|
65
65
|
let(:client) { authorized_client.with(max_pool_size: 10,
|
66
66
|
wait_queue_timeout: 10, socket_timeout: 2, connect_timeout: 2) }
|
67
67
|
|
68
68
|
it 'works' do
|
69
|
-
client.database.command(
|
69
|
+
client.database.command(hello: 1).should be_a(Mongo::Operation::Result)
|
70
70
|
|
71
71
|
threads = []
|
72
72
|
5.times do
|
@@ -78,20 +78,20 @@ describe 'fork reconnect' do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
pids = []
|
81
|
-
deadline =
|
81
|
+
deadline = Mongo::Utils.monotonic_time + 5
|
82
82
|
10.times do
|
83
83
|
if pid = fork
|
84
84
|
pids << pid
|
85
85
|
else
|
86
86
|
Utils.wrap_forked_child do
|
87
|
-
while
|
88
|
-
client.database.command(
|
87
|
+
while Mongo::Utils.monotonic_time < deadline
|
88
|
+
client.database.command(hello: 1).should be_a(Mongo::Operation::Result)
|
89
89
|
end
|
90
90
|
end
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
-
while
|
94
|
+
while Mongo::Utils.monotonic_time < deadline
|
95
95
|
sleep 0.1
|
96
96
|
end
|
97
97
|
|
@@ -103,7 +103,6 @@ describe 'fork reconnect' do
|
|
103
103
|
status.exitstatus.should == 0
|
104
104
|
end
|
105
105
|
end
|
106
|
-
|
107
106
|
end
|
108
107
|
end
|
109
108
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# rubocop:todo all
|
3
|
+
|
4
|
+
require 'spec_helper'
|
5
|
+
|
6
|
+
# This test repeatedly creates and closes clients across several threads.
|
7
|
+
# Its goal is to ensure that the push monitor connections specifically get
|
8
|
+
# closed without any errors or warnings being reported to applications.
|
9
|
+
#
|
10
|
+
# Although the test is specifically meant to test 4.4+ servers (that utilize
|
11
|
+
# the push monitor) in non-LB connections, run it everywhere for good measure.
|
12
|
+
describe 'Push monitor close test' do
|
13
|
+
require_stress
|
14
|
+
|
15
|
+
let(:options) do
|
16
|
+
SpecConfig.instance.all_test_options
|
17
|
+
end
|
18
|
+
|
19
|
+
before(:all) do
|
20
|
+
# load if necessary
|
21
|
+
ClusterConfig.instance.primary_address
|
22
|
+
ClientRegistry.instance.close_all_clients
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'does not warn/error on cleanup' do
|
26
|
+
Mongo::Logger.logger.should_not receive(:warn)
|
27
|
+
|
28
|
+
threads = 10.times.map do
|
29
|
+
Thread.new do
|
30
|
+
10.times do
|
31
|
+
client = new_local_client([ClusterConfig.instance.primary_address.seed], options)
|
32
|
+
if rand > 0.33
|
33
|
+
client.command(ping: 1)
|
34
|
+
sleep(rand * 3)
|
35
|
+
end
|
36
|
+
client.close
|
37
|
+
STDOUT << '.'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
threads.each(&:join)
|
42
|
+
puts
|
43
|
+
end
|
44
|
+
end
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# rubocop:todo all
|
3
|
+
|
1
4
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
5
|
#
|
3
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -20,7 +23,7 @@ TEST_COLL = 'test'.freeze
|
|
20
23
|
# An invalid write concern.
|
21
24
|
#
|
22
25
|
# @since 2.4.2
|
23
|
-
INVALID_WRITE_CONCERN = { w:
|
26
|
+
INVALID_WRITE_CONCERN = { w: 4000 }
|
24
27
|
|
25
28
|
module Authorization
|
26
29
|
|
@@ -1,3 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# rubocop:todo all
|
3
|
+
|
4
|
+
require 'securerandom'
|
5
|
+
|
1
6
|
module AwsUtils
|
2
7
|
class Orchestrator < Base
|
3
8
|
|
@@ -10,13 +15,24 @@ module AwsUtils
|
|
10
15
|
resp.credentials
|
11
16
|
end
|
12
17
|
|
18
|
+
def assume_role_with_web_identity(role_arn, token_file)
|
19
|
+
token = File.open(token_file).read
|
20
|
+
resp = sts_client.assume_role_with_web_identity(
|
21
|
+
role_arn: role_arn,
|
22
|
+
role_session_name: SecureRandom.uuid,
|
23
|
+
web_identity_token: token,
|
24
|
+
duration_seconds: 900
|
25
|
+
)
|
26
|
+
resp.credentials
|
27
|
+
end
|
28
|
+
|
13
29
|
def set_instance_profile(instance_id,
|
14
30
|
instance_profile_name: AWS_AUTH_INSTANCE_PROFILE_NAME,
|
15
31
|
instance_profile_arn: nil
|
16
32
|
)
|
17
33
|
clear_instance_profile(instance_id)
|
18
34
|
|
19
|
-
deadline =
|
35
|
+
deadline = Process.clock_gettime(Process::CLOCK_MONOTONIC) + 30
|
20
36
|
begin
|
21
37
|
ec2_client.associate_iam_instance_profile(
|
22
38
|
iam_instance_profile: {
|
@@ -26,7 +42,7 @@ module AwsUtils
|
|
26
42
|
instance_id: instance_id,
|
27
43
|
)
|
28
44
|
rescue Aws::EC2::Errors::RequestLimitExceeded => e
|
29
|
-
if
|
45
|
+
if Process.clock_gettime(Process::CLOCK_MONOTONIC) >= deadline
|
30
46
|
raise
|
31
47
|
end
|
32
48
|
STDERR.puts("AWS request limit exceeded: #{e.class}: #{e}, will retry")
|
@@ -40,13 +56,13 @@ module AwsUtils
|
|
40
56
|
:iam_instance_profile_associations, :instance_id, instance_id)
|
41
57
|
|
42
58
|
if assoc
|
43
|
-
deadline =
|
59
|
+
deadline = Process.clock_gettime(Process::CLOCK_MONOTONIC) + 30
|
44
60
|
begin
|
45
61
|
ec2_client.disassociate_iam_instance_profile(
|
46
62
|
association_id: assoc.association_id,
|
47
63
|
)
|
48
64
|
rescue Aws::EC2::Errors::RequestLimitExceeded => e
|
49
|
-
if
|
65
|
+
if Process.clock_gettime(Process::CLOCK_MONOTONIC) >= deadline
|
50
66
|
raise
|
51
67
|
end
|
52
68
|
STDERR.puts("AWS request limit exceeded: #{e.class}: #{e}, will retry")
|
@@ -285,7 +301,7 @@ CMD
|
|
285
301
|
service_name: AWS_AUTH_ECS_SERVICE_NAME,
|
286
302
|
timeout: 20
|
287
303
|
)
|
288
|
-
deadline =
|
304
|
+
deadline = Process.clock_gettime(Process::CLOCK_MONOTONIC) + timeout
|
289
305
|
|
290
306
|
# The AWS SDK waiter seems to immediately fail sometimes right after
|
291
307
|
# the service is created, so wait for the service to become active
|
@@ -310,8 +326,7 @@ CMD
|
|
310
326
|
status = service.status
|
311
327
|
end
|
312
328
|
|
313
|
-
|
314
|
-
if now >= deadline
|
329
|
+
if Process.clock_gettime(Process::CLOCK_MONOTONIC) >= deadline
|
315
330
|
raise "Service #{service_name} in cluster #{cluster_name} did not become ready in #{timeout} seconds (current status: #{status})"
|
316
331
|
end
|
317
332
|
|
data/spec/support/aws_utils.rb
CHANGED
@@ -1,13 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# rubocop:todo all
|
3
|
+
|
1
4
|
autoload :Byebug, 'byebug'
|
2
5
|
autoload :Paint, 'paint'
|
3
6
|
|
7
|
+
require 'aws-sdk-core'
|
8
|
+
|
4
9
|
module Aws
|
5
10
|
autoload :CloudWatchLogs, 'aws-sdk-cloudwatchlogs'
|
6
|
-
autoload :Credentials, 'aws-sdk-core'
|
7
11
|
autoload :EC2, 'aws-sdk-ec2'
|
8
12
|
autoload :ECS, 'aws-sdk-ecs'
|
9
13
|
autoload :IAM, 'aws-sdk-iam'
|
10
|
-
autoload :STS, 'aws-sdk-
|
14
|
+
autoload :STS, 'aws-sdk-sts'
|
11
15
|
end
|
12
16
|
|
13
17
|
module AwsUtils
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# rubocop:todo all
|
3
|
+
|
1
4
|
require 'singleton'
|
2
5
|
require 'ostruct'
|
3
6
|
|
@@ -27,7 +30,8 @@ class BackgroundThreadRegistry
|
|
27
30
|
@records << OpenStruct.new(
|
28
31
|
thread: thread,
|
29
32
|
object: object,
|
30
|
-
|
33
|
+
# When rake spec:prepare is run, the current_example method is not defined
|
34
|
+
example: RSpec.respond_to?(:current_example) ? RSpec.current_example : nil,
|
31
35
|
)
|
32
36
|
end
|
33
37
|
end
|
@@ -36,14 +40,14 @@ class BackgroundThreadRegistry
|
|
36
40
|
@lock.synchronize do
|
37
41
|
alive_thread_records = @records.select { |record| record.thread.alive? }
|
38
42
|
if alive_thread_records.any?
|
39
|
-
msg = "Live background threads after closing all clients:"
|
43
|
+
msg = +"Live background threads after closing all clients:"
|
40
44
|
alive_thread_records.each do |record|
|
41
45
|
msg << "\n #{record.object}"
|
42
46
|
if record.object.respond_to?(:options)
|
43
47
|
msg << "\n with options: #{record.object.options}"
|
44
48
|
end
|
45
49
|
if record.example
|
46
|
-
msg << "\n in #{record.example.id} #{record.example.full_description}"
|
50
|
+
msg << "\n in #{record.example.id}: #{record.example.full_description}"
|
47
51
|
else
|
48
52
|
msg << "\n not in an example"
|
49
53
|
end
|
@@ -54,14 +58,3 @@ class BackgroundThreadRegistry
|
|
54
58
|
end
|
55
59
|
end
|
56
60
|
end
|
57
|
-
|
58
|
-
RSpec.configure do |config|
|
59
|
-
config.around do |example|
|
60
|
-
$current_example = example
|
61
|
-
begin
|
62
|
-
example.run
|
63
|
-
ensure
|
64
|
-
$current_example = nil
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
@@ -8,8 +8,9 @@ the x509gen MongoDB tool.
|
|
8
8
|
The file extensions map to content as follows:
|
9
9
|
|
10
10
|
- `.key` - private key
|
11
|
-
- `.crt` - certificate
|
12
|
-
- `.pem` - certificate and private key combined
|
11
|
+
- `.crt` - certificate or a certificate chain
|
12
|
+
- `.pem` - certificate (or a certificate chain) and private key combined
|
13
|
+
in the same file
|
13
14
|
|
14
15
|
The file name fragments have the following meaning:
|
15
16
|
|
@@ -0,0 +1,103 @@
|
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number:
|
5
|
+
0c:f5:bd:06:2b:56:02:f4:7a:b8:50:2c:23:cc:f0:66
|
6
|
+
Signature Algorithm: sha256WithRSAEncryption
|
7
|
+
Issuer: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2
|
8
|
+
Validity
|
9
|
+
Not Before: Mar 30 00:00:00 2021 GMT
|
10
|
+
Not After : Mar 29 23:59:59 2031 GMT
|
11
|
+
Subject: C = US, O = DigiCert Inc, CN = DigiCert Global G2 TLS RSA SHA256 2020 CA1
|
12
|
+
Subject Public Key Info:
|
13
|
+
Public Key Algorithm: rsaEncryption
|
14
|
+
Public-Key: (2048 bit)
|
15
|
+
Modulus:
|
16
|
+
00:cc:f7:10:62:4f:a6:bb:63:6f:ed:90:52:56:c5:
|
17
|
+
6d:27:7b:7a:12:56:8a:f1:f4:f9:d6:e7:e1:8f:bd:
|
18
|
+
95:ab:f2:60:41:15:70:db:12:00:fa:27:0a:b5:57:
|
19
|
+
38:5b:7d:b2:51:93:71:95:0e:6a:41:94:5b:35:1b:
|
20
|
+
fa:7b:fa:bb:c5:be:24:30:fe:56:ef:c4:f3:7d:97:
|
21
|
+
e3:14:f5:14:4d:cb:a7:10:f2:16:ea:ab:22:f0:31:
|
22
|
+
22:11:61:69:90:26:ba:78:d9:97:1f:e3:7d:66:ab:
|
23
|
+
75:44:95:73:c8:ac:ff:ef:5d:0a:8a:59:43:e1:ac:
|
24
|
+
b2:3a:0f:f3:48:fc:d7:6b:37:c1:63:dc:de:46:d6:
|
25
|
+
db:45:fe:7d:23:fd:90:e8:51:07:1e:51:a3:5f:ed:
|
26
|
+
49:46:54:7f:2c:88:c5:f4:13:9c:97:15:3c:03:e8:
|
27
|
+
a1:39:dc:69:0c:32:c1:af:16:57:4c:94:47:42:7c:
|
28
|
+
a2:c8:9c:7d:e6:d4:4d:54:af:42:99:a8:c1:04:c2:
|
29
|
+
77:9c:d6:48:e4:ce:11:e0:2a:80:99:f0:43:70:cf:
|
30
|
+
3f:76:6b:d1:4c:49:ab:24:5e:c2:0d:82:fd:46:a8:
|
31
|
+
ab:6c:93:cc:62:52:42:75:92:f8:9a:fa:5e:5e:b2:
|
32
|
+
b0:61:e5:1f:1f:b9:7f:09:98:e8:3d:fa:83:7f:47:
|
33
|
+
69:a1
|
34
|
+
Exponent: 65537 (0x10001)
|
35
|
+
X509v3 extensions:
|
36
|
+
X509v3 Basic Constraints: critical
|
37
|
+
CA:TRUE, pathlen:0
|
38
|
+
X509v3 Subject Key Identifier:
|
39
|
+
74:85:80:C0:66:C7:DF:37:DE:CF:BD:29:37:AA:03:1D:BE:ED:CD:17
|
40
|
+
X509v3 Authority Key Identifier:
|
41
|
+
4E:22:54:20:18:95:E6:E3:6E:E6:0F:FA:FA:B9:12:ED:06:17:8F:39
|
42
|
+
X509v3 Key Usage: critical
|
43
|
+
Digital Signature, Certificate Sign, CRL Sign
|
44
|
+
X509v3 Extended Key Usage:
|
45
|
+
TLS Web Server Authentication, TLS Web Client Authentication
|
46
|
+
Authority Information Access:
|
47
|
+
OCSP - URI:http://ocsp.digicert.com
|
48
|
+
CA Issuers - URI:http://cacerts.digicert.com/DigiCertGlobalRootG2.crt
|
49
|
+
X509v3 CRL Distribution Points:
|
50
|
+
Full Name:
|
51
|
+
URI:http://crl3.digicert.com/DigiCertGlobalRootG2.crl
|
52
|
+
X509v3 Certificate Policies:
|
53
|
+
Policy: 2.16.840.1.114412.2.1
|
54
|
+
Policy: 2.23.140.1.1
|
55
|
+
Policy: 2.23.140.1.2.1
|
56
|
+
Policy: 2.23.140.1.2.2
|
57
|
+
Policy: 2.23.140.1.2.3
|
58
|
+
Signature Algorithm: sha256WithRSAEncryption
|
59
|
+
Signature Value:
|
60
|
+
90:f1:70:cb:28:97:69:97:7c:74:fd:c0:fa:26:7b:53:ab:ad:
|
61
|
+
cd:65:fd:ba:9c:06:9c:8a:d7:5a:43:87:ed:4d:4c:56:5f:ad:
|
62
|
+
c1:c5:b5:05:20:2e:59:d1:ff:4a:f5:a0:2a:d8:b0:95:ad:c9:
|
63
|
+
2e:4a:3b:d7:a7:f6:6f:88:29:fc:30:3f:24:84:bb:c3:b7:7b:
|
64
|
+
93:07:2c:af:87:6b:76:33:ed:00:55:52:b2:59:9e:e4:b9:d0:
|
65
|
+
f3:df:e7:0f:fe:dd:f8:c4:b9:10:72:81:09:04:5f:cf:97:9e:
|
66
|
+
2e:32:75:8e:cf:9a:58:d2:57:31:7e:37:01:81:b2:66:6d:29:
|
67
|
+
1a:b1:66:09:6d:d1:6e:90:f4:b9:fa:2f:01:14:c5:5c:56:64:
|
68
|
+
01:d9:7d:87:a8:38:53:9f:8b:5d:46:6d:5c:c6:27:84:81:d4:
|
69
|
+
7e:8c:8c:a3:9b:52:e7:c6:88:ec:37:7c:2a:fb:f0:55:5a:38:
|
70
|
+
72:10:d8:00:13:cf:4c:73:db:aa:37:35:a8:29:81:69:9c:76:
|
71
|
+
bc:de:18:7b:90:d4:ca:cf:ef:67:03:fd:04:5a:21:16:b1:ff:
|
72
|
+
ea:3f:df:dc:82:f5:eb:f4:59:92:23:0d:24:2a:95:25:4c:ca:
|
73
|
+
a1:91:e6:d4:b7:ac:87:74:b3:f1:6d:a3:99:db:f9:d5:bd:84:
|
74
|
+
40:9f:07:98
|
75
|
+
|
76
|
+
-----BEGIN CERTIFICATE-----
|
77
|
+
MIIEyDCCA7CgAwIBAgIQDPW9BitWAvR6uFAsI8zwZjANBgkqhkiG9w0BAQsFADBh
|
78
|
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
79
|
+
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
|
80
|
+
MjAeFw0yMTAzMzAwMDAwMDBaFw0zMTAzMjkyMzU5NTlaMFkxCzAJBgNVBAYTAlVT
|
81
|
+
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxMzAxBgNVBAMTKkRpZ2lDZXJ0IEdsb2Jh
|
82
|
+
bCBHMiBUTFMgUlNBIFNIQTI1NiAyMDIwIENBMTCCASIwDQYJKoZIhvcNAQEBBQAD
|
83
|
+
ggEPADCCAQoCggEBAMz3EGJPprtjb+2QUlbFbSd7ehJWivH0+dbn4Y+9lavyYEEV
|
84
|
+
cNsSAPonCrVXOFt9slGTcZUOakGUWzUb+nv6u8W+JDD+Vu/E832X4xT1FE3LpxDy
|
85
|
+
FuqrIvAxIhFhaZAmunjZlx/jfWardUSVc8is/+9dCopZQ+GssjoP80j812s3wWPc
|
86
|
+
3kbW20X+fSP9kOhRBx5Ro1/tSUZUfyyIxfQTnJcVPAPooTncaQwywa8WV0yUR0J8
|
87
|
+
osicfebUTVSvQpmowQTCd5zWSOTOEeAqgJnwQ3DPP3Zr0UxJqyRewg2C/Uaoq2yT
|
88
|
+
zGJSQnWS+Jr6Xl6ysGHlHx+5fwmY6D36g39HaaECAwEAAaOCAYIwggF+MBIGA1Ud
|
89
|
+
EwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFHSFgMBmx9833s+9KTeqAx2+7c0XMB8G
|
90
|
+
A1UdIwQYMBaAFE4iVCAYlebjbuYP+vq5Eu0GF485MA4GA1UdDwEB/wQEAwIBhjAd
|
91
|
+
BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwdgYIKwYBBQUHAQEEajBoMCQG
|
92
|
+
CCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQAYIKwYBBQUHMAKG
|
93
|
+
NGh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RH
|
94
|
+
Mi5jcnQwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQuY29t
|
95
|
+
L0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDA9BgNVHSAENjA0MAsGCWCGSAGG/WwC
|
96
|
+
ATAHBgVngQwBATAIBgZngQwBAgEwCAYGZ4EMAQICMAgGBmeBDAECAzANBgkqhkiG
|
97
|
+
9w0BAQsFAAOCAQEAkPFwyyiXaZd8dP3A+iZ7U6utzWX9upwGnIrXWkOH7U1MVl+t
|
98
|
+
wcW1BSAuWdH/SvWgKtiwla3JLko716f2b4gp/DA/JIS7w7d7kwcsr4drdjPtAFVS
|
99
|
+
slme5LnQ89/nD/7d+MS5EHKBCQRfz5eeLjJ1js+aWNJXMX43AYGyZm0pGrFmCW3R
|
100
|
+
bpD0ufovARTFXFZkAdl9h6g4U5+LXUZtXMYnhIHUfoyMo5tS58aI7Dd8KvvwVVo4
|
101
|
+
chDYABPPTHPbqjc1qCmBaZx2vN4Ye5DUys/vZwP9BFohFrH/6j/f3IL16/RZkiMN
|
102
|
+
JCqVJUzKoZHm1Lesh3Sz8W2jmdv51b2EQJ8HmA==
|
103
|
+
-----END CERTIFICATE-----
|