mongo 2.15.0 → 2.17.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +1 -1
- data/lib/mongo/auth/aws/request.rb +0 -1
- data/lib/mongo/bulk_write.rb +2 -2
- data/lib/mongo/client.rb +49 -5
- data/lib/mongo/cluster/periodic_executor.rb +4 -3
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +76 -43
- data/lib/mongo/cluster/sdam_flow.rb +9 -3
- data/lib/mongo/cluster/topology/base.rb +13 -9
- data/lib/mongo/cluster/topology/load_balanced.rb +102 -0
- data/lib/mongo/cluster/topology.rb +28 -8
- data/lib/mongo/cluster.rb +136 -51
- data/lib/mongo/collection/view/aggregation.rb +63 -23
- data/lib/mongo/collection/view/builder/aggregation.rb +16 -17
- data/lib/mongo/collection/view/builder/map_reduce.rb +12 -49
- data/lib/mongo/collection/view/builder.rb +0 -4
- data/lib/mongo/collection/view/change_stream.rb +7 -3
- data/lib/mongo/collection/view/iterable.rb +60 -27
- data/lib/mongo/collection/view/map_reduce.rb +41 -15
- data/lib/mongo/collection/view/readable.rb +84 -52
- data/lib/mongo/collection/view/writable.rb +201 -175
- data/lib/mongo/collection/view.rb +15 -21
- data/lib/mongo/collection.rb +34 -14
- data/lib/mongo/cursor/kill_spec.rb +38 -0
- data/lib/mongo/cursor.rb +72 -31
- data/lib/mongo/database/view.rb +5 -3
- data/lib/mongo/database.rb +6 -6
- data/lib/mongo/error/bad_load_balancer_target.rb +26 -0
- data/lib/mongo/error/missing_service_id.rb +26 -0
- data/lib/mongo/error/no_service_connection_available.rb +49 -0
- data/lib/mongo/error/notable.rb +7 -0
- data/lib/mongo/error/snapshot_session_invalid_server_version.rb +31 -0
- data/lib/mongo/error/snapshot_session_transaction_prohibited.rb +30 -0
- data/lib/mongo/error.rb +5 -0
- data/lib/mongo/grid/fs_bucket.rb +21 -2
- data/lib/mongo/id.rb +7 -5
- data/lib/mongo/index/view.rb +22 -41
- data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +7 -4
- data/lib/mongo/monitoring/event/command_failed.rb +1 -1
- data/lib/mongo/monitoring/event/command_started.rb +2 -0
- data/lib/mongo/monitoring/publishable.rb +2 -2
- data/lib/mongo/operation/aggregate/command.rb +8 -0
- data/lib/mongo/operation/context.rb +19 -1
- data/lib/mongo/operation/count/command.rb +6 -0
- data/lib/mongo/operation/count/op_msg.rb +6 -0
- data/lib/mongo/operation/create/command.rb +7 -1
- data/lib/mongo/operation/create/op_msg.rb +7 -0
- data/lib/mongo/operation/create_index/command.rb +17 -1
- data/lib/mongo/operation/create_index/op_msg.rb +17 -4
- data/lib/mongo/operation/delete/command.rb +6 -3
- data/lib/mongo/operation/delete/legacy.rb +9 -2
- data/lib/mongo/operation/delete/op_msg.rb +9 -1
- data/lib/mongo/operation/distinct/command.rb +6 -0
- data/lib/mongo/operation/distinct/op_msg.rb +7 -0
- data/lib/mongo/operation/explain/command.rb +13 -1
- data/lib/mongo/operation/explain/legacy.rb +12 -5
- data/lib/mongo/operation/explain/op_msg.rb +9 -1
- data/lib/mongo/operation/find/builder/command.rb +111 -0
- data/lib/mongo/{collection/view → operation/find}/builder/flags.rb +10 -14
- data/lib/mongo/operation/find/builder/legacy.rb +123 -0
- data/lib/mongo/{collection/view → operation/find}/builder/modifiers.rb +31 -25
- data/lib/mongo/{cursor → operation/find}/builder.rb +4 -4
- data/lib/mongo/operation/find/command.rb +9 -0
- data/lib/mongo/operation/find/legacy.rb +10 -1
- data/lib/mongo/operation/find/op_msg.rb +12 -0
- data/lib/mongo/operation/find.rb +1 -0
- data/lib/mongo/operation/get_more/command.rb +1 -0
- data/lib/mongo/operation/get_more/command_builder.rb +38 -0
- data/lib/mongo/operation/get_more/op_msg.rb +1 -0
- data/lib/mongo/operation/get_more.rb +1 -0
- data/lib/mongo/operation/kill_cursors/command.rb +8 -0
- data/lib/mongo/operation/kill_cursors/command_builder.rb +35 -0
- data/lib/mongo/operation/kill_cursors/legacy.rb +2 -1
- data/lib/mongo/operation/kill_cursors/op_msg.rb +10 -0
- data/lib/mongo/operation/kill_cursors.rb +1 -0
- data/lib/mongo/operation/map_reduce/command.rb +8 -0
- data/lib/mongo/operation/map_reduce/op_msg.rb +1 -1
- data/lib/mongo/operation/result.rb +6 -0
- data/lib/mongo/operation/shared/executable.rb +19 -1
- data/lib/mongo/operation/shared/polymorphic_operation.rb +1 -1
- data/lib/mongo/operation/shared/read_preference_supported.rb +3 -1
- data/lib/mongo/operation/shared/response_handling.rb +1 -0
- data/lib/mongo/operation/shared/sessions_supported.rb +28 -12
- data/lib/mongo/operation/shared/specifiable.rb +11 -29
- data/lib/mongo/operation/shared/validatable.rb +87 -0
- data/lib/mongo/operation/shared/write.rb +1 -1
- data/lib/mongo/operation/update/command.rb +6 -3
- data/lib/mongo/operation/update/legacy.rb +19 -11
- data/lib/mongo/operation/update/op_msg.rb +8 -4
- 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 +10 -0
- data/lib/mongo/protocol/query.rb +35 -18
- data/lib/mongo/server/connection.rb +25 -3
- data/lib/mongo/server/connection_base.rb +12 -1
- data/lib/mongo/server/connection_common.rb +38 -1
- data/lib/mongo/server/connection_pool/generation_manager.rb +71 -0
- data/lib/mongo/server/connection_pool.rb +100 -27
- data/lib/mongo/server/description/features.rb +20 -17
- data/lib/mongo/server/description/load_balancer.rb +33 -0
- data/lib/mongo/server/description.rb +85 -6
- data/lib/mongo/server/monitor/connection.rb +5 -6
- data/lib/mongo/server/monitor.rb +2 -1
- data/lib/mongo/server/pending_connection.rb +47 -31
- data/lib/mongo/server/push_monitor.rb +10 -1
- data/lib/mongo/server.rb +73 -26
- data/lib/mongo/server_selector/base.rb +31 -5
- data/lib/mongo/session/session_pool.rb +11 -0
- data/lib/mongo/session.rb +40 -1
- data/lib/mongo/socket/ocsp_cache.rb +2 -3
- data/lib/mongo/socket/ocsp_verifier.rb +6 -37
- data/lib/mongo/socket.rb +1 -5
- data/lib/mongo/uri/options_mapper.rb +1 -0
- data/lib/mongo/uri/srv_protocol.rb +6 -8
- data/lib/mongo/uri.rb +18 -0
- data/lib/mongo/utils.rb +0 -13
- data/lib/mongo/version.rb +1 -1
- data/mongo.gemspec +1 -1
- data/spec/integration/auth_spec.rb +31 -1
- data/spec/integration/awaited_ismaster_spec.rb +1 -1
- data/spec/integration/bulk_write_spec.rb +1 -1
- data/spec/integration/change_stream_spec.rb +3 -3
- data/spec/integration/client_construction_spec.rb +54 -0
- data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +1 -1
- data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +1 -1
- data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +1 -1
- data/spec/integration/client_side_encryption/data_key_spec.rb +1 -1
- data/spec/integration/client_spec.rb +2 -0
- data/spec/integration/command_monitoring_spec.rb +1 -1
- data/spec/integration/command_spec.rb +1 -1
- data/spec/integration/connection_spec.rb +52 -35
- data/spec/integration/crud_spec.rb +174 -1
- data/spec/integration/cursor_pinning_spec.rb +121 -0
- data/spec/integration/cursor_reaping_spec.rb +8 -4
- data/spec/integration/fork_reconnect_spec.rb +1 -5
- data/spec/integration/get_more_spec.rb +1 -1
- data/spec/integration/heartbeat_events_spec.rb +1 -1
- data/spec/integration/map_reduce_spec.rb +77 -0
- data/spec/integration/query_cache_spec.rb +47 -2
- data/spec/integration/query_cache_transactions_spec.rb +1 -1
- data/spec/integration/read_concern_spec.rb +1 -1
- data/spec/integration/read_preference_spec.rb +17 -13
- data/spec/integration/reconnect_spec.rb +30 -12
- data/spec/integration/retryable_errors_spec.rb +1 -1
- data/spec/integration/retryable_writes/retryable_writes_36_and_older_spec.rb +1 -1
- data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +1 -1
- data/spec/integration/sdam_error_handling_spec.rb +5 -3
- data/spec/integration/sdam_events_spec.rb +35 -19
- data/spec/integration/sdam_prose_spec.rb +1 -1
- data/spec/integration/server_monitor_spec.rb +1 -0
- data/spec/integration/server_selector_spec.rb +22 -5
- data/spec/integration/server_spec.rb +2 -0
- data/spec/integration/srv_monitoring_spec.rb +1 -1
- data/spec/integration/step_down_spec.rb +1 -1
- data/spec/integration/transaction_pinning_spec.rb +120 -0
- data/spec/integration/versioned_api_examples_spec.rb +45 -0
- data/spec/integration/x509_auth_spec.rb +1 -1
- data/spec/lite_spec_helper.rb +1 -2
- data/spec/mongo/address/unix_spec.rb +1 -0
- data/spec/mongo/auth/cr_spec.rb +2 -3
- data/spec/mongo/auth/ldap_spec.rb +2 -3
- data/spec/mongo/auth/scram_spec.rb +2 -3
- data/spec/mongo/auth/user/view_spec.rb +1 -1
- data/spec/mongo/auth/x509_spec.rb +2 -3
- data/spec/mongo/bulk_write_spec.rb +3 -3
- data/spec/mongo/client_construction_spec.rb +259 -28
- data/spec/mongo/client_spec.rb +6 -4
- data/spec/mongo/cluster/cursor_reaper_spec.rb +36 -21
- data/spec/mongo/cluster/periodic_executor_spec.rb +3 -1
- data/spec/mongo/cluster_spec.rb +44 -3
- data/spec/mongo/collection/view/aggregation_spec.rb +72 -96
- data/spec/mongo/collection/view/builder/find_command_spec.rb +4 -0
- data/spec/mongo/collection/view/builder/op_query_spec.rb +4 -0
- data/spec/mongo/collection/view/change_stream_spec.rb +1 -1
- data/spec/mongo/collection/view/map_reduce_spec.rb +15 -2
- data/spec/mongo/collection_crud_spec.rb +7 -2
- data/spec/mongo/collection_ddl_spec.rb +1 -1
- data/spec/mongo/collection_spec.rb +1 -1
- data/spec/mongo/cursor/builder/get_more_command_spec.rb +4 -0
- data/spec/mongo/cursor/builder/op_get_more_spec.rb +4 -0
- data/spec/mongo/cursor_spec.rb +15 -5
- data/spec/mongo/database_spec.rb +15 -15
- data/spec/mongo/error/operation_failure_heavy_spec.rb +1 -1
- data/spec/mongo/grid/fs_bucket_spec.rb +18 -12
- data/spec/mongo/grid/stream/write_spec.rb +3 -9
- data/spec/mongo/grid/stream_spec.rb +1 -1
- data/spec/mongo/index/view_spec.rb +2 -2
- data/spec/mongo/operation/delete/op_msg_spec.rb +1 -1
- data/spec/mongo/{collection/view → operation/find}/builder/flags_spec.rb +2 -2
- data/spec/mongo/{collection/view → operation/find}/builder/modifiers_spec.rb +2 -2
- data/spec/mongo/operation/find/legacy_spec.rb +1 -0
- data/spec/mongo/operation/insert/bulk_spec.rb +1 -1
- data/spec/mongo/operation/insert/op_msg_spec.rb +1 -1
- data/spec/mongo/operation/kill_cursors_spec.rb +4 -1
- data/spec/mongo/operation/read_preference_legacy_spec.rb +4 -0
- data/spec/mongo/operation/read_preference_op_msg_spec.rb +26 -1
- data/spec/mongo/operation/update/bulk_spec.rb +1 -1
- data/spec/mongo/operation/update/op_msg_spec.rb +1 -1
- data/spec/mongo/query_cache_spec.rb +6 -2
- data/spec/mongo/server/connection_common_spec.rb +62 -11
- data/spec/mongo/server/connection_pool_spec.rb +73 -7
- data/spec/mongo/server/connection_spec.rb +138 -43
- data/spec/mongo/server/description_spec.rb +1 -1
- data/spec/mongo/server/monitor/connection_spec.rb +22 -0
- data/spec/mongo/server/monitor_spec.rb +4 -3
- data/spec/mongo/server/push_monitor_spec.rb +101 -0
- data/spec/mongo/server_selector_spec.rb +136 -15
- data/spec/mongo/session/session_pool_spec.rb +42 -10
- data/spec/mongo/session_transaction_spec.rb +15 -30
- data/spec/mongo/socket/ssl_spec.rb +26 -58
- data/spec/mongo/socket/unix_spec.rb +1 -0
- data/spec/mongo/uri_option_parsing_spec.rb +38 -5
- data/spec/mongo/utils_spec.rb +0 -14
- data/spec/runners/change_streams/test.rb +1 -1
- data/spec/runners/cmap.rb +1 -1
- data/spec/runners/connection_string.rb +7 -3
- data/spec/runners/crud/operation.rb +5 -3
- data/spec/runners/crud/requirement.rb +1 -0
- data/spec/runners/crud/verifier.rb +1 -2
- data/spec/runners/crud.rb +1 -1
- data/spec/runners/sdam.rb +2 -1
- data/spec/runners/transactions/test.rb +2 -2
- data/spec/runners/unified/assertions.rb +5 -4
- data/spec/runners/unified/crud_operations.rb +77 -23
- data/spec/runners/unified/ddl_operations.rb +29 -1
- data/spec/runners/unified/entity_map.rb +3 -3
- data/spec/runners/unified/event_subscriber.rb +2 -2
- data/spec/runners/unified/support_operations.rb +16 -3
- data/spec/runners/unified/test.rb +18 -3
- data/spec/runners/unified.rb +1 -1
- data/spec/shared/lib/mrss/cluster_config.rb +6 -1
- data/spec/shared/lib/mrss/constraints.rb +11 -5
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +17 -12
- data/spec/shared/share/Dockerfile.erb +5 -4
- data/spec/shared/shlib/server.sh +70 -20
- data/spec/spec_tests/change_streams_spec.rb +1 -1
- data/spec/spec_tests/cmap_spec.rb +4 -1
- data/spec/spec_tests/command_monitoring_spec.rb +2 -2
- data/spec/spec_tests/data/command_monitoring/find.yml +9 -9
- data/spec/spec_tests/data/crud/read/aggregate-collation.yml +2 -1
- data/spec/spec_tests/data/crud/read/aggregate-out.yml +1 -0
- data/spec/spec_tests/data/crud/read/count-collation.yml +2 -1
- data/spec/spec_tests/data/crud/read/distinct-collation.yml +2 -1
- data/spec/spec_tests/data/crud/read/find-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/bulkWrite-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/deleteMany-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/deleteOne-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/findOneAndDelete-collation.yml +3 -2
- data/spec/spec_tests/data/crud/write/findOneAndReplace-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/findOneAndUpdate-collation.yml +3 -2
- data/spec/spec_tests/data/crud/write/replaceOne-collation.yml +3 -2
- data/spec/spec_tests/data/crud/write/updateMany-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/updateOne-collation.yml +2 -1
- data/spec/spec_tests/data/crud_unified/aggregate-let.yml +138 -0
- data/spec/spec_tests/data/crud_unified/aggregate-write-readPreference.yml +155 -0
- data/spec/spec_tests/data/crud_unified/db-aggregate-write-readPreference.yml +151 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-let.yml +91 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-let.yml +89 -0
- data/spec/spec_tests/data/crud_unified/find-let.yml +71 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-let.yml +88 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-let.yml +94 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-let.yml +96 -0
- data/spec/spec_tests/data/crud_unified/updateMany-let.yml +103 -0
- data/spec/spec_tests/data/crud_unified/updateOne-let.yml +98 -0
- data/spec/spec_tests/data/load_balancers/event-monitoring.yml +99 -0
- data/spec/spec_tests/data/load_balancers/lb-connection-establishment.yml +36 -0
- data/spec/spec_tests/data/load_balancers/non-lb-connection-establishment.yml +56 -0
- data/spec/spec_tests/data/load_balancers/server-selection.yml +50 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/DefaultNoMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/LastUpdateTime.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred_tags.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Secondary.yml +4 -4
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred_tags.yml +4 -4
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/ZeroMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/DefaultNoMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LastUpdateTime.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat2.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessTooSmall.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessWithModePrimary.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest_tags.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags.yml +5 -5
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags.yml +5 -5
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/ZeroMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/Sharded/SmallMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/Single/SmallMaxStaleness.yml +1 -1
- data/spec/spec_tests/data/max_staleness/Unknown/SmallMaxStaleness.yml +1 -1
- data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch-serverErrors.yml +1 -1
- data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch.yml +1 -1
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch-serverErrors.yml +1 -1
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch.yml +1 -1
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch-serverErrors.yml +1 -1
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch.yml +1 -1
- data/spec/spec_tests/data/retryable_reads/mapReduce.yml +3 -1
- data/spec/spec_tests/data/sdam/load-balanced/discover_load_balancer.yml +25 -0
- data/spec/spec_tests/data/sdam_integration/find-network-error.yml +2 -0
- data/spec/spec_tests/data/sdam_integration/find-shutdown-error.yml +2 -0
- data/spec/spec_tests/data/sdam_integration/hello-command-error.yml +3 -1
- data/spec/spec_tests/data/sdam_integration/hello-network-error.yml +3 -1
- data/spec/spec_tests/data/sdam_integration/hello-timeout.yml +2 -0
- data/spec/spec_tests/data/sdam_integration/insert-network-error.yml +2 -0
- data/spec/spec_tests/data/sdam_integration/insert-shutdown-error.yml +2 -0
- data/spec/spec_tests/data/sdam_monitoring/load_balancer.yml +65 -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/{dns_seedlist_discovery → seed_list_discovery/replica-set}/direct-connection-false.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/direct-connection-true.yml +0 -0
- data/spec/spec_tests/data/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/{dns_seedlist_discovery → seed_list_discovery/replica-set}/longer-parent-in-return.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/misformatted-option.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/no-results.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/not-enough-parts.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/one-result-default-port.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/one-txt-record-multiple-strings.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/one-txt-record.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch1.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch2.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch3.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch4.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch5.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/returned-parent-too-short.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/returned-parent-wrong.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/two-results-default-port.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/two-results-nonstandard-port.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/two-txt-records.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-not-allowed-option.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-with-overridden-ssl-option.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-with-overridden-uri-option.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-with-unallowed-option.yml +0 -0
- data/spec/spec_tests/data/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/{dns_seedlist_discovery → seed_list_discovery/replica-set}/uri-with-port.yml +0 -0
- data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/uri-with-two-hosts.yml +0 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-client-error.yml +69 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-server-error.yml +102 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-unsupported-ops.yml +258 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions.yml +482 -0
- data/spec/spec_tests/data/transactions/retryable-abort-errorLabels.yml +2 -0
- data/spec/spec_tests/data/transactions/retryable-abort.yml +2 -0
- data/spec/spec_tests/data/transactions/retryable-commit-errorLabels.yml +2 -0
- data/spec/spec_tests/data/transactions/retryable-commit.yml +2 -0
- data/spec/spec_tests/data/transactions/retryable-writes.yml +2 -0
- data/spec/spec_tests/data/uri_options/connection-options.yml +60 -0
- data/spec/spec_tests/load_balancers_spec.rb +15 -0
- data/spec/spec_tests/retryable_reads_spec.rb +2 -2
- data/spec/spec_tests/retryable_writes_spec.rb +1 -1
- data/spec/spec_tests/sdam_integration_spec.rb +1 -1
- data/spec/spec_tests/sdam_monitoring_spec.rb +10 -5
- data/spec/spec_tests/sdam_spec.rb +1 -1
- data/spec/spec_tests/seed_list_discovery_spec.rb +118 -0
- data/spec/spec_tests/sessions_unified_spec.rb +13 -0
- data/spec/spec_tests/uri_options_spec.rb +4 -4
- data/spec/stress/fork_reconnect_stress_spec.rb +1 -5
- data/spec/stress/push_monitor_close_spec.rb +44 -0
- data/spec/support/certificates/atlas-ocsp-ca.crt +82 -90
- data/spec/support/certificates/atlas-ocsp.crt +127 -122
- data/spec/support/common_shortcuts.rb +2 -3
- data/spec/support/matchers.rb +13 -0
- data/spec/support/shared/auth_context.rb +16 -0
- data/spec/support/shared/session.rb +2 -2
- data/spec/support/spec_config.rb +10 -11
- data/spec/support/using_hash.rb +31 -0
- data/spec/support/utils.rb +1 -1
- data.tar.gz.sig +3 -4
- metadata +1111 -1029
- metadata.gz.sig +2 -3
- data/lib/mongo/collection/view/builder/find_command.rb +0 -173
- data/lib/mongo/collection/view/builder/op_query.rb +0 -94
- data/lib/mongo/cursor/builder/get_more_command.rb +0 -80
- data/lib/mongo/cursor/builder/kill_cursors_command.rb +0 -111
- data/lib/mongo/cursor/builder/op_get_more.rb +0 -64
- data/lib/mongo/cursor/builder/op_kill_cursors.rb +0 -106
- data/lib/mongo/server/context.rb +0 -72
- data/spec/mongo/cursor/builder/op_kill_cursors_spec.rb +0 -66
- data/spec/runners/unified/using_hash.rb +0 -34
- data/spec/spec_tests/dns_seedlist_discovery_spec.rb +0 -79
- data/spec/support/event_subscriber.rb +0 -221
@@ -29,8 +29,16 @@ describe Mongo::Collection::View::Aggregation do
|
|
29
29
|
described_class.new(view, pipeline, options)
|
30
30
|
end
|
31
31
|
|
32
|
+
let(:server) do
|
33
|
+
double('server')
|
34
|
+
end
|
35
|
+
|
36
|
+
let(:session) do
|
37
|
+
double('session')
|
38
|
+
end
|
39
|
+
|
32
40
|
let(:aggregation_spec) do
|
33
|
-
aggregation.send(:aggregate_spec,
|
41
|
+
aggregation.send(:aggregate_spec, server, session, nil)
|
34
42
|
end
|
35
43
|
|
36
44
|
before do
|
@@ -235,7 +243,7 @@ describe Mongo::Collection::View::Aggregation do
|
|
235
243
|
{ session: session }
|
236
244
|
end
|
237
245
|
|
238
|
-
let(:subscriber) { EventSubscriber.new }
|
246
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
239
247
|
|
240
248
|
let(:client) do
|
241
249
|
authorized_client.tap do |client|
|
@@ -351,15 +359,15 @@ describe Mongo::Collection::View::Aggregation do
|
|
351
359
|
|
352
360
|
describe '#aggregate_spec' do
|
353
361
|
|
354
|
-
context 'when
|
362
|
+
context 'when a read preference is given' do
|
355
363
|
|
356
364
|
let(:read_preference) do
|
357
|
-
{mode: :secondary}
|
365
|
+
BSON::Document.new({mode: :secondary})
|
358
366
|
end
|
359
367
|
|
360
368
|
it 'includes the read preference in the spec' do
|
361
|
-
|
362
|
-
expect(
|
369
|
+
spec = aggregation.send(:aggregate_spec, server, session, read_preference)
|
370
|
+
expect(spec[:read]).to eq(read_preference)
|
363
371
|
end
|
364
372
|
end
|
365
373
|
|
@@ -570,109 +578,77 @@ describe Mongo::Collection::View::Aggregation do
|
|
570
578
|
end
|
571
579
|
|
572
580
|
context 'when $out is in the pipeline' do
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
"
|
578
|
-
|
581
|
+
[['$out', 'string'], [:$out, 'symbol']].each do |op, type|
|
582
|
+
context "when #{op} is a #{type}" do
|
583
|
+
let(:pipeline) do
|
584
|
+
[{
|
585
|
+
"$group" => {
|
586
|
+
"_id" => "$city",
|
587
|
+
"totalpop" => { "$sum" => "$pop" }
|
588
|
+
}
|
589
|
+
},
|
590
|
+
{
|
591
|
+
op => 'output_collection'
|
579
592
|
}
|
580
|
-
|
581
|
-
|
582
|
-
'$out' => 'output_collection'
|
583
|
-
}
|
584
|
-
]
|
585
|
-
end
|
586
|
-
|
587
|
-
before do
|
588
|
-
authorized_client['output_collection'].delete_many
|
589
|
-
end
|
590
|
-
|
591
|
-
context 'when $out is a string' do
|
592
|
-
|
593
|
-
it 'does not allow the operation on a secondary' do
|
594
|
-
expect(aggregation.send(:secondary_ok?)).to be(false)
|
595
|
-
end
|
596
|
-
end
|
597
|
-
|
598
|
-
context 'when $out is a symbol' do
|
599
|
-
|
600
|
-
let(:pipeline) do
|
601
|
-
[{
|
602
|
-
"$group" => {
|
603
|
-
"_id" => "$city",
|
604
|
-
"totalpop" => { "$sum" => "$pop" }
|
605
|
-
}
|
606
|
-
},
|
607
|
-
{
|
608
|
-
:$out => 'output_collection'
|
609
|
-
}
|
610
|
-
]
|
611
|
-
end
|
612
|
-
|
613
|
-
it 'does not allow the operation on a secondary' do
|
614
|
-
expect(aggregation.send(:secondary_ok?)).to be(false)
|
615
|
-
end
|
616
|
-
end
|
593
|
+
]
|
594
|
+
end
|
617
595
|
|
596
|
+
before do
|
597
|
+
authorized_client['output_collection'].delete_many
|
598
|
+
end
|
618
599
|
|
619
|
-
|
600
|
+
let(:features) do
|
601
|
+
double()
|
602
|
+
end
|
620
603
|
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
end
|
604
|
+
let(:server) do
|
605
|
+
double().tap do |server|
|
606
|
+
allow(server).to receive(:features).and_return(features)
|
607
|
+
end
|
608
|
+
end
|
627
609
|
|
628
|
-
|
610
|
+
context 'when the view has a write concern' do
|
629
611
|
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
end
|
612
|
+
let(:collection) do
|
613
|
+
authorized_collection.with(write: INVALID_WRITE_CONCERN)
|
614
|
+
end
|
634
615
|
|
635
|
-
|
616
|
+
let(:view) do
|
617
|
+
Mongo::Collection::View.new(collection, selector, view_options)
|
618
|
+
end
|
636
619
|
|
637
|
-
|
638
|
-
|
639
|
-
end
|
620
|
+
context 'when the server supports write concern on the aggregate command' do
|
621
|
+
min_server_fcv '3.4'
|
640
622
|
|
641
|
-
|
642
|
-
|
643
|
-
|
623
|
+
it 'uses the write concern' do
|
624
|
+
expect {
|
625
|
+
aggregation.to_a
|
626
|
+
}.to raise_exception(Mongo::Error::OperationFailure)
|
627
|
+
end
|
628
|
+
end
|
644
629
|
|
645
|
-
|
646
|
-
|
630
|
+
context 'when the server does not support write concern on the aggregation command' do
|
631
|
+
max_server_version '3.2'
|
647
632
|
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
633
|
+
let(:documents) do
|
634
|
+
[
|
635
|
+
{ city: "Berlin", pop: 18913, neighborhood: "Kreuzberg" },
|
636
|
+
{ city: "Berlin", pop: 84143, neighborhood: "Mitte" },
|
637
|
+
{ city: "New York", pop: 40270, neighborhood: "Brooklyn" }
|
638
|
+
]
|
639
|
+
end
|
654
640
|
|
655
|
-
|
656
|
-
|
641
|
+
before do
|
642
|
+
authorized_collection.insert_many(documents)
|
643
|
+
aggregation.to_a
|
644
|
+
end
|
657
645
|
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
end
|
665
|
-
|
666
|
-
before do
|
667
|
-
authorized_collection.insert_many(documents)
|
668
|
-
aggregation.to_a
|
669
|
-
end
|
670
|
-
|
671
|
-
it 'does not apply the write concern' do
|
672
|
-
expect(authorized_client['output_collection'].find.count).to eq(2)
|
673
|
-
end
|
674
|
-
end
|
675
|
-
end
|
646
|
+
it 'does not apply the write concern' do
|
647
|
+
expect(authorized_client['output_collection'].find.count).to eq(2)
|
648
|
+
end
|
649
|
+
end
|
650
|
+
end
|
651
|
+
end
|
676
652
|
end
|
677
653
|
end
|
678
654
|
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
# encoding: utf-8
|
3
3
|
|
4
|
+
# TODO convert, move or delete these tests as part of RUBY-2706.
|
5
|
+
|
6
|
+
=begin
|
4
7
|
require 'lite_spec_helper'
|
5
8
|
|
6
9
|
describe Mongo::Collection::View::Builder::FindCommand do
|
@@ -522,3 +525,4 @@ describe Mongo::Collection::View::Builder::FindCommand do
|
|
522
525
|
end
|
523
526
|
end
|
524
527
|
end
|
528
|
+
=end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
# encoding: utf-8
|
3
3
|
|
4
|
+
# TODO convert, move or delete these tests as part of RUBY-2706.
|
5
|
+
|
6
|
+
=begin
|
4
7
|
require 'spec_helper'
|
5
8
|
|
6
9
|
describe Mongo::Collection::View::Builder::OpQuery do
|
@@ -155,3 +158,4 @@ describe Mongo::Collection::View::Builder::OpQuery do
|
|
155
158
|
end
|
156
159
|
end
|
157
160
|
end
|
161
|
+
=end
|
@@ -56,7 +56,7 @@ describe Mongo::Collection::View::ChangeStream do
|
|
56
56
|
|
57
57
|
let(:command_spec) do
|
58
58
|
change_stream.send(:instance_variable_set, '@resuming', false)
|
59
|
-
change_stream.send(:aggregate_spec, double('session'))
|
59
|
+
change_stream.send(:aggregate_spec, double('server'), double('session'), nil)
|
60
60
|
end
|
61
61
|
|
62
62
|
let(:cursor) do
|
@@ -60,6 +60,14 @@ describe Mongo::Collection::View::MapReduce do
|
|
60
60
|
described_class.new(view, map, reduce, options)
|
61
61
|
end
|
62
62
|
|
63
|
+
describe '#initialize' do
|
64
|
+
it 'warns of deprecation' do
|
65
|
+
Mongo::Logger.logger.should receive(:warn).with('MONGODB | The map_reduce operation is deprecated, please use the aggregation pipeline instead')
|
66
|
+
|
67
|
+
map_reduce
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
63
71
|
describe '#map_function' do
|
64
72
|
|
65
73
|
it 'returns the map function' do
|
@@ -242,7 +250,7 @@ describe Mongo::Collection::View::MapReduce do
|
|
242
250
|
Mongo::Collection::View.new(client[TEST_COLL], selector, view_options)
|
243
251
|
end
|
244
252
|
|
245
|
-
let(:subscriber) { EventSubscriber.new }
|
253
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
246
254
|
|
247
255
|
let(:client) do
|
248
256
|
authorized_client.tap do |client|
|
@@ -672,7 +680,12 @@ describe Mongo::Collection::View::MapReduce do
|
|
672
680
|
end
|
673
681
|
|
674
682
|
it 'does not reroute the operation to a primary' do
|
675
|
-
|
683
|
+
# We produce a deprecation warning, but there shouldn't be
|
684
|
+
# the reroute warning.
|
685
|
+
expect(Mongo::Logger.logger).to receive(:warn).once do |msg|
|
686
|
+
expect(msg).not_to include('Rerouting the MapReduce operation to the primary server')
|
687
|
+
end
|
688
|
+
|
676
689
|
map_reduce.to_a
|
677
690
|
end
|
678
691
|
end
|
@@ -5,7 +5,7 @@ require 'spec_helper'
|
|
5
5
|
|
6
6
|
describe Mongo::Collection do
|
7
7
|
|
8
|
-
let(:subscriber) { EventSubscriber.new }
|
8
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
9
9
|
|
10
10
|
let(:client) do
|
11
11
|
authorized_client.tap do |client|
|
@@ -1894,6 +1894,11 @@ describe Mongo::Collection do
|
|
1894
1894
|
context 'when a session supporting causal consistency is used' do
|
1895
1895
|
require_wired_tiger
|
1896
1896
|
|
1897
|
+
before do
|
1898
|
+
collection.drop
|
1899
|
+
collection.create
|
1900
|
+
end
|
1901
|
+
|
1897
1902
|
let(:cursors) do
|
1898
1903
|
collection.parallel_scan(2, session: session)
|
1899
1904
|
end
|
@@ -4352,7 +4357,7 @@ describe Mongo::Collection do
|
|
4352
4357
|
expect(command[:writeConcern]).to_not be_nil
|
4353
4358
|
expect(command[:writeConcern][:w]).to eq(1)
|
4354
4359
|
expect(command[:upsert]).to be(true)
|
4355
|
-
expect(command[:bypassDocumentValidation]).to
|
4360
|
+
expect(command[:bypassDocumentValidation]).to be false
|
4356
4361
|
expect(command[:maxTimeMS]).to eq(200)
|
4357
4362
|
end
|
4358
4363
|
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
# encoding: utf-8
|
3
3
|
|
4
|
+
# TODO convert, move or delete these tests as part of RUBY-2706.
|
5
|
+
|
6
|
+
=begin
|
4
7
|
require 'spec_helper'
|
5
8
|
|
6
9
|
describe Mongo::Cursor::Builder::GetMoreCommand do
|
@@ -189,3 +192,4 @@ describe Mongo::Cursor::Builder::GetMoreCommand do
|
|
189
192
|
end
|
190
193
|
end
|
191
194
|
end
|
195
|
+
=end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
# encoding: utf-8
|
3
3
|
|
4
|
+
# TODO convert, move or delete these tests as part of RUBY-2706.
|
5
|
+
|
6
|
+
=begin
|
4
7
|
require 'spec_helper'
|
5
8
|
|
6
9
|
describe Mongo::Cursor::Builder::OpGetMore do
|
@@ -62,3 +65,4 @@ describe Mongo::Cursor::Builder::OpGetMore do
|
|
62
65
|
end
|
63
66
|
end
|
64
67
|
end
|
68
|
+
=end
|
data/spec/mongo/cursor_spec.rb
CHANGED
@@ -80,6 +80,8 @@ describe Mongo::Cursor do
|
|
80
80
|
end
|
81
81
|
|
82
82
|
context 'server is unknown' do
|
83
|
+
require_topology :single, :replica_set, :sharded
|
84
|
+
|
83
85
|
let(:server) do
|
84
86
|
view.send(:server_selector).select_server(authorized_client.cluster).tap do |server|
|
85
87
|
authorized_client.cluster.disconnect!
|
@@ -329,8 +331,7 @@ describe Mongo::Cursor do
|
|
329
331
|
|
330
332
|
before do
|
331
333
|
authorized_collection.insert_many(documents)
|
332
|
-
cluster.schedule_kill_cursor(cursor.
|
333
|
-
cursor.send(:kill_cursors_op_spec),
|
334
|
+
cluster.schedule_kill_cursor(cursor.kill_spec,
|
334
335
|
cursor.instance_variable_get(:@server))
|
335
336
|
end
|
336
337
|
|
@@ -429,7 +430,7 @@ describe Mongo::Cursor do
|
|
429
430
|
|
430
431
|
it 'removes the cursor id from the active cursors tracked by the cluster cursor manager' do
|
431
432
|
enum.next
|
432
|
-
expect(cursor_reaper.instance_variable_get(:@
|
433
|
+
expect(cursor_reaper.instance_variable_get(:@active_cursor_ids)).not_to include(cursor_id)
|
433
434
|
end
|
434
435
|
end
|
435
436
|
end
|
@@ -437,7 +438,7 @@ describe Mongo::Cursor do
|
|
437
438
|
context 'when an implicit session is used' do
|
438
439
|
min_server_fcv '3.6'
|
439
440
|
|
440
|
-
let(:subscriber) { EventSubscriber.new }
|
441
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
441
442
|
|
442
443
|
let(:subscribed_client) do
|
443
444
|
authorized_client.tap do |client|
|
@@ -555,8 +556,17 @@ describe Mongo::Cursor do
|
|
555
556
|
db_name: SpecConfig.instance.test_db, coll_name: TEST_COLL }
|
556
557
|
end
|
557
558
|
|
559
|
+
let(:conn_desc) do
|
560
|
+
double('connection description').tap do |cd|
|
561
|
+
allow(cd).to receive(:service_id).and_return(nil)
|
562
|
+
end
|
563
|
+
end
|
564
|
+
|
558
565
|
let(:reply) do
|
559
|
-
|
566
|
+
double('reply').tap do |reply|
|
567
|
+
allow(reply).to receive(:is_a?).with(Mongo::Operation::Result).and_return(true)
|
568
|
+
allow(reply).to receive(:namespace)
|
569
|
+
allow(reply).to receive(:connection_description).and_return(conn_desc)
|
560
570
|
allow(reply).to receive(:cursor_id).and_return(42)
|
561
571
|
end
|
562
572
|
end
|
data/spec/mongo/database_spec.rb
CHANGED
@@ -218,7 +218,7 @@ describe Mongo::Database do
|
|
218
218
|
described_class.new(client, SpecConfig.instance.test_db)
|
219
219
|
end
|
220
220
|
|
221
|
-
let(:subscriber) { EventSubscriber.new }
|
221
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
222
222
|
|
223
223
|
let(:client) do
|
224
224
|
authorized_client.tap do |client|
|
@@ -391,7 +391,7 @@ describe Mongo::Database do
|
|
391
391
|
described_class.new(client, SpecConfig.instance.test_db)
|
392
392
|
end
|
393
393
|
|
394
|
-
let(:subscriber) { EventSubscriber.new }
|
394
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
395
395
|
|
396
396
|
let(:client) do
|
397
397
|
authorized_client.tap do |client|
|
@@ -583,7 +583,7 @@ describe Mongo::Database do
|
|
583
583
|
described_class.new(client, SpecConfig.instance.test_db)
|
584
584
|
end
|
585
585
|
|
586
|
-
let(:subscriber) { EventSubscriber.new }
|
586
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
587
587
|
|
588
588
|
let(:client) do
|
589
589
|
authorized_client.tap do |client|
|
@@ -678,7 +678,7 @@ describe Mongo::Database do
|
|
678
678
|
client.start_session
|
679
679
|
end
|
680
680
|
|
681
|
-
let(:subscriber) { EventSubscriber.new }
|
681
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
682
682
|
|
683
683
|
let(:client) do
|
684
684
|
authorized_client.tap do |client|
|
@@ -732,12 +732,12 @@ describe Mongo::Database do
|
|
732
732
|
database.cluster.next_primary
|
733
733
|
end
|
734
734
|
|
735
|
-
before do
|
736
|
-
expect(primary_server).to receive(:with_connection).at_least(:once).and_call_original
|
737
|
-
end
|
738
|
-
|
739
735
|
it 'uses read preference of primary' do
|
740
|
-
|
736
|
+
RSpec::Mocks.with_temporary_scope do
|
737
|
+
expect(primary_server).to receive(:with_connection).with(any_args).and_call_original
|
738
|
+
|
739
|
+
expect(database.command(ping: 1)).to be_successful
|
740
|
+
end
|
741
741
|
end
|
742
742
|
end
|
743
743
|
|
@@ -760,12 +760,12 @@ describe Mongo::Database do
|
|
760
760
|
described_class.new(client, SpecConfig.instance.test_db, client.options)
|
761
761
|
end
|
762
762
|
|
763
|
-
before do
|
764
|
-
expect(primary_server).to receive(:with_connection).at_least(:once).and_call_original
|
765
|
-
end
|
766
|
-
|
767
763
|
it 'does not use the client read preference 'do
|
768
|
-
|
764
|
+
RSpec::Mocks.with_temporary_scope do
|
765
|
+
expect(primary_server).to receive(:with_connection).with(any_args).and_call_original
|
766
|
+
|
767
|
+
expect(database.command(ping: 1)).to be_successful
|
768
|
+
end
|
769
769
|
end
|
770
770
|
end
|
771
771
|
|
@@ -969,7 +969,7 @@ describe Mongo::Database do
|
|
969
969
|
client.start_session
|
970
970
|
end
|
971
971
|
|
972
|
-
let(:subscriber) { EventSubscriber.new }
|
972
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
973
973
|
|
974
974
|
let(:client) do
|
975
975
|
root_authorized_client.tap do |client|
|
@@ -9,7 +9,7 @@ describe Mongo::Error::OperationFailure do
|
|
9
9
|
# Fail point will work on 4.0 mongod but requires 4.2 for mongos
|
10
10
|
min_server_fcv '4.2'
|
11
11
|
# Fail point must be set on the same server to which the query is sent
|
12
|
-
|
12
|
+
require_no_multi_mongos
|
13
13
|
|
14
14
|
# https://github.com/mongodb/specifications/commit/7745234f93039a83ae42589a6c0cdbefcffa32fa
|
15
15
|
let(:fail_point_command) do
|
@@ -362,7 +362,7 @@ describe Mongo::Grid::FSBucket do
|
|
362
362
|
fs.database[fs.files_collection.name].indexes
|
363
363
|
end
|
364
364
|
|
365
|
-
|
365
|
+
let(:operation) do
|
366
366
|
expect(fs.files_collection).to receive(:indexes).and_call_original
|
367
367
|
expect(fs.chunks_collection).to receive(:indexes).and_call_original
|
368
368
|
fs.insert_one(file)
|
@@ -376,26 +376,36 @@ describe Mongo::Grid::FSBucket do
|
|
376
376
|
fs.database[fs.files_collection.name].indexes.get(:filename => 1, :uploadDate => 1)
|
377
377
|
end
|
378
378
|
|
379
|
+
it 'tries to create indexes' do
|
380
|
+
expect(fs).to receive(:create_index_if_missing!).twice.and_call_original
|
381
|
+
operation
|
382
|
+
end
|
383
|
+
|
379
384
|
it 'creates an index on the files collection' do
|
385
|
+
operation
|
380
386
|
expect(files_index[:name]).to eq('filename_1_uploadDate_1')
|
381
387
|
end
|
382
388
|
|
383
389
|
it 'creates an index on the chunks collection' do
|
390
|
+
operation
|
384
391
|
expect(chunks_index[:name]).to eq('files_id_1_n_1')
|
385
392
|
end
|
386
393
|
|
387
394
|
context 'when a write operation is called more than once' do
|
388
395
|
|
389
|
-
before do
|
390
|
-
expect(fs).not_to receive(:ensure_indexes!)
|
391
|
-
end
|
392
|
-
|
393
396
|
let(:file2) do
|
394
397
|
Mongo::Grid::File.new('Goodbye!', :filename => 'test2.txt')
|
395
398
|
end
|
396
399
|
|
397
400
|
it 'only creates the indexes the first time' do
|
398
|
-
|
401
|
+
RSpec::Mocks.with_temporary_scope do
|
402
|
+
expect(fs).to receive(:create_index_if_missing!).twice.and_call_original
|
403
|
+
operation
|
404
|
+
end
|
405
|
+
RSpec::Mocks.with_temporary_scope do
|
406
|
+
expect(fs).not_to receive(:create_index_if_missing!)
|
407
|
+
expect(fs.insert_one(file2)).to be_a(BSON::ObjectId)
|
408
|
+
end
|
399
409
|
end
|
400
410
|
end
|
401
411
|
end
|
@@ -404,14 +414,12 @@ describe Mongo::Grid::FSBucket do
|
|
404
414
|
|
405
415
|
before do
|
406
416
|
fs.chunks_collection.indexes.create_one(Mongo::Grid::FSBucket::CHUNKS_INDEX, :unique => false)
|
407
|
-
expect(fs.chunks_collection).to receive(:indexes).and_call_original
|
408
|
-
expect(fs.files_collection).not_to receive(:indexes)
|
409
417
|
end
|
410
418
|
|
411
|
-
it '
|
419
|
+
it 'should not raise an error to the user' do
|
412
420
|
expect {
|
413
421
|
fs.insert_one(file)
|
414
|
-
}.
|
422
|
+
}.not_to raise_error
|
415
423
|
end
|
416
424
|
end
|
417
425
|
|
@@ -419,8 +427,6 @@ describe Mongo::Grid::FSBucket do
|
|
419
427
|
|
420
428
|
before do
|
421
429
|
support_fs.insert_one(support_file)
|
422
|
-
expect(fs.files_collection).not_to receive(:indexes)
|
423
|
-
expect(fs.chunks_collection).not_to receive(:indexes)
|
424
430
|
fs.insert_one(file)
|
425
431
|
end
|
426
432
|
|
@@ -259,8 +259,6 @@ describe Mongo::Grid::FSBucket::Stream::Write do
|
|
259
259
|
context 'when the files collection is empty' do
|
260
260
|
|
261
261
|
before do
|
262
|
-
expect(fs.files_collection).to receive(:indexes).and_call_original
|
263
|
-
expect(fs.chunks_collection).to receive(:indexes).and_call_original
|
264
262
|
stream.write(file)
|
265
263
|
end
|
266
264
|
|
@@ -329,8 +327,6 @@ describe Mongo::Grid::FSBucket::Stream::Write do
|
|
329
327
|
before do
|
330
328
|
support_fs.send(:ensure_indexes!)
|
331
329
|
support_fs.files_collection.insert_one(a: 1)
|
332
|
-
expect(fs.files_collection).not_to receive(:indexes)
|
333
|
-
expect(fs.chunks_collection).not_to receive(:indexes)
|
334
330
|
stream.write(file)
|
335
331
|
end
|
336
332
|
|
@@ -343,18 +339,16 @@ describe Mongo::Grid::FSBucket::Stream::Write do
|
|
343
339
|
end
|
344
340
|
end
|
345
341
|
|
346
|
-
context 'when the index creation
|
342
|
+
context 'when the index creation is done explicitely' do
|
347
343
|
|
348
344
|
before do
|
349
345
|
fs.chunks_collection.indexes.create_one(Mongo::Grid::FSBucket::CHUNKS_INDEX, :unique => false)
|
350
|
-
expect(fs.chunks_collection).to receive(:indexes).and_call_original
|
351
|
-
expect(fs.files_collection).not_to receive(:indexes)
|
352
346
|
end
|
353
347
|
|
354
|
-
it '
|
348
|
+
it 'should not raise an error to the user' do
|
355
349
|
expect {
|
356
350
|
stream.write(file)
|
357
|
-
}.
|
351
|
+
}.not_to raise_error
|
358
352
|
end
|
359
353
|
end
|
360
354
|
end
|
@@ -266,7 +266,7 @@ describe Mongo::Index::View do
|
|
266
266
|
context 'on server versions >= 4.4' do
|
267
267
|
min_server_fcv '4.4'
|
268
268
|
|
269
|
-
let(:subscriber) { EventSubscriber.new }
|
269
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
270
270
|
|
271
271
|
let(:client) do
|
272
272
|
authorized_client.tap do |client|
|
@@ -932,7 +932,7 @@ describe Mongo::Index::View do
|
|
932
932
|
context 'on server versions >= 4.4' do
|
933
933
|
min_server_fcv '4.4'
|
934
934
|
|
935
|
-
let(:subscriber) { EventSubscriber.new }
|
935
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
936
936
|
|
937
937
|
let(:client) do
|
938
938
|
authorized_client.tap do |client|
|
@@ -95,7 +95,7 @@ describe Mongo::Operation::Delete::OpMsg do
|
|
95
95
|
context 'when write concern is specified' do
|
96
96
|
|
97
97
|
it 'includes write concern in the selector' do
|
98
|
-
expect(op.send(:command, connection)[:writeConcern]).to eq(write_concern.options)
|
98
|
+
expect(op.send(:command, connection)[:writeConcern]).to eq(BSON::Document.new(write_concern.options))
|
99
99
|
end
|
100
100
|
end
|
101
101
|
end
|