mongo 2.13.0 → 2.15.0.alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +1 -4
- data.tar.gz.sig +0 -0
- data/README.md +4 -1
- data/Rakefile +46 -18
- data/lib/mongo.rb +32 -0
- data/lib/mongo/address.rb +1 -1
- data/lib/mongo/address/ipv4.rb +1 -1
- data/lib/mongo/address/ipv6.rb +1 -1
- data/lib/mongo/auth/aws/conversation.rb +1 -4
- data/lib/mongo/auth/base.rb +13 -7
- data/lib/mongo/auth/conversation_base.rb +32 -0
- data/lib/mongo/auth/cr/conversation.rb +6 -29
- data/lib/mongo/auth/gssapi/conversation.rb +4 -15
- data/lib/mongo/auth/ldap/conversation.rb +3 -14
- data/lib/mongo/auth/sasl_conversation_base.rb +1 -13
- data/lib/mongo/auth/scram_conversation_base.rb +7 -34
- data/lib/mongo/auth/user/view.rb +16 -9
- data/lib/mongo/auth/x509/conversation.rb +4 -25
- data/lib/mongo/background_thread.rb +11 -0
- data/lib/mongo/bulk_write.rb +38 -18
- data/lib/mongo/caching_cursor.rb +74 -0
- data/lib/mongo/client.rb +142 -16
- data/lib/mongo/cluster.rb +22 -31
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +6 -2
- data/lib/mongo/cluster/sdam_flow.rb +14 -0
- data/lib/mongo/cluster/topology/single.rb +1 -1
- data/lib/mongo/collection.rb +58 -18
- data/lib/mongo/collection/view.rb +24 -20
- data/lib/mongo/collection/view/aggregation.rb +26 -5
- data/lib/mongo/collection/view/builder/find_command.rb +38 -18
- data/lib/mongo/collection/view/change_stream.rb +1 -1
- data/lib/mongo/collection/view/explainable.rb +27 -8
- data/lib/mongo/collection/view/iterable.rb +73 -13
- data/lib/mongo/collection/view/map_reduce.rb +2 -2
- data/lib/mongo/collection/view/readable.rb +57 -21
- data/lib/mongo/collection/view/writable.rb +29 -15
- data/lib/mongo/crypt/encryption_io.rb +6 -6
- data/lib/mongo/cursor.rb +18 -5
- data/lib/mongo/database.rb +28 -5
- data/lib/mongo/database/view.rb +2 -2
- data/lib/mongo/error.rb +11 -1
- data/lib/mongo/error/bulk_write_error.rb +17 -3
- data/lib/mongo/error/internal_driver_error.rb +22 -0
- data/lib/mongo/error/invalid_read_concern.rb +28 -0
- data/lib/mongo/error/operation_failure.rb +26 -7
- data/lib/mongo/error/parser.rb +65 -12
- data/lib/mongo/error/server_api_conflict.rb +23 -0
- data/lib/mongo/error/server_api_not_supported.rb +24 -0
- data/lib/mongo/error/server_certificate_revoked.rb +22 -0
- data/lib/mongo/error/unmet_dependency.rb +21 -0
- data/lib/mongo/error/unsupported_option.rb +14 -12
- data/lib/mongo/grid/fs_bucket.rb +37 -37
- data/lib/mongo/index/view.rb +21 -11
- data/lib/mongo/lint.rb +2 -1
- data/lib/mongo/logger.rb +3 -3
- data/lib/mongo/monitoring.rb +13 -4
- data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +27 -16
- data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +26 -15
- data/lib/mongo/operation.rb +4 -2
- data/lib/mongo/operation/aggregate/result.rb +9 -8
- data/lib/mongo/operation/collections_info.rb +18 -1
- data/lib/mongo/operation/collections_info/command.rb +5 -0
- data/lib/mongo/operation/collections_info/result.rb +18 -1
- data/lib/mongo/operation/context.rb +99 -0
- data/lib/mongo/operation/delete/bulk_result.rb +2 -0
- data/lib/mongo/operation/delete/result.rb +3 -0
- data/lib/mongo/operation/explain/command.rb +4 -0
- data/lib/mongo/operation/explain/legacy.rb +4 -0
- data/lib/mongo/operation/explain/op_msg.rb +6 -0
- data/lib/mongo/operation/explain/result.rb +3 -0
- data/lib/mongo/operation/find/legacy/result.rb +2 -0
- data/lib/mongo/operation/find/result.rb +13 -0
- data/lib/mongo/operation/get_more/result.rb +3 -0
- data/lib/mongo/operation/indexes.rb +15 -1
- data/lib/mongo/operation/indexes/result.rb +5 -0
- data/lib/mongo/operation/insert/bulk_result.rb +5 -0
- data/lib/mongo/operation/insert/command.rb +2 -2
- data/lib/mongo/operation/insert/legacy.rb +2 -2
- data/lib/mongo/operation/insert/op_msg.rb +2 -2
- data/lib/mongo/operation/insert/result.rb +5 -0
- data/lib/mongo/operation/list_collections/result.rb +9 -1
- data/lib/mongo/operation/map_reduce/result.rb +10 -0
- data/lib/mongo/operation/parallel_scan/result.rb +4 -0
- data/lib/mongo/operation/result.rb +37 -6
- data/lib/mongo/operation/shared/bypass_document_validation.rb +1 -0
- data/lib/mongo/operation/shared/causal_consistency_supported.rb +1 -0
- data/lib/mongo/operation/shared/executable.rb +25 -14
- data/lib/mongo/operation/shared/executable_no_validate.rb +2 -2
- data/lib/mongo/operation/shared/idable.rb +2 -1
- data/lib/mongo/operation/shared/limited.rb +1 -0
- data/lib/mongo/operation/shared/object_id_generator.rb +1 -0
- data/lib/mongo/operation/shared/op_msg_or_command.rb +1 -7
- data/lib/mongo/operation/shared/op_msg_or_find_command.rb +1 -7
- data/lib/mongo/operation/shared/polymorphic_operation.rb +39 -0
- data/lib/mongo/operation/shared/response_handling.rb +23 -23
- data/lib/mongo/operation/shared/result/aggregatable.rb +1 -0
- data/lib/mongo/operation/shared/sessions_supported.rb +14 -2
- data/lib/mongo/operation/shared/specifiable.rb +1 -0
- data/lib/mongo/operation/shared/write.rb +9 -18
- data/lib/mongo/operation/shared/write_concern_supported.rb +1 -0
- data/lib/mongo/operation/update/legacy/result.rb +7 -0
- data/lib/mongo/operation/update/result.rb +8 -0
- data/lib/mongo/operation/users_info/result.rb +3 -0
- data/lib/mongo/protocol/compressed.rb +51 -5
- data/lib/mongo/protocol/message.rb +31 -4
- data/lib/mongo/protocol/msg.rb +37 -12
- data/lib/mongo/protocol/query.rb +36 -0
- data/lib/mongo/query_cache.rb +272 -0
- data/lib/mongo/retryable.rb +9 -2
- data/lib/mongo/server.rb +12 -16
- data/lib/mongo/server/app_metadata.rb +52 -18
- data/lib/mongo/server/connection.rb +5 -0
- data/lib/mongo/server/connection_base.rb +16 -15
- data/lib/mongo/server/connection_common.rb +2 -2
- data/lib/mongo/server/connection_pool.rb +9 -4
- data/lib/mongo/server/description.rb +12 -1
- data/lib/mongo/server/description/features.rb +9 -8
- data/lib/mongo/server/monitor.rb +21 -2
- data/lib/mongo/server/monitor/app_metadata.rb +1 -1
- data/lib/mongo/server/monitor/connection.rb +12 -13
- data/lib/mongo/server/pending_connection.rb +26 -8
- data/lib/mongo/server/push_monitor.rb +12 -2
- data/lib/mongo/server_selector/base.rb +5 -1
- data/lib/mongo/session.rb +7 -3
- data/lib/mongo/session/session_pool.rb +4 -2
- data/lib/mongo/socket.rb +35 -8
- data/lib/mongo/socket/ocsp_cache.rb +97 -0
- data/lib/mongo/socket/ocsp_verifier.rb +368 -0
- data/lib/mongo/socket/ssl.rb +53 -24
- data/lib/mongo/srv/monitor.rb +7 -24
- data/lib/mongo/srv/resolver.rb +14 -10
- data/lib/mongo/timeout.rb +2 -0
- data/lib/mongo/uri.rb +21 -390
- data/lib/mongo/uri/options_mapper.rb +620 -0
- data/lib/mongo/uri/srv_protocol.rb +3 -2
- data/lib/mongo/utils.rb +27 -1
- data/lib/mongo/version.rb +1 -1
- data/spec/NOTES.aws-auth.md +12 -7
- data/spec/README.md +87 -2
- data/spec/integration/auth_spec.rb +25 -15
- data/spec/integration/bson_symbol_spec.rb +4 -2
- data/spec/integration/bulk_write_error_message_spec.rb +41 -0
- data/spec/integration/bulk_write_spec.rb +48 -0
- data/spec/integration/change_stream_spec.rb +5 -5
- data/spec/integration/client_authentication_options_spec.rb +92 -28
- data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +6 -2
- data/spec/integration/command_monitoring_spec.rb +2 -2
- data/spec/integration/connection_pool_populator_spec.rb +4 -2
- data/spec/integration/connection_spec.rb +2 -0
- data/spec/integration/cursor_reaping_spec.rb +54 -18
- data/spec/integration/docs_examples_spec.rb +8 -1
- data/spec/integration/fork_reconnect_spec.rb +60 -2
- data/spec/integration/ocsp_connectivity_spec.rb +26 -0
- data/spec/integration/ocsp_verifier_cache_spec.rb +188 -0
- data/spec/integration/ocsp_verifier_spec.rb +340 -0
- data/spec/integration/operation_failure_code_spec.rb +1 -1
- data/spec/integration/operation_failure_message_spec.rb +90 -0
- data/spec/integration/query_cache_spec.rb +1045 -0
- data/spec/integration/query_cache_transactions_spec.rb +190 -0
- data/spec/integration/reconnect_spec.rb +1 -1
- data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +1 -0
- data/spec/integration/retryable_writes/shared/performs_legacy_retries.rb +2 -0
- data/spec/integration/sdam_error_handling_spec.rb +86 -1
- data/spec/integration/sdam_events_spec.rb +8 -7
- data/spec/integration/server_selection_spec.rb +36 -0
- data/spec/integration/size_limit_spec.rb +20 -19
- data/spec/integration/snappy_compression_spec.rb +25 -0
- data/spec/integration/srv_monitoring_spec.rb +39 -4
- data/spec/integration/srv_spec.rb +56 -0
- data/spec/integration/transactions_examples_spec.rb +23 -7
- data/spec/integration/zlib_compression_spec.rb +1 -1
- data/spec/integration/zstd_compression_spec.rb +26 -0
- data/spec/lite_spec_helper.rb +15 -5
- data/spec/mongo/address_spec.rb +16 -12
- data/spec/mongo/auth/ldap/conversation_spec.rb +1 -1
- data/spec/mongo/auth/ldap_spec.rb +5 -1
- data/spec/mongo/auth/scram_negotiation_spec.rb +1 -1
- data/spec/mongo/auth/scram_spec.rb +1 -1
- data/spec/mongo/auth/user_spec.rb +1 -1
- data/spec/mongo/auth/x509/conversation_spec.rb +3 -3
- data/spec/mongo/bulk_write_spec.rb +2 -2
- data/spec/mongo/caching_cursor_spec.rb +70 -0
- data/spec/mongo/client_construction_spec.rb +273 -35
- data/spec/mongo/client_encryption_spec.rb +16 -10
- data/spec/mongo/client_spec.rb +64 -0
- data/spec/mongo/cluster/topology/replica_set_spec.rb +1 -1
- data/spec/mongo/cluster/topology/sharded_spec.rb +1 -1
- data/spec/mongo/cluster/topology/single_spec.rb +15 -6
- data/spec/mongo/cluster/topology/unknown_spec.rb +1 -1
- data/spec/mongo/cluster/topology_spec.rb +1 -1
- data/spec/mongo/cluster_spec.rb +6 -18
- data/spec/mongo/collection/view/change_stream_resume_spec.rb +1 -1
- data/spec/mongo/collection/view/explainable_spec.rb +87 -4
- data/spec/mongo/collection/view/map_reduce_spec.rb +2 -0
- data/spec/mongo/collection/view/readable_spec.rb +50 -0
- data/spec/mongo/collection_crud_spec.rb +4357 -0
- data/spec/mongo/collection_ddl_spec.rb +534 -0
- data/spec/mongo/collection_spec.rb +5 -4787
- data/spec/mongo/crypt/auto_decryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/auto_encryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/binary_spec.rb +1 -6
- data/spec/mongo/crypt/binding/binary_spec.rb +1 -6
- data/spec/mongo/crypt/binding/context_spec.rb +2 -7
- data/spec/mongo/crypt/binding/helpers_spec.rb +1 -6
- data/spec/mongo/crypt/binding/mongocrypt_spec.rb +2 -7
- data/spec/mongo/crypt/binding/status_spec.rb +1 -6
- data/spec/mongo/crypt/binding/version_spec.rb +1 -6
- data/spec/mongo/crypt/data_key_context_spec.rb +1 -1
- data/spec/mongo/crypt/explicit_decryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/explicit_encryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/status_spec.rb +1 -6
- data/spec/mongo/database_spec.rb +174 -4
- data/spec/mongo/error/bulk_write_error_spec.rb +3 -3
- data/spec/mongo/error/no_server_available_spec.rb +1 -1
- data/spec/mongo/error/parser_spec.rb +37 -6
- data/spec/mongo/index/view_spec.rb +8 -2
- data/spec/mongo/logger_spec.rb +13 -11
- data/spec/mongo/monitoring/event/server_closed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_heartbeat_failed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_heartbeat_succeeded_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_opening_spec.rb +1 -1
- data/spec/mongo/monitoring/event/topology_changed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/topology_closed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/topology_opening_spec.rb +1 -1
- data/spec/mongo/operation/aggregate_spec.rb +2 -1
- data/spec/mongo/operation/collections_info_spec.rb +4 -1
- data/spec/mongo/operation/command_spec.rb +6 -3
- data/spec/mongo/operation/create_index_spec.rb +6 -3
- data/spec/mongo/operation/create_user_spec.rb +6 -3
- data/spec/mongo/operation/delete/bulk_spec.rb +9 -6
- data/spec/mongo/operation/delete/op_msg_spec.rb +3 -3
- data/spec/mongo/operation/delete_spec.rb +11 -7
- data/spec/mongo/operation/drop_index_spec.rb +6 -2
- data/spec/mongo/operation/find/legacy_spec.rb +3 -1
- data/spec/mongo/operation/get_more_spec.rb +3 -1
- data/spec/mongo/operation/indexes_spec.rb +5 -1
- data/spec/mongo/operation/insert/bulk_spec.rb +10 -7
- data/spec/mongo/operation/insert/command_spec.rb +2 -2
- data/spec/mongo/operation/insert/op_msg_spec.rb +3 -3
- data/spec/mongo/operation/insert_spec.rb +15 -12
- data/spec/mongo/operation/map_reduce_spec.rb +5 -2
- data/spec/mongo/operation/read_preference_op_msg_spec.rb +1 -1
- data/spec/mongo/operation/remove_user_spec.rb +6 -3
- data/spec/mongo/operation/result_spec.rb +1 -1
- data/spec/mongo/operation/update/bulk_spec.rb +9 -6
- data/spec/mongo/operation/update/command_spec.rb +2 -2
- data/spec/mongo/operation/update/op_msg_spec.rb +3 -3
- data/spec/mongo/operation/update_spec.rb +10 -7
- data/spec/mongo/operation/update_user_spec.rb +4 -1
- data/spec/mongo/protocol/compressed_spec.rb +26 -12
- data/spec/mongo/query_cache_middleware_spec.rb +55 -0
- data/spec/mongo/query_cache_spec.rb +280 -0
- data/spec/mongo/retryable_spec.rb +3 -2
- data/spec/mongo/server/app_metadata_shared.rb +2 -2
- data/spec/mongo/server/app_metadata_spec.rb +2 -0
- data/spec/mongo/server/connection_pool/populator_spec.rb +3 -1
- data/spec/mongo/server/connection_pool_spec.rb +8 -4
- data/spec/mongo/server/connection_spec.rb +39 -25
- data/spec/mongo/server/description_spec.rb +18 -0
- data/spec/mongo/server/monitor/connection_spec.rb +17 -7
- data/spec/mongo/server/monitor_spec.rb +9 -1
- data/spec/mongo/server_selector_spec.rb +2 -2
- data/spec/mongo/server_spec.rb +15 -2
- data/spec/mongo/socket/ssl_spec.rb +44 -4
- data/spec/mongo/socket_spec.rb +2 -2
- data/spec/mongo/tls_context_hooks_spec.rb +37 -0
- data/spec/mongo/uri/srv_protocol_spec.rb +64 -33
- data/spec/mongo/uri_option_parsing_spec.rb +11 -11
- data/spec/mongo/uri_spec.rb +68 -41
- data/spec/mongo/utils_spec.rb +39 -0
- data/spec/runners/auth.rb +3 -0
- data/spec/runners/change_streams/test.rb +1 -1
- data/spec/runners/connection_string.rb +31 -124
- data/spec/runners/crud/requirement.rb +40 -3
- data/spec/runners/crud/test_base.rb +0 -19
- data/spec/runners/crud/verifier.rb +8 -0
- data/spec/runners/server_selection.rb +1 -1
- data/spec/runners/transactions/operation.rb +13 -2
- data/spec/runners/transactions/test.rb +3 -2
- data/spec/runners/unified.rb +96 -0
- data/spec/runners/unified/assertions.rb +249 -0
- data/spec/runners/unified/change_stream_operations.rb +26 -0
- data/spec/runners/unified/crud_operations.rb +199 -0
- data/spec/runners/unified/ddl_operations.rb +96 -0
- data/spec/runners/unified/entity_map.rb +39 -0
- data/spec/runners/unified/error.rb +25 -0
- data/spec/runners/unified/event_subscriber.rb +91 -0
- data/spec/runners/unified/exceptions.rb +21 -0
- data/spec/runners/unified/grid_fs_operations.rb +55 -0
- data/spec/runners/unified/support_operations.rb +250 -0
- data/spec/runners/unified/test.rb +393 -0
- data/spec/runners/unified/test_group.rb +28 -0
- data/spec/runners/unified/using_hash.rb +31 -0
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +218 -0
- data/spec/shared/lib/mrss/constraints.rb +346 -0
- data/spec/shared/lib/mrss/docker_runner.rb +262 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +175 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +112 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +149 -0
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +231 -0
- data/spec/shared/shlib/distro.sh +73 -0
- data/spec/shared/shlib/server.sh +290 -0
- data/spec/shared/shlib/set_env.sh +128 -0
- data/spec/solo/clean_exit_spec.rb +21 -0
- data/spec/spec_helper.rb +7 -2
- data/spec/spec_tests/cmap_spec.rb +7 -3
- data/spec/spec_tests/crud_unified_spec.rb +10 -0
- data/spec/spec_tests/data/change_streams/change-streams-errors.yml +0 -1
- data/spec/spec_tests/data/change_streams/change-streams.yml +0 -2
- data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +6 -2
- data/spec/spec_tests/data/cmap/pool-create-min-size.yml +3 -0
- data/spec/spec_tests/data/connection_string/valid-warnings.yml +24 -0
- data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +267 -0
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-4.9.yml +60 -0
- data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount.yml → estimatedDocumentCount-pre4.9.yml} +2 -0
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors-4.9.yml +146 -0
- data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount-serverErrors.yml → estimatedDocumentCount-serverErrors-pre4.9.yml} +2 -0
- data/spec/spec_tests/data/retryable_reads/listIndexNames.yml +1 -1
- data/spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml +1 -3
- data/spec/spec_tests/data/sdam_monitoring/standalone.yml +2 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone_repeated.yml +2 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +2 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone_to_rs_with_me_mismatch.yml +2 -2
- 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 +25 -0
- data/spec/spec_tests/data/uri_options/compression-options.yml +7 -4
- data/spec/spec_tests/data/uri_options/read-preference-options.yml +24 -0
- data/spec/spec_tests/data/uri_options/ruby-connection-options.yml +1 -0
- data/spec/spec_tests/data/uri_options/tls-options.yml +160 -4
- data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +416 -0
- data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +409 -0
- data/spec/spec_tests/data/versioned_api/runcommand-helper-no-api-version-declared.yml +67 -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 +44 -0
- data/spec/spec_tests/data/versioned_api/transaction-handling.yml +180 -0
- data/spec/spec_tests/dns_seedlist_discovery_spec.rb +9 -1
- data/spec/spec_tests/unified_spec.rb +15 -0
- data/spec/spec_tests/uri_options_spec.rb +47 -33
- data/spec/spec_tests/versioned_api_spec.rb +10 -0
- data/spec/stress/fork_reconnect_stress_spec.rb +1 -1
- data/spec/support/certificates/atlas-ocsp-ca.crt +28 -0
- data/spec/support/certificates/atlas-ocsp.crt +41 -0
- data/spec/support/client_registry_macros.rb +11 -2
- data/spec/support/common_shortcuts.rb +59 -0
- data/spec/support/constraints.rb +6 -253
- data/spec/support/matchers.rb +16 -0
- data/spec/support/ocsp +1 -0
- data/spec/support/session_registry.rb +52 -0
- data/spec/support/shared/session.rb +2 -2
- data/spec/support/spec_config.rb +68 -3
- data/spec/support/spec_setup.rb +48 -38
- data/spec/support/utils.rb +102 -4
- metadata +1087 -936
- metadata.gz.sig +0 -0
- data/lib/mongo/operation/shared/collections_info_or_list_collections.rb +0 -56
- data/lib/mongo/operation/shared/op_msg_or_list_indexes_command.rb +0 -47
- data/spec/support/child_process_helper.rb +0 -78
- data/spec/support/cluster_config.rb +0 -207
- data/spec/support/lite_constraints.rb +0 -141
- data/spec/support/spec_organizer.rb +0 -129
@@ -19,6 +19,7 @@ module Mongo
|
|
19
19
|
# Defines custom behavior of results for a delete when part of a bulk write.
|
20
20
|
#
|
21
21
|
# @since 2.0.0
|
22
|
+
# @api semiprivate
|
22
23
|
class BulkResult < Operation::Result
|
23
24
|
include Aggregatable
|
24
25
|
|
@@ -30,6 +31,7 @@ module Mongo
|
|
30
31
|
# @return [ Integer ] The number of documents deleted.
|
31
32
|
#
|
32
33
|
# @since 2.0.0
|
34
|
+
# @api public
|
33
35
|
def n_removed
|
34
36
|
return 0 unless acknowledged?
|
35
37
|
@replies.reduce(0) do |n, reply|
|
@@ -19,6 +19,7 @@ module Mongo
|
|
19
19
|
# Defines custom behavior of results for a delete.
|
20
20
|
#
|
21
21
|
# @since 2.0.0
|
22
|
+
# @api semiprivate
|
22
23
|
class Result < Operation::Result
|
23
24
|
|
24
25
|
# Get the number of documents deleted.
|
@@ -29,10 +30,12 @@ module Mongo
|
|
29
30
|
# @return [ Integer ] The deleted count.
|
30
31
|
#
|
31
32
|
# @since 2.0.0
|
33
|
+
# @api public
|
32
34
|
def deleted_count
|
33
35
|
n
|
34
36
|
end
|
35
37
|
|
38
|
+
# @api public
|
36
39
|
def bulk_result
|
37
40
|
BulkResult.new(@replies, connection_description)
|
38
41
|
end
|
@@ -19,6 +19,7 @@ module Mongo
|
|
19
19
|
# Defines custom behavior of results in find command with explain.
|
20
20
|
#
|
21
21
|
# @since 2.5.0
|
22
|
+
# @api semiprivate
|
22
23
|
class Result < Operation::Result
|
23
24
|
|
24
25
|
# Get the cursor id.
|
@@ -29,6 +30,7 @@ module Mongo
|
|
29
30
|
# @return [ 0 ] Always 0 because explain doesn't return a cursor.
|
30
31
|
#
|
31
32
|
# @since 2.5.0
|
33
|
+
# @api private
|
32
34
|
def cursor_id
|
33
35
|
0
|
34
36
|
end
|
@@ -41,6 +43,7 @@ module Mongo
|
|
41
43
|
# @return [ Array<BSON::Document> ] The documents.
|
42
44
|
#
|
43
45
|
# @since 2.5.0
|
46
|
+
# @api public
|
44
47
|
def documents
|
45
48
|
reply.documents
|
46
49
|
end
|
@@ -20,6 +20,7 @@ module Mongo
|
|
20
20
|
# Defines custom behavior of results for a query.
|
21
21
|
#
|
22
22
|
# @since 2.1.0
|
23
|
+
# @api semiprivate
|
23
24
|
class Result < Operation::Result
|
24
25
|
include Operation::Result::UseLegacyErrorParser
|
25
26
|
|
@@ -31,6 +32,7 @@ module Mongo
|
|
31
32
|
# @return [ true, false ] If the query was successful.
|
32
33
|
#
|
33
34
|
# @since 2.0.0
|
35
|
+
# @api public
|
34
36
|
def successful?
|
35
37
|
!query_failure?
|
36
38
|
end
|
@@ -19,6 +19,7 @@ module Mongo
|
|
19
19
|
# Defines custom behavior of results in find command.
|
20
20
|
#
|
21
21
|
# @since 2.2.0
|
22
|
+
# @api semiprivate
|
22
23
|
class Result < Operation::Result
|
23
24
|
|
24
25
|
# Get the cursor id.
|
@@ -29,6 +30,7 @@ module Mongo
|
|
29
30
|
# @return [ Integer ] The cursor id.
|
30
31
|
#
|
31
32
|
# @since 2.2.0
|
33
|
+
# @api private
|
32
34
|
def cursor_id
|
33
35
|
cursor_document ? cursor_document[CURSOR_ID] : super
|
34
36
|
end
|
@@ -41,10 +43,21 @@ module Mongo
|
|
41
43
|
# @return [ Array<BSON::Document> ] The documents.
|
42
44
|
#
|
43
45
|
# @since 2.2.0
|
46
|
+
# @api public
|
44
47
|
def documents
|
45
48
|
cursor_document[FIRST_BATCH]
|
46
49
|
end
|
47
50
|
|
51
|
+
# The namespace in which this find command was performed.
|
52
|
+
#
|
53
|
+
# @return [ String ] The namespace, usually in the format
|
54
|
+
# "database.collection".
|
55
|
+
#
|
56
|
+
# @api private
|
57
|
+
def namespace
|
58
|
+
cursor_document['ns']
|
59
|
+
end
|
60
|
+
|
48
61
|
private
|
49
62
|
|
50
63
|
def cursor_document
|
@@ -19,6 +19,7 @@ module Mongo
|
|
19
19
|
# Defines custom behavior of results for the get more command.
|
20
20
|
#
|
21
21
|
# @since 2.2.0
|
22
|
+
# @api semiprivate
|
22
23
|
class Result < Operation::Result
|
23
24
|
|
24
25
|
# Get the cursor id.
|
@@ -29,6 +30,7 @@ module Mongo
|
|
29
30
|
# @return [ Integer ] The cursor id.
|
30
31
|
#
|
31
32
|
# @since 2.2.0
|
33
|
+
# @api private
|
32
34
|
def cursor_id
|
33
35
|
cursor_document ? cursor_document[CURSOR_ID] : super
|
34
36
|
end
|
@@ -50,6 +52,7 @@ module Mongo
|
|
50
52
|
# @return [ Array<BSON::Document> ] The documents.
|
51
53
|
#
|
52
54
|
# @since 2.2.0
|
55
|
+
# @api public
|
53
56
|
def documents
|
54
57
|
cursor_document[NEXT_BATCH]
|
55
58
|
end
|
@@ -27,7 +27,21 @@ module Mongo
|
|
27
27
|
# @since 2.0.0
|
28
28
|
class Indexes
|
29
29
|
include Specifiable
|
30
|
-
include
|
30
|
+
include PolymorphicOperation
|
31
|
+
include PolymorphicLookup
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def final_operation(connection)
|
36
|
+
cls = if connection.features.op_msg_enabled?
|
37
|
+
polymorphic_class(self.class.name, :OpMsg)
|
38
|
+
elsif connection.features.list_indexes_enabled?
|
39
|
+
polymorphic_class(self.class.name, :Command)
|
40
|
+
else
|
41
|
+
polymorphic_class(self.class.name, :Legacy)
|
42
|
+
end
|
43
|
+
cls.new(spec)
|
44
|
+
end
|
31
45
|
end
|
32
46
|
end
|
33
47
|
end
|
@@ -20,6 +20,7 @@ module Mongo
|
|
20
20
|
# listIndexes command.
|
21
21
|
#
|
22
22
|
# @since 2.0.0
|
23
|
+
# @api semiprivate
|
23
24
|
class Result < Operation::Result
|
24
25
|
|
25
26
|
# Get the cursor id for the result.
|
@@ -35,6 +36,7 @@ module Mongo
|
|
35
36
|
# @return [ Integer ] The cursor id.
|
36
37
|
#
|
37
38
|
# @since 2.0.0
|
39
|
+
# @api private
|
38
40
|
def cursor_id
|
39
41
|
cursor_document ? cursor_document[CURSOR_ID] : super
|
40
42
|
end
|
@@ -47,6 +49,7 @@ module Mongo
|
|
47
49
|
# @return [ String ] The namespace.
|
48
50
|
#
|
49
51
|
# @since 2.0.0
|
52
|
+
# @api private
|
50
53
|
def namespace
|
51
54
|
cursor_document ? cursor_document[NAMESPACE] : super
|
52
55
|
end
|
@@ -60,6 +63,7 @@ module Mongo
|
|
60
63
|
# @return [ Array<BSON::Document> ] The documents.
|
61
64
|
#
|
62
65
|
# @since 2.0.0
|
66
|
+
# @api public
|
63
67
|
def documents
|
64
68
|
cursor_document[FIRST_BATCH]
|
65
69
|
end
|
@@ -77,6 +81,7 @@ module Mongo
|
|
77
81
|
# @return [ Result ] Self if successful.
|
78
82
|
#
|
79
83
|
# @since 2.0.0
|
84
|
+
# @api private
|
80
85
|
def validate!
|
81
86
|
!successful? ? raise_operation_failure : self
|
82
87
|
end
|
@@ -19,12 +19,14 @@ module Mongo
|
|
19
19
|
# Defines custom behavior of results for an insert when sent as part of a bulk write.
|
20
20
|
#
|
21
21
|
# @since 2.0.0
|
22
|
+
# @api semiprivate
|
22
23
|
class BulkResult < Operation::Result
|
23
24
|
include Aggregatable
|
24
25
|
|
25
26
|
# Get the ids of the inserted documents.
|
26
27
|
#
|
27
28
|
# @since 2.0.0
|
29
|
+
# @api public
|
28
30
|
attr_reader :inserted_ids
|
29
31
|
|
30
32
|
# Initialize a new result.
|
@@ -39,6 +41,7 @@ module Mongo
|
|
39
41
|
# @param [ Array<Object> ] ids The ids of the inserted documents.
|
40
42
|
#
|
41
43
|
# @since 2.0.0
|
44
|
+
# @api private
|
42
45
|
def initialize(replies, connection_description, ids)
|
43
46
|
@replies = [*replies] if replies
|
44
47
|
@connection_description = connection_description
|
@@ -83,6 +86,7 @@ module Mongo
|
|
83
86
|
# @return [ Integer ] The number of documents inserted.
|
84
87
|
#
|
85
88
|
# @since 2.0.0
|
89
|
+
# @api public
|
86
90
|
def n_inserted
|
87
91
|
written_count
|
88
92
|
end
|
@@ -95,6 +99,7 @@ module Mongo
|
|
95
99
|
# @return [ Object ] The id of the document inserted.
|
96
100
|
#
|
97
101
|
# @since 2.0.0
|
102
|
+
# @api public
|
98
103
|
def inserted_id
|
99
104
|
inserted_ids.first
|
100
105
|
end
|
@@ -32,9 +32,9 @@ module Mongo
|
|
32
32
|
|
33
33
|
private
|
34
34
|
|
35
|
-
def get_result(connection,
|
35
|
+
def get_result(connection, context, options = {})
|
36
36
|
# This is a Mongo::Operation::Insert::Result
|
37
|
-
Result.new(*dispatch_message(connection,
|
37
|
+
Result.new(*dispatch_message(connection, context), @ids)
|
38
38
|
end
|
39
39
|
|
40
40
|
def selector(connection)
|
@@ -30,9 +30,9 @@ module Mongo
|
|
30
30
|
|
31
31
|
private
|
32
32
|
|
33
|
-
def get_result(connection,
|
33
|
+
def get_result(connection, context, options = {})
|
34
34
|
# This is a Mongo::Operation::Insert::Result
|
35
|
-
Result.new(*dispatch_message(connection,
|
35
|
+
Result.new(*dispatch_message(connection, context), @ids)
|
36
36
|
end
|
37
37
|
|
38
38
|
def selector
|
@@ -30,9 +30,9 @@ module Mongo
|
|
30
30
|
|
31
31
|
private
|
32
32
|
|
33
|
-
def get_result(connection,
|
33
|
+
def get_result(connection, context, options = {})
|
34
34
|
# This is a Mongo::Operation::Insert::Result
|
35
|
-
Result.new(*dispatch_message(connection,
|
35
|
+
Result.new(*dispatch_message(connection, context), @ids)
|
36
36
|
end
|
37
37
|
|
38
38
|
def selector(connection)
|
@@ -22,11 +22,13 @@ module Mongo
|
|
22
22
|
# is optional. It can be added to this class later, if needed.
|
23
23
|
#
|
24
24
|
# @since 2.0.0
|
25
|
+
# @api semiprivate
|
25
26
|
class Result < Operation::Result
|
26
27
|
|
27
28
|
# Get the ids of the inserted documents.
|
28
29
|
#
|
29
30
|
# @since 2.0.0
|
31
|
+
# @api public
|
30
32
|
attr_reader :inserted_ids
|
31
33
|
|
32
34
|
# Initialize a new result.
|
@@ -41,6 +43,7 @@ module Mongo
|
|
41
43
|
# @param [ Array<Object> ] ids The ids of the inserted documents.
|
42
44
|
#
|
43
45
|
# @since 2.0.0
|
46
|
+
# @api private
|
44
47
|
def initialize(replies, connection_description, ids)
|
45
48
|
super(replies, connection_description)
|
46
49
|
@inserted_ids = ids
|
@@ -54,10 +57,12 @@ module Mongo
|
|
54
57
|
# @return [ Object ] The id of the document inserted.
|
55
58
|
#
|
56
59
|
# @since 2.0.0
|
60
|
+
# @api public
|
57
61
|
def inserted_id
|
58
62
|
inserted_ids.first
|
59
63
|
end
|
60
64
|
|
65
|
+
# @api public
|
61
66
|
def bulk_result
|
62
67
|
BulkResult.new(@replies, connection_description, @inserted_ids)
|
63
68
|
end
|
@@ -20,6 +20,7 @@ module Mongo
|
|
20
20
|
# listCollections command.
|
21
21
|
#
|
22
22
|
# @since 2.0.0
|
23
|
+
# @api semiprivate
|
23
24
|
class Result < Operation::Result
|
24
25
|
|
25
26
|
# Get the cursor id for the result.
|
@@ -35,6 +36,7 @@ module Mongo
|
|
35
36
|
# @return [ Integer ] The cursor id.
|
36
37
|
#
|
37
38
|
# @since 2.0.0
|
39
|
+
# @api private
|
38
40
|
def cursor_id
|
39
41
|
cursor_document ? cursor_document[CURSOR_ID] : super
|
40
42
|
end
|
@@ -47,6 +49,7 @@ module Mongo
|
|
47
49
|
# @return [ String ] The namespace.
|
48
50
|
#
|
49
51
|
# @since 2.0.0
|
52
|
+
# @api private
|
50
53
|
def namespace
|
51
54
|
cursor_document ? cursor_document[NAMESPACE] : super
|
52
55
|
end
|
@@ -60,6 +63,7 @@ module Mongo
|
|
60
63
|
# @return [ Array<BSON::Document> ] The documents.
|
61
64
|
#
|
62
65
|
# @since 2.0.0
|
66
|
+
# @api public
|
63
67
|
def documents
|
64
68
|
cursor_document[FIRST_BATCH]
|
65
69
|
end
|
@@ -73,6 +77,7 @@ module Mongo
|
|
73
77
|
# @return [ Result ] Self if successful.
|
74
78
|
#
|
75
79
|
# @since 2.0.0
|
80
|
+
# @api private
|
76
81
|
def validate!
|
77
82
|
if successful?
|
78
83
|
self
|
@@ -83,7 +88,10 @@ module Mongo
|
|
83
88
|
code: parser.code,
|
84
89
|
code_name: parser.code_name,
|
85
90
|
labels: parser.labels,
|
86
|
-
wtimeout: parser.wtimeout
|
91
|
+
wtimeout: parser.wtimeout,
|
92
|
+
document: parser.document,
|
93
|
+
server_message: parser.server_message,
|
94
|
+
)
|
87
95
|
end
|
88
96
|
end
|
89
97
|
|
@@ -19,21 +19,25 @@ module Mongo
|
|
19
19
|
# Defines custom behavior of results for a map reduce operation.
|
20
20
|
#
|
21
21
|
# @since 2.0.0
|
22
|
+
# @api semiprivate
|
22
23
|
class Result < Operation::Result
|
23
24
|
|
24
25
|
# The counts field for the map/reduce.
|
25
26
|
#
|
26
27
|
# @since 2.0.0
|
28
|
+
# @api private
|
27
29
|
COUNTS = 'counts'.freeze
|
28
30
|
|
29
31
|
# The field name for a result without a cursor.
|
30
32
|
#
|
31
33
|
# @since 2.0.0
|
34
|
+
# @api private
|
32
35
|
RESULTS = 'results'.freeze
|
33
36
|
|
34
37
|
# The time the operation took constant.
|
35
38
|
#
|
36
39
|
# @since 2.0.0
|
40
|
+
# @api private
|
37
41
|
TIME = 'timeMillis'.freeze
|
38
42
|
|
39
43
|
# Gets the map/reduce counts from the reply.
|
@@ -44,6 +48,7 @@ module Mongo
|
|
44
48
|
# @return [ Hash ] A hash of the result counts.
|
45
49
|
#
|
46
50
|
# @since 2.0.0
|
51
|
+
# @api public
|
47
52
|
def counts
|
48
53
|
reply.documents[0][COUNTS]
|
49
54
|
end
|
@@ -56,6 +61,7 @@ module Mongo
|
|
56
61
|
# @return [ Array<BSON::Document> ] The documents.
|
57
62
|
#
|
58
63
|
# @since 2.0.0
|
64
|
+
# @api public
|
59
65
|
def documents
|
60
66
|
reply.documents[0][RESULTS] || reply.documents[0][RESULT]
|
61
67
|
end
|
@@ -72,6 +78,7 @@ module Mongo
|
|
72
78
|
# @return [ true, false ] If the command was successful.
|
73
79
|
#
|
74
80
|
# @since 2.0.0
|
81
|
+
# @api public
|
75
82
|
def successful?
|
76
83
|
!documents.nil?
|
77
84
|
end
|
@@ -84,6 +91,7 @@ module Mongo
|
|
84
91
|
# @return [ Integer ] The executing time in milliseconds.
|
85
92
|
#
|
86
93
|
# @since 2.0.0
|
94
|
+
# @api public
|
87
95
|
def time
|
88
96
|
reply.documents[0][TIME]
|
89
97
|
end
|
@@ -102,6 +110,7 @@ module Mongo
|
|
102
110
|
# @return [ Result ] The result if verification passed.
|
103
111
|
#
|
104
112
|
# @since 2.0.0
|
113
|
+
# @api private
|
105
114
|
def validate!
|
106
115
|
documents.nil? ? raise_operation_failure : self
|
107
116
|
end
|
@@ -114,6 +123,7 @@ module Mongo
|
|
114
123
|
# @return [ Integer ] Always 0 because map reduce doesn't return a cursor.
|
115
124
|
#
|
116
125
|
# @since 2.5.0
|
126
|
+
# @api private
|
117
127
|
def cursor_id
|
118
128
|
0
|
119
129
|
end
|