mongo 2.15.0 → 2.16.1
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/bulk_write.rb +2 -2
- data/lib/mongo/client.rb +45 -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 +5 -10
- data/lib/mongo/collection/view/builder/aggregation.rb +6 -5
- 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/iterable.rb +58 -24
- data/lib/mongo/collection/view/map_reduce.rb +39 -15
- data/lib/mongo/collection/view/readable.rb +60 -51
- data/lib/mongo/collection/view/writable.rb +178 -175
- data/lib/mongo/collection/view.rb +15 -21
- data/lib/mongo/collection.rb +13 -13
- data/lib/mongo/cursor/kill_spec.rb +38 -0
- data/lib/mongo/cursor.rb +72 -31
- data/lib/mongo/database/view.rb +1 -1
- 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.rb +3 -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 +8 -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 +110 -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/shared/executable.rb +15 -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 +12 -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 +7 -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 +17 -16
- 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 +5 -1
- data/lib/mongo/session/session_pool.rb +11 -0
- data/lib/mongo/session.rb +21 -1
- data/lib/mongo/socket/ocsp_verifier.rb +6 -37
- 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 -7
- 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 +1 -1
- 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 +1 -1
- 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/map_reduce_spec.rb +1 -1
- 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 +2 -0
- 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/session/session_pool_spec.rb +42 -10
- data/spec/mongo/session_transaction_spec.rb +15 -30
- data/spec/mongo/socket/unix_spec.rb +1 -0
- data/spec/mongo/uri_option_parsing_spec.rb +38 -5
- 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.rb +1 -1
- data/spec/runners/sdam.rb +2 -1
- data/spec/runners/transactions/test.rb +2 -2
- data/spec/runners/unified/assertions.rb +2 -3
- data/spec/runners/unified/event_subscriber.rb +2 -2
- data/spec/runners/unified/support_operations.rb +10 -2
- data/spec/runners/unified/test.rb +3 -0
- 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/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/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/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/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 +0 -0
- metadata +1077 -1029
- metadata.gz.sig +0 -0
- 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
data/spec/mongo/cluster_spec.rb
CHANGED
@@ -41,6 +41,34 @@ describe Mongo::Cluster do
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
context 'when topology is load-balanced' do
|
45
|
+
require_topology :load_balanced
|
46
|
+
|
47
|
+
it 'emits SDAM events' do
|
48
|
+
allow(monitoring).to receive(:succeeded)
|
49
|
+
|
50
|
+
register_cluster(
|
51
|
+
described_class.new(
|
52
|
+
SpecConfig.instance.addresses,
|
53
|
+
monitoring,
|
54
|
+
SpecConfig.instance.test_options
|
55
|
+
)
|
56
|
+
)
|
57
|
+
|
58
|
+
expect(monitoring).to have_received(:succeeded).with(
|
59
|
+
Mongo::Monitoring::TOPOLOGY_OPENING, any_args
|
60
|
+
)
|
61
|
+
expect(monitoring).to have_received(:succeeded).with(
|
62
|
+
Mongo::Monitoring::TOPOLOGY_CHANGED, any_args
|
63
|
+
).twice
|
64
|
+
expect(monitoring).to have_received(:succeeded).with(
|
65
|
+
Mongo::Monitoring::SERVER_OPENING, any_args
|
66
|
+
)
|
67
|
+
expect(monitoring).to have_received(:succeeded).with(
|
68
|
+
Mongo::Monitoring::SERVER_DESCRIPTION_CHANGED, any_args
|
69
|
+
)
|
70
|
+
end
|
71
|
+
end
|
44
72
|
end
|
45
73
|
|
46
74
|
describe '#==' do
|
@@ -334,7 +362,7 @@ describe Mongo::Cluster do
|
|
334
362
|
end
|
335
363
|
|
336
364
|
let(:monitoring) { Mongo::Monitoring.new }
|
337
|
-
let(:subscriber) { EventSubscriber.new }
|
365
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
338
366
|
|
339
367
|
it 'publishes server closed event once' do
|
340
368
|
monitoring.subscribe(Mongo::Monitoring::SERVER_CLOSED, subscriber)
|
@@ -425,7 +453,7 @@ describe Mongo::Cluster do
|
|
425
453
|
end
|
426
454
|
|
427
455
|
let(:primary_candidates) do
|
428
|
-
if cluster.single?
|
456
|
+
if cluster.single? || cluster.load_balanced?
|
429
457
|
cluster.servers
|
430
458
|
elsif cluster.sharded?
|
431
459
|
cluster.servers
|
@@ -611,7 +639,17 @@ describe Mongo::Cluster do
|
|
611
639
|
monitoring_io: false, server_selection_timeout: 0.183))
|
612
640
|
end
|
613
641
|
|
614
|
-
|
642
|
+
context 'in load-balanced topology' do
|
643
|
+
require_topology :load_balanced
|
644
|
+
|
645
|
+
it_behaves_like 'supports sessions'
|
646
|
+
end
|
647
|
+
|
648
|
+
context 'not in load-balanced topology' do
|
649
|
+
require_topology :single, :replica_set, :sharded
|
650
|
+
|
651
|
+
it_behaves_like 'does not support sessions'
|
652
|
+
end
|
615
653
|
end
|
616
654
|
|
617
655
|
context 'when client has contacted servers and then disconnected' do
|
@@ -761,6 +799,9 @@ describe Mongo::Cluster do
|
|
761
799
|
let(:default_address) { SpecConfig.instance.addresses.first }
|
762
800
|
|
763
801
|
context 'cluster has unknown servers' do
|
802
|
+
# Servers are never unknown in load-balanced topology.
|
803
|
+
require_topology :single, :replica_set, :sharded
|
804
|
+
|
764
805
|
it 'includes unknown servers' do
|
765
806
|
cluster.servers_list.each do |server|
|
766
807
|
expect(server).to be_unknown
|
@@ -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
|
@@ -242,7 +242,7 @@ describe Mongo::Collection::View::MapReduce do
|
|
242
242
|
Mongo::Collection::View.new(client[TEST_COLL], selector, view_options)
|
243
243
|
end
|
244
244
|
|
245
|
-
let(:subscriber) { EventSubscriber.new }
|
245
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
246
246
|
|
247
247
|
let(:client) do
|
248
248
|
authorized_client.tap do |client|
|
@@ -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
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
# encoding: utf-8
|
3
3
|
|
4
|
-
require '
|
4
|
+
require 'lite_spec_helper'
|
5
5
|
|
6
|
-
describe Mongo::
|
6
|
+
describe Mongo::Operation::Find::Builder::Modifiers do
|
7
7
|
|
8
8
|
describe '.map_driver_options' do
|
9
9
|
|
@@ -78,6 +78,7 @@ describe Mongo::Operation::Find::Legacy do
|
|
78
78
|
double('description').tap do |description|
|
79
79
|
expect(description).to receive(:mongos?) { false }
|
80
80
|
expect(description).to receive(:standalone?) { false }
|
81
|
+
#expect(description).to receive(:load_balancer?) { false }
|
81
82
|
end
|
82
83
|
end
|
83
84
|
|
@@ -95,7 +95,7 @@ describe Mongo::Operation::Insert::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
|
@@ -35,9 +35,12 @@ describe Mongo::Operation::KillCursors::Legacy do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
describe '#message' do
|
38
|
+
let(:expected_cursor_ids) do
|
39
|
+
spec[:cursor_ids].map { |v| BSON::Int64.new(v) }
|
40
|
+
end
|
38
41
|
|
39
42
|
it 'creates a kill cursors wire protocol message with correct specs' do
|
40
|
-
expect(Mongo::Protocol::KillCursors).to receive(:new).with(TEST_COLL, SpecConfig.instance.test_db,
|
43
|
+
expect(Mongo::Protocol::KillCursors).to receive(:new).with(TEST_COLL, SpecConfig.instance.test_db, expected_cursor_ids)
|
41
44
|
op.send(:message, double('server'))
|
42
45
|
end
|
43
46
|
end
|
@@ -33,12 +33,16 @@ describe Mongo::Operation::ReadPreferenceSupported do
|
|
33
33
|
double('description').tap do |description|
|
34
34
|
allow(description).to receive(:mongos?).and_return(mongos?)
|
35
35
|
allow(description).to receive(:standalone?).and_return(standalone?)
|
36
|
+
# TODO consider adding tests for load-balanced topologies also
|
37
|
+
allow(description).to receive(:load_balancer?).and_return(false)
|
36
38
|
end
|
37
39
|
end
|
38
40
|
|
39
41
|
let(:server) do
|
40
42
|
double('server').tap do |server|
|
41
43
|
allow(server).to receive(:cluster).and_return(cluster)
|
44
|
+
# TODO consider adding tests for load-balanced topologies also
|
45
|
+
allow(server).to receive(:load_balancer?).and_return(false)
|
42
46
|
end
|
43
47
|
end
|
44
48
|
|
@@ -41,6 +41,8 @@ describe Mongo::Operation::SessionsSupported do
|
|
41
41
|
let(:server) do
|
42
42
|
double('server').tap do |server|
|
43
43
|
allow(server).to receive(:cluster).and_return(cluster)
|
44
|
+
# TODO consider adding tests for load-balanced topologies also
|
45
|
+
allow(server).to receive(:load_balancer?).and_return(false)
|
44
46
|
end
|
45
47
|
end
|
46
48
|
|
@@ -101,7 +101,7 @@ describe Mongo::Operation::Update::OpMsg do
|
|
101
101
|
context 'when write concern is specified' do
|
102
102
|
|
103
103
|
it 'includes write concern in the selector' do
|
104
|
-
expect(op.send(:command, connection)[:writeConcern]).to eq(write_concern.options)
|
104
|
+
expect(op.send(:command, connection)[:writeConcern]).to eq(BSON::Document.new(write_concern.options))
|
105
105
|
end
|
106
106
|
end
|
107
107
|
end
|
@@ -14,7 +14,7 @@ describe Mongo::QueryCache do
|
|
14
14
|
authorized_collection.delete_many
|
15
15
|
end
|
16
16
|
|
17
|
-
let(:subscriber) { EventSubscriber.new }
|
17
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
18
18
|
|
19
19
|
let(:client) do
|
20
20
|
authorized_client.tap do |client|
|
@@ -139,7 +139,11 @@ describe Mongo::QueryCache do
|
|
139
139
|
|
140
140
|
describe '#get' do
|
141
141
|
let(:view) { double("Mongo::Collection::View") }
|
142
|
-
let(:result)
|
142
|
+
let(:result) do
|
143
|
+
double("Mongo::Operation::Result").tap do |result|
|
144
|
+
allow(result).to receive(:is_a?).with(Mongo::Operation::Result).and_return(true)
|
145
|
+
end
|
146
|
+
end
|
143
147
|
let(:server) { double("Mongo::Server") }
|
144
148
|
let(:caching_cursor) { Mongo::CachingCursor.new(view, result, server) }
|
145
149
|
|