mongo 2.15.0 → 2.16.0.alpha1
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 -1
- 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 +6 -0
- 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_spec.rb +4 -3
- 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/test.rb +3 -0
- data/spec/runners/unified.rb +1 -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 +2 -1
- 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 +9 -10
- data/spec/support/using_hash.rb +31 -0
- data/spec/support/utils.rb +1 -1
- data.tar.gz.sig +2 -4
- metadata +1050 -1004
- 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/client_spec.rb
CHANGED
@@ -635,7 +635,7 @@ describe Mongo::Client do
|
|
635
635
|
root_authorized_client.options.merge(heartbeat_frequency: 100, monitoring: true)
|
636
636
|
end
|
637
637
|
|
638
|
-
let(:subscriber) { EventSubscriber.new }
|
638
|
+
let(:subscriber) { Mrss::EventSubscriber.new }
|
639
639
|
|
640
640
|
let(:client) do
|
641
641
|
ClientRegistry.instance.new_local_client(
|
@@ -939,13 +939,15 @@ describe Mongo::Client do
|
|
939
939
|
end
|
940
940
|
|
941
941
|
context 'monitoring present' do
|
942
|
+
require_topology :single, :replica_set, :sharded
|
943
|
+
|
942
944
|
let(:client) do
|
943
945
|
authorized_client
|
944
946
|
end
|
945
947
|
|
946
948
|
it 'does not indicate lack of monitoring' do
|
947
|
-
client.summary.should =~ /servers=.*(STANDALONE|PRIMARY|MONGOS)/
|
948
|
-
client.summary.should_not =~ /servers=.*(STANDALONE|PRIMARY|MONGOS).*NO-MONITORING/
|
949
|
+
client.summary.should =~ /servers=.*(?:STANDALONE|PRIMARY|MONGOS)/
|
950
|
+
client.summary.should_not =~ /servers=.*(?:STANDALONE|PRIMARY|MONGOS).*NO-MONITORING/
|
949
951
|
end
|
950
952
|
end
|
951
953
|
|
@@ -957,7 +959,7 @@ describe Mongo::Client do
|
|
957
959
|
end
|
958
960
|
|
959
961
|
it 'does not indicate lack of monitoring' do
|
960
|
-
client.summary.should =~ /servers=.*(STANDALONE|PRIMARY|MONGOS).*NO-MONITORING/
|
962
|
+
client.summary.should =~ /servers=.*(STANDALONE|PRIMARY|MONGOS|\bLB\b).*NO-MONITORING/
|
961
963
|
end
|
962
964
|
end
|
963
965
|
end
|
@@ -5,16 +5,18 @@ require 'spec_helper'
|
|
5
5
|
|
6
6
|
describe Mongo::Cluster::CursorReaper do
|
7
7
|
|
8
|
+
let(:cluster) { double('cluster') }
|
9
|
+
|
8
10
|
before do
|
9
11
|
authorized_collection.drop
|
10
12
|
end
|
11
13
|
|
12
14
|
let(:reaper) do
|
13
|
-
described_class.new
|
15
|
+
described_class.new(cluster)
|
14
16
|
end
|
15
17
|
|
16
|
-
let(:
|
17
|
-
reaper.instance_variable_get(:@
|
18
|
+
let(:active_cursor_ids) do
|
19
|
+
reaper.instance_variable_get(:@active_cursor_ids)
|
18
20
|
end
|
19
21
|
|
20
22
|
describe '#intialize' do
|
@@ -24,16 +26,29 @@ describe Mongo::Cluster::CursorReaper do
|
|
24
26
|
end
|
25
27
|
|
26
28
|
it 'initializes a set for the list of active cursors' do
|
27
|
-
expect(reaper.instance_variable_get(:@
|
29
|
+
expect(reaper.instance_variable_get(:@active_cursor_ids)).to be_a(Set)
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
31
33
|
describe '#schedule_kill_cursor' do
|
32
34
|
|
33
|
-
let(:
|
35
|
+
let(:address) { Mongo::Address.new('localhost') }
|
36
|
+
let(:server) do
|
37
|
+
double('server').tap do |server|
|
38
|
+
allow(server).to receive(:address).and_return(address)
|
39
|
+
end
|
40
|
+
end
|
34
41
|
let(:cursor_id) { 1 }
|
35
|
-
let(:
|
36
|
-
|
42
|
+
let(:cursor_kill_spec_1) do
|
43
|
+
Mongo::Cursor::KillSpec.new(
|
44
|
+
cursor_id: cursor_id, coll_name: 'c', db_name: 'd', service_id: nil,
|
45
|
+
)
|
46
|
+
end
|
47
|
+
let(:cursor_kill_spec_2) do
|
48
|
+
Mongo::Cursor::KillSpec.new(
|
49
|
+
cursor_id: cursor_id, coll_name: 'c', db_name: 'q', service_id: nil,
|
50
|
+
)
|
51
|
+
end
|
37
52
|
let(:to_kill) { reaper.instance_variable_get(:@to_kill)}
|
38
53
|
|
39
54
|
context 'when the cursor is on the list of active cursors' do
|
@@ -45,36 +60,36 @@ describe Mongo::Cluster::CursorReaper do
|
|
45
60
|
context 'when there is not a list already for the server' do
|
46
61
|
|
47
62
|
before do
|
48
|
-
reaper.schedule_kill_cursor(
|
63
|
+
reaper.schedule_kill_cursor(cursor_kill_spec_1, server)
|
49
64
|
end
|
50
65
|
|
51
66
|
it 'initializes the list of op specs to a set' do
|
52
|
-
expect(to_kill.keys).to eq([
|
53
|
-
expect(to_kill[
|
67
|
+
expect(to_kill.keys).to eq([ address.seed ])
|
68
|
+
expect(to_kill[address.seed]).to eq(Set.new([cursor_kill_spec_1]))
|
54
69
|
end
|
55
70
|
end
|
56
71
|
|
57
72
|
context 'when there is a list of ops already for the server' do
|
58
73
|
|
59
74
|
before do
|
60
|
-
reaper.schedule_kill_cursor(
|
61
|
-
reaper.schedule_kill_cursor(
|
75
|
+
reaper.schedule_kill_cursor(cursor_kill_spec_1, server)
|
76
|
+
reaper.schedule_kill_cursor(cursor_kill_spec_2, server)
|
62
77
|
end
|
63
78
|
|
64
79
|
it 'adds the op to the server list' do
|
65
|
-
expect(to_kill.keys).to eq([
|
66
|
-
expect(to_kill[
|
80
|
+
expect(to_kill.keys).to eq([ address.seed ])
|
81
|
+
expect(to_kill[address.seed]).to contain_exactly(cursor_kill_spec_1, cursor_kill_spec_2)
|
67
82
|
end
|
68
83
|
|
69
84
|
context 'when the same op is added more than once' do
|
70
85
|
|
71
86
|
before do
|
72
|
-
reaper.schedule_kill_cursor(
|
87
|
+
reaper.schedule_kill_cursor(cursor_kill_spec_2, server)
|
73
88
|
end
|
74
89
|
|
75
90
|
it 'does not allow duplicates ops for a server' do
|
76
|
-
expect(to_kill.keys).to eq([
|
77
|
-
expect(to_kill[
|
91
|
+
expect(to_kill.keys).to eq([ address.seed ])
|
92
|
+
expect(to_kill[address.seed]).to contain_exactly(cursor_kill_spec_1, cursor_kill_spec_2)
|
78
93
|
end
|
79
94
|
end
|
80
95
|
end
|
@@ -83,7 +98,7 @@ describe Mongo::Cluster::CursorReaper do
|
|
83
98
|
context 'when the cursor is not on the list of active cursors' do
|
84
99
|
|
85
100
|
before do
|
86
|
-
reaper.schedule_kill_cursor(
|
101
|
+
reaper.schedule_kill_cursor(cursor_kill_spec_1, server)
|
87
102
|
end
|
88
103
|
|
89
104
|
it 'does not add the kill cursors op spec to the list' do
|
@@ -131,7 +146,7 @@ describe Mongo::Cluster::CursorReaper do
|
|
131
146
|
end
|
132
147
|
|
133
148
|
it 'registers the cursor id as active' do
|
134
|
-
expect(
|
149
|
+
expect(active_cursor_ids).to eq(Set.new([2]))
|
135
150
|
end
|
136
151
|
end
|
137
152
|
end
|
@@ -146,7 +161,7 @@ describe Mongo::Cluster::CursorReaper do
|
|
146
161
|
end
|
147
162
|
|
148
163
|
it 'removes the cursor id' do
|
149
|
-
expect(
|
164
|
+
expect(active_cursor_ids.size).to eq(0)
|
150
165
|
end
|
151
166
|
end
|
152
167
|
end
|
@@ -174,7 +189,7 @@ describe Mongo::Cluster::CursorReaper do
|
|
174
189
|
around do |example|
|
175
190
|
authorized_collection.insert_many(docs)
|
176
191
|
periodic_executor.stop!
|
177
|
-
cluster.schedule_kill_cursor(cursor.
|
192
|
+
cluster.schedule_kill_cursor(cursor.kill_spec,
|
178
193
|
cursor.instance_variable_get(:@server))
|
179
194
|
periodic_executor.flush
|
180
195
|
example.run
|
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
|