mongo 2.3.1 → 2.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +0 -0
- data/CONTRIBUTING.md +12 -54
- data/LICENSE +1 -1
- data/README.md +74 -44
- data/Rakefile +110 -22
- data/lib/mongo/active_support.rb +20 -0
- data/lib/mongo/address/ipv4.rb +41 -8
- data/lib/mongo/address/ipv6.rb +64 -12
- data/lib/mongo/address/unix.rb +12 -6
- data/lib/mongo/address/validator.rb +102 -0
- data/lib/mongo/address.rb +163 -59
- data/lib/mongo/auth/aws/conversation.rb +128 -0
- data/lib/mongo/auth/aws/credentials_retriever.rb +222 -0
- data/lib/mongo/auth/aws/request.rb +286 -0
- data/lib/mongo/auth/aws.rb +40 -0
- data/lib/mongo/auth/base.rb +138 -0
- data/lib/mongo/auth/conversation_base.rb +87 -0
- data/lib/mongo/auth/cr/conversation.rb +29 -73
- data/lib/mongo/auth/cr.rb +17 -35
- data/lib/mongo/auth/credential_cache.rb +54 -0
- data/lib/mongo/auth/gssapi/conversation.rb +100 -0
- data/lib/mongo/auth/gssapi.rb +41 -0
- data/lib/mongo/auth/ldap/conversation.rb +14 -53
- data/lib/mongo/auth/ldap.rb +14 -33
- data/lib/mongo/auth/roles.rb +4 -1
- data/lib/mongo/auth/sasl_conversation_base.rb +102 -0
- data/lib/mongo/auth/scram/conversation.rb +13 -411
- data/lib/mongo/auth/scram.rb +45 -37
- data/lib/mongo/auth/scram256/conversation.rb +66 -0
- data/lib/mongo/auth/scram256.rb +34 -0
- data/lib/mongo/auth/scram_conversation_base.rb +378 -0
- data/lib/mongo/auth/stringprep/profiles/sasl.rb +77 -0
- data/lib/mongo/auth/stringprep/tables.rb +3236 -0
- data/lib/mongo/auth/stringprep/unicode_normalize/normalize.rb +175 -0
- data/lib/mongo/auth/stringprep/unicode_normalize/tables.rb +1171 -0
- data/lib/mongo/auth/stringprep.rb +118 -0
- data/lib/mongo/auth/user/view.rb +62 -24
- data/lib/mongo/auth/user.rb +76 -10
- data/lib/mongo/auth/x509/conversation.rb +28 -50
- data/lib/mongo/auth/x509.rb +29 -31
- data/lib/mongo/auth.rb +96 -17
- data/lib/mongo/background_thread.rb +173 -0
- data/lib/mongo/bson.rb +4 -1
- data/lib/mongo/bulk_write/combineable.rb +26 -2
- data/lib/mongo/bulk_write/ordered_combiner.rb +4 -1
- data/lib/mongo/bulk_write/result.rb +5 -2
- data/lib/mongo/bulk_write/result_combiner.rb +21 -8
- data/lib/mongo/bulk_write/transformable.rb +36 -12
- data/lib/mongo/bulk_write/unordered_combiner.rb +4 -1
- data/lib/mongo/bulk_write/validatable.rb +16 -2
- data/lib/mongo/bulk_write.rb +146 -51
- data/lib/mongo/caching_cursor.rb +77 -0
- data/lib/mongo/client.rb +1181 -92
- data/lib/mongo/client_encryption.rb +106 -0
- data/lib/mongo/cluster/periodic_executor.rb +105 -0
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +192 -0
- data/lib/mongo/cluster/reapers/socket_reaper.rb +65 -0
- data/lib/mongo/cluster/sdam_flow.rb +626 -0
- data/lib/mongo/cluster/topology/base.rb +225 -0
- data/lib/mongo/cluster/topology/load_balanced.rb +102 -0
- data/lib/mongo/cluster/topology/no_replica_set_options.rb +37 -0
- data/lib/mongo/cluster/topology/replica_set_no_primary.rb +172 -0
- data/lib/mongo/cluster/topology/replica_set_with_primary.rb +30 -0
- data/lib/mongo/cluster/topology/sharded.rb +38 -92
- data/lib/mongo/cluster/topology/single.rb +46 -86
- data/lib/mongo/cluster/topology/unknown.rb +39 -121
- data/lib/mongo/cluster/topology.rb +92 -20
- data/lib/mongo/cluster.rb +889 -228
- data/lib/mongo/cluster_time.rb +142 -0
- data/lib/mongo/collection/view/aggregation.rb +52 -14
- data/lib/mongo/collection/view/builder/aggregation.rb +52 -7
- data/lib/mongo/collection/view/builder/map_reduce.rb +39 -37
- data/lib/mongo/collection/view/builder.rb +4 -5
- data/lib/mongo/collection/view/change_stream/retryable.rb +43 -0
- data/lib/mongo/collection/view/change_stream.rb +372 -0
- data/lib/mongo/collection/view/explainable.rb +32 -10
- data/lib/mongo/collection/view/immutable.rb +5 -2
- data/lib/mongo/collection/view/iterable.rb +145 -24
- data/lib/mongo/collection/view/map_reduce.rb +101 -38
- data/lib/mongo/collection/view/readable.rb +292 -70
- data/lib/mongo/collection/view/writable.rb +327 -65
- data/lib/mongo/collection/view.rb +74 -30
- data/lib/mongo/collection.rb +387 -63
- data/lib/mongo/crypt/auto_decryption_context.rb +43 -0
- data/lib/mongo/crypt/auto_encrypter.rb +182 -0
- data/lib/mongo/crypt/auto_encryption_context.rb +47 -0
- data/lib/mongo/crypt/binary.rb +158 -0
- data/lib/mongo/crypt/binding.rb +1232 -0
- data/lib/mongo/crypt/context.rb +138 -0
- data/lib/mongo/crypt/data_key_context.rb +165 -0
- data/lib/mongo/crypt/encryption_io.rb +309 -0
- data/lib/mongo/crypt/explicit_decryption_context.rb +43 -0
- data/lib/mongo/crypt/explicit_encrypter.rb +120 -0
- data/lib/mongo/crypt/explicit_encryption_context.rb +92 -0
- data/lib/mongo/crypt/handle.rb +318 -0
- data/lib/mongo/crypt/hooks.rb +93 -0
- data/lib/mongo/crypt/kms_context.rb +70 -0
- data/lib/mongo/crypt/status.rb +134 -0
- data/lib/mongo/crypt.rb +36 -0
- data/lib/mongo/cursor/kill_spec.rb +38 -0
- data/lib/mongo/cursor.rb +290 -63
- data/lib/mongo/database/view.rb +107 -26
- data/lib/mongo/database.rb +242 -31
- data/lib/mongo/dbref.rb +13 -3
- data/lib/mongo/distinguishing_semaphore.rb +58 -0
- data/lib/mongo/error/auth_error.rb +32 -0
- data/lib/mongo/error/bad_load_balancer_target.rb +26 -0
- data/lib/mongo/error/bulk_write_error.rb +38 -3
- data/lib/mongo/error/change_stream_resumable.rb +40 -0
- data/lib/mongo/error/closed_stream.rb +5 -2
- data/lib/mongo/error/connection_check_out_timeout.rb +51 -0
- data/lib/mongo/error/connection_perished.rb +26 -0
- data/lib/mongo/error/credential_check_error.rb +29 -0
- data/lib/mongo/error/crypt_error.rb +34 -0
- data/lib/mongo/error/extra_file_chunk.rb +4 -1
- data/lib/mongo/error/failed_string_prep_validation.rb +41 -0
- data/lib/mongo/error/file_not_found.rb +4 -1
- data/lib/mongo/error/handshake_error.rb +27 -0
- data/lib/mongo/error/insufficient_iteration_count.rb +41 -0
- data/lib/mongo/error/internal_driver_error.rb +25 -0
- data/lib/mongo/error/invalid_address.rb +27 -0
- data/lib/mongo/error/invalid_application_name.rb +41 -0
- data/lib/mongo/error/invalid_bulk_operation.rb +4 -1
- data/lib/mongo/error/invalid_bulk_operation_type.rb +4 -1
- data/lib/mongo/error/invalid_collection_name.rb +4 -1
- data/lib/mongo/error/invalid_cursor_operation.rb +30 -0
- data/lib/mongo/error/invalid_database_name.rb +4 -1
- data/lib/mongo/error/invalid_document.rb +4 -1
- data/lib/mongo/error/invalid_file.rb +4 -1
- data/lib/mongo/error/invalid_file_revision.rb +4 -1
- data/lib/mongo/error/invalid_min_pool_size.rb +38 -0
- data/lib/mongo/error/invalid_nonce.rb +5 -2
- data/lib/mongo/error/invalid_read_concern.rb +31 -0
- data/lib/mongo/error/invalid_read_option.rb +38 -0
- data/lib/mongo/error/invalid_replacement_document.rb +4 -1
- data/lib/mongo/error/invalid_server_auth_host.rb +25 -0
- data/lib/mongo/error/invalid_server_auth_response.rb +26 -0
- data/lib/mongo/error/invalid_server_preference.rb +37 -5
- data/lib/mongo/error/invalid_session.rb +40 -0
- data/lib/mongo/error/invalid_signature.rb +4 -1
- data/lib/mongo/error/invalid_transaction_operation.rb +85 -0
- data/lib/mongo/error/invalid_txt_record.rb +30 -0
- data/lib/mongo/error/invalid_update_document.rb +4 -1
- data/lib/mongo/error/invalid_uri.rb +11 -7
- data/lib/mongo/error/invalid_write_concern.rb +6 -3
- data/lib/mongo/error/kms_error.rb +25 -0
- data/lib/mongo/error/lint_error.rb +38 -0
- data/lib/mongo/error/max_bson_size.rb +18 -4
- data/lib/mongo/error/max_message_size.rb +4 -1
- data/lib/mongo/error/mismatched_domain.rb +30 -0
- data/lib/mongo/error/missing_file_chunk.rb +4 -1
- data/lib/mongo/error/missing_password.rb +32 -0
- data/lib/mongo/error/missing_resume_token.rb +42 -0
- data/lib/mongo/error/missing_scram_server_signature.rb +30 -0
- data/lib/mongo/error/missing_service_id.rb +26 -0
- data/lib/mongo/error/mongocryptd_spawn_error.rb +25 -0
- data/lib/mongo/error/multi_index_drop.rb +4 -1
- data/lib/mongo/error/need_primary_server.rb +4 -1
- data/lib/mongo/error/no_server_available.rb +17 -5
- data/lib/mongo/error/no_service_connection_available.rb +49 -0
- data/lib/mongo/error/no_srv_records.rb +29 -0
- data/lib/mongo/error/notable.rb +90 -0
- data/lib/mongo/error/operation_failure.rb +266 -13
- data/lib/mongo/error/parser.rb +220 -15
- data/lib/mongo/error/pool_closed_error.rb +53 -0
- data/lib/mongo/error/raise_original_error.rb +32 -0
- data/lib/mongo/error/sdam_error_detection.rb +83 -0
- 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/session_ended.rb +30 -0
- data/lib/mongo/error/sessions_not_supported.rb +38 -0
- data/lib/mongo/error/socket_error.rb +8 -2
- data/lib/mongo/error/socket_timeout_error.rb +8 -2
- data/lib/mongo/error/unchangeable_collection_option.rb +4 -1
- data/lib/mongo/error/unexpected_chunk_length.rb +4 -1
- data/lib/mongo/error/unexpected_response.rb +4 -1
- data/lib/mongo/error/unknown_payload_type.rb +44 -0
- data/lib/mongo/error/unmet_dependency.rb +24 -0
- data/lib/mongo/error/unsupported_array_filters.rb +59 -0
- data/lib/mongo/error/unsupported_collation.rb +59 -0
- data/lib/mongo/error/unsupported_features.rb +4 -19
- data/lib/mongo/error/unsupported_message_type.rb +26 -0
- data/lib/mongo/error/unsupported_option.rb +104 -0
- data/lib/mongo/error/write_retryable.rb +30 -0
- data/lib/mongo/error.rb +147 -2
- data/lib/mongo/event/base.rb +45 -0
- data/lib/mongo/event/listeners.rb +4 -1
- data/lib/mongo/event/publisher.rb +4 -1
- data/lib/mongo/event/subscriber.rb +4 -1
- data/lib/mongo/event.rb +18 -8
- data/lib/mongo/grid/file/chunk.rb +10 -7
- data/lib/mongo/grid/file/info.rb +38 -5
- data/lib/mongo/grid/file.rb +9 -1
- data/lib/mongo/grid/fs_bucket.rb +147 -65
- data/lib/mongo/grid/stream/read.rb +68 -30
- data/lib/mongo/grid/stream/write.rb +37 -12
- data/lib/mongo/grid/stream.rb +4 -1
- data/lib/mongo/grid.rb +4 -1
- data/lib/mongo/id.rb +69 -0
- data/lib/mongo/index/view.rb +112 -38
- data/lib/mongo/index.rb +5 -1
- data/lib/mongo/lint.rb +105 -0
- data/lib/mongo/loggable.rb +9 -2
- data/lib/mongo/logger.rb +7 -6
- data/lib/mongo/monitoring/cmap_log_subscriber.rb +56 -0
- data/lib/mongo/monitoring/command_log_subscriber.rb +25 -5
- data/lib/mongo/monitoring/event/cmap/base.rb +31 -0
- data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +88 -0
- data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +59 -0
- data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +74 -0
- data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +75 -0
- data/lib/mongo/monitoring/event/cmap/connection_closed.rb +106 -0
- data/lib/mongo/monitoring/event/cmap/connection_created.rb +67 -0
- data/lib/mongo/monitoring/event/cmap/connection_ready.rb +67 -0
- data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +63 -0
- data/lib/mongo/monitoring/event/cmap/pool_closed.rb +68 -0
- data/lib/mongo/monitoring/event/cmap/pool_created.rb +75 -0
- data/lib/mongo/monitoring/event/cmap.rb +28 -0
- data/lib/mongo/monitoring/event/command_failed.rb +59 -8
- data/lib/mongo/monitoring/event/command_started.rb +102 -6
- data/lib/mongo/monitoring/event/command_succeeded.rb +45 -6
- data/lib/mongo/monitoring/event/secure.rb +59 -5
- data/lib/mongo/monitoring/event/server_closed.rb +62 -0
- data/lib/mongo/monitoring/event/server_description_changed.rb +99 -0
- data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +92 -0
- data/lib/mongo/monitoring/event/server_heartbeat_started.rb +65 -0
- data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +84 -0
- data/lib/mongo/monitoring/event/server_opening.rb +62 -0
- data/lib/mongo/monitoring/event/topology_changed.rb +63 -0
- data/lib/mongo/monitoring/event/topology_closed.rb +57 -0
- data/lib/mongo/monitoring/event/topology_opening.rb +57 -0
- data/lib/mongo/monitoring/event.rb +15 -1
- data/lib/mongo/monitoring/publishable.rb +60 -44
- data/lib/mongo/monitoring/sdam_log_subscriber.rb +57 -0
- data/lib/mongo/monitoring/server_closed_log_subscriber.rb +33 -0
- data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +44 -0
- data/lib/mongo/monitoring/server_opening_log_subscriber.rb +33 -0
- data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +43 -0
- data/lib/mongo/monitoring/topology_closed_log_subscriber.rb +33 -0
- data/lib/mongo/monitoring/topology_opening_log_subscriber.rb +33 -0
- data/lib/mongo/monitoring/unified_sdam_log_subscriber.rb +65 -0
- data/lib/mongo/monitoring.rb +245 -61
- data/lib/mongo/operation/aggregate/command.rb +55 -0
- data/lib/mongo/operation/aggregate/op_msg.rb +34 -0
- data/lib/mongo/operation/aggregate/result.rb +104 -0
- data/lib/mongo/operation/aggregate.rb +39 -0
- data/lib/mongo/operation/collections_info/command.rb +48 -0
- data/lib/mongo/operation/collections_info/result.rb +59 -0
- data/lib/mongo/operation/collections_info.rb +51 -0
- data/lib/mongo/operation/command/command.rb +41 -0
- data/lib/mongo/operation/command/op_msg.rb +31 -0
- data/lib/mongo/operation/command.rb +34 -0
- data/lib/mongo/operation/context.rb +120 -0
- data/lib/mongo/operation/count/command.rb +47 -0
- data/lib/mongo/operation/count/op_msg.rb +38 -0
- data/lib/mongo/operation/count.rb +34 -0
- data/lib/mongo/operation/create/command.rb +47 -0
- data/lib/mongo/operation/create/op_msg.rb +39 -0
- data/lib/mongo/operation/create.rb +34 -0
- data/lib/mongo/operation/create_index/command.rb +61 -0
- data/lib/mongo/operation/create_index/op_msg.rb +54 -0
- data/lib/mongo/operation/create_index.rb +34 -0
- data/lib/mongo/operation/create_user/command.rb +46 -0
- data/lib/mongo/operation/create_user/op_msg.rb +38 -0
- data/lib/mongo/operation/create_user.rb +34 -0
- data/lib/mongo/operation/delete/bulk_result.rb +51 -0
- data/lib/mongo/operation/delete/command.rb +52 -0
- data/lib/mongo/operation/delete/legacy.rb +64 -0
- data/lib/mongo/operation/delete/op_msg.rb +55 -0
- data/lib/mongo/operation/delete/result.rb +48 -0
- data/lib/mongo/operation/delete.rb +41 -0
- data/lib/mongo/operation/distinct/command.rb +47 -0
- data/lib/mongo/operation/distinct/op_msg.rb +40 -0
- data/lib/mongo/operation/distinct.rb +34 -0
- data/lib/mongo/operation/drop/command.rb +41 -0
- data/lib/mongo/operation/drop/op_msg.rb +32 -0
- data/lib/mongo/operation/drop.rb +34 -0
- data/lib/mongo/operation/drop_database/command.rb +41 -0
- data/lib/mongo/operation/drop_database/op_msg.rb +32 -0
- data/lib/mongo/operation/drop_database.rb +34 -0
- data/lib/mongo/operation/drop_index/command.rb +45 -0
- data/lib/mongo/operation/drop_index/op_msg.rb +38 -0
- data/lib/mongo/operation/drop_index.rb +34 -0
- data/lib/mongo/operation/explain/command.rb +58 -0
- data/lib/mongo/operation/explain/legacy.rb +52 -0
- data/lib/mongo/operation/explain/op_msg.rb +48 -0
- data/lib/mongo/operation/explain/result.rb +56 -0
- data/lib/mongo/operation/explain.rb +36 -0
- data/lib/mongo/operation/find/builder/command.rb +110 -0
- data/lib/mongo/operation/find/builder/flags.rb +61 -0
- data/lib/mongo/operation/find/builder/legacy.rb +123 -0
- data/lib/mongo/operation/find/builder/modifiers.rb +89 -0
- data/lib/mongo/operation/find/builder.rb +21 -0
- data/lib/mongo/operation/find/command.rb +51 -0
- data/lib/mongo/operation/find/legacy/result.rb +46 -0
- data/lib/mongo/operation/find/legacy.rb +52 -0
- data/lib/mongo/operation/find/op_msg.rb +46 -0
- data/lib/mongo/operation/find/result.rb +76 -0
- data/lib/mongo/operation/find.rb +37 -0
- data/lib/mongo/operation/get_more/command.rb +43 -0
- data/lib/mongo/operation/get_more/command_builder.rb +38 -0
- data/lib/mongo/operation/get_more/legacy.rb +39 -0
- data/lib/mongo/operation/get_more/op_msg.rb +34 -0
- data/lib/mongo/operation/get_more/result.rb +75 -0
- data/lib/mongo/operation/get_more.rb +37 -0
- data/lib/mongo/operation/indexes/command.rb +42 -0
- data/lib/mongo/operation/indexes/legacy.rb +48 -0
- data/lib/mongo/operation/indexes/op_msg.rb +34 -0
- data/lib/mongo/operation/indexes/result.rb +105 -0
- data/lib/mongo/operation/indexes.rb +50 -0
- data/lib/mongo/operation/insert/bulk_result.rb +112 -0
- data/lib/mongo/operation/insert/command.rb +59 -0
- data/lib/mongo/operation/insert/legacy.rb +68 -0
- data/lib/mongo/operation/insert/op_msg.rb +54 -0
- data/lib/mongo/operation/insert/result.rb +75 -0
- data/lib/mongo/operation/insert.rb +44 -0
- data/lib/mongo/operation/kill_cursors/command.rb +48 -0
- data/lib/mongo/operation/kill_cursors/command_builder.rb +35 -0
- data/lib/mongo/operation/kill_cursors/legacy.rb +41 -0
- data/lib/mongo/operation/kill_cursors/op_msg.rb +42 -0
- data/lib/mongo/operation/kill_cursors.rb +12 -16
- data/lib/mongo/operation/list_collections/command.rb +46 -0
- data/lib/mongo/operation/list_collections/op_msg.rb +39 -0
- data/lib/mongo/operation/list_collections/result.rb +113 -0
- data/lib/mongo/operation/list_collections.rb +35 -0
- data/lib/mongo/operation/map_reduce/command.rb +51 -0
- data/lib/mongo/operation/map_reduce/op_msg.rb +34 -0
- data/lib/mongo/operation/map_reduce/result.rb +142 -0
- data/lib/mongo/operation/map_reduce.rb +35 -0
- data/lib/mongo/operation/op_msg_base.rb +33 -0
- data/lib/mongo/operation/parallel_scan/command.rb +57 -0
- data/lib/mongo/operation/parallel_scan/op_msg.rb +46 -0
- data/lib/mongo/operation/parallel_scan/result.rb +68 -0
- data/lib/mongo/operation/parallel_scan.rb +35 -0
- data/lib/mongo/operation/remove_user/command.rb +46 -0
- data/lib/mongo/operation/remove_user/op_msg.rb +38 -0
- data/lib/mongo/operation/remove_user.rb +34 -0
- data/lib/mongo/operation/result.rb +195 -39
- data/lib/mongo/operation/shared/bypass_document_validation.rb +46 -0
- data/lib/mongo/operation/shared/causal_consistency_supported.rb +45 -0
- data/lib/mongo/operation/shared/executable.rb +130 -0
- data/lib/mongo/operation/shared/executable_no_validate.rb +32 -0
- data/lib/mongo/operation/shared/executable_transaction_label.rb +30 -0
- data/lib/mongo/operation/shared/idable.rb +68 -0
- data/lib/mongo/operation/shared/limited.rb +42 -0
- data/lib/mongo/operation/shared/object_id_generator.rb +40 -0
- data/lib/mongo/operation/shared/op_msg_or_command.rb +41 -0
- data/lib/mongo/operation/shared/op_msg_or_find_command.rb +44 -0
- data/lib/mongo/operation/shared/polymorphic_lookup.rb +36 -0
- data/lib/mongo/operation/shared/polymorphic_operation.rb +42 -0
- data/lib/mongo/operation/shared/polymorphic_result.rb +50 -0
- data/lib/mongo/operation/shared/read_preference_supported.rb +116 -0
- data/lib/mongo/operation/shared/response_handling.rb +173 -0
- data/lib/mongo/operation/shared/result/aggregatable.rb +74 -0
- data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +32 -0
- data/lib/mongo/operation/shared/sessions_supported.rb +254 -0
- data/lib/mongo/operation/shared/specifiable.rb +567 -0
- data/lib/mongo/operation/shared/validatable.rb +87 -0
- data/lib/mongo/operation/shared/write.rb +90 -0
- data/lib/mongo/operation/shared/write_concern_supported.rb +43 -0
- data/lib/mongo/operation/update/bulk_result.rb +129 -0
- data/lib/mongo/operation/update/command.rb +53 -0
- data/lib/mongo/operation/update/legacy/result.rb +112 -0
- data/lib/mongo/operation/update/legacy.rb +76 -0
- data/lib/mongo/operation/update/op_msg.rb +51 -0
- data/lib/mongo/operation/update/result.rb +113 -0
- data/lib/mongo/operation/update.rb +41 -0
- data/lib/mongo/operation/update_user/command.rb +45 -0
- data/lib/mongo/operation/update_user/op_msg.rb +38 -0
- data/lib/mongo/operation/update_user.rb +34 -0
- data/lib/mongo/operation/users_info/command.rb +46 -0
- data/lib/mongo/operation/users_info/op_msg.rb +39 -0
- data/lib/mongo/operation/users_info/result.rb +48 -0
- data/lib/mongo/operation/users_info.rb +35 -0
- data/lib/mongo/operation/write_command/command.rb +51 -0
- data/lib/mongo/operation/write_command/op_msg.rb +43 -0
- data/lib/mongo/operation/write_command.rb +32 -0
- data/lib/mongo/operation.rb +83 -21
- data/lib/mongo/options/mapper.rb +13 -3
- data/lib/mongo/options/redacted.rb +4 -1
- data/lib/mongo/options.rb +4 -1
- data/lib/mongo/protocol/bit_vector.rb +8 -4
- data/lib/mongo/protocol/compressed.rb +184 -0
- data/lib/mongo/protocol/delete.rb +16 -8
- data/lib/mongo/protocol/get_more.rb +24 -15
- data/lib/mongo/protocol/insert.rb +20 -10
- data/lib/mongo/protocol/kill_cursors.rb +22 -21
- data/lib/mongo/protocol/message.rb +187 -23
- data/lib/mongo/protocol/msg.rb +404 -0
- data/lib/mongo/protocol/query.rb +120 -41
- data/lib/mongo/protocol/registry.rb +79 -0
- data/lib/mongo/protocol/reply.rb +23 -15
- data/lib/mongo/protocol/serializers.rb +283 -12
- data/lib/mongo/protocol/update.rb +22 -10
- data/lib/mongo/protocol.rb +6 -0
- data/lib/mongo/query_cache.rb +275 -0
- data/lib/mongo/retryable.rb +414 -47
- data/lib/mongo/semaphore.rb +49 -0
- data/lib/mongo/server/app_metadata.rb +267 -0
- data/lib/mongo/server/connection.rb +251 -101
- data/lib/mongo/server/connection_base.rb +276 -0
- data/lib/mongo/server/connection_common.rb +205 -0
- data/lib/mongo/server/connection_pool/generation_manager.rb +71 -0
- data/lib/mongo/server/connection_pool/populator.rb +61 -0
- data/lib/mongo/server/connection_pool.rb +796 -57
- data/lib/mongo/server/description/features.rb +84 -20
- data/lib/mongo/server/description/load_balancer.rb +33 -0
- data/lib/mongo/server/description.rb +398 -73
- data/lib/mongo/server/monitor/app_metadata.rb +37 -0
- data/lib/mongo/server/monitor/connection.rb +192 -61
- data/lib/mongo/server/monitor.rb +251 -92
- data/lib/mongo/server/pending_connection.rb +288 -0
- data/lib/mongo/server/push_monitor/connection.rb +31 -0
- data/lib/mongo/server/push_monitor.rb +194 -0
- data/lib/mongo/server/round_trip_time_averager.rb +76 -0
- data/lib/mongo/server.rb +454 -76
- data/lib/mongo/server_selector/base.rb +629 -0
- data/lib/mongo/server_selector/nearest.rb +44 -28
- data/lib/mongo/server_selector/primary.rb +40 -18
- data/lib/mongo/server_selector/primary_preferred.rb +47 -26
- data/lib/mongo/server_selector/secondary.rb +41 -23
- data/lib/mongo/server_selector/secondary_preferred.rb +42 -25
- data/lib/mongo/server_selector.rb +27 -8
- data/lib/mongo/session/server_session.rb +122 -0
- data/lib/mongo/session/session_pool.rb +166 -0
- data/lib/mongo/session.rb +1094 -0
- data/lib/mongo/socket/ocsp_cache.rb +100 -0
- data/lib/mongo/socket/ocsp_verifier.rb +345 -0
- data/lib/mongo/socket/ssl.rb +299 -61
- data/lib/mongo/socket/tcp.rb +48 -32
- data/lib/mongo/socket/unix.rb +24 -34
- data/lib/mongo/socket.rb +310 -48
- data/lib/mongo/srv/monitor.rb +113 -0
- data/lib/mongo/srv/resolver.rb +137 -0
- data/lib/mongo/srv/result.rb +128 -0
- data/lib/mongo/srv.rb +20 -0
- data/lib/mongo/timeout.rb +54 -0
- data/lib/mongo/topology_version.rb +92 -0
- data/lib/mongo/uri/options_mapper.rb +624 -0
- data/lib/mongo/uri/srv_protocol.rb +239 -0
- data/lib/mongo/uri.rb +291 -316
- data/lib/mongo/utils.rb +111 -0
- data/lib/mongo/version.rb +5 -2
- data/lib/mongo/write_concern/acknowledged.rb +17 -4
- data/lib/mongo/write_concern/base.rb +70 -0
- data/lib/mongo/write_concern/unacknowledged.rb +17 -4
- data/lib/mongo/write_concern.rb +19 -34
- data/lib/mongo.rb +69 -5
- data/mongo.gemspec +14 -6
- data/spec/NOTES.aws-auth.md +296 -0
- data/spec/README.aws-auth.md +318 -0
- data/spec/README.md +715 -0
- data/spec/USERS.md +72 -0
- data/spec/atlas/atlas_connectivity_spec.rb +27 -0
- data/spec/atlas/operations_spec.rb +28 -0
- data/spec/integration/auth_spec.rb +309 -0
- data/spec/integration/awaited_ismaster_spec.rb +31 -0
- data/spec/integration/aws_auth_request_spec.rb +77 -0
- data/spec/integration/aws_credentials_retriever_spec.rb +106 -0
- data/spec/integration/bson_symbol_spec.rb +39 -0
- data/spec/integration/bulk_insert_spec.rb +83 -0
- data/spec/integration/bulk_write_error_message_spec.rb +41 -0
- data/spec/integration/bulk_write_spec.rb +70 -0
- data/spec/integration/change_stream_examples_spec.rb +208 -0
- data/spec/integration/change_stream_spec.rb +808 -0
- data/spec/integration/check_clean_slate_spec.rb +19 -0
- data/spec/integration/client_authentication_options_spec.rb +514 -0
- data/spec/integration/client_connectivity_spec.rb +41 -0
- data/spec/integration/client_construction_aws_auth_spec.rb +194 -0
- data/spec/integration/client_construction_spec.rb +293 -0
- data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +360 -0
- data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +306 -0
- data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +75 -0
- data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +82 -0
- data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +224 -0
- data/spec/integration/client_side_encryption/auto_encryption_spec.rb +604 -0
- data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +190 -0
- data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +81 -0
- data/spec/integration/client_side_encryption/client_close_spec.rb +66 -0
- data/spec/integration/client_side_encryption/corpus_spec.rb +236 -0
- data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +135 -0
- data/spec/integration/client_side_encryption/data_key_spec.rb +168 -0
- data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +117 -0
- data/spec/integration/client_side_encryption/external_key_vault_spec.rb +144 -0
- data/spec/integration/client_side_encryption/views_spec.rb +47 -0
- data/spec/integration/client_spec.rb +49 -0
- data/spec/integration/client_update_spec.rb +157 -0
- data/spec/integration/collection_indexes_prose_spec.rb +58 -0
- data/spec/integration/command_monitoring_spec.rb +184 -0
- data/spec/integration/command_spec.rb +179 -0
- data/spec/integration/connect_single_rs_name_spec.rb +75 -0
- data/spec/integration/connection_pool_populator_spec.rb +305 -0
- data/spec/integration/connection_spec.rb +353 -0
- data/spec/integration/crud_spec.rb +366 -0
- data/spec/integration/cursor_pinning_spec.rb +121 -0
- data/spec/integration/cursor_reaping_spec.rb +143 -0
- data/spec/integration/docs_examples_spec.rb +207 -0
- data/spec/integration/error_detection_spec.rb +42 -0
- data/spec/integration/fork_reconnect_spec.rb +200 -0
- data/spec/integration/get_more_spec.rb +42 -0
- data/spec/integration/grid_fs_bucket_spec.rb +51 -0
- data/spec/integration/heartbeat_events_spec.rb +102 -0
- data/spec/integration/map_reduce_spec.rb +77 -0
- data/spec/integration/mmapv1_spec.rb +31 -0
- data/spec/integration/mongos_pinning_spec.rb +37 -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 +355 -0
- data/spec/integration/operation_failure_code_spec.rb +29 -0
- data/spec/integration/operation_failure_message_spec.rb +90 -0
- data/spec/integration/query_cache_spec.rb +1093 -0
- data/spec/integration/query_cache_transactions_spec.rb +193 -0
- data/spec/integration/read_concern_spec.rb +92 -0
- data/spec/integration/read_preference_spec.rb +544 -0
- data/spec/integration/reconnect_spec.rb +195 -0
- data/spec/integration/retryable_errors_spec.rb +286 -0
- data/spec/integration/retryable_writes/retryable_writes_36_and_older_spec.rb +764 -0
- data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +405 -0
- data/spec/integration/retryable_writes/shared/adds_diagnostics.rb +18 -0
- data/spec/integration/retryable_writes/shared/does_not_support_retries.rb +27 -0
- data/spec/integration/retryable_writes/shared/only_supports_legacy_retries.rb +28 -0
- data/spec/integration/retryable_writes/shared/performs_legacy_retries.rb +220 -0
- data/spec/integration/retryable_writes/shared/performs_modern_retries.rb +235 -0
- data/spec/integration/retryable_writes/shared/performs_no_retries.rb +113 -0
- data/spec/integration/retryable_writes/shared/supports_legacy_retries.rb +22 -0
- data/spec/integration/retryable_writes/shared/supports_modern_retries.rb +28 -0
- data/spec/integration/retryable_writes/shared/supports_retries.rb +19 -0
- data/spec/integration/retryable_writes_errors_spec.rb +34 -0
- data/spec/integration/sdam_error_handling_spec.rb +426 -0
- data/spec/integration/sdam_events_spec.rb +138 -0
- data/spec/integration/sdam_prose_spec.rb +67 -0
- data/spec/integration/secondary_reads_spec.rb +102 -0
- data/spec/integration/server_description_spec.rb +48 -0
- data/spec/integration/server_monitor_spec.rb +56 -0
- data/spec/integration/server_selection_spec.rb +39 -0
- data/spec/integration/server_selector_spec.rb +105 -0
- data/spec/integration/server_spec.rb +69 -0
- data/spec/integration/shell_examples_spec.rb +984 -0
- data/spec/integration/size_limit_spec.rb +115 -0
- data/spec/integration/snappy_compression_spec.rb +28 -0
- data/spec/integration/srv_monitoring_spec.rb +406 -0
- data/spec/integration/srv_spec.rb +59 -0
- data/spec/integration/ssl_uri_options_spec.rb +28 -0
- data/spec/integration/step_down_spec.rb +207 -0
- data/spec/integration/time_zone_querying_spec.rb +55 -0
- data/spec/integration/transaction_pinning_spec.rb +120 -0
- data/spec/integration/transactions_api_examples_spec.rb +62 -0
- data/spec/integration/transactions_examples_spec.rb +235 -0
- data/spec/integration/truncated_utf8_spec.rb +26 -0
- data/spec/integration/versioned_api_examples_spec.rb +114 -0
- data/spec/integration/x509_auth_spec.rb +112 -0
- data/spec/integration/zlib_compression_spec.rb +28 -0
- data/spec/integration/zstd_compression_spec.rb +29 -0
- data/spec/kerberos/kerberos_spec.rb +94 -0
- data/spec/lite_spec_helper.rb +167 -0
- data/spec/mongo/address/ipv4_spec.rb +8 -1
- data/spec/mongo/address/ipv6_spec.rb +36 -1
- data/spec/mongo/address/unix_spec.rb +5 -1
- data/spec/mongo/address/validator_spec.rb +54 -0
- data/spec/mongo/address_spec.rb +120 -7
- data/spec/mongo/auth/aws/request_region_spec.rb +45 -0
- data/spec/mongo/auth/aws/request_spec.rb +79 -0
- data/spec/mongo/auth/cr_spec.rb +34 -23
- data/spec/mongo/auth/gssapi/conversation_spec.rb +124 -0
- data/spec/mongo/auth/invalid_mechanism_spec.rb +14 -0
- data/spec/mongo/auth/ldap/conversation_spec.rb +6 -3
- data/spec/mongo/auth/ldap_spec.rb +19 -21
- data/spec/mongo/auth/scram/conversation_spec.rb +66 -58
- data/spec/mongo/auth/scram256/conversation_spec.rb +174 -0
- data/spec/mongo/auth/scram_negotiation_spec.rb +531 -0
- data/spec/mongo/auth/scram_spec.rb +97 -39
- data/spec/mongo/auth/stringprep/profiles/sasl_spec.rb +116 -0
- data/spec/mongo/auth/stringprep_spec.rb +191 -0
- data/spec/mongo/auth/user/view_spec.rb +404 -70
- data/spec/mongo/auth/user_spec.rb +165 -12
- data/spec/mongo/auth/x509/conversation_spec.rb +72 -0
- data/spec/mongo/auth/x509_spec.rb +46 -22
- data/spec/mongo/auth_spec.rb +7 -4
- data/spec/mongo/bson_spec.rb +3 -0
- data/spec/mongo/bulk_write/ordered_combiner_spec.rb +9 -6
- data/spec/mongo/bulk_write/result_spec.rb +127 -0
- data/spec/mongo/bulk_write/unordered_combiner_spec.rb +7 -4
- data/spec/mongo/bulk_write_spec.rb +1534 -254
- data/spec/mongo/caching_cursor_spec.rb +73 -0
- data/spec/mongo/client_construction_spec.rb +2620 -0
- data/spec/mongo/client_encryption_spec.rb +414 -0
- data/spec/mongo/client_spec.rb +525 -358
- data/spec/mongo/cluster/cursor_reaper_spec.rb +77 -88
- data/spec/mongo/cluster/periodic_executor_spec.rb +21 -0
- data/spec/mongo/cluster/socket_reaper_spec.rb +46 -0
- data/spec/mongo/cluster/topology/replica_set_spec.rb +414 -175
- data/spec/mongo/cluster/topology/sharded_spec.rb +72 -47
- data/spec/mongo/cluster/topology/single_spec.rb +112 -28
- data/spec/mongo/cluster/topology/unknown_spec.rb +44 -108
- data/spec/mongo/cluster/topology_spec.rb +139 -19
- data/spec/mongo/cluster_spec.rb +509 -144
- data/spec/mongo/cluster_time_spec.rb +151 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +308 -20
- data/spec/mongo/collection/view/builder/find_command_spec.rb +88 -10
- data/spec/mongo/collection/view/builder/op_query_spec.rb +7 -0
- data/spec/mongo/collection/view/change_stream_resume_spec.rb +397 -0
- data/spec/mongo/collection/view/change_stream_spec.rb +547 -0
- data/spec/mongo/collection/view/explainable_spec.rb +91 -5
- data/spec/mongo/collection/view/immutable_spec.rb +4 -1
- data/spec/mongo/collection/view/iterable_spec.rb +41 -0
- data/spec/mongo/collection/view/map_reduce_spec.rb +462 -23
- data/spec/mongo/collection/view/readable_spec.rb +461 -48
- data/spec/mongo/collection/view/writable_spec.rb +1232 -47
- data/spec/mongo/collection/view_spec.rb +81 -7
- data/spec/mongo/collection_crud_spec.rb +4365 -0
- data/spec/mongo/collection_ddl_spec.rb +537 -0
- data/spec/mongo/collection_spec.rb +485 -1982
- data/spec/mongo/crypt/auto_decryption_context_spec.rb +93 -0
- data/spec/mongo/crypt/auto_encrypter_spec.rb +190 -0
- data/spec/mongo/crypt/auto_encryption_context_spec.rb +110 -0
- data/spec/mongo/crypt/binary_spec.rb +113 -0
- data/spec/mongo/crypt/binding/binary_spec.rb +54 -0
- data/spec/mongo/crypt/binding/context_spec.rb +255 -0
- data/spec/mongo/crypt/binding/helpers_spec.rb +44 -0
- data/spec/mongo/crypt/binding/mongocrypt_spec.rb +142 -0
- data/spec/mongo/crypt/binding/status_spec.rb +97 -0
- data/spec/mongo/crypt/binding/version_spec.rb +20 -0
- data/spec/mongo/crypt/binding_unloaded_spec.rb +23 -0
- data/spec/mongo/crypt/data_key_context_spec.rb +216 -0
- data/spec/mongo/crypt/encryption_io_spec.rb +139 -0
- data/spec/mongo/crypt/explicit_decryption_context_spec.rb +75 -0
- data/spec/mongo/crypt/explicit_encryption_context_spec.rb +173 -0
- data/spec/mongo/crypt/handle_spec.rb +235 -0
- data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +111 -0
- data/spec/mongo/crypt/status_spec.rb +150 -0
- data/spec/mongo/cursor/builder/get_more_command_spec.rb +46 -11
- data/spec/mongo/cursor/builder/op_get_more_spec.rb +20 -4
- data/spec/mongo/cursor_spec.rb +395 -47
- data/spec/mongo/database_spec.rb +905 -68
- data/spec/mongo/dbref_spec.rb +3 -0
- data/spec/mongo/distinguishing_semaphore_spec.rb +66 -0
- data/spec/mongo/error/bulk_write_error_spec.rb +52 -0
- data/spec/mongo/error/crypt_error_spec.rb +29 -0
- data/spec/mongo/error/max_bson_size_spec.rb +38 -0
- data/spec/mongo/error/no_server_available_spec.rb +35 -0
- data/spec/mongo/error/notable_spec.rb +62 -0
- data/spec/mongo/error/operation_failure_heavy_spec.rb +61 -0
- data/spec/mongo/error/operation_failure_spec.rb +553 -0
- data/spec/mongo/error/parser_spec.rb +432 -11
- data/spec/mongo/error/unsupported_option_spec.rb +57 -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 +6 -3
- data/spec/mongo/grid/file_spec.rb +4 -1
- data/spec/mongo/grid/fs_bucket_spec.rb +336 -205
- data/spec/mongo/grid/stream/read_spec.rb +44 -27
- data/spec/mongo/grid/stream/write_spec.rb +93 -36
- data/spec/mongo/grid/stream_spec.rb +4 -1
- data/spec/mongo/id_spec.rb +38 -0
- data/spec/mongo/index/view_spec.rb +832 -70
- data/spec/mongo/lint_spec.rb +231 -0
- data/spec/mongo/logger_spec.rb +17 -12
- data/spec/mongo/monitoring/command_log_subscriber_spec.rb +3 -0
- data/spec/mongo/monitoring/event/cmap/connection_check_out_failed_spec.rb +26 -0
- data/spec/mongo/monitoring/event/cmap/connection_check_out_started_spec.rb +22 -0
- data/spec/mongo/monitoring/event/cmap/connection_checked_in_spec.rb +33 -0
- data/spec/mongo/monitoring/event/cmap/connection_checked_out_spec.rb +33 -0
- data/spec/mongo/monitoring/event/cmap/connection_closed_spec.rb +30 -0
- data/spec/mongo/monitoring/event/cmap/connection_created_spec.rb +27 -0
- data/spec/mongo/monitoring/event/cmap/connection_ready_spec.rb +27 -0
- data/spec/mongo/monitoring/event/cmap/pool_cleared_spec.rb +22 -0
- data/spec/mongo/monitoring/event/cmap/pool_closed_spec.rb +29 -0
- data/spec/mongo/monitoring/event/cmap/pool_created_spec.rb +36 -0
- data/spec/mongo/monitoring/event/command_failed_spec.rb +87 -0
- data/spec/mongo/monitoring/event/command_started_spec.rb +30 -5
- data/spec/mongo/monitoring/event/command_succeeded_spec.rb +71 -9
- data/spec/mongo/monitoring/event/secure_spec.rb +71 -5
- data/spec/mongo/monitoring/event/server_closed_spec.rb +38 -0
- data/spec/mongo/monitoring/event/server_description_changed_spec.rb +38 -0
- data/spec/mongo/monitoring/event/server_heartbeat_failed_spec.rb +34 -0
- data/spec/mongo/monitoring/event/server_heartbeat_started_spec.rb +34 -0
- data/spec/mongo/monitoring/event/server_heartbeat_succeeded_spec.rb +34 -0
- data/spec/mongo/monitoring/event/server_opening_spec.rb +38 -0
- data/spec/mongo/monitoring/event/topology_changed_spec.rb +44 -0
- data/spec/mongo/monitoring/event/topology_closed_spec.rb +38 -0
- data/spec/mongo/monitoring/event/topology_opening_spec.rb +38 -0
- data/spec/mongo/monitoring_spec.rb +33 -5
- data/spec/mongo/operation/aggregate/result_spec.rb +90 -0
- data/spec/mongo/operation/aggregate_spec.rb +76 -0
- data/spec/mongo/operation/collections_info_spec.rb +48 -0
- data/spec/mongo/operation/command_spec.rb +86 -0
- data/spec/mongo/operation/create_index_spec.rb +62 -0
- data/spec/mongo/operation/create_user_spec.rb +53 -0
- data/spec/mongo/operation/delete/bulk_spec.rb +245 -0
- data/spec/mongo/operation/delete/command_spec.rb +115 -0
- data/spec/mongo/operation/delete/op_msg_spec.rb +257 -0
- data/spec/mongo/operation/delete_spec.rb +233 -0
- data/spec/mongo/operation/drop_index_spec.rb +61 -0
- 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/find/legacy_spec.rb +131 -0
- data/spec/mongo/operation/get_more_spec.rb +63 -0
- data/spec/mongo/operation/indexes_spec.rb +41 -0
- data/spec/mongo/operation/insert/bulk_spec.rb +273 -0
- data/spec/mongo/operation/insert/command_spec.rb +118 -0
- data/spec/mongo/operation/insert/op_msg_spec.rb +288 -0
- data/spec/mongo/operation/insert_spec.rb +290 -0
- data/spec/mongo/operation/kill_cursors_spec.rb +10 -4
- data/spec/mongo/operation/limited_spec.rb +8 -3
- data/spec/mongo/operation/map_reduce_spec.rb +131 -0
- data/spec/mongo/operation/read_preference_legacy_spec.rb +360 -0
- data/spec/mongo/operation/read_preference_op_msg_spec.rb +309 -0
- data/spec/mongo/operation/remove_user_spec.rb +52 -0
- data/spec/mongo/operation/result_spec.rb +46 -6
- data/spec/mongo/operation/specifiable_spec.rb +5 -2
- data/spec/mongo/operation/update/bulk_spec.rb +239 -0
- data/spec/mongo/operation/update/command_spec.rb +122 -0
- data/spec/mongo/operation/update/op_msg_spec.rb +263 -0
- data/spec/mongo/operation/update_spec.rb +264 -0
- data/spec/mongo/operation/update_user_spec.rb +52 -0
- data/spec/mongo/options/redacted_spec.rb +3 -0
- data/spec/mongo/protocol/compressed_spec.rb +83 -0
- data/spec/mongo/protocol/delete_spec.rb +27 -9
- data/spec/mongo/protocol/get_more_spec.rb +29 -11
- data/spec/mongo/protocol/insert_spec.rb +27 -9
- data/spec/mongo/protocol/kill_cursors_spec.rb +24 -6
- data/spec/mongo/protocol/msg_spec.rb +528 -0
- data/spec/mongo/protocol/query_spec.rb +62 -14
- data/spec/mongo/protocol/registry_spec.rb +34 -0
- data/spec/mongo/protocol/reply_spec.rb +18 -1
- data/spec/mongo/protocol/update_spec.rb +28 -10
- data/spec/mongo/query_cache_middleware_spec.rb +55 -0
- data/spec/mongo/query_cache_spec.rb +287 -0
- data/spec/mongo/retryable_spec.rb +468 -97
- data/spec/mongo/semaphore_spec.rb +54 -0
- data/spec/mongo/server/app_metadata_spec.rb +170 -0
- data/spec/mongo/server/connection_auth_spec.rb +136 -0
- data/spec/mongo/server/connection_common_spec.rb +75 -0
- data/spec/mongo/server/connection_pool/populator_spec.rb +106 -0
- data/spec/mongo/server/connection_pool_spec.rb +970 -88
- data/spec/mongo/server/connection_spec.rb +939 -172
- data/spec/mongo/server/description/features_spec.rb +96 -29
- data/spec/mongo/server/description_query_methods_spec.rb +291 -0
- data/spec/mongo/server/description_spec.rb +627 -575
- data/spec/mongo/server/monitor/app_metadata_spec.rb +25 -0
- data/spec/mongo/server/monitor/connection_spec.rb +175 -0
- data/spec/mongo/server/monitor_spec.rb +180 -103
- data/spec/mongo/server/round_trip_time_averager_spec.rb +48 -0
- data/spec/mongo/server_selector/nearest_spec.rb +107 -27
- data/spec/mongo/server_selector/primary_preferred_spec.rb +110 -30
- data/spec/mongo/server_selector/primary_spec.rb +73 -13
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +125 -29
- data/spec/mongo/server_selector/secondary_spec.rb +102 -22
- data/spec/mongo/server_selector_spec.rb +325 -4
- data/spec/mongo/server_spec.rb +315 -76
- data/spec/mongo/session/server_session_spec.rb +62 -0
- data/spec/mongo/session/session_pool_spec.rb +272 -0
- data/spec/mongo/session_spec.rb +348 -0
- data/spec/mongo/session_transaction_spec.rb +206 -0
- data/spec/mongo/socket/ssl_spec.rb +742 -72
- data/spec/mongo/socket/tcp_spec.rb +17 -0
- data/spec/mongo/socket/unix_spec.rb +13 -9
- data/spec/mongo/socket_spec.rb +119 -0
- data/spec/mongo/srv/monitor_spec.rb +233 -0
- data/spec/mongo/srv/result_spec.rb +57 -0
- data/spec/mongo/timeout_spec.rb +42 -0
- data/spec/mongo/tls_context_hooks_spec.rb +40 -0
- data/spec/mongo/uri/srv_protocol_spec.rb +1108 -0
- data/spec/mongo/uri_option_parsing_spec.rb +625 -0
- data/spec/mongo/uri_spec.rb +514 -82
- data/spec/mongo/utils_spec.rb +56 -0
- data/spec/mongo/write_concern/acknowledged_spec.rb +14 -0
- data/spec/mongo/write_concern/unacknowledged_spec.rb +14 -0
- data/spec/mongo/write_concern_spec.rb +90 -4
- data/spec/runners/auth.rb +140 -0
- data/spec/runners/change_streams/outcome.rb +45 -0
- data/spec/runners/change_streams/spec.rb +60 -0
- data/spec/runners/change_streams/test.rb +232 -0
- data/spec/runners/cmap/verifier.rb +48 -0
- data/spec/runners/cmap.rb +373 -0
- data/spec/runners/command_monitoring.rb +346 -0
- data/spec/runners/connection_string.rb +385 -0
- data/spec/runners/crud/context.rb +30 -0
- data/spec/runners/crud/operation.rb +471 -0
- data/spec/runners/crud/outcome.rb +56 -0
- data/spec/runners/crud/requirement.rb +134 -0
- data/spec/runners/crud/spec.rb +73 -0
- data/spec/runners/crud/test.rb +123 -0
- data/spec/runners/crud/test_base.rb +53 -0
- data/spec/runners/crud/verifier.rb +217 -0
- data/spec/runners/crud.rb +257 -0
- data/spec/runners/gridfs.rb +641 -0
- data/spec/runners/read_write_concern_document.rb +70 -0
- data/spec/runners/sdam/verifier.rb +112 -0
- data/spec/runners/sdam.rb +279 -0
- data/spec/runners/server_selection.rb +365 -0
- data/spec/runners/server_selection_rtt.rb +41 -0
- data/spec/runners/transactions/operation.rb +328 -0
- data/spec/runners/transactions/spec.rb +29 -0
- data/spec/runners/transactions/test.rb +326 -0
- data/spec/runners/transactions.rb +104 -0
- data/spec/runners/unified/assertions.rb +281 -0
- data/spec/runners/unified/change_stream_operations.rb +29 -0
- data/spec/runners/unified/crud_operations.rb +206 -0
- data/spec/runners/unified/ddl_operations.rb +106 -0
- data/spec/runners/unified/entity_map.rb +42 -0
- data/spec/runners/unified/error.rb +28 -0
- data/spec/runners/unified/event_subscriber.rb +104 -0
- data/spec/runners/unified/exceptions.rb +24 -0
- data/spec/runners/unified/grid_fs_operations.rb +58 -0
- data/spec/runners/unified/support_operations.rb +261 -0
- data/spec/runners/unified/test.rb +426 -0
- data/spec/runners/unified/test_group.rb +31 -0
- data/spec/runners/unified.rb +99 -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 +385 -0
- data/spec/shared/lib/mrss/docker_runner.rb +271 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +191 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +120 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +179 -0
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +323 -0
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/distro.sh +73 -0
- data/spec/shared/shlib/server.sh +367 -0
- data/spec/shared/shlib/set_env.sh +131 -0
- data/spec/solo/clean_exit_spec.rb +24 -0
- data/spec/spec_helper.rb +20 -175
- data/spec/spec_tests/auth_spec.rb +58 -0
- data/spec/spec_tests/change_streams_spec.rb +93 -0
- data/spec/spec_tests/change_streams_unified_spec.rb +13 -0
- data/spec/spec_tests/client_side_encryption_spec.rb +14 -0
- data/spec/spec_tests/cmap_spec.rb +112 -0
- data/spec/spec_tests/collection_management_spec.rb +13 -0
- data/spec/spec_tests/command_monitoring_spec.rb +71 -0
- data/spec/spec_tests/command_monitoring_unified_spec.rb +13 -0
- data/spec/spec_tests/connection_string_spec.rb +10 -0
- data/spec/spec_tests/crud_spec.rb +22 -0
- data/spec/spec_tests/crud_unified_spec.rb +13 -0
- data/spec/spec_tests/data/auth/connection-string.yml +366 -0
- data/spec/spec_tests/data/change_streams/change-streams-errors.yml +101 -0
- data/spec/spec_tests/data/change_streams/change-streams-resume-allowlist.yml +1173 -0
- data/spec/spec_tests/data/change_streams/change-streams-resume-errorLabels.yml +1105 -0
- data/spec/spec_tests/data/change_streams/change-streams.yml +535 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams.yml +72 -0
- data/spec/spec_tests/data/client_side_encryption/aggregate.yml +134 -0
- data/spec/spec_tests/data/client_side_encryption/badQueries.yml +526 -0
- data/spec/spec_tests/data/client_side_encryption/badSchema.yml +73 -0
- data/spec/spec_tests/data/client_side_encryption/basic.yml +116 -0
- data/spec/spec_tests/data/client_side_encryption/bulk.yml +88 -0
- data/spec/spec_tests/data/client_side_encryption/bypassAutoEncryption.yml +100 -0
- data/spec/spec_tests/data/client_side_encryption/bypassedCommand.yml +42 -0
- data/spec/spec_tests/data/client_side_encryption/count.yml +61 -0
- data/spec/spec_tests/data/client_side_encryption/countDocuments.yml +59 -0
- data/spec/spec_tests/data/client_side_encryption/delete.yml +105 -0
- data/spec/spec_tests/data/client_side_encryption/distinct.yml +73 -0
- data/spec/spec_tests/data/client_side_encryption/explain.yml +64 -0
- data/spec/spec_tests/data/client_side_encryption/find.yml +119 -0
- data/spec/spec_tests/data/client_side_encryption/findOneAndDelete.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/findOneAndReplace.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/findOneAndUpdate.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/getMore.yml +68 -0
- data/spec/spec_tests/data/client_side_encryption/insert.yml +102 -0
- data/spec/spec_tests/data/client_side_encryption/keyAltName.yml +71 -0
- data/spec/spec_tests/data/client_side_encryption/localKMS.yml +54 -0
- data/spec/spec_tests/data/client_side_encryption/localSchema.yml +72 -0
- data/spec/spec_tests/data/client_side_encryption/malformedCiphertext.yml +69 -0
- data/spec/spec_tests/data/client_side_encryption/maxWireVersion.yml +20 -0
- data/spec/spec_tests/data/client_side_encryption/missingKey.yml +49 -0
- data/spec/spec_tests/data/client_side_encryption/replaceOne.yml +64 -0
- data/spec/spec_tests/data/client_side_encryption/types.yml +527 -0
- data/spec/spec_tests/data/client_side_encryption/unsupportedCommand.yml +25 -0
- data/spec/spec_tests/data/client_side_encryption/updateMany.yml +77 -0
- data/spec/spec_tests/data/client_side_encryption/updateOne.yml +171 -0
- data/spec/spec_tests/data/cmap/connection-must-have-id.yml +27 -0
- data/spec/spec_tests/data/cmap/connection-must-order-ids.yml +27 -0
- data/spec/spec_tests/data/cmap/pool-checkin-destroy-closed.yml +27 -0
- data/spec/spec_tests/data/cmap/pool-checkin-destroy-stale.yml +27 -0
- data/spec/spec_tests/data/cmap/pool-checkin-make-available.yml +24 -0
- data/spec/spec_tests/data/cmap/pool-checkin.yml +19 -0
- data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +19 -0
- data/spec/spec_tests/data/cmap/pool-checkout-error-closed.yml +36 -0
- data/spec/spec_tests/data/cmap/pool-checkout-multiple.yml +37 -0
- data/spec/spec_tests/data/cmap/pool-checkout-no-idle.yml +35 -0
- data/spec/spec_tests/data/cmap/pool-checkout-no-stale.yml +33 -0
- data/spec/spec_tests/data/cmap/pool-close-destroy-conns.yml +28 -0
- data/spec/spec_tests/data/cmap/pool-close.yml +11 -0
- data/spec/spec_tests/data/cmap/pool-create-max-size.yml +71 -0
- data/spec/spec_tests/data/cmap/pool-create-min-size.yml +34 -0
- data/spec/spec_tests/data/cmap/pool-create-with-options.yml +21 -0
- data/spec/spec_tests/data/cmap/pool-create.yml +12 -0
- data/spec/spec_tests/data/cmap/wait-queue-fairness.yml +124 -0
- data/spec/spec_tests/data/cmap/wait-queue-timeout.yml +46 -0
- data/spec/spec_tests/data/collection_management/timeseries-collection.yml +129 -0
- data/spec/spec_tests/data/command_monitoring/bulkWrite.yml +49 -0
- data/spec/spec_tests/data/command_monitoring/command.yml +61 -0
- data/spec/{support → spec_tests/data}/command_monitoring/deleteMany.yml +0 -0
- data/spec/{support → spec_tests/data}/command_monitoring/deleteOne.yml +0 -0
- data/spec/spec_tests/data/command_monitoring/find.yml +266 -0
- data/spec/spec_tests/data/command_monitoring/insertMany.yml +75 -0
- data/spec/{support → spec_tests/data}/command_monitoring/insertOne.yml +0 -0
- data/spec/spec_tests/data/command_monitoring/unacknowledgedBulkWrite.yml +34 -0
- data/spec/spec_tests/data/command_monitoring/updateMany.yml +65 -0
- data/spec/spec_tests/data/command_monitoring/updateOne.yml +90 -0
- data/spec/spec_tests/data/command_monitoring_unified/redacted-commands.yml +340 -0
- data/spec/spec_tests/data/connection_string/invalid-uris.yml +261 -0
- data/spec/spec_tests/data/connection_string/valid-auth.yml +257 -0
- data/spec/spec_tests/data/connection_string/valid-db-with-dotted-name.yml +77 -0
- data/spec/{support/connection_string_tests → spec_tests/data/connection_string}/valid-host_identifiers.yml +0 -0
- data/spec/spec_tests/data/connection_string/valid-options.yml +17 -0
- data/spec/spec_tests/data/connection_string/valid-unix_socket-absolute.yml +197 -0
- data/spec/spec_tests/data/connection_string/valid-unix_socket-relative.yml +213 -0
- data/spec/spec_tests/data/connection_string/valid-warnings.yml +75 -0
- data/spec/spec_tests/data/crud/read/aggregate-collation.yml +18 -0
- data/spec/spec_tests/data/crud/read/aggregate-out.yml +44 -0
- data/spec/spec_tests/data/crud/read/aggregate.yml +21 -0
- data/spec/spec_tests/data/crud/read/count-collation.yml +26 -0
- data/spec/spec_tests/data/crud/read/count-empty.yml +29 -0
- data/spec/spec_tests/data/crud/read/count.yml +74 -0
- data/spec/spec_tests/data/crud/read/distinct-collation.yml +18 -0
- data/spec/spec_tests/data/crud/read/distinct.yml +32 -0
- data/spec/spec_tests/data/crud/read/find-collation.yml +16 -0
- data/spec/spec_tests/data/crud/read/find.yml +49 -0
- data/spec/spec_tests/data/crud/write/bulkWrite-arrayFilters.yml +45 -0
- data/spec/spec_tests/data/crud/write/bulkWrite-collation.yml +102 -0
- data/spec/spec_tests/data/crud/write/bulkWrite.yml +405 -0
- data/spec/spec_tests/data/crud/write/deleteMany-collation.yml +23 -0
- data/spec/spec_tests/data/crud/write/deleteMany.yml +35 -0
- data/spec/spec_tests/data/crud/write/deleteOne-collation.yml +23 -0
- data/spec/spec_tests/data/crud/write/deleteOne.yml +48 -0
- data/spec/spec_tests/data/crud/write/findOneAndDelete-collation.yml +24 -0
- data/spec/spec_tests/data/crud/write/findOneAndDelete.yml +53 -0
- data/spec/spec_tests/data/crud/write/findOneAndReplace-collation.yml +25 -0
- data/spec/spec_tests/data/crud/write/findOneAndReplace-upsert.yml +91 -0
- data/spec/spec_tests/data/crud/write/findOneAndReplace-upsert_pre_2.6.yml +88 -0
- data/spec/spec_tests/data/crud/write/findOneAndReplace.yml +113 -0
- data/spec/spec_tests/data/crud/write/findOneAndUpdate-arrayFilters.yml +69 -0
- data/spec/spec_tests/data/crud/write/findOneAndUpdate-collation.yml +28 -0
- data/spec/spec_tests/data/crud/write/findOneAndUpdate.yml +163 -0
- data/spec/spec_tests/data/crud/write/insertMany.yml +81 -0
- data/spec/spec_tests/data/crud/write/insertOne.yml +18 -0
- data/spec/spec_tests/data/crud/write/replaceOne-collation.yml +25 -0
- data/spec/spec_tests/data/crud/write/replaceOne-pre_2.6.yml +98 -0
- data/spec/spec_tests/data/crud/write/replaceOne-upsert.yml +48 -0
- data/spec/spec_tests/data/crud/write/replaceOne.yml +102 -0
- data/spec/spec_tests/data/crud/write/updateMany-arrayFilters.yml +66 -0
- data/spec/spec_tests/data/crud/write/updateMany-collation.yml +29 -0
- data/spec/spec_tests/data/crud/write/updateMany-pre_2.6.yml +86 -0
- data/spec/spec_tests/data/crud/write/updateMany.yml +87 -0
- data/spec/spec_tests/data/crud/write/updateOne-arrayFilters.yml +114 -0
- data/spec/spec_tests/data/crud/write/updateOne-collation.yml +26 -0
- data/spec/spec_tests/data/crud/write/updateOne-pre_2.6.yml +83 -0
- data/spec/spec_tests/data/crud/write/updateOne.yml +84 -0
- data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +267 -0
- data/spec/spec_tests/data/crud_unified/updateWithPipelines.yml +305 -0
- data/spec/spec_tests/data/crud_v2/aggregate-merge.yml +103 -0
- data/spec/spec_tests/data/crud_v2/aggregate-out-readConcern.yml +111 -0
- data/spec/spec_tests/data/crud_v2/bulkWrite-arrayFilters.yml +103 -0
- data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint-clientError.yml +63 -0
- data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint-serverError.yml +92 -0
- data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint.yml +103 -0
- data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint-clientError.yml +90 -0
- data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint-serverError.yml +147 -0
- data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint.yml +164 -0
- data/spec/spec_tests/data/crud_v2/db-aggregate.yml +39 -0
- data/spec/spec_tests/data/crud_v2/deleteMany-hint-clientError.yml +43 -0
- data/spec/spec_tests/data/crud_v2/deleteMany-hint-serverError.yml +62 -0
- data/spec/spec_tests/data/crud_v2/deleteMany-hint.yml +58 -0
- data/spec/spec_tests/data/crud_v2/deleteOne-hint-clientError.yml +41 -0
- data/spec/spec_tests/data/crud_v2/deleteOne-hint-serverError.yml +60 -0
- data/spec/spec_tests/data/crud_v2/deleteOne-hint.yml +57 -0
- data/spec/spec_tests/data/crud_v2/find-allowdiskuse-clientError.yml +28 -0
- data/spec/spec_tests/data/crud_v2/find-allowdiskuse-serverError.yml +44 -0
- data/spec/spec_tests/data/crud_v2/find-allowdiskuse.yml +50 -0
- data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint-clientError.yml +45 -0
- data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint-serverError.yml +60 -0
- data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint.yml +56 -0
- data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint-clientError.yml +40 -0
- data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint-serverError.yml +59 -0
- data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint.yml +55 -0
- data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint-clientError.yml +40 -0
- data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint-serverError.yml +58 -0
- data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint.yml +55 -0
- data/spec/spec_tests/data/crud_v2/replaceOne-hint.yml +61 -0
- data/spec/spec_tests/data/crud_v2/unacknowledged-bulkWrite-delete-hint-clientError.yml +60 -0
- data/spec/spec_tests/data/crud_v2/unacknowledged-bulkWrite-update-hint-clientError.yml +88 -0
- data/spec/spec_tests/data/crud_v2/unacknowledged-deleteMany-hint-clientError.yml +40 -0
- data/spec/spec_tests/data/crud_v2/unacknowledged-deleteOne-hint-clientError.yml +38 -0
- data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndDelete-hint-clientError.yml +42 -0
- data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndReplace-hint-clientError.yml +40 -0
- data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndUpdate-hint-clientError.yml +40 -0
- data/spec/spec_tests/data/crud_v2/unacknowledged-replaceOne-hint-clientError.yml +40 -0
- data/spec/spec_tests/data/crud_v2/unacknowledged-updateMany-hint-clientError.yml +43 -0
- data/spec/spec_tests/data/crud_v2/unacknowledged-updateOne-hint-clientError.yml +40 -0
- data/spec/spec_tests/data/crud_v2/updateMany-hint-clientError.yml +45 -0
- data/spec/spec_tests/data/crud_v2/updateMany-hint-serverError.yml +66 -0
- data/spec/spec_tests/data/crud_v2/updateMany-hint.yml +65 -0
- data/spec/spec_tests/data/crud_v2/updateOne-hint-clientError.yml +43 -0
- data/spec/spec_tests/data/crud_v2/updateOne-hint-serverError.yml +62 -0
- data/spec/spec_tests/data/crud_v2/updateOne-hint.yml +61 -0
- data/spec/spec_tests/data/crud_v2/updateWithPipelines.yml +157 -0
- data/spec/spec_tests/data/gridfs/delete.yml +123 -0
- data/spec/spec_tests/data/gridfs/download.yml +192 -0
- data/spec/{support/gridfs_tests → spec_tests/data/gridfs}/download_by_name.yml +0 -0
- data/spec/{support/gridfs_tests → spec_tests/data/gridfs}/upload.yml +0 -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 +26 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Incompatible.yml +25 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/LastUpdateTime.yml +33 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/MaxStalenessTooSmall.yml +15 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest.yml +33 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest2.yml +33 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/NoKnownServers.yml +16 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred.yml +27 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred_tags.yml +36 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Secondary.yml +51 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred.yml +26 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred_tags.yml +51 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/ZeroMaxStaleness.yml +23 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/DefaultNoMaxStaleness.yml +26 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Incompatible.yml +25 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LastUpdateTime.yml +35 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat.yml +29 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat2.yml +25 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessTooSmall.yml +26 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessWithModePrimary.yml +23 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest.yml +33 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest2.yml +33 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest_tags.yml +36 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred.yml +27 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred_incompatible.yml +27 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred.yml +26 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags.yml +59 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags2.yml +43 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags.yml +59 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags2.yml +43 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/ZeroMaxStaleness.yml +23 -0
- data/spec/spec_tests/data/max_staleness/Sharded/Incompatible.yml +25 -0
- data/spec/spec_tests/data/max_staleness/Sharded/SmallMaxStaleness.yml +28 -0
- data/spec/spec_tests/data/max_staleness/Single/Incompatible.yml +18 -0
- data/spec/spec_tests/data/max_staleness/Single/SmallMaxStaleness.yml +20 -0
- data/spec/spec_tests/data/max_staleness/Unknown/SmallMaxStaleness.yml +15 -0
- data/spec/spec_tests/data/read_write_concern/connection-string/read-concern.yml +32 -0
- data/spec/spec_tests/data/read_write_concern/connection-string/write-concern.yml +79 -0
- data/spec/spec_tests/data/read_write_concern/document/read-concern.yml +37 -0
- data/spec/spec_tests/data/read_write_concern/document/write-concern.yml +100 -0
- data/spec/spec_tests/data/read_write_concern/operation/default-write-concern-2.6.yml +215 -0
- data/spec/spec_tests/data/read_write_concern/operation/default-write-concern-3.2.yml +58 -0
- data/spec/spec_tests/data/read_write_concern/operation/default-write-concern-3.4.yml +95 -0
- data/spec/spec_tests/data/read_write_concern/operation/default-write-concern-4.2.yml +36 -0
- data/spec/spec_tests/data/retryable_reads/aggregate-merge.yml +39 -0
- data/spec/spec_tests/data/retryable_reads/aggregate-serverErrors.yml +157 -0
- data/spec/spec_tests/data/retryable_reads/aggregate.yml +87 -0
- data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch-serverErrors.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch.yml +62 -0
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch-serverErrors.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch.yml +66 -0
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch-serverErrors.yml +154 -0
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch.yml +62 -0
- data/spec/spec_tests/data/retryable_reads/count-serverErrors.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/count.yml +64 -0
- data/spec/spec_tests/data/retryable_reads/countDocuments-serverErrors.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/countDocuments.yml +64 -0
- data/spec/spec_tests/data/retryable_reads/distinct-serverErrors.yml +156 -0
- data/spec/spec_tests/data/retryable_reads/distinct.yml +71 -0
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-4.9.yml +60 -0
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-pre4.9.yml +64 -0
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors-4.9.yml +146 -0
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors-pre4.9.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/find-serverErrors.yml +160 -0
- data/spec/spec_tests/data/retryable_reads/find.yml +86 -0
- data/spec/spec_tests/data/retryable_reads/findOne-serverErrors.yml +154 -0
- data/spec/spec_tests/data/retryable_reads/findOne.yml +68 -0
- data/spec/spec_tests/data/retryable_reads/gridfs-download-serverErrors.yml +173 -0
- data/spec/spec_tests/data/retryable_reads/gridfs-download.yml +79 -0
- data/spec/spec_tests/data/retryable_reads/gridfs-downloadByName-serverErrors.yml +174 -0
- data/spec/spec_tests/data/retryable_reads/gridfs-downloadByName.yml +79 -0
- data/spec/spec_tests/data/retryable_reads/listCollectionNames-serverErrors.yml +143 -0
- data/spec/spec_tests/data/retryable_reads/listCollectionNames.yml +59 -0
- data/spec/spec_tests/data/retryable_reads/listCollectionObjects-serverErrors.yml +144 -0
- data/spec/spec_tests/data/retryable_reads/listCollectionObjects.yml +59 -0
- data/spec/spec_tests/data/retryable_reads/listCollections-serverErrors.yml +143 -0
- data/spec/spec_tests/data/retryable_reads/listCollections.yml +59 -0
- data/spec/spec_tests/data/retryable_reads/listDatabaseNames-serverErrors.yml +143 -0
- data/spec/spec_tests/data/retryable_reads/listDatabaseNames.yml +59 -0
- data/spec/spec_tests/data/retryable_reads/listDatabaseObjects-serverErrors.yml +144 -0
- data/spec/spec_tests/data/retryable_reads/listDatabaseObjects.yml +59 -0
- data/spec/spec_tests/data/retryable_reads/listDatabases-serverErrors.yml +144 -0
- data/spec/spec_tests/data/retryable_reads/listDatabases.yml +59 -0
- data/spec/spec_tests/data/retryable_reads/listIndexNames-serverErrors.yml +144 -0
- data/spec/spec_tests/data/retryable_reads/listIndexNames.yml +60 -0
- data/spec/spec_tests/data/retryable_reads/listIndexes-serverErrors.yml +145 -0
- data/spec/spec_tests/data/retryable_reads/listIndexes.yml +60 -0
- data/spec/spec_tests/data/retryable_reads/mapReduce.yml +62 -0
- data/spec/spec_tests/data/retryable_writes/bulkWrite-errorLabels.yml +77 -0
- data/spec/spec_tests/data/retryable_writes/bulkWrite-serverErrors.yml +130 -0
- data/spec/spec_tests/data/retryable_writes/bulkWrite.yml +402 -0
- data/spec/spec_tests/data/retryable_writes/deleteMany.yml +22 -0
- data/spec/spec_tests/data/retryable_writes/deleteOne-errorLabels.yml +48 -0
- data/spec/spec_tests/data/retryable_writes/deleteOne-serverErrors.yml +73 -0
- data/spec/spec_tests/data/retryable_writes/deleteOne.yml +57 -0
- data/spec/spec_tests/data/retryable_writes/findOneAndDelete-errorLabels.yml +49 -0
- data/spec/spec_tests/data/retryable_writes/findOneAndDelete-serverErrors.yml +74 -0
- data/spec/spec_tests/data/retryable_writes/findOneAndDelete.yml +58 -0
- data/spec/spec_tests/data/retryable_writes/findOneAndReplace-errorLabels.yml +52 -0
- data/spec/spec_tests/data/retryable_writes/findOneAndReplace-serverErrors.yml +80 -0
- data/spec/spec_tests/data/retryable_writes/findOneAndReplace.yml +63 -0
- data/spec/spec_tests/data/retryable_writes/findOneAndUpdate-errorLabels.yml +52 -0
- data/spec/spec_tests/data/retryable_writes/findOneAndUpdate-serverErrors.yml +79 -0
- data/spec/spec_tests/data/retryable_writes/findOneAndUpdate.yml +62 -0
- data/spec/spec_tests/data/retryable_writes/insertMany-errorLabels.yml +54 -0
- data/spec/spec_tests/data/retryable_writes/insertMany-serverErrors.yml +84 -0
- data/spec/spec_tests/data/retryable_writes/insertMany.yml +74 -0
- data/spec/spec_tests/data/retryable_writes/insertOne-errorLabels.yml +44 -0
- data/spec/spec_tests/data/retryable_writes/insertOne-serverErrors.yml +527 -0
- data/spec/spec_tests/data/retryable_writes/insertOne.yml +61 -0
- data/spec/spec_tests/data/retryable_writes/replaceOne-errorLabels.yml +53 -0
- data/spec/spec_tests/data/retryable_writes/replaceOne-serverErrors.yml +82 -0
- data/spec/spec_tests/data/retryable_writes/replaceOne.yml +66 -0
- data/spec/spec_tests/data/retryable_writes/updateMany.yml +27 -0
- data/spec/spec_tests/data/retryable_writes/updateOne-errorLabels.yml +53 -0
- data/spec/spec_tests/data/retryable_writes/updateOne-serverErrors.yml +82 -0
- data/spec/spec_tests/data/retryable_writes/updateOne.yml +129 -0
- data/spec/spec_tests/data/sdam/errors/error_handling_handshake.yml +55 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-network-error.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-network-timeout-error.yml +38 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-InterruptedAtShutdown.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-InterruptedDueToReplStateChange.yml +61 -0
- 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 +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-ShutdownInProgress.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-InterruptedAtShutdown.yml +52 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-InterruptedDueToReplStateChange.yml +52 -0
- 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 +52 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-ShutdownInProgress.yml +52 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-InterruptedAtShutdown.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-InterruptedDueToReplStateChange.yml +61 -0
- 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 +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-ShutdownInProgress.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/post-42-InterruptedAtShutdown.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/post-42-InterruptedDueToReplStateChange.yml +47 -0
- 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 +47 -0
- data/spec/spec_tests/data/sdam/errors/post-42-ShutdownInProgress.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/pre-42-InterruptedAtShutdown.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/pre-42-InterruptedDueToReplStateChange.yml +47 -0
- 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 +47 -0
- data/spec/spec_tests/data/sdam/errors/pre-42-ShutdownInProgress.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/prefer-error-code.yml +54 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-InterruptedAtShutdown.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-InterruptedDueToReplStateChange.yml +91 -0
- 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 +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-ShutdownInProgress.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-InterruptedAtShutdown.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-InterruptedDueToReplStateChange.yml +91 -0
- 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 +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-ShutdownInProgress.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-network.yml +82 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-timeout.yml +82 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-InterruptedAtShutdown.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-InterruptedDueToReplStateChange.yml +91 -0
- 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 +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-ShutdownInProgress.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-network.yml +82 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-timeout.yml +82 -0
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-InterruptedAtShutdown.yml +65 -0
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-InterruptedDueToReplStateChange.yml +65 -0
- 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 +65 -0
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-ShutdownInProgress.yml +65 -0
- 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 +45 -0
- data/spec/spec_tests/data/sdam/rs/compatible_unknown.yml +34 -0
- data/spec/spec_tests/data/sdam/rs/discover_arbiters.yml +44 -0
- data/spec/spec_tests/data/sdam/rs/discover_arbiters_replicaset.yml +44 -0
- data/spec/spec_tests/data/sdam/rs/discover_ghost.yml +36 -0
- data/spec/spec_tests/data/sdam/rs/discover_ghost_replicaset.yml +42 -0
- data/spec/spec_tests/data/sdam/rs/discover_hidden.yml +51 -0
- data/spec/spec_tests/data/sdam/rs/discover_hidden_replicaset.yml +51 -0
- data/spec/spec_tests/data/sdam/rs/discover_passives.yml +83 -0
- data/spec/spec_tests/data/sdam/rs/discover_passives_replicaset.yml +83 -0
- data/spec/spec_tests/data/sdam/rs/discover_primary.yml +43 -0
- data/spec/spec_tests/data/sdam/rs/discover_primary_replicaset.yml +43 -0
- data/spec/spec_tests/data/sdam/rs/discover_rsother.yml +50 -0
- data/spec/spec_tests/data/sdam/rs/discover_rsother_replicaset.yml +68 -0
- data/spec/spec_tests/data/sdam/rs/discover_secondary.yml +44 -0
- data/spec/spec_tests/data/sdam/rs/discover_secondary_replicaset.yml +44 -0
- data/spec/spec_tests/data/sdam/rs/discovery.yml +207 -0
- data/spec/spec_tests/data/sdam/rs/equal_electionids.yml +57 -0
- data/spec/spec_tests/data/sdam/rs/hosts_differ_from_seeds.yml +37 -0
- data/spec/spec_tests/data/sdam/rs/incompatible_arbiter.yml +36 -0
- data/spec/spec_tests/data/sdam/rs/incompatible_ghost.yml +34 -0
- data/spec/spec_tests/data/sdam/rs/incompatible_other.yml +36 -0
- data/spec/spec_tests/data/sdam/rs/ls_timeout.yml +249 -0
- data/spec/spec_tests/data/sdam/rs/member_reconfig.yml +74 -0
- data/spec/spec_tests/data/sdam/rs/member_standalone.yml +66 -0
- data/spec/spec_tests/data/sdam/rs/new_primary.yml +80 -0
- data/spec/spec_tests/data/sdam/rs/new_primary_new_electionid.yml +119 -0
- data/spec/spec_tests/data/sdam/rs/new_primary_new_setversion.yml +119 -0
- data/spec/spec_tests/data/sdam/rs/new_primary_wrong_set_name.yml +77 -0
- data/spec/spec_tests/data/sdam/rs/non_rs_member.yml +33 -0
- data/spec/spec_tests/data/sdam/rs/normalize_case.yml +52 -0
- data/spec/spec_tests/data/sdam/rs/normalize_case_me.yml +102 -0
- data/spec/spec_tests/data/sdam/rs/null_election_id.yml +175 -0
- data/spec/spec_tests/data/sdam/rs/primary_becomes_ghost.yml +65 -0
- data/spec/spec_tests/data/sdam/rs/primary_becomes_mongos.yml +58 -0
- data/spec/spec_tests/data/sdam/rs/primary_becomes_standalone.yml +55 -0
- data/spec/spec_tests/data/sdam/rs/primary_changes_set_name.yml +63 -0
- data/spec/spec_tests/data/sdam/rs/primary_disconnect.yml +59 -0
- data/spec/spec_tests/data/sdam/rs/primary_disconnect_electionid.yml +189 -0
- data/spec/spec_tests/data/sdam/rs/primary_disconnect_setversion.yml +189 -0
- data/spec/spec_tests/data/sdam/rs/primary_hint_from_secondary_with_mismatched_me.yml +64 -0
- data/spec/spec_tests/data/sdam/rs/primary_mismatched_me.yml +27 -0
- data/spec/spec_tests/data/sdam/rs/primary_mismatched_me_not_removed.yml +75 -0
- data/spec/spec_tests/data/sdam/rs/primary_reports_new_member.yml +175 -0
- data/spec/spec_tests/data/sdam/rs/primary_to_no_primary_mismatched_me.yml +81 -0
- data/spec/spec_tests/data/sdam/rs/primary_wrong_set_name.yml +30 -0
- data/spec/spec_tests/data/sdam/rs/repeated.yml +105 -0
- data/spec/spec_tests/data/sdam/rs/replicaset_rsnp.yml +21 -0
- data/spec/spec_tests/data/sdam/rs/response_from_removed.yml +69 -0
- data/spec/spec_tests/data/sdam/rs/ruby_primary_address_change.yml +31 -0
- data/spec/spec_tests/data/sdam/rs/ruby_secondary_wrong_set_name_with_primary_second.yml +73 -0
- data/spec/spec_tests/data/sdam/rs/sec_not_auth.yml +55 -0
- data/spec/spec_tests/data/sdam/rs/secondary_ignore_ok_0.yml +87 -0
- data/spec/spec_tests/data/sdam/rs/secondary_mismatched_me.yml +28 -0
- data/spec/spec_tests/data/sdam/rs/secondary_wrong_set_name.yml +31 -0
- data/spec/spec_tests/data/sdam/rs/secondary_wrong_set_name_with_primary.yml +75 -0
- data/spec/spec_tests/data/sdam/rs/setversion_without_electionid.yml +79 -0
- data/spec/spec_tests/data/sdam/rs/stepdown_change_set_name.yml +65 -0
- data/spec/spec_tests/data/sdam/rs/too_new.yml +45 -0
- data/spec/spec_tests/data/sdam/rs/too_old.yml +41 -0
- data/spec/spec_tests/data/sdam/rs/topology_version_equal.yml +68 -0
- data/spec/spec_tests/data/sdam/rs/topology_version_greater.yml +194 -0
- data/spec/spec_tests/data/sdam/rs/topology_version_less.yml +64 -0
- data/spec/spec_tests/data/sdam/rs/unexpected_mongos.yml +29 -0
- data/spec/spec_tests/data/sdam/rs/use_setversion_without_electionid.yml +117 -0
- data/spec/spec_tests/data/sdam/rs/wrong_set_name.yml +38 -0
- data/spec/spec_tests/data/sdam/sharded/compatible.yml +40 -0
- data/spec/spec_tests/data/sdam/sharded/discover_single_mongos.yml +24 -0
- data/spec/spec_tests/data/sdam/sharded/ls_timeout_mongos.yml +101 -0
- data/spec/spec_tests/data/sdam/sharded/mongos_disconnect.yml +113 -0
- data/spec/spec_tests/data/sdam/sharded/multiple_mongoses.yml +52 -0
- data/spec/spec_tests/data/sdam/sharded/non_mongos_removed.yml +47 -0
- data/spec/spec_tests/data/sdam/sharded/normalize_uri_case.yml +32 -0
- data/spec/spec_tests/data/sdam/sharded/ruby_primary_different_address.yml +21 -0
- data/spec/spec_tests/data/sdam/sharded/ruby_primary_mismatched_me.yml +22 -0
- data/spec/spec_tests/data/sdam/sharded/too_new.yml +38 -0
- data/spec/spec_tests/data/sdam/sharded/too_old.yml +38 -0
- data/spec/spec_tests/data/sdam/single/compatible.yml +27 -0
- data/spec/spec_tests/data/sdam/single/direct_connection_external_ip.yml +37 -0
- data/spec/spec_tests/data/sdam/single/direct_connection_mongos.yml +36 -0
- data/spec/spec_tests/data/sdam/single/direct_connection_replicaset.yml +23 -0
- data/spec/spec_tests/data/sdam/single/direct_connection_rsarbiter.yml +38 -0
- data/spec/spec_tests/data/sdam/single/direct_connection_rsprimary.yml +37 -0
- data/spec/spec_tests/data/sdam/single/direct_connection_rssecondary.yml +38 -0
- data/spec/spec_tests/data/sdam/single/direct_connection_standalone.yml +35 -0
- data/spec/spec_tests/data/sdam/single/direct_connection_unavailable_seed.yml +28 -0
- data/spec/spec_tests/data/sdam/single/direct_connection_wrong_set_name.yml +40 -0
- data/spec/spec_tests/data/sdam/single/discover_standalone.yml +35 -0
- data/spec/spec_tests/data/sdam/single/discover_unavailable_seed.yml +28 -0
- data/spec/spec_tests/data/sdam/single/ls_timeout_standalone.yml +36 -0
- data/spec/spec_tests/data/sdam/single/not_ok_response.yml +44 -0
- data/spec/spec_tests/data/sdam/single/ruby_primary_different_address.yml +24 -0
- data/spec/spec_tests/data/sdam/single/ruby_primary_mismatched_me.yml +25 -0
- data/spec/spec_tests/data/sdam/single/standalone_removed.yml +35 -0
- data/spec/spec_tests/data/sdam/single/standalone_using_legacy_hello.yml +34 -0
- data/spec/spec_tests/data/sdam/single/too_new.yml +27 -0
- data/spec/spec_tests/data/sdam/single/too_old.yml +25 -0
- data/spec/spec_tests/data/sdam/single/too_old_then_upgraded.yml +48 -0
- data/spec/spec_tests/data/sdam_integration/cancel-server-check.yml +96 -0
- data/spec/spec_tests/data/sdam_integration/connectTimeoutMS.yml +88 -0
- data/spec/spec_tests/data/sdam_integration/find-network-error.yml +85 -0
- data/spec/spec_tests/data/sdam_integration/find-shutdown-error.yml +118 -0
- data/spec/spec_tests/data/sdam_integration/hello-command-error.yml +160 -0
- data/spec/spec_tests/data/sdam_integration/hello-network-error.yml +158 -0
- data/spec/spec_tests/data/sdam_integration/hello-timeout.yml +225 -0
- data/spec/spec_tests/data/sdam_integration/insert-network-error.yml +88 -0
- data/spec/spec_tests/data/sdam_integration/insert-shutdown-error.yml +117 -0
- data/spec/spec_tests/data/sdam_integration/rediscover-quickly-after-step-down.yml +98 -0
- data/spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml +70 -0
- data/spec/spec_tests/data/sdam_monitoring/load_balancer.yml +65 -0
- data/spec/spec_tests/data/sdam_monitoring/replica_set_other_chain.yml +222 -0
- data/spec/spec_tests/data/sdam_monitoring/replica_set_other_change.yml +225 -0
- data/spec/spec_tests/data/sdam_monitoring/replica_set_primary_address_change.yml +251 -0
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_me_mismatch.yml +111 -0
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_no_primary.yml +113 -0
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_primary.yml +112 -0
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_primary_and_secondary.yml +198 -0
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_primary_removal.yml +175 -0
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml +111 -0
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_second_seed_removal.yml +106 -0
- data/spec/spec_tests/data/sdam_monitoring/required_replica_set.yml +108 -0
- data/spec/spec_tests/data/sdam_monitoring/standalone.yml +70 -0
- data/spec/spec_tests/data/sdam_monitoring/standalone_repeated.yml +86 -0
- data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +73 -0
- data/spec/spec_tests/data/sdam_monitoring/standalone_to_rs_with_me_mismatch.yml +90 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-directConnection.yml +13 -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 +10 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/direct-connection-false.yml +10 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/direct-connection-true.yml +5 -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/longer-parent-in-return.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/misformatted-option.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/no-results.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/not-enough-parts.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/one-result-default-port.yml +10 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/one-txt-record-multiple-strings.yml +10 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/one-txt-record.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/parent-part-mismatch1.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/parent-part-mismatch2.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/parent-part-mismatch3.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/parent-part-mismatch4.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/parent-part-mismatch5.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/returned-parent-too-short.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/returned-parent-wrong.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/two-results-default-port.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/two-results-nonstandard-port.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/two-txt-records.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/txt-record-not-allowed-option.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/txt-record-with-overridden-ssl-option.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/txt-record-with-overridden-uri-option.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/txt-record-with-unallowed-option.yml +5 -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/replica-set/uri-with-port.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/uri-with-two-hosts.yml +5 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Nearest.yml +25 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Nearest_multiple.yml +26 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +20 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/PossiblePrimary.yml +15 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/PossiblePrimaryNearest.yml +15 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Primary.yml +18 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +25 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +20 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Secondary.yml +25 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +25 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +20 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Secondary_multi_tags.yml +31 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Secondary_multi_tags2.yml +31 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +20 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/Nearest.yml +32 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/Nearest_multiple.yml +33 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +25 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/Primary.yml +26 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +28 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +28 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/Secondary.yml +30 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/SecondaryPreferred.yml +30 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/SecondaryPreferred_non_matching.yml +28 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/SecondaryPreferred_tags.yml +28 -0
- data/spec/spec_tests/data/server_selection/ReplicaSetWithPrimary/read/Secondary_non_matching.yml +25 -0
- data/spec/spec_tests/data/server_selection/Sharded/read/Nearest.yml +21 -0
- data/spec/spec_tests/data/server_selection/Sharded/read/Primary.yml +19 -0
- data/spec/spec_tests/data/server_selection/Sharded/read/PrimaryPreferred.yml +21 -0
- data/spec/spec_tests/data/server_selection/Sharded/read/Secondary.yml +21 -0
- data/spec/spec_tests/data/server_selection/Sharded/read/SecondaryPreferred.yml +21 -0
- data/spec/spec_tests/data/server_selection/Single/read/SecondaryPreferred.yml +18 -0
- data/spec/spec_tests/data/server_selection/Unknown/read/SecondaryPreferred.yml +10 -0
- data/spec/{support/server_selection/rtt → spec_tests/data/server_selection_rtt}/first_value.yml +0 -0
- data/spec/{support/server_selection/rtt → spec_tests/data/server_selection_rtt}/first_value_zero.yml +0 -0
- data/spec/{support/server_selection/rtt → spec_tests/data/server_selection_rtt}/value_test_1.yml +0 -0
- data/spec/{support/server_selection/rtt → spec_tests/data/server_selection_rtt}/value_test_2.yml +0 -0
- data/spec/{support/server_selection/rtt → spec_tests/data/server_selection_rtt}/value_test_3.yml +0 -0
- data/spec/{support/server_selection/rtt → spec_tests/data/server_selection_rtt}/value_test_4.yml +0 -0
- data/spec/{support/server_selection/rtt → spec_tests/data/server_selection_rtt}/value_test_5.yml +0 -0
- data/spec/spec_tests/data/transactions/abort.yml +413 -0
- data/spec/spec_tests/data/transactions/bulk.yml +267 -0
- data/spec/spec_tests/data/transactions/causal-consistency.yml +175 -0
- data/spec/spec_tests/data/transactions/commit.yml +603 -0
- data/spec/spec_tests/data/transactions/count.yml +67 -0
- data/spec/spec_tests/data/transactions/create-collection.yml +131 -0
- data/spec/spec_tests/data/transactions/create-index.yml +152 -0
- data/spec/spec_tests/data/transactions/delete.yml +192 -0
- data/spec/spec_tests/data/transactions/error-labels.yml +1030 -0
- data/spec/spec_tests/data/transactions/errors-client.yml +56 -0
- data/spec/spec_tests/data/transactions/errors.yml +133 -0
- data/spec/spec_tests/data/transactions/findOneAndDelete.yml +134 -0
- data/spec/spec_tests/data/transactions/findOneAndReplace.yml +148 -0
- data/spec/spec_tests/data/transactions/findOneAndUpdate.yml +236 -0
- data/spec/spec_tests/data/transactions/insert.yml +390 -0
- data/spec/spec_tests/data/transactions/isolation.yml +133 -0
- data/spec/spec_tests/data/transactions/mongos-pin-auto.yml +1674 -0
- data/spec/spec_tests/data/transactions/mongos-recovery-token.yml +350 -0
- data/spec/spec_tests/data/transactions/pin-mongos.yml +559 -0
- data/spec/spec_tests/data/transactions/read-concern.yml +623 -0
- data/spec/spec_tests/data/transactions/read-pref.yml +348 -0
- data/spec/spec_tests/data/transactions/reads.yml +261 -0
- data/spec/spec_tests/data/transactions/retryable-abort-errorLabels.yml +126 -0
- data/spec/spec_tests/data/transactions/retryable-abort.yml +1317 -0
- data/spec/spec_tests/data/transactions/retryable-commit-errorLabels.yml +134 -0
- data/spec/spec_tests/data/transactions/retryable-commit.yml +1462 -0
- data/spec/spec_tests/data/transactions/retryable-writes.yml +218 -0
- data/spec/spec_tests/data/transactions/run-command.yml +197 -0
- data/spec/spec_tests/data/transactions/transaction-options-repl.yml +117 -0
- data/spec/spec_tests/data/transactions/transaction-options.yml +781 -0
- data/spec/spec_tests/data/transactions/update.yml +246 -0
- data/spec/spec_tests/data/transactions/write-concern.yml +554 -0
- data/spec/spec_tests/data/transactions_api/callback-aborts.yml +170 -0
- data/spec/spec_tests/data/transactions_api/callback-commits.yml +204 -0
- data/spec/spec_tests/data/transactions_api/callback-retry.yml +215 -0
- data/spec/spec_tests/data/transactions_api/commit-retry.yml +324 -0
- data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror-4.2.yml +139 -0
- data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror.yml +175 -0
- data/spec/spec_tests/data/transactions_api/commit-writeconcernerror.yml +216 -0
- data/spec/spec_tests/data/transactions_api/commit.yml +193 -0
- data/spec/spec_tests/data/transactions_api/transaction-options.yml +274 -0
- data/spec/spec_tests/data/transactions_unified/mongos-unpin.yml +172 -0
- data/spec/spec_tests/data/unified/valid-fail/operation-failure.yml +31 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-change-streams.yml +220 -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 +184 -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 +170 -0
- data/spec/spec_tests/data/uri_options/auth-options.yml +49 -0
- data/spec/spec_tests/data/uri_options/compression-options.yml +51 -0
- data/spec/spec_tests/data/uri_options/concern-options.yml +55 -0
- data/spec/spec_tests/data/uri_options/connection-options.yml +209 -0
- data/spec/spec_tests/data/uri_options/connection-pool-options.yml +26 -0
- data/spec/spec_tests/data/uri_options/read-preference-options.yml +66 -0
- data/spec/spec_tests/data/uri_options/ruby-auth-options.yml +12 -0
- data/spec/spec_tests/data/uri_options/ruby-connection-options.yml +58 -0
- data/spec/spec_tests/data/uri_options/tls-options.yml +364 -0
- data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +417 -0
- data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +411 -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 +55 -0
- data/spec/spec_tests/load_balancers_spec.rb +15 -0
- data/spec/spec_tests/max_staleness_spec.rb +12 -0
- data/spec/spec_tests/read_write_concern_connection_string_spec.rb +13 -0
- data/spec/spec_tests/read_write_concern_document_spec.rb +77 -0
- data/spec/spec_tests/read_write_concern_operaton_spec.rb +13 -0
- data/spec/spec_tests/retryable_reads_spec.rb +50 -0
- data/spec/spec_tests/retryable_writes_spec.rb +22 -0
- data/spec/spec_tests/sdam_integration_spec.rb +16 -0
- data/spec/spec_tests/sdam_monitoring_spec.rb +101 -0
- data/spec/spec_tests/sdam_spec.rb +242 -0
- data/spec/spec_tests/seed_list_discovery_spec.rb +118 -0
- data/spec/spec_tests/server_selection_rtt_spec.rb +33 -0
- data/spec/spec_tests/server_selection_spec.rb +12 -0
- data/spec/spec_tests/transactions_api_spec.rb +13 -0
- data/spec/spec_tests/transactions_spec.rb +13 -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 +93 -0
- data/spec/spec_tests/versioned_api_spec.rb +13 -0
- data/spec/stress/cleanup_spec.rb +61 -0
- data/spec/stress/connection_pool_stress_spec.rb +204 -0
- data/spec/stress/connection_pool_timing_spec.rb +184 -0
- data/spec/stress/fork_reconnect_stress_spec.rb +108 -0
- data/spec/stress/push_monitor_close_spec.rb +44 -0
- data/spec/support/authorization.rb +61 -153
- data/spec/support/aws_utils/base.rb +137 -0
- data/spec/support/aws_utils/inspector.rb +227 -0
- data/spec/support/aws_utils/orchestrator.rb +373 -0
- data/spec/support/aws_utils/provisioner.rb +363 -0
- data/spec/support/aws_utils.rb +65 -0
- data/spec/support/background_thread_registry.rb +70 -0
- data/spec/support/certificates/README.md +106 -0
- data/spec/support/certificates/atlas-ocsp-ca.crt +110 -0
- data/spec/support/certificates/atlas-ocsp.crt +157 -0
- data/spec/support/certificates/ca.crt +76 -0
- data/spec/support/certificates/client-encrypted.key +30 -0
- data/spec/support/certificates/client-int.crt +78 -0
- data/spec/support/certificates/client-second-level-bundle.pem +179 -0
- data/spec/support/certificates/client-second-level.crt +74 -0
- data/spec/support/certificates/client-second-level.key +27 -0
- data/spec/support/certificates/client-second-level.pem +101 -0
- data/spec/support/certificates/client-x509.crt +78 -0
- data/spec/support/certificates/client-x509.key +27 -0
- data/spec/support/certificates/client-x509.pem +105 -0
- data/spec/support/certificates/client.crt +74 -0
- data/spec/support/certificates/client.key +27 -0
- data/spec/support/certificates/client.pem +90 -90
- data/spec/support/certificates/crl.pem +10 -8
- data/spec/support/certificates/crl_client_revoked.pem +11 -10
- data/spec/support/certificates/multi-ca.crt +152 -0
- data/spec/support/certificates/python-ca.crt +76 -0
- data/spec/support/certificates/server-int.crt +78 -0
- data/spec/support/certificates/server-second-level-bundle.pem +179 -0
- data/spec/support/certificates/server-second-level.crt +74 -0
- data/spec/support/certificates/server-second-level.key +27 -0
- data/spec/support/certificates/server-second-level.pem +101 -0
- data/spec/support/certificates/server.pem +99 -32
- data/spec/support/client_registry.rb +254 -0
- data/spec/support/client_registry_macros.rb +26 -0
- data/spec/support/cluster_tools.rb +379 -0
- data/spec/support/common_shortcuts.rb +374 -0
- data/spec/support/constraints.rb +19 -0
- data/spec/support/crypt/corpus/corpus-key-aws.json +33 -0
- data/spec/support/crypt/corpus/corpus-key-local.json +31 -0
- data/spec/support/crypt/corpus/corpus-schema.json +2057 -0
- data/spec/support/crypt/corpus/corpus.json +3657 -0
- data/spec/support/crypt/corpus/corpus_encrypted.json +4152 -0
- data/spec/support/crypt/data_keys/key_document_aws.json +34 -0
- data/spec/support/crypt/data_keys/key_document_local.json +31 -0
- data/spec/support/crypt/external/external-key.json +31 -0
- data/spec/support/crypt/external/external-schema.json +19 -0
- data/spec/support/crypt/limits/limits-doc.json +102 -0
- data/spec/support/crypt/limits/limits-key.json +31 -0
- data/spec/support/crypt/limits/limits-schema.json +1405 -0
- data/spec/support/crypt/schema_maps/schema_map_aws.json +17 -0
- data/spec/support/crypt/schema_maps/schema_map_aws_key_alt_names.json +12 -0
- data/spec/support/crypt/schema_maps/schema_map_local.json +18 -0
- data/spec/support/crypt/schema_maps/schema_map_local_key_alt_names.json +12 -0
- data/spec/support/crypt.rb +157 -0
- data/spec/support/dns.rb +16 -0
- data/spec/support/json_ext_formatter.rb +16 -0
- data/spec/support/keyword_struct.rb +29 -0
- data/spec/support/local_resource_registry.rb +37 -0
- data/spec/support/matchers.rb +52 -1
- data/spec/support/monitoring_ext.rb +19 -0
- data/spec/support/ocsp +1 -0
- data/spec/support/primary_socket.rb +24 -0
- data/spec/support/sdam_formatter_integration.rb +119 -0
- data/spec/support/session_registry.rb +55 -0
- data/spec/support/shared/app_metadata.rb +167 -0
- data/spec/support/shared/auth_context.rb +16 -0
- data/spec/support/shared/protocol.rb +5 -0
- data/spec/support/shared/scram_conversation.rb +103 -0
- data/spec/support/shared/server_selector.rb +119 -63
- data/spec/support/shared/session.rb +910 -0
- data/spec/support/spec_config.rb +636 -0
- data/spec/support/spec_setup.rb +83 -0
- data/spec/support/using_hash.rb +31 -0
- data/spec/support/utils.rb +598 -0
- data.tar.gz.sig +0 -0
- metadata +2470 -519
- metadata.gz.sig +2 -2
- data/lib/csasl/csasl.bundle +0 -0
- data/lib/mongo/cluster/cursor_reaper.rb +0 -174
- data/lib/mongo/cluster/topology/replica_set.rb +0 -271
- data/lib/mongo/collection/view/builder/find_command.rb +0 -136
- 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 -83
- data/lib/mongo/cursor/builder/get_more_command.rb +0 -72
- data/lib/mongo/cursor/builder/kill_cursors_command.rb +0 -90
- data/lib/mongo/cursor/builder/op_get_more.rb +0 -61
- data/lib/mongo/cursor/builder/op_kill_cursors.rb +0 -84
- data/lib/mongo/cursor/builder.rb +0 -18
- data/lib/mongo/event/description_changed.rb +0 -54
- data/lib/mongo/event/primary_elected.rb +0 -53
- data/lib/mongo/event/standalone_discovered.rb +0 -53
- data/lib/mongo/operation/commands/aggregate/result.rb +0 -89
- data/lib/mongo/operation/commands/aggregate.rb +0 -64
- data/lib/mongo/operation/commands/collections_info/result.rb +0 -41
- data/lib/mongo/operation/commands/collections_info.rb +0 -71
- data/lib/mongo/operation/commands/command.rb +0 -47
- data/lib/mongo/operation/commands/find/result.rb +0 -62
- data/lib/mongo/operation/commands/find.rb +0 -27
- data/lib/mongo/operation/commands/get_more/result.rb +0 -62
- data/lib/mongo/operation/commands/get_more.rb +0 -27
- data/lib/mongo/operation/commands/indexes.rb +0 -73
- data/lib/mongo/operation/commands/list_collections/result.rb +0 -94
- data/lib/mongo/operation/commands/list_collections.rb +0 -48
- data/lib/mongo/operation/commands/list_indexes/result.rb +0 -98
- data/lib/mongo/operation/commands/list_indexes.rb +0 -48
- data/lib/mongo/operation/commands/map_reduce/result.rb +0 -119
- data/lib/mongo/operation/commands/map_reduce.rb +0 -49
- data/lib/mongo/operation/commands/parallel_scan/result.rb +0 -64
- data/lib/mongo/operation/commands/parallel_scan.rb +0 -52
- data/lib/mongo/operation/commands/user_query.rb +0 -72
- data/lib/mongo/operation/commands/users_info/result.rb +0 -44
- data/lib/mongo/operation/commands/users_info.rb +0 -48
- data/lib/mongo/operation/commands.rb +0 -26
- data/lib/mongo/operation/executable.rb +0 -42
- data/lib/mongo/operation/limited.rb +0 -37
- data/lib/mongo/operation/object_id_generator.rb +0 -36
- data/lib/mongo/operation/read/get_more.rb +0 -52
- data/lib/mongo/operation/read/query/result.rb +0 -40
- data/lib/mongo/operation/read/query.rb +0 -55
- data/lib/mongo/operation/read.rb +0 -16
- data/lib/mongo/operation/read_preference.rb +0 -61
- data/lib/mongo/operation/specifiable.rb +0 -473
- data/lib/mongo/operation/write/bulk/bulkable.rb +0 -83
- data/lib/mongo/operation/write/bulk/delete/result.rb +0 -71
- data/lib/mongo/operation/write/bulk/delete.rb +0 -71
- data/lib/mongo/operation/write/bulk/insert/result.rb +0 -129
- data/lib/mongo/operation/write/bulk/insert.rb +0 -96
- data/lib/mongo/operation/write/bulk/legacy_mergable.rb +0 -87
- data/lib/mongo/operation/write/bulk/mergable.rb +0 -71
- data/lib/mongo/operation/write/bulk/update/result.rb +0 -205
- data/lib/mongo/operation/write/bulk/update.rb +0 -81
- data/lib/mongo/operation/write/bulk.rb +0 -20
- data/lib/mongo/operation/write/command/create_index.rb +0 -49
- data/lib/mongo/operation/write/command/create_user.rb +0 -42
- data/lib/mongo/operation/write/command/delete.rb +0 -56
- data/lib/mongo/operation/write/command/drop_index.rb +0 -50
- data/lib/mongo/operation/write/command/insert.rb +0 -66
- data/lib/mongo/operation/write/command/remove_user.rb +0 -41
- data/lib/mongo/operation/write/command/update.rb +0 -62
- data/lib/mongo/operation/write/command/update_user.rb +0 -42
- data/lib/mongo/operation/write/command/writable.rb +0 -57
- data/lib/mongo/operation/write/command.rb +0 -23
- data/lib/mongo/operation/write/create_index.rb +0 -67
- data/lib/mongo/operation/write/create_user.rb +0 -50
- data/lib/mongo/operation/write/delete/result.rb +0 -40
- data/lib/mongo/operation/write/delete.rb +0 -71
- data/lib/mongo/operation/write/drop_index.rb +0 -63
- data/lib/mongo/operation/write/gle.rb +0 -49
- data/lib/mongo/operation/write/idable.rb +0 -63
- data/lib/mongo/operation/write/insert/result.rb +0 -62
- data/lib/mongo/operation/write/insert.rb +0 -71
- data/lib/mongo/operation/write/remove_user.rb +0 -48
- data/lib/mongo/operation/write/update/result.rb +0 -160
- data/lib/mongo/operation/write/update.rb +0 -81
- data/lib/mongo/operation/write/update_user.rb +0 -50
- data/lib/mongo/operation/write/write_command_enabled.rb +0 -54
- data/lib/mongo/operation/write.rb +0 -27
- data/lib/mongo/server/connectable.rb +0 -113
- data/lib/mongo/server/connection_pool/queue.rb +0 -197
- data/lib/mongo/server/context.rb +0 -69
- data/lib/mongo/server/description/inspector/description_changed.rb +0 -57
- data/lib/mongo/server/description/inspector/primary_elected.rb +0 -58
- data/lib/mongo/server/description/inspector/standalone_discovered.rb +0 -56
- data/lib/mongo/server/description/inspector.rb +0 -79
- data/lib/mongo/server_selector/selectable.rb +0 -222
- data/lib/mongo/write_concern/normalizable.rb +0 -52
- 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/command_monitoring_spec.rb +0 -64
- data/spec/mongo/connection_string_spec.rb +0 -115
- data/spec/mongo/crud_spec.rb +0 -42
- data/spec/mongo/gridfs_spec.rb +0 -50
- data/spec/mongo/operation/commands/aggregate/result_spec.rb +0 -80
- data/spec/mongo/operation/commands/aggregate_spec.rb +0 -72
- data/spec/mongo/operation/commands/collections_info_spec.rb +0 -40
- data/spec/mongo/operation/commands/command_spec.rb +0 -80
- data/spec/mongo/operation/commands/indexes_spec.rb +0 -31
- data/spec/mongo/operation/commands/map_reduce_spec.rb +0 -125
- data/spec/mongo/operation/read/get_more_spec.rb +0 -53
- data/spec/mongo/operation/read/query_spec.rb +0 -102
- data/spec/mongo/operation/read_preference_spec.rb +0 -245
- data/spec/mongo/operation/write/bulk/delete_spec.rb +0 -223
- data/spec/mongo/operation/write/bulk/insert_spec.rb +0 -250
- data/spec/mongo/operation/write/bulk/update_spec.rb +0 -220
- data/spec/mongo/operation/write/command/delete_spec.rb +0 -106
- data/spec/mongo/operation/write/command/insert_spec.rb +0 -105
- data/spec/mongo/operation/write/command/update_spec.rb +0 -110
- data/spec/mongo/operation/write/create_index_spec.rb +0 -63
- data/spec/mongo/operation/write/create_user_spec.rb +0 -44
- data/spec/mongo/operation/write/delete_spec.rb +0 -215
- data/spec/mongo/operation/write/drop_index_spec.rb +0 -51
- data/spec/mongo/operation/write/insert_spec.rb +0 -291
- data/spec/mongo/operation/write/remove_user_spec.rb +0 -46
- data/spec/mongo/operation/write/update_spec.rb +0 -256
- data/spec/mongo/operation/write/update_user_spec.rb +0 -46
- data/spec/mongo/server/connection_pool/queue_spec.rb +0 -190
- data/spec/mongo/server/description/inspector/description_changed_spec.rb +0 -78
- data/spec/mongo/server/description/inspector/primary_elected_spec.rb +0 -94
- data/spec/mongo/server_discovery_and_monitoring_spec.rb +0 -115
- data/spec/mongo/server_selection_rtt_spec.rb +0 -85
- data/spec/mongo/server_selection_spec.rb +0 -90
- data/spec/support/certificates/ca.pem +0 -17
- data/spec/support/certificates/password_protected.pem +0 -51
- data/spec/support/command_monitoring/bulkWrite.yml +0 -73
- data/spec/support/command_monitoring/command.yml +0 -42
- data/spec/support/command_monitoring/find.yml +0 -268
- data/spec/support/command_monitoring/insertMany.yml +0 -81
- data/spec/support/command_monitoring/updateMany.yml +0 -67
- data/spec/support/command_monitoring/updateOne.yml +0 -95
- data/spec/support/command_monitoring.rb +0 -376
- data/spec/support/connection_string.rb +0 -228
- data/spec/support/connection_string_tests/invalid-uris.yml +0 -193
- data/spec/support/connection_string_tests/valid-auth.yml +0 -256
- data/spec/support/connection_string_tests/valid-options.yml +0 -30
- data/spec/support/connection_string_tests/valid-unix_socket-absolute.yml +0 -197
- data/spec/support/connection_string_tests/valid-unix_socket-relative.yml +0 -213
- data/spec/support/connection_string_tests/valid-warnings.yml +0 -55
- data/spec/support/crud/read.rb +0 -164
- data/spec/support/crud/write.rb +0 -243
- data/spec/support/crud.rb +0 -211
- data/spec/support/crud_tests/read/aggregate.yml +0 -43
- data/spec/support/crud_tests/read/count.yml +0 -37
- data/spec/support/crud_tests/read/distinct.yml +0 -33
- data/spec/support/crud_tests/read/find.yml +0 -50
- data/spec/support/crud_tests/write/deleteMany.yml +0 -36
- data/spec/support/crud_tests/write/deleteOne.yml +0 -49
- data/spec/support/crud_tests/write/findOneAndDelete.yml +0 -54
- data/spec/support/crud_tests/write/findOneAndReplace.yml +0 -153
- data/spec/support/crud_tests/write/findOneAndUpdate.yml +0 -161
- data/spec/support/crud_tests/write/insertMany.yml +0 -24
- data/spec/support/crud_tests/write/insertOne.yml +0 -19
- data/spec/support/crud_tests/write/replaceOne.yml +0 -96
- data/spec/support/crud_tests/write/updateMany.yml +0 -83
- data/spec/support/crud_tests/write/updateOne.yml +0 -80
- data/spec/support/gridfs.rb +0 -637
- data/spec/support/gridfs_tests/delete.yml +0 -157
- data/spec/support/gridfs_tests/download.yml +0 -210
- data/spec/support/helpers.rb +0 -140
- data/spec/support/sdam/rs/discover_arbiters.yml +0 -41
- data/spec/support/sdam/rs/discover_passives.yml +0 -77
- data/spec/support/sdam/rs/discover_primary.yml +0 -40
- data/spec/support/sdam/rs/discover_secondary.yml +0 -41
- data/spec/support/sdam/rs/discovery.yml +0 -195
- data/spec/support/sdam/rs/equal_electionids.yml +0 -48
- data/spec/support/sdam/rs/ghost_discovered.yml +0 -39
- data/spec/support/sdam/rs/hosts_differ_from_seeds.yml +0 -34
- data/spec/support/sdam/rs/member_reconfig.yml +0 -68
- data/spec/support/sdam/rs/member_standalone.yml +0 -60
- data/spec/support/sdam/rs/new_primary.yml +0 -74
- data/spec/support/sdam/rs/new_primary_new_electionid.yml +0 -101
- data/spec/support/sdam/rs/new_primary_new_setversion.yml +0 -101
- data/spec/support/sdam/rs/new_primary_wrong_set_name.yml +0 -71
- data/spec/support/sdam/rs/non_rs_member.yml +0 -31
- data/spec/support/sdam/rs/normalize_case.yml +0 -49
- data/spec/support/sdam/rs/null_election_id.yml +0 -151
- data/spec/support/sdam/rs/primary_becomes_standalone.yml +0 -52
- data/spec/support/sdam/rs/primary_changes_set_name.yml +0 -57
- data/spec/support/sdam/rs/primary_disconnect.yml +0 -56
- data/spec/support/sdam/rs/primary_disconnect_electionid.yml +0 -160
- data/spec/support/sdam/rs/primary_disconnect_setversion.yml +0 -160
- data/spec/support/sdam/rs/primary_mismatched_me.yml +0 -37
- data/spec/support/sdam/rs/primary_reports_new_member.yml +0 -163
- data/spec/support/sdam/rs/primary_to_no_primary_mismatched_me.yml +0 -75
- data/spec/support/sdam/rs/primary_wrong_set_name.yml +0 -27
- data/spec/support/sdam/rs/response_from_removed.yml +0 -63
- data/spec/support/sdam/rs/rsother_discovered.yml +0 -62
- data/spec/support/sdam/rs/sec_not_auth.yml +0 -49
- data/spec/support/sdam/rs/secondary_mismatched_me.yml +0 -37
- data/spec/support/sdam/rs/secondary_wrong_set_name.yml +0 -28
- data/spec/support/sdam/rs/secondary_wrong_set_name_with_primary.yml +0 -69
- data/spec/support/sdam/rs/set_version_without_electionid.yml +0 -69
- data/spec/support/sdam/rs/setversion_without_electionid.yml +0 -69
- data/spec/support/sdam/rs/stepdown_change_set_name.yml +0 -59
- data/spec/support/sdam/rs/unexpected_mongos.yml +0 -26
- data/spec/support/sdam/rs/use_setversion_without_electionid.yml +0 -99
- data/spec/support/sdam/rs/wrong_set_name.yml +0 -35
- data/spec/support/sdam/sharded/mongos_disconnect.yml +0 -104
- data/spec/support/sdam/sharded/multiple_mongoses.yml +0 -46
- data/spec/support/sdam/sharded/non_mongos_removed.yml +0 -41
- data/spec/support/sdam/sharded/normalize_uri_case.yml +0 -32
- data/spec/support/sdam/sharded/single_mongos.yml +0 -33
- data/spec/support/sdam/single/direct_connection_external_ip.yml +0 -34
- data/spec/support/sdam/single/direct_connection_mongos.yml +0 -33
- data/spec/support/sdam/single/direct_connection_rsarbiter.yml +0 -35
- data/spec/support/sdam/single/direct_connection_rsprimary.yml +0 -34
- data/spec/support/sdam/single/direct_connection_rssecondary.yml +0 -35
- data/spec/support/sdam/single/direct_connection_slave.yml +0 -32
- data/spec/support/sdam/single/direct_connection_standalone.yml +0 -32
- data/spec/support/sdam/single/not_ok_response.yml +0 -38
- data/spec/support/sdam/single/standalone_removed.yml +0 -32
- data/spec/support/sdam/single/unavailable_seed.yml +0 -28
- data/spec/support/server_discovery_and_monitoring.rb +0 -186
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest.yml +0 -26
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +0 -21
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Primary.yml +0 -21
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +0 -26
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +0 -21
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary.yml +0 -26
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +0 -26
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +0 -21
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +0 -21
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest.yml +0 -33
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +0 -26
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Primary.yml +0 -29
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +0 -29
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +0 -29
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary.yml +0 -31
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred.yml +0 -31
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred_non_matching.yml +0 -29
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary_non_matching.yml +0 -26
- data/spec/support/server_selection/selection/Sharded/read/SecondaryPreferred.yml +0 -26
- data/spec/support/server_selection/selection/Single/read/SecondaryPreferred.yml +0 -19
- data/spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml +0 -11
- data/spec/support/server_selection.rb +0 -135
- data/spec/support/server_selection_rtt.rb +0 -41
- data/spec/support/travis.rb +0 -14
data/lib/mongo/collection.rb
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
4
|
+
# Copyright (C) 2014-2020 MongoDB Inc.
|
|
2
5
|
#
|
|
3
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
7
|
# you may not use this file except in compliance with the License.
|
|
@@ -50,13 +53,16 @@ module Mongo
|
|
|
50
53
|
# Delegate to the cluster for the next primary.
|
|
51
54
|
def_delegators :cluster, :next_primary
|
|
52
55
|
|
|
53
|
-
# Convenience delegators to find.
|
|
54
|
-
def_delegators :find, :parallel_scan
|
|
55
|
-
|
|
56
56
|
# Options that can be updated on a new Collection instance via the #with method.
|
|
57
57
|
#
|
|
58
58
|
# @since 2.1.0
|
|
59
|
-
CHANGEABLE_OPTIONS = [ :read, :read_concern, :write ].freeze
|
|
59
|
+
CHANGEABLE_OPTIONS = [ :read, :read_concern, :write, :write_concern ].freeze
|
|
60
|
+
|
|
61
|
+
# Options that can be used for creating a time-series collection.
|
|
62
|
+
TIME_SERIES_OPTIONS = {
|
|
63
|
+
:time_series => :timeseries,
|
|
64
|
+
:expire_after => :expireAfterSeconds
|
|
65
|
+
}
|
|
60
66
|
|
|
61
67
|
# Check if a collection is equal to another object. Will check the name and
|
|
62
68
|
# the database for equality.
|
|
@@ -83,12 +89,33 @@ module Mongo
|
|
|
83
89
|
# @param [ String, Symbol ] name The collection name.
|
|
84
90
|
# @param [ Hash ] options The collection options.
|
|
85
91
|
#
|
|
92
|
+
# @option options [ Hash ] :write Deprecated. Equivalent to :write_concern
|
|
93
|
+
# option.
|
|
94
|
+
# @option options [ Hash ] :write_concern The write concern options.
|
|
95
|
+
# Can be :w => Integer|String, :fsync => Boolean, :j => Boolean.
|
|
96
|
+
# @option options [ Hash ] :time_series Create a time-series collection.
|
|
97
|
+
# See https://docs.mongodb.com/manual/core/timeseries-collections/ for more
|
|
98
|
+
# information about time-series collection.
|
|
99
|
+
# @option options [ Integer ] :expire_after Number indicating
|
|
100
|
+
# after how many seconds old time-series data should be deleted.
|
|
101
|
+
#
|
|
86
102
|
# @since 2.0.0
|
|
87
103
|
def initialize(database, name, options = {})
|
|
88
104
|
raise Error::InvalidCollectionName.new unless name
|
|
105
|
+
if options[:write] && options[:write_concern] && options[:write] != options[:write_concern]
|
|
106
|
+
raise ArgumentError, "If :write and :write_concern are both given, they must be identical: #{options.inspect}"
|
|
107
|
+
end
|
|
89
108
|
@database = database
|
|
90
109
|
@name = name.to_s.freeze
|
|
91
|
-
@options = options.
|
|
110
|
+
@options = options.dup
|
|
111
|
+
=begin WriteConcern object support
|
|
112
|
+
if @options[:write_concern].is_a?(WriteConcern::Base)
|
|
113
|
+
# Cache the instance so that we do not needlessly reconstruct it.
|
|
114
|
+
@write_concern = @options[:write_concern]
|
|
115
|
+
@options[:write_concern] = @write_concern.options
|
|
116
|
+
end
|
|
117
|
+
=end
|
|
118
|
+
@options.freeze
|
|
92
119
|
end
|
|
93
120
|
|
|
94
121
|
# Get the read concern for this collection instance.
|
|
@@ -100,7 +127,19 @@ module Mongo
|
|
|
100
127
|
#
|
|
101
128
|
# @since 2.2.0
|
|
102
129
|
def read_concern
|
|
103
|
-
|
|
130
|
+
options[:read_concern] || database.read_concern
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Get the server selector on this collection.
|
|
134
|
+
#
|
|
135
|
+
# @example Get the server selector.
|
|
136
|
+
# collection.server_selector
|
|
137
|
+
#
|
|
138
|
+
# @return [ Mongo::ServerSelector ] The server selector.
|
|
139
|
+
#
|
|
140
|
+
# @since 2.0.0
|
|
141
|
+
def server_selector
|
|
142
|
+
@server_selector ||= ServerSelector.get(read_preference || database.server_selector)
|
|
104
143
|
end
|
|
105
144
|
|
|
106
145
|
# Get the read preference on this collection.
|
|
@@ -108,11 +147,11 @@ module Mongo
|
|
|
108
147
|
# @example Get the read preference.
|
|
109
148
|
# collection.read_preference
|
|
110
149
|
#
|
|
111
|
-
# @return [
|
|
150
|
+
# @return [ Hash ] The read preference.
|
|
112
151
|
#
|
|
113
152
|
# @since 2.0.0
|
|
114
153
|
def read_preference
|
|
115
|
-
@read_preference ||=
|
|
154
|
+
@read_preference ||= options[:read] || database.read_preference
|
|
116
155
|
end
|
|
117
156
|
|
|
118
157
|
# Get the write concern on this collection.
|
|
@@ -124,18 +163,40 @@ module Mongo
|
|
|
124
163
|
#
|
|
125
164
|
# @since 2.0.0
|
|
126
165
|
def write_concern
|
|
127
|
-
@write_concern ||=
|
|
128
|
-
database.write_concern
|
|
166
|
+
@write_concern ||= WriteConcern.get(
|
|
167
|
+
options[:write_concern] || options[:write] || database.write_concern)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Get the write concern for the collection, given the session.
|
|
171
|
+
#
|
|
172
|
+
# If the session is in a transaction and the collection
|
|
173
|
+
# has an unacknowledged write concern, remove the write
|
|
174
|
+
# concern's :w option. Otherwise, return the unmodified
|
|
175
|
+
# write concern.
|
|
176
|
+
#
|
|
177
|
+
# @return [ Mongo::WriteConcern ] The write concern.
|
|
178
|
+
#
|
|
179
|
+
# @api private
|
|
180
|
+
def write_concern_with_session(session)
|
|
181
|
+
wc = write_concern
|
|
182
|
+
if session && session.in_transaction?
|
|
183
|
+
if wc && !wc.acknowledged?
|
|
184
|
+
opts = wc.options.dup
|
|
185
|
+
opts.delete(:w)
|
|
186
|
+
return WriteConcern.get(opts)
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
wc
|
|
129
190
|
end
|
|
130
191
|
|
|
131
192
|
# Provides a new collection with either a new read preference or new write concern
|
|
132
193
|
# merged over the existing read preference / write concern.
|
|
133
194
|
#
|
|
134
|
-
# @example Get a collection with changed read preference.
|
|
135
|
-
# collection.with(:
|
|
195
|
+
# @example Get a collection with a changed read preference.
|
|
196
|
+
# collection.with(read: { mode: :primary_preferred })
|
|
136
197
|
#
|
|
137
|
-
# @example Get a collection with changed write concern.
|
|
138
|
-
# collection.with(:
|
|
198
|
+
# @example Get a collection with a changed write concern.
|
|
199
|
+
# collection.with(write_concern: { w: 3 })
|
|
139
200
|
|
|
140
201
|
# @param [ Hash ] new_options The new options to use.
|
|
141
202
|
#
|
|
@@ -146,7 +207,14 @@ module Mongo
|
|
|
146
207
|
new_options.keys.each do |k|
|
|
147
208
|
raise Error::UnchangeableCollectionOption.new(k) unless CHANGEABLE_OPTIONS.include?(k)
|
|
148
209
|
end
|
|
149
|
-
|
|
210
|
+
options = @options.dup
|
|
211
|
+
if options[:write] && new_options[:write_concern]
|
|
212
|
+
options.delete(:write)
|
|
213
|
+
end
|
|
214
|
+
if options[:write_concern] && new_options[:write]
|
|
215
|
+
options.delete(:write_concern)
|
|
216
|
+
end
|
|
217
|
+
Collection.new(database, name, options.update(new_options))
|
|
150
218
|
end
|
|
151
219
|
|
|
152
220
|
# Is the collection capped?
|
|
@@ -158,7 +226,7 @@ module Mongo
|
|
|
158
226
|
#
|
|
159
227
|
# @since 2.0.0
|
|
160
228
|
def capped?
|
|
161
|
-
database.
|
|
229
|
+
database.read_command(:collstats => name).documents[0][CAPPED]
|
|
162
230
|
end
|
|
163
231
|
|
|
164
232
|
# Force the collection to be created in the database.
|
|
@@ -166,11 +234,53 @@ module Mongo
|
|
|
166
234
|
# @example Force the collection to be created.
|
|
167
235
|
# collection.create
|
|
168
236
|
#
|
|
237
|
+
# @param [ Hash ] opts The options for the create operation.
|
|
238
|
+
#
|
|
239
|
+
# @option opts [ Session ] :session The session to use for the operation.
|
|
240
|
+
# @option opts [ Hash ] :write_concern The write concern options.
|
|
241
|
+
# @option opts [ Hash ] :time_series Create a time-series collection.
|
|
242
|
+
# @option opts [ Integer ] :expire_after Number indicating
|
|
243
|
+
# after how many seconds old time-series data should be deleted.
|
|
244
|
+
#
|
|
169
245
|
# @return [ Result ] The result of the command.
|
|
170
246
|
#
|
|
171
247
|
# @since 2.0.0
|
|
172
|
-
def create
|
|
173
|
-
|
|
248
|
+
def create(opts = {})
|
|
249
|
+
# Passing read options to create command causes it to break.
|
|
250
|
+
# Filter the read options out.
|
|
251
|
+
# TODO put the list of read options in a class-level constant when
|
|
252
|
+
# we figure out what the full set of them is.
|
|
253
|
+
options = Hash[self.options.reject do |key, value|
|
|
254
|
+
%w(read read_preference read_concern).include?(key.to_s)
|
|
255
|
+
end]
|
|
256
|
+
options.update(Utils.slice_hash(opts, *TIME_SERIES_OPTIONS.keys))
|
|
257
|
+
# Converting Ruby spelled time series options to server style.
|
|
258
|
+
TIME_SERIES_OPTIONS.each do |ruby_key, server_key|
|
|
259
|
+
if options.key?(ruby_key)
|
|
260
|
+
options[server_key] = options.delete(ruby_key)
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
operation = { :create => name }.merge(options)
|
|
264
|
+
operation.delete(:write)
|
|
265
|
+
operation.delete(:write_concern)
|
|
266
|
+
client.send(:with_session, opts) do |session|
|
|
267
|
+
write_concern = if opts[:write_concern]
|
|
268
|
+
WriteConcern.get(opts[:write_concern])
|
|
269
|
+
else
|
|
270
|
+
self.write_concern
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
context = Operation::Context.new(client: client, session: session)
|
|
274
|
+
Operation::Create.new(
|
|
275
|
+
selector: operation,
|
|
276
|
+
db_name: database.name,
|
|
277
|
+
write_concern: write_concern,
|
|
278
|
+
session: session,
|
|
279
|
+
# Note that these are collection options, collation isn't
|
|
280
|
+
# taken from options passed to the create method.
|
|
281
|
+
collation: options[:collation] || options['collation'],
|
|
282
|
+
).execute(next_primary(nil, session), context: context)
|
|
283
|
+
end
|
|
174
284
|
end
|
|
175
285
|
|
|
176
286
|
# Drop the collection. Will also drop all indexes associated with the
|
|
@@ -181,14 +291,36 @@ module Mongo
|
|
|
181
291
|
# @example Drop the collection.
|
|
182
292
|
# collection.drop
|
|
183
293
|
#
|
|
294
|
+
# @param [ Hash ] opts The options for the drop operation.
|
|
295
|
+
#
|
|
296
|
+
# @option options [ Session ] :session The session to use for the operation.
|
|
297
|
+
# @option opts [ Hash ] :write_concern The write concern options.
|
|
298
|
+
#
|
|
184
299
|
# @return [ Result ] The result of the command.
|
|
185
300
|
#
|
|
186
301
|
# @since 2.0.0
|
|
187
|
-
def drop
|
|
188
|
-
|
|
302
|
+
def drop(opts = {})
|
|
303
|
+
client.send(:with_session, opts) do |session|
|
|
304
|
+
temp_write_concern = write_concern
|
|
305
|
+
write_concern = if opts[:write_concern]
|
|
306
|
+
WriteConcern.get(opts[:write_concern])
|
|
307
|
+
else
|
|
308
|
+
temp_write_concern
|
|
309
|
+
end
|
|
310
|
+
Operation::Drop.new({
|
|
311
|
+
selector: { :drop => name },
|
|
312
|
+
db_name: database.name,
|
|
313
|
+
write_concern: write_concern,
|
|
314
|
+
session: session,
|
|
315
|
+
}).execute(next_primary(nil, session), context: Operation::Context.new(client: client, session: session))
|
|
316
|
+
end
|
|
189
317
|
rescue Error::OperationFailure => ex
|
|
190
|
-
|
|
191
|
-
|
|
318
|
+
# NamespaceNotFound
|
|
319
|
+
if ex.code == 26 || ex.code.nil? && ex.message =~ /ns not found/
|
|
320
|
+
false
|
|
321
|
+
else
|
|
322
|
+
raise
|
|
323
|
+
end
|
|
192
324
|
end
|
|
193
325
|
|
|
194
326
|
# Find documents in the collection.
|
|
@@ -202,24 +334,30 @@ module Mongo
|
|
|
202
334
|
# @param [ Hash ] filter The filter to use in the find.
|
|
203
335
|
# @param [ Hash ] options The options for the find.
|
|
204
336
|
#
|
|
337
|
+
# @option options [ true, false ] :allow_disk_use When set to true, the
|
|
338
|
+
# server can write temporary data to disk while executing the find
|
|
339
|
+
# operation. This option is only available on MongoDB server versions
|
|
340
|
+
# 4.4 and newer.
|
|
205
341
|
# @option options [ true, false ] :allow_partial_results Allows the query to get partial
|
|
206
342
|
# results if some shards are down.
|
|
207
343
|
# @option options [ Integer ] :batch_size The number of documents returned in each batch
|
|
208
344
|
# of results from MongoDB.
|
|
345
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
209
346
|
# @option options [ String ] :comment Associate a comment with the query.
|
|
210
347
|
# @option options [ :tailable, :tailable_await ] :cursor_type The type of cursor to use.
|
|
211
348
|
# @option options [ Integer ] :limit The max number of docs to return from the query.
|
|
212
|
-
# @option options [ Integer ] :max_time_ms
|
|
213
|
-
# to run in milliseconds.
|
|
349
|
+
# @option options [ Integer ] :max_time_ms
|
|
350
|
+
# The maximum amount of time to allow the query to run, in milliseconds.
|
|
214
351
|
# @option options [ Hash ] :modifiers A document containing meta-operators modifying the
|
|
215
352
|
# output or behavior of a query.
|
|
216
353
|
# @option options [ true, false ] :no_cursor_timeout The server normally times out idle
|
|
217
354
|
# cursors after an inactivity period (10 minutes) to prevent excess memory use.
|
|
218
355
|
# Set this option to prevent that.
|
|
219
|
-
# @option options [ true, false ] :oplog_replay
|
|
220
|
-
# should not set.
|
|
356
|
+
# @option options [ true, false ] :oplog_replay For internal replication
|
|
357
|
+
# use only, applications should not set this option.
|
|
221
358
|
# @option options [ Hash ] :projection The fields to include or exclude from each doc
|
|
222
359
|
# in the result set.
|
|
360
|
+
# @option options [ Session ] :session The session to use.
|
|
223
361
|
# @option options [ Integer ] :skip The number of docs to skip before returning results.
|
|
224
362
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
|
225
363
|
# will be sorted.
|
|
@@ -239,24 +377,71 @@ module Mongo
|
|
|
239
377
|
# @param [ Array<Hash> ] pipeline The aggregation pipeline.
|
|
240
378
|
# @param [ Hash ] options The aggregation options.
|
|
241
379
|
#
|
|
242
|
-
# @option options [ true, false ] :allow_disk_use Set to true if disk
|
|
243
|
-
# the aggregation.
|
|
244
|
-
# @option options [ Integer ] :batch_size The number of documents to return
|
|
245
|
-
#
|
|
246
|
-
# aggregation to run.
|
|
247
|
-
# @option options [ true, false ] :use_cursor Indicates whether the command will request that the server
|
|
248
|
-
# provide results using a cursor.
|
|
380
|
+
# @option options [ true, false ] :allow_disk_use Set to true if disk
|
|
381
|
+
# usage is allowed during the aggregation.
|
|
382
|
+
# @option options [ Integer ] :batch_size The number of documents to return
|
|
383
|
+
# per batch.
|
|
249
384
|
# @option options [ true, false ] :bypass_document_validation Whether or
|
|
250
385
|
# not to skip document level validation.
|
|
386
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
387
|
+
# @option options [ String ] :comment Associate a comment with the aggregation.
|
|
388
|
+
# @option options [ String ] :hint The index to use for the aggregation.
|
|
389
|
+
# @option options [ Integer ] :max_time_ms The maximum amount of time in
|
|
390
|
+
# milliseconds to allow the aggregation to run.
|
|
391
|
+
# @option options [ true, false ] :use_cursor Indicates whether the command
|
|
392
|
+
# will request that the server provide results using a cursor. Note that
|
|
393
|
+
# as of server version 3.6, aggregations always provide results using a
|
|
394
|
+
# cursor and this option is therefore not valid.
|
|
395
|
+
# @option options [ Session ] :session The session to use.
|
|
251
396
|
#
|
|
252
397
|
# @return [ Aggregation ] The aggregation object.
|
|
253
398
|
#
|
|
254
399
|
# @since 2.1.0
|
|
255
400
|
def aggregate(pipeline, options = {})
|
|
256
|
-
View.new(self, {}).aggregate(pipeline, options)
|
|
401
|
+
View.new(self, {}, options).aggregate(pipeline, options)
|
|
402
|
+
end
|
|
403
|
+
|
|
404
|
+
# As of version 3.6 of the MongoDB server, a ``$changeStream`` pipeline
|
|
405
|
+
# stage is supported in the aggregation framework. This stage allows users
|
|
406
|
+
# to request that notifications are sent for all changes to a particular
|
|
407
|
+
# collection.
|
|
408
|
+
#
|
|
409
|
+
# @example Get change notifications for a given collection.
|
|
410
|
+
# collection.watch([{ '$match' => { operationType: { '$in' => ['insert', 'replace'] } } }])
|
|
411
|
+
#
|
|
412
|
+
# @param [ Array<Hash> ] pipeline Optional additional filter operators.
|
|
413
|
+
# @param [ Hash ] options The change stream options.
|
|
414
|
+
#
|
|
415
|
+
# @option options [ String ] :full_document Allowed values: ‘default’,
|
|
416
|
+
# ‘updateLookup’. Defaults to ‘default’. When set to ‘updateLookup’,
|
|
417
|
+
# the change notification for partial updates will include both a delta
|
|
418
|
+
# describing the changes to the document, as well as a copy of the entire
|
|
419
|
+
# document that was changed from some time after the change occurred.
|
|
420
|
+
# @option options [ BSON::Document, Hash ] :resume_after Specifies the
|
|
421
|
+
# logical starting point for the new change stream.
|
|
422
|
+
# @option options [ Integer ] :max_await_time_ms The maximum amount of time
|
|
423
|
+
# for the server to wait on new documents to satisfy a change stream query.
|
|
424
|
+
# @option options [ Integer ] :batch_size The number of documents to return
|
|
425
|
+
# per batch.
|
|
426
|
+
# @option options [ BSON::Document, Hash ] :collation The collation to use.
|
|
427
|
+
# @option options [ Session ] :session The session to use.
|
|
428
|
+
# @option options [ BSON::Timestamp ] :start_at_operation_time Only return
|
|
429
|
+
# changes that occurred at or after the specified timestamp. Any command run
|
|
430
|
+
# against the server will return a cluster time that can be used here.
|
|
431
|
+
# Only recognized by server versions 4.0+.
|
|
432
|
+
#
|
|
433
|
+
# @note A change stream only allows 'majority' read concern.
|
|
434
|
+
# @note This helper method is preferable to running a raw aggregation with
|
|
435
|
+
# a $changeStream stage, for the purpose of supporting resumability.
|
|
436
|
+
#
|
|
437
|
+
# @return [ ChangeStream ] The change stream object.
|
|
438
|
+
#
|
|
439
|
+
# @since 2.5.0
|
|
440
|
+
def watch(pipeline = [], options = {})
|
|
441
|
+
View::ChangeStream.new(View.new(self, {}, options), pipeline, nil, options)
|
|
257
442
|
end
|
|
258
443
|
|
|
259
|
-
#
|
|
444
|
+
# Gets an estimated number of matching documents in the collection.
|
|
260
445
|
#
|
|
261
446
|
# @example Get the count.
|
|
262
447
|
# collection.count(name: 1)
|
|
@@ -269,12 +454,66 @@ module Mongo
|
|
|
269
454
|
# @option options [ Integer ] :max_time_ms The maximum amount of time to allow the command to run.
|
|
270
455
|
# @option options [ Integer ] :skip The number of documents to skip before counting.
|
|
271
456
|
# @option options [ Hash ] :read The read preference options.
|
|
457
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
458
|
+
# @option options [ Session ] :session The session to use.
|
|
272
459
|
#
|
|
273
460
|
# @return [ Integer ] The document count.
|
|
274
461
|
#
|
|
275
462
|
# @since 2.1.0
|
|
463
|
+
#
|
|
464
|
+
# @deprecated Use #count_documents or estimated_document_count instead. However, note that the
|
|
465
|
+
# following operators will need to be substituted when switching to #count_documents:
|
|
466
|
+
# * $where should be replaced with $expr (only works on 3.6+)
|
|
467
|
+
# * $near should be replaced with $geoWithin with $center
|
|
468
|
+
# * $nearSphere should be replaced with $geoWithin with $centerSphere
|
|
276
469
|
def count(filter = nil, options = {})
|
|
277
|
-
View.new(self, filter || {}).count(options)
|
|
470
|
+
View.new(self, filter || {}, options).count(options)
|
|
471
|
+
end
|
|
472
|
+
|
|
473
|
+
# Gets the number of documents matching the query. Unlike the deprecated
|
|
474
|
+
# #count method, this will return the exact number of documents matching
|
|
475
|
+
# the filter (or exact number of documents in the collection, if no filter
|
|
476
|
+
# is provided) rather than an estimate.
|
|
477
|
+
#
|
|
478
|
+
# Use #estimated_document_count to retrieve an estimate of the number
|
|
479
|
+
# of documents in the collection using the collection metadata.
|
|
480
|
+
#
|
|
481
|
+
# @param [ Hash ] filter A filter for matching documents.
|
|
482
|
+
# @param [ Hash ] options Options for the operation.
|
|
483
|
+
#
|
|
484
|
+
# @option options :skip [ Integer ] The number of documents to skip.
|
|
485
|
+
# @option options :hint [ Hash ] Override default index selection and force
|
|
486
|
+
# MongoDB to use a specific index for the query. Requires server version 3.6+.
|
|
487
|
+
# @option options :limit [ Integer ] Max number of docs to count.
|
|
488
|
+
# @option options :max_time_ms [ Integer ] The maximum amount of time to allow the
|
|
489
|
+
# command to run.
|
|
490
|
+
# @option options :read [ Hash ] The read preference options.
|
|
491
|
+
# @option options :collation [ Hash ] The collation to use.
|
|
492
|
+
#
|
|
493
|
+
# @return [ Integer ] The document count.
|
|
494
|
+
#
|
|
495
|
+
# @since 2.6.0
|
|
496
|
+
def count_documents(filter = {}, options = {})
|
|
497
|
+
View.new(self, filter, options).count_documents(options)
|
|
498
|
+
end
|
|
499
|
+
|
|
500
|
+
# Gets an estimate of the number of documents in the collection using the
|
|
501
|
+
# collection metadata.
|
|
502
|
+
#
|
|
503
|
+
# Use #count_documents to retrieve the exact number of documents in the
|
|
504
|
+
# collection, or to count documents matching a filter.
|
|
505
|
+
#
|
|
506
|
+
# @param [ Hash ] options Options for the operation.
|
|
507
|
+
#
|
|
508
|
+
# @option opts :max_time_ms [ Integer ] The maximum amount of time to allow
|
|
509
|
+
# the command to run for on the server.
|
|
510
|
+
# @option opts [ Hash ] :read The read preference options.
|
|
511
|
+
#
|
|
512
|
+
# @return [ Integer ] The document count.
|
|
513
|
+
#
|
|
514
|
+
# @since 2.6.0
|
|
515
|
+
def estimated_document_count(options = {})
|
|
516
|
+
View.new(self, {}, options).estimated_document_count(options)
|
|
278
517
|
end
|
|
279
518
|
|
|
280
519
|
# Get a list of distinct values for a specific field.
|
|
@@ -288,12 +527,14 @@ module Mongo
|
|
|
288
527
|
#
|
|
289
528
|
# @option options [ Integer ] :max_time_ms The maximum amount of time to allow the command to run.
|
|
290
529
|
# @option options [ Hash ] :read The read preference options.
|
|
530
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
531
|
+
# @option options [ Session ] :session The session to use.
|
|
291
532
|
#
|
|
292
533
|
# @return [ Array<Object> ] The list of distinct values.
|
|
293
534
|
#
|
|
294
535
|
# @since 2.1.0
|
|
295
536
|
def distinct(field_name, filter = nil, options = {})
|
|
296
|
-
View.new(self, filter || {}).distinct(field_name, options)
|
|
537
|
+
View.new(self, filter || {}, options).distinct(field_name, options)
|
|
297
538
|
end
|
|
298
539
|
|
|
299
540
|
# Get a view of all indexes for this collection. Can be iterated or has
|
|
@@ -304,6 +545,8 @@ module Mongo
|
|
|
304
545
|
#
|
|
305
546
|
# @param [ Hash ] options Options for getting a list of all indexes.
|
|
306
547
|
#
|
|
548
|
+
# @option options [ Session ] :session The session to use.
|
|
549
|
+
#
|
|
307
550
|
# @return [ View::Index ] The index view.
|
|
308
551
|
#
|
|
309
552
|
# @since 2.0.0
|
|
@@ -329,22 +572,40 @@ module Mongo
|
|
|
329
572
|
# collection.insert_one({ name: 'test' })
|
|
330
573
|
#
|
|
331
574
|
# @param [ Hash ] document The document to insert.
|
|
332
|
-
# @param [ Hash ]
|
|
575
|
+
# @param [ Hash ] opts The insert options.
|
|
576
|
+
#
|
|
577
|
+
# @option opts [ Session ] :session The session to use for the operation.
|
|
333
578
|
#
|
|
334
579
|
# @return [ Result ] The database response wrapper.
|
|
335
580
|
#
|
|
336
581
|
# @since 2.0.0
|
|
337
|
-
def insert_one(document,
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
:
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
582
|
+
def insert_one(document, opts = {})
|
|
583
|
+
QueryCache.clear_namespace(namespace)
|
|
584
|
+
|
|
585
|
+
client.send(:with_session, opts) do |session|
|
|
586
|
+
write_concern = if opts[:write_concern]
|
|
587
|
+
WriteConcern.get(opts[:write_concern])
|
|
588
|
+
else
|
|
589
|
+
write_concern_with_session(session)
|
|
590
|
+
end
|
|
591
|
+
|
|
592
|
+
if document.nil?
|
|
593
|
+
raise ArgumentError, "Document to be inserted cannot be nil"
|
|
594
|
+
end
|
|
595
|
+
|
|
596
|
+
write_with_retry(session, write_concern) do |server, txn_num|
|
|
597
|
+
Operation::Insert.new(
|
|
598
|
+
:documents => [ document ],
|
|
599
|
+
:db_name => database.name,
|
|
600
|
+
:coll_name => name,
|
|
601
|
+
:write_concern => write_concern,
|
|
602
|
+
:bypass_document_validation => !!opts[:bypass_document_validation],
|
|
603
|
+
:options => opts,
|
|
604
|
+
:id_generator => client.options[:id_generator],
|
|
605
|
+
:session => session,
|
|
606
|
+
:txn_num => txn_num,
|
|
607
|
+
).execute(server, context: Operation::Context.new(client: client, session: session))
|
|
608
|
+
end
|
|
348
609
|
end
|
|
349
610
|
end
|
|
350
611
|
|
|
@@ -356,10 +617,16 @@ module Mongo
|
|
|
356
617
|
# @param [ Array<Hash> ] documents The documents to insert.
|
|
357
618
|
# @param [ Hash ] options The insert options.
|
|
358
619
|
#
|
|
620
|
+
# @option options [ true | false ] :ordered Whether the operations
|
|
621
|
+
# should be executed in order.
|
|
622
|
+
# @option options [ Session ] :session The session to use for the operation.
|
|
623
|
+
#
|
|
359
624
|
# @return [ Result ] The database response wrapper.
|
|
360
625
|
#
|
|
361
626
|
# @since 2.0.0
|
|
362
627
|
def insert_many(documents, options = {})
|
|
628
|
+
QueryCache.clear_namespace(namespace)
|
|
629
|
+
|
|
363
630
|
inserts = documents.map{ |doc| { :insert_one => doc }}
|
|
364
631
|
bulk_write(inserts, options)
|
|
365
632
|
end
|
|
@@ -378,6 +645,7 @@ module Mongo
|
|
|
378
645
|
# Can be :w => Integer, :fsync => Boolean, :j => Boolean.
|
|
379
646
|
# @option options [ true, false ] :bypass_document_validation Whether or
|
|
380
647
|
# not to skip document level validation.
|
|
648
|
+
# @option options [ Session ] :session The session to use for the set of operations.
|
|
381
649
|
#
|
|
382
650
|
# @return [ BulkWrite::Result ] The result of the operation.
|
|
383
651
|
#
|
|
@@ -392,12 +660,18 @@ module Mongo
|
|
|
392
660
|
# collection.delete_one
|
|
393
661
|
#
|
|
394
662
|
# @param [ Hash ] filter The filter to use.
|
|
663
|
+
# @param [ Hash ] options The options.
|
|
664
|
+
#
|
|
665
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
666
|
+
# @option options [ Session ] :session The session to use.
|
|
667
|
+
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
668
|
+
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
395
669
|
#
|
|
396
670
|
# @return [ Result ] The response from the database.
|
|
397
671
|
#
|
|
398
672
|
# @since 2.1.0
|
|
399
|
-
def delete_one(filter = nil)
|
|
400
|
-
find(filter).delete_one
|
|
673
|
+
def delete_one(filter = nil, options = {})
|
|
674
|
+
find(filter, options).delete_one(options)
|
|
401
675
|
end
|
|
402
676
|
|
|
403
677
|
# Remove documents from the collection.
|
|
@@ -406,12 +680,18 @@ module Mongo
|
|
|
406
680
|
# collection.delete_many
|
|
407
681
|
#
|
|
408
682
|
# @param [ Hash ] filter The filter to use.
|
|
683
|
+
# @param [ Hash ] options The options.
|
|
684
|
+
#
|
|
685
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
686
|
+
# @option options [ Session ] :session The session to use.
|
|
687
|
+
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
688
|
+
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
409
689
|
#
|
|
410
690
|
# @return [ Result ] The response from the database.
|
|
411
691
|
#
|
|
412
692
|
# @since 2.1.0
|
|
413
|
-
def delete_many(filter = nil)
|
|
414
|
-
find(filter).delete_many
|
|
693
|
+
def delete_many(filter = nil, options = {})
|
|
694
|
+
find(filter, options).delete_many(options)
|
|
415
695
|
end
|
|
416
696
|
|
|
417
697
|
# Execute a parallel scan on the collection view.
|
|
@@ -424,12 +704,17 @@ module Mongo
|
|
|
424
704
|
# collection.parallel_scan(2)
|
|
425
705
|
#
|
|
426
706
|
# @param [ Integer ] cursor_count The max number of cursors to return.
|
|
707
|
+
# @param [ Hash ] options The parallel scan command options.
|
|
708
|
+
#
|
|
709
|
+
# @option options [ Integer ] :max_time_ms The maximum amount of time to allow the command
|
|
710
|
+
# to run in milliseconds.
|
|
711
|
+
# @option options [ Session ] :session The session to use.
|
|
427
712
|
#
|
|
428
713
|
# @return [ Array<Cursor> ] An array of cursors.
|
|
429
714
|
#
|
|
430
715
|
# @since 2.1
|
|
431
|
-
def parallel_scan(cursor_count)
|
|
432
|
-
find.send(:parallel_scan, cursor_count)
|
|
716
|
+
def parallel_scan(cursor_count, options = {})
|
|
717
|
+
find({}, options).send(:parallel_scan, cursor_count, options)
|
|
433
718
|
end
|
|
434
719
|
|
|
435
720
|
# Replaces a single document in the collection with the new document.
|
|
@@ -445,12 +730,16 @@ module Mongo
|
|
|
445
730
|
# document doesn't exist.
|
|
446
731
|
# @option options [ true, false ] :bypass_document_validation Whether or
|
|
447
732
|
# not to skip document level validation.
|
|
733
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
734
|
+
# @option options [ Session ] :session The session to use.
|
|
735
|
+
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
736
|
+
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
448
737
|
#
|
|
449
738
|
# @return [ Result ] The response from the database.
|
|
450
739
|
#
|
|
451
740
|
# @since 2.1.0
|
|
452
741
|
def replace_one(filter, replacement, options = {})
|
|
453
|
-
find(filter).replace_one(replacement, options)
|
|
742
|
+
find(filter, options).replace_one(replacement, options)
|
|
454
743
|
end
|
|
455
744
|
|
|
456
745
|
# Update documents in the collection.
|
|
@@ -459,19 +748,25 @@ module Mongo
|
|
|
459
748
|
# collection.update_many({ name: 'test'}, '$set' => { name: 'test1' })
|
|
460
749
|
#
|
|
461
750
|
# @param [ Hash ] filter The filter to use.
|
|
462
|
-
# @param [ Hash ] update The update
|
|
751
|
+
# @param [ Hash | Array<Hash> ] update The update document or pipeline.
|
|
463
752
|
# @param [ Hash ] options The options.
|
|
464
753
|
#
|
|
465
754
|
# @option options [ true, false ] :upsert Whether to upsert if the
|
|
466
755
|
# document doesn't exist.
|
|
467
756
|
# @option options [ true, false ] :bypass_document_validation Whether or
|
|
468
757
|
# not to skip document level validation.
|
|
758
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
759
|
+
# @option options [ Array ] :array_filters A set of filters specifying to which array elements
|
|
760
|
+
# an update should apply.
|
|
761
|
+
# @option options [ Session ] :session The session to use.
|
|
762
|
+
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
763
|
+
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
469
764
|
#
|
|
470
765
|
# @return [ Result ] The response from the database.
|
|
471
766
|
#
|
|
472
767
|
# @since 2.1.0
|
|
473
768
|
def update_many(filter, update, options = {})
|
|
474
|
-
find(filter).update_many(update, options)
|
|
769
|
+
find(filter, options).update_many(update, options)
|
|
475
770
|
end
|
|
476
771
|
|
|
477
772
|
# Update a single document in the collection.
|
|
@@ -480,19 +775,25 @@ module Mongo
|
|
|
480
775
|
# collection.update_one({ name: 'test'}, '$set' => { name: 'test1'})
|
|
481
776
|
#
|
|
482
777
|
# @param [ Hash ] filter The filter to use.
|
|
483
|
-
# @param [ Hash ] update The update
|
|
778
|
+
# @param [ Hash | Array<Hash> ] update The update document or pipeline.
|
|
484
779
|
# @param [ Hash ] options The options.
|
|
485
780
|
#
|
|
486
781
|
# @option options [ true, false ] :upsert Whether to upsert if the
|
|
487
782
|
# document doesn't exist.
|
|
488
783
|
# @option options [ true, false ] :bypass_document_validation Whether or
|
|
489
784
|
# not to skip document level validation.
|
|
785
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
786
|
+
# @option options [ Array ] :array_filters A set of filters specifying to which array elements
|
|
787
|
+
# an update should apply.
|
|
788
|
+
# @option options [ Session ] :session The session to use.
|
|
789
|
+
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
790
|
+
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
490
791
|
#
|
|
491
792
|
# @return [ Result ] The response from the database.
|
|
492
793
|
#
|
|
493
794
|
# @since 2.1.0
|
|
494
795
|
def update_one(filter, update, options = {})
|
|
495
|
-
find(filter).update_one(update, options)
|
|
796
|
+
find(filter, options).update_one(update, options)
|
|
496
797
|
end
|
|
497
798
|
|
|
498
799
|
# Finds a single document in the database via findAndModify and deletes
|
|
@@ -511,12 +812,16 @@ module Mongo
|
|
|
511
812
|
# will be sorted.
|
|
512
813
|
# @option options [ Hash ] :write_concern The write concern options.
|
|
513
814
|
# Defaults to the collection's write concern.
|
|
815
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
816
|
+
# @option options [ Session ] :session The session to use.
|
|
817
|
+
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
818
|
+
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
514
819
|
#
|
|
515
820
|
# @return [ BSON::Document, nil ] The document, if found.
|
|
516
821
|
#
|
|
517
822
|
# @since 2.1.0
|
|
518
823
|
def find_one_and_delete(filter, options = {})
|
|
519
|
-
find(filter, options).find_one_and_delete
|
|
824
|
+
find(filter, options).find_one_and_delete(options)
|
|
520
825
|
end
|
|
521
826
|
|
|
522
827
|
# Finds a single document via findAndModify and updates it, returning the original doc unless
|
|
@@ -529,7 +834,7 @@ module Mongo
|
|
|
529
834
|
# collection.find_one_and_update({ name: 'test' }, { "$set" => { name: 'test1' }}, :return_document => :after)
|
|
530
835
|
#
|
|
531
836
|
# @param [ Hash ] filter The filter to use.
|
|
532
|
-
# @param [
|
|
837
|
+
# @param [ Hash | Array<Hash> ] update The update document or pipeline.
|
|
533
838
|
# @param [ Hash ] options The options.
|
|
534
839
|
#
|
|
535
840
|
# @option options [ Integer ] :max_time_ms The maximum amount of time to allow the command
|
|
@@ -543,6 +848,12 @@ module Mongo
|
|
|
543
848
|
# not to skip document level validation.
|
|
544
849
|
# @option options [ Hash ] :write_concern The write concern options.
|
|
545
850
|
# Defaults to the collection's write concern.
|
|
851
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
852
|
+
# @option options [ Array ] :array_filters A set of filters specifying to which array elements
|
|
853
|
+
# an update should apply.
|
|
854
|
+
# @option options [ Session ] :session The session to use.
|
|
855
|
+
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
856
|
+
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
546
857
|
#
|
|
547
858
|
# @return [ BSON::Document ] The document.
|
|
548
859
|
#
|
|
@@ -575,6 +886,10 @@ module Mongo
|
|
|
575
886
|
# not to skip document level validation.
|
|
576
887
|
# @option options [ Hash ] :write_concern The write concern options.
|
|
577
888
|
# Defaults to the collection's write concern.
|
|
889
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
890
|
+
# @option options [ Session ] :session The session to use.
|
|
891
|
+
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
892
|
+
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
578
893
|
#
|
|
579
894
|
# @return [ BSON::Document ] The document.
|
|
580
895
|
#
|
|
@@ -594,5 +909,14 @@ module Mongo
|
|
|
594
909
|
def namespace
|
|
595
910
|
"#{database.name}.#{name}"
|
|
596
911
|
end
|
|
912
|
+
|
|
913
|
+
# Whether the collection is a system collection.
|
|
914
|
+
#
|
|
915
|
+
# @return [ Boolean ] Whether the system is a system collection.
|
|
916
|
+
#
|
|
917
|
+
# @api private
|
|
918
|
+
def system_collection?
|
|
919
|
+
name.start_with?('system.')
|
|
920
|
+
end
|
|
597
921
|
end
|
|
598
922
|
end
|