mongo 2.14.0 → 2.15.0.alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +4 -1
- data/Rakefile +8 -15
- data/lib/mongo.rb +23 -0
- data/lib/mongo/auth/aws/conversation.rb +1 -4
- data/lib/mongo/auth/base.rb +13 -7
- data/lib/mongo/auth/conversation_base.rb +32 -0
- data/lib/mongo/auth/cr/conversation.rb +6 -29
- data/lib/mongo/auth/gssapi/conversation.rb +4 -15
- data/lib/mongo/auth/ldap/conversation.rb +3 -14
- data/lib/mongo/auth/sasl_conversation_base.rb +1 -13
- data/lib/mongo/auth/scram_conversation_base.rb +7 -34
- data/lib/mongo/auth/user/view.rb +16 -9
- data/lib/mongo/auth/x509/conversation.rb +4 -25
- data/lib/mongo/background_thread.rb +11 -0
- data/lib/mongo/bulk_write.rb +21 -18
- data/lib/mongo/client.rb +82 -6
- data/lib/mongo/cluster.rb +19 -28
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +6 -2
- data/lib/mongo/cluster/sdam_flow.rb +14 -0
- data/lib/mongo/collection.rb +8 -6
- data/lib/mongo/collection/view/aggregation.rb +1 -1
- data/lib/mongo/collection/view/change_stream.rb +1 -1
- data/lib/mongo/collection/view/iterable.rb +1 -1
- data/lib/mongo/collection/view/map_reduce.rb +2 -2
- data/lib/mongo/collection/view/readable.rb +42 -20
- data/lib/mongo/collection/view/writable.rb +14 -14
- data/lib/mongo/cursor.rb +2 -2
- data/lib/mongo/database.rb +22 -5
- data/lib/mongo/database/view.rb +1 -1
- data/lib/mongo/error.rb +9 -1
- data/lib/mongo/error/bulk_write_error.rb +17 -3
- data/lib/mongo/error/internal_driver_error.rb +22 -0
- data/lib/mongo/error/operation_failure.rb +21 -2
- data/lib/mongo/error/parser.rb +65 -12
- data/lib/mongo/error/server_api_conflict.rb +23 -0
- data/lib/mongo/error/server_api_not_supported.rb +24 -0
- data/lib/mongo/error/unmet_dependency.rb +21 -0
- data/lib/mongo/grid/fs_bucket.rb +37 -37
- data/lib/mongo/index/view.rb +21 -11
- data/lib/mongo/monitoring.rb +13 -4
- data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +27 -16
- data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +26 -15
- data/lib/mongo/operation.rb +2 -2
- data/lib/mongo/operation/collections_info.rb +18 -1
- data/lib/mongo/operation/collections_info/command.rb +2 -2
- data/lib/mongo/operation/context.rb +99 -0
- data/lib/mongo/operation/indexes.rb +15 -1
- data/lib/mongo/operation/insert/command.rb +2 -2
- data/lib/mongo/operation/insert/legacy.rb +2 -2
- data/lib/mongo/operation/insert/op_msg.rb +2 -2
- data/lib/mongo/operation/list_collections/result.rb +4 -1
- data/lib/mongo/operation/result.rb +2 -0
- data/lib/mongo/operation/shared/executable.rb +24 -14
- data/lib/mongo/operation/shared/executable_no_validate.rb +2 -2
- data/lib/mongo/operation/shared/op_msg_or_command.rb +1 -7
- data/lib/mongo/operation/shared/op_msg_or_find_command.rb +1 -7
- data/lib/mongo/operation/shared/polymorphic_operation.rb +39 -0
- data/lib/mongo/operation/shared/response_handling.rb +23 -23
- data/lib/mongo/operation/shared/sessions_supported.rb +13 -2
- data/lib/mongo/operation/shared/write.rb +8 -18
- data/lib/mongo/protocol/compressed.rb +51 -5
- data/lib/mongo/protocol/message.rb +20 -2
- data/lib/mongo/protocol/msg.rb +36 -11
- data/lib/mongo/query_cache.rb +30 -0
- data/lib/mongo/retryable.rb +1 -1
- data/lib/mongo/server.rb +7 -15
- data/lib/mongo/server/app_metadata.rb +52 -18
- data/lib/mongo/server/connection.rb +5 -0
- data/lib/mongo/server/connection_base.rb +13 -10
- data/lib/mongo/server/connection_pool.rb +6 -4
- data/lib/mongo/server/description.rb +4 -0
- data/lib/mongo/server/description/features.rb +9 -8
- data/lib/mongo/server/monitor.rb +20 -1
- data/lib/mongo/server/monitor/app_metadata.rb +1 -1
- data/lib/mongo/server/monitor/connection.rb +9 -10
- data/lib/mongo/server/pending_connection.rb +24 -6
- data/lib/mongo/server/push_monitor.rb +11 -1
- data/lib/mongo/session.rb +2 -2
- data/lib/mongo/session/session_pool.rb +4 -2
- data/lib/mongo/socket.rb +29 -4
- data/lib/mongo/socket/ssl.rb +8 -0
- data/lib/mongo/srv/monitor.rb +0 -11
- data/lib/mongo/uri/options_mapper.rb +38 -0
- data/lib/mongo/utils.rb +15 -0
- data/lib/mongo/version.rb +1 -1
- data/spec/README.md +24 -1
- data/spec/integration/auth_spec.rb +25 -15
- data/spec/integration/bulk_write_error_message_spec.rb +41 -0
- data/spec/integration/change_stream_spec.rb +4 -4
- data/spec/integration/command_monitoring_spec.rb +2 -2
- data/spec/integration/connection_spec.rb +2 -0
- data/spec/integration/docs_examples_spec.rb +8 -1
- data/spec/integration/fork_reconnect_spec.rb +4 -1
- data/spec/integration/ocsp_verifier_spec.rb +13 -7
- data/spec/integration/operation_failure_code_spec.rb +1 -1
- data/spec/integration/operation_failure_message_spec.rb +90 -0
- data/spec/integration/reconnect_spec.rb +1 -1
- data/spec/integration/sdam_error_handling_spec.rb +1 -1
- data/spec/integration/sdam_events_spec.rb +3 -5
- data/spec/integration/snappy_compression_spec.rb +25 -0
- data/spec/integration/srv_monitoring_spec.rb +1 -1
- data/spec/integration/transactions_examples_spec.rb +6 -0
- data/spec/integration/zlib_compression_spec.rb +1 -1
- data/spec/integration/zstd_compression_spec.rb +26 -0
- data/spec/lite_spec_helper.rb +7 -1
- data/spec/mongo/address_spec.rb +15 -11
- data/spec/mongo/auth/ldap/conversation_spec.rb +1 -1
- data/spec/mongo/auth/ldap_spec.rb +5 -1
- data/spec/mongo/auth/scram_negotiation_spec.rb +1 -1
- data/spec/mongo/auth/scram_spec.rb +1 -1
- data/spec/mongo/auth/x509/conversation_spec.rb +3 -3
- data/spec/mongo/client_construction_spec.rb +207 -33
- data/spec/mongo/client_spec.rb +17 -0
- data/spec/mongo/cluster_spec.rb +3 -18
- data/spec/mongo/collection/view/explainable_spec.rb +1 -1
- data/spec/mongo/collection/view/readable_spec.rb +33 -19
- data/spec/mongo/collection_crud_spec.rb +4357 -0
- data/spec/mongo/collection_ddl_spec.rb +534 -0
- data/spec/mongo/collection_spec.rb +5 -4859
- data/spec/mongo/database_spec.rb +66 -4
- data/spec/mongo/error/bulk_write_error_spec.rb +3 -3
- data/spec/mongo/error/parser_spec.rb +37 -6
- data/spec/mongo/index/view_spec.rb +8 -2
- data/spec/mongo/monitoring/event/server_heartbeat_failed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_heartbeat_succeeded_spec.rb +1 -1
- data/spec/mongo/operation/aggregate_spec.rb +2 -1
- data/spec/mongo/operation/collections_info_spec.rb +4 -1
- data/spec/mongo/operation/command_spec.rb +6 -3
- data/spec/mongo/operation/create_index_spec.rb +6 -3
- data/spec/mongo/operation/create_user_spec.rb +6 -3
- data/spec/mongo/operation/delete/bulk_spec.rb +9 -6
- data/spec/mongo/operation/delete_spec.rb +11 -7
- data/spec/mongo/operation/drop_index_spec.rb +6 -2
- data/spec/mongo/operation/find/legacy_spec.rb +3 -1
- data/spec/mongo/operation/get_more_spec.rb +3 -1
- data/spec/mongo/operation/indexes_spec.rb +5 -1
- data/spec/mongo/operation/insert/bulk_spec.rb +10 -7
- data/spec/mongo/operation/insert_spec.rb +15 -12
- data/spec/mongo/operation/map_reduce_spec.rb +5 -2
- data/spec/mongo/operation/remove_user_spec.rb +6 -3
- data/spec/mongo/operation/result_spec.rb +1 -1
- data/spec/mongo/operation/update/bulk_spec.rb +9 -6
- data/spec/mongo/operation/update_spec.rb +10 -7
- data/spec/mongo/operation/update_user_spec.rb +4 -1
- data/spec/mongo/protocol/compressed_spec.rb +26 -12
- data/spec/mongo/query_cache_middleware_spec.rb +55 -0
- data/spec/mongo/retryable_spec.rb +3 -2
- data/spec/mongo/server/app_metadata_spec.rb +2 -0
- data/spec/mongo/server/connection_pool/populator_spec.rb +3 -1
- data/spec/mongo/server/connection_pool_spec.rb +1 -1
- data/spec/mongo/server/connection_spec.rb +24 -17
- data/spec/mongo/server/monitor/connection_spec.rb +17 -7
- data/spec/mongo/server/monitor_spec.rb +9 -1
- data/spec/mongo/server_spec.rb +15 -2
- data/spec/mongo/socket/ssl_spec.rb +40 -0
- data/spec/mongo/socket_spec.rb +2 -2
- data/spec/mongo/tls_context_hooks_spec.rb +37 -0
- data/spec/runners/connection_string.rb +0 -4
- data/spec/runners/crud/requirement.rb +40 -3
- data/spec/runners/crud/verifier.rb +8 -0
- data/spec/runners/transactions/operation.rb +13 -2
- data/spec/runners/transactions/test.rb +1 -0
- data/spec/runners/unified.rb +96 -0
- data/spec/runners/unified/assertions.rb +249 -0
- data/spec/runners/unified/change_stream_operations.rb +26 -0
- data/spec/runners/unified/crud_operations.rb +199 -0
- data/spec/runners/unified/ddl_operations.rb +96 -0
- data/spec/runners/unified/entity_map.rb +39 -0
- data/spec/runners/unified/error.rb +25 -0
- data/spec/runners/unified/event_subscriber.rb +91 -0
- data/spec/runners/unified/exceptions.rb +21 -0
- data/spec/runners/unified/grid_fs_operations.rb +55 -0
- data/spec/runners/unified/support_operations.rb +250 -0
- data/spec/runners/unified/test.rb +393 -0
- data/spec/runners/unified/test_group.rb +28 -0
- data/spec/runners/unified/using_hash.rb +31 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/lib/mrss/cluster_config.rb +218 -0
- data/spec/shared/lib/mrss/constraints.rb +43 -0
- data/spec/shared/lib/mrss/docker_runner.rb +262 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +112 -0
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +231 -0
- data/spec/shared/shlib/distro.sh +73 -0
- data/spec/shared/shlib/server.sh +290 -0
- data/spec/shared/shlib/set_env.sh +128 -0
- data/spec/solo/clean_exit_spec.rb +21 -0
- data/spec/spec_helper.rb +4 -1
- data/spec/spec_tests/crud_unified_spec.rb +10 -0
- data/spec/spec_tests/data/change_streams/change-streams.yml +0 -1
- data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +267 -0
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-4.9.yml +60 -0
- data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount.yml → estimatedDocumentCount-pre4.9.yml} +2 -0
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors-4.9.yml +146 -0
- data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount-serverErrors.yml → estimatedDocumentCount-serverErrors-pre4.9.yml} +2 -0
- data/spec/spec_tests/data/retryable_reads/listIndexNames.yml +1 -1
- data/spec/spec_tests/data/unified/valid-fail/operation-failure.yml +31 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-change-streams.yml +220 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-command-monitoring.yml +102 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-crud.yml +184 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-gridfs.yml +155 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-retryable-reads.yml +193 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-retryable-writes.yml +210 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-sessions.yml +215 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions-convenient-api.yml +235 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions-mongos-pin-auto.yml +169 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions.yml +170 -0
- data/spec/spec_tests/data/uri_options/compression-options.yml +1 -1
- data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +416 -0
- data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +409 -0
- data/spec/spec_tests/data/versioned_api/runcommand-helper-no-api-version-declared.yml +67 -0
- data/spec/spec_tests/data/versioned_api/test-commands-deprecation-errors.yml +47 -0
- data/spec/spec_tests/data/versioned_api/test-commands-strict-mode.yml +44 -0
- data/spec/spec_tests/data/versioned_api/transaction-handling.yml +180 -0
- data/spec/spec_tests/unified_spec.rb +15 -0
- data/spec/spec_tests/uri_options_spec.rb +16 -0
- data/spec/spec_tests/versioned_api_spec.rb +10 -0
- data/spec/support/common_shortcuts.rb +15 -1
- data/spec/support/shared/session.rb +2 -2
- data/spec/support/spec_config.rb +46 -3
- data/spec/support/spec_setup.rb +48 -38
- data/spec/support/utils.rb +64 -3
- metadata +1104 -992
- metadata.gz.sig +0 -0
- data/lib/mongo/operation/shared/collections_info_or_list_collections.rb +0 -58
- data/lib/mongo/operation/shared/op_msg_or_list_indexes_command.rb +0 -47
- data/spec/support/cluster_config.rb +0 -207
data/spec/mongo/database_spec.rb
CHANGED
@@ -95,6 +95,26 @@ describe Mongo::Database do
|
|
95
95
|
expect(collection.server_selector).to eq(Mongo::ServerSelector.get(mode: :secondary))
|
96
96
|
expect(collection.read_preference).to eq(BSON::Document.new(mode: :secondary))
|
97
97
|
end
|
98
|
+
|
99
|
+
context ':server_api option' do
|
100
|
+
|
101
|
+
let(:client) do
|
102
|
+
new_local_client_nmio(['localhost'], server_api: {version: '1'})
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'is not transfered to the collection' do
|
106
|
+
client.options[:server_api].should == {'version' => '1'}
|
107
|
+
collection.options[:server_api].should be nil
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
context 'when providing :server_api option' do
|
113
|
+
it 'is rejected' do
|
114
|
+
lambda do
|
115
|
+
database['foo', server_api: {version: '1'}]
|
116
|
+
end.should raise_error(ArgumentError, 'The :server_api option cannot be specified for collection objects. It can only be specified on Client level')
|
117
|
+
end
|
98
118
|
end
|
99
119
|
end
|
100
120
|
|
@@ -319,21 +339,40 @@ describe Mongo::Database do
|
|
319
339
|
described_class.new(root_authorized_client, 'admin')
|
320
340
|
end
|
321
341
|
|
322
|
-
|
323
|
-
|
342
|
+
shared_examples 'does not include system collections' do
|
343
|
+
it 'does not include system collections' do
|
344
|
+
expect(result.none? { |name| name =~ /(^|\.)system\./ }).to be true
|
345
|
+
end
|
324
346
|
end
|
325
347
|
|
326
|
-
context 'server
|
348
|
+
context 'server 4.7+' do
|
349
|
+
min_server_fcv '4.7'
|
350
|
+
# https://jira.mongodb.org/browse/SERVER-35804
|
351
|
+
require_topology :single, :replica_set
|
352
|
+
|
353
|
+
include_examples 'does not include system collections'
|
354
|
+
|
355
|
+
it 'returns results' do
|
356
|
+
expect(result).to include('acol')
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
360
|
+
context 'server 3.0-4.5' do
|
327
361
|
min_server_fcv '3.0'
|
362
|
+
max_server_version '4.5'
|
363
|
+
|
364
|
+
include_examples 'does not include system collections'
|
328
365
|
|
329
366
|
it 'returns results' do
|
330
367
|
expect(result).to include('acol')
|
331
368
|
end
|
332
369
|
end
|
333
370
|
|
334
|
-
context 'server 2.6
|
371
|
+
context 'server 2.6' do
|
335
372
|
max_server_version '2.6'
|
336
373
|
|
374
|
+
include_examples 'does not include system collections'
|
375
|
+
|
337
376
|
it 'returns results' do
|
338
377
|
expect(result).to include('admin.acol')
|
339
378
|
end
|
@@ -836,6 +875,29 @@ describe Mongo::Database do
|
|
836
875
|
end
|
837
876
|
end
|
838
877
|
end
|
878
|
+
|
879
|
+
context 'when client server api is not set' do
|
880
|
+
require_no_required_api_version
|
881
|
+
min_server_fcv '4.7'
|
882
|
+
|
883
|
+
it 'passes server api parameters' do
|
884
|
+
lambda do
|
885
|
+
database.command(ping: 1, apiVersion: 'does-not-exist')
|
886
|
+
end.should raise_error(
|
887
|
+
an_instance_of(Mongo::Error::OperationFailure).and having_attributes(code: 322))
|
888
|
+
end
|
889
|
+
end
|
890
|
+
|
891
|
+
context 'when client server api is set' do
|
892
|
+
require_required_api_version
|
893
|
+
min_server_fcv '4.7'
|
894
|
+
|
895
|
+
it 'reports server api conflict' do
|
896
|
+
lambda do
|
897
|
+
database.command(ping: 1, apiVersion: 'does-not-exist')
|
898
|
+
end.should raise_error(Mongo::Error::ServerApiConflict)
|
899
|
+
end
|
900
|
+
end
|
839
901
|
end
|
840
902
|
|
841
903
|
describe '#drop' do
|
@@ -31,19 +31,19 @@ describe Mongo::Error::BulkWriteError do
|
|
31
31
|
|
32
32
|
describe '#message' do
|
33
33
|
it 'is correct' do
|
34
|
-
expect(error.message).to eq("
|
34
|
+
expect(error.message).to eq("Multiple errors: [1]: message1; [2]: message2 (note1, note2)")
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
describe '#to_s' do
|
39
39
|
it 'is correct' do
|
40
|
-
expect(error.to_s).to eq("
|
40
|
+
expect(error.to_s).to eq("Multiple errors: [1]: message1; [2]: message2 (note1, note2)")
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
describe '#inspect' do
|
45
45
|
it 'is correct' do
|
46
|
-
expect(error.inspect).to eq("#<Mongo::Error::BulkWriteError:
|
46
|
+
expect(error.inspect).to eq("#<Mongo::Error::BulkWriteError: Multiple errors: [1]: message1; [2]: message2 (note1, note2)>")
|
47
47
|
end
|
48
48
|
end
|
49
49
|
end
|
@@ -25,10 +25,22 @@ describe Mongo::Error::Parser do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'returns the message' do
|
28
|
-
expect(parser.message).to eq('no such command: notacommand
|
28
|
+
expect(parser.message).to eq('[59]: no such command: notacommand')
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
+
context 'when the document contains an errmsg and code name' do
|
33
|
+
|
34
|
+
let(:document) do
|
35
|
+
{ 'errmsg' => 'no such command: notacommand', 'code' => 59, 'codeName' => 'foo' }
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'returns the message' do
|
39
|
+
expect(parser.message).to eq('[59:foo]: no such command: notacommand')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
=begin
|
32
44
|
context 'when the document contains writeErrors' do
|
33
45
|
|
34
46
|
context 'when only a single error exists' do
|
@@ -38,7 +50,7 @@ describe Mongo::Error::Parser do
|
|
38
50
|
end
|
39
51
|
|
40
52
|
it 'returns the message' do
|
41
|
-
expect(parser.message).to eq('Unknown modifier: $st
|
53
|
+
expect(parser.message).to eq('[9]: Unknown modifier: $st')
|
42
54
|
end
|
43
55
|
end
|
44
56
|
|
@@ -55,11 +67,30 @@ describe Mongo::Error::Parser do
|
|
55
67
|
|
56
68
|
it 'returns the messages concatenated' do
|
57
69
|
expect(parser.message).to eq(
|
58
|
-
'Unknown modifier: $st
|
70
|
+
'Multiple errors: 9: Unknown modifier: $st; 9: Unknown modifier: $bl'
|
71
|
+
)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'when multiple errors with code names exist' do
|
76
|
+
|
77
|
+
let(:document) do
|
78
|
+
{
|
79
|
+
'writeErrors' => [
|
80
|
+
{ 'code' => 9, 'codeName' => 'foo', 'errmsg' => 'Unknown modifier: $st' },
|
81
|
+
{ 'code' => 9, 'codeName' => 'foo', 'errmsg' => 'Unknown modifier: $bl' },
|
82
|
+
]
|
83
|
+
}
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'returns the messages concatenated' do
|
87
|
+
expect(parser.message).to eq(
|
88
|
+
'Multiple errors: [9:foo]: Unknown modifier: $st; [9:foo]: Unknown modifier: $bl'
|
59
89
|
)
|
60
90
|
end
|
61
91
|
end
|
62
92
|
end
|
93
|
+
=end
|
63
94
|
|
64
95
|
context 'when the document contains $err' do
|
65
96
|
|
@@ -68,7 +99,7 @@ describe Mongo::Error::Parser do
|
|
68
99
|
end
|
69
100
|
|
70
101
|
it 'returns the message' do
|
71
|
-
expect(parser.message).to eq('not authorized for query
|
102
|
+
expect(parser.message).to eq('[13]: not authorized for query')
|
72
103
|
end
|
73
104
|
end
|
74
105
|
|
@@ -79,7 +110,7 @@ describe Mongo::Error::Parser do
|
|
79
110
|
end
|
80
111
|
|
81
112
|
it 'returns the message' do
|
82
|
-
expect(parser.message).to eq('not authorized for query
|
113
|
+
expect(parser.message).to eq('[13]: not authorized for query')
|
83
114
|
end
|
84
115
|
end
|
85
116
|
|
@@ -90,7 +121,7 @@ describe Mongo::Error::Parser do
|
|
90
121
|
end
|
91
122
|
|
92
123
|
it 'returns the message' do
|
93
|
-
expect(parser.message).to eq('Not enough data-bearing nodes
|
124
|
+
expect(parser.message).to eq('[100]: Not enough data-bearing nodes')
|
94
125
|
end
|
95
126
|
end
|
96
127
|
end
|
@@ -305,7 +305,8 @@ describe Mongo::Index::View do
|
|
305
305
|
{ key: { testing: -1 }, unique: true },
|
306
306
|
{ commit_quorum: 'unsupported-value' }
|
307
307
|
)
|
308
|
-
|
308
|
+
# 4.4.4 changed the text of the error message
|
309
|
+
end.to raise_error(Mongo::Error::OperationFailure, /Commit quorum cannot be satisfied with the current replica set configuration|No write concern mode named 'unsupported-value' found in replica set configuration/)
|
309
310
|
end
|
310
311
|
end
|
311
312
|
end
|
@@ -649,6 +650,8 @@ describe Mongo::Index::View do
|
|
649
650
|
end
|
650
651
|
|
651
652
|
context 'when using bucket option' do
|
653
|
+
# Option is removed in 4.9
|
654
|
+
max_server_version '4.7'
|
652
655
|
|
653
656
|
let(:spec) do
|
654
657
|
{ 'any' => 1 }
|
@@ -755,6 +758,8 @@ describe Mongo::Index::View do
|
|
755
758
|
end
|
756
759
|
|
757
760
|
context 'when using bucket option' do
|
761
|
+
# Option is removed in 4.9
|
762
|
+
max_server_version '4.7'
|
758
763
|
|
759
764
|
let(:spec) do
|
760
765
|
{ 'any' => 1 }
|
@@ -964,7 +969,8 @@ describe Mongo::Index::View do
|
|
964
969
|
it 'raises an exception' do
|
965
970
|
expect do
|
966
971
|
view.create_one({ 'x' => 1 }, commit_quorum: 'unsupported-value')
|
967
|
-
|
972
|
+
# 4.4.4 changed the text of the error message
|
973
|
+
end.to raise_error(Mongo::Error::OperationFailure, /Commit quorum cannot be satisfied with the current replica set configuration|No write concern mode named 'unsupported-value' found in replica set configuration/)
|
968
974
|
end
|
969
975
|
end
|
970
976
|
end
|
@@ -20,7 +20,7 @@ describe Mongo::Monitoring::Event::ServerHeartbeatFailed do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
let(:event) do
|
23
|
-
described_class.new(address, 1, Mongo::Error::SocketError.new('foo'))
|
23
|
+
described_class.new(address, 1, Mongo::Error::SocketError.new('foo'), started_event: nil)
|
24
24
|
end
|
25
25
|
|
26
26
|
describe '#summary' do
|
@@ -19,6 +19,7 @@ describe Mongo::Operation::Aggregate do
|
|
19
19
|
end
|
20
20
|
let(:op) { described_class.new(spec) }
|
21
21
|
|
22
|
+
let(:context) { Mongo::Operation::Context.new }
|
22
23
|
|
23
24
|
describe '#initialize' do
|
24
25
|
|
@@ -64,7 +65,7 @@ describe Mongo::Operation::Aggregate do
|
|
64
65
|
|
65
66
|
it 'raises an exception' do
|
66
67
|
expect {
|
67
|
-
op.execute(authorized_primary,
|
68
|
+
op.execute(authorized_primary, context: context)
|
68
69
|
}.to raise_error(Mongo::Error::OperationFailure)
|
69
70
|
end
|
70
71
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::CollectionsInfo do
|
4
|
+
require_no_required_api_version
|
4
5
|
|
5
6
|
let(:spec) do
|
6
7
|
{ selector: { listCollections: 1 },
|
@@ -16,6 +17,8 @@ describe Mongo::Operation::CollectionsInfo do
|
|
16
17
|
described_class.new(spec)
|
17
18
|
end
|
18
19
|
|
20
|
+
let(:context) { Mongo::Operation::Context.new }
|
21
|
+
|
19
22
|
describe '#execute' do
|
20
23
|
|
21
24
|
before do
|
@@ -31,7 +34,7 @@ describe Mongo::Operation::CollectionsInfo do
|
|
31
34
|
end
|
32
35
|
|
33
36
|
let(:info) do
|
34
|
-
docs = op.execute(authorized_primary,
|
37
|
+
docs = op.execute(authorized_primary, context: context).documents
|
35
38
|
docs.collect { |info| info['name'].sub("#{SpecConfig.instance.test_db}.", '') }
|
36
39
|
end
|
37
40
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::Command do
|
4
|
+
require_no_required_api_version
|
4
5
|
|
5
6
|
let(:selector) { { :ismaster => 1 } }
|
6
7
|
let(:options) { { :limit => -1 } }
|
@@ -12,6 +13,8 @@ describe Mongo::Operation::Command do
|
|
12
13
|
end
|
13
14
|
let(:op) { described_class.new(spec) }
|
14
15
|
|
16
|
+
let(:context) { Mongo::Operation::Context.new }
|
17
|
+
|
15
18
|
describe '#initialize' do
|
16
19
|
|
17
20
|
it 'sets the spec' do
|
@@ -43,7 +46,7 @@ describe Mongo::Operation::Command do
|
|
43
46
|
context 'when the command succeeds' do
|
44
47
|
|
45
48
|
let(:response) do
|
46
|
-
op.execute(authorized_primary,
|
49
|
+
op.execute(authorized_primary, context: context)
|
47
50
|
end
|
48
51
|
|
49
52
|
it 'returns the reponse' do
|
@@ -59,7 +62,7 @@ describe Mongo::Operation::Command do
|
|
59
62
|
|
60
63
|
it 'raises an exception' do
|
61
64
|
expect {
|
62
|
-
op.execute(authorized_primary,
|
65
|
+
op.execute(authorized_primary, context: context)
|
63
66
|
}.to raise_error(Mongo::Error::OperationFailure)
|
64
67
|
end
|
65
68
|
end
|
@@ -72,7 +75,7 @@ describe Mongo::Operation::Command do
|
|
72
75
|
|
73
76
|
it 'raises an error' do
|
74
77
|
expect {
|
75
|
-
op.execute(authorized_primary,
|
78
|
+
op.execute(authorized_primary, context: context)
|
76
79
|
}.to raise_error(Mongo::Error::MaxBSONSize)
|
77
80
|
end
|
78
81
|
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::CreateIndex do
|
4
|
+
require_no_required_api_version
|
5
|
+
|
6
|
+
let(:context) { Mongo::Operation::Context.new }
|
4
7
|
|
5
8
|
before do
|
6
9
|
authorized_collection.drop
|
@@ -20,7 +23,7 @@ describe Mongo::Operation::CreateIndex do
|
|
20
23
|
end
|
21
24
|
|
22
25
|
let(:response) do
|
23
|
-
operation.execute(authorized_primary,
|
26
|
+
operation.execute(authorized_primary, context: context)
|
24
27
|
end
|
25
28
|
|
26
29
|
it 'returns ok' do
|
@@ -43,12 +46,12 @@ describe Mongo::Operation::CreateIndex do
|
|
43
46
|
end
|
44
47
|
|
45
48
|
before do
|
46
|
-
operation.execute(authorized_primary,
|
49
|
+
operation.execute(authorized_primary, context: context)
|
47
50
|
end
|
48
51
|
|
49
52
|
it 'raises an exception' do
|
50
53
|
expect {
|
51
|
-
second_operation.execute(authorized_primary,
|
54
|
+
second_operation.execute(authorized_primary, context: context)
|
52
55
|
}.to raise_error(Mongo::Error::OperationFailure)
|
53
56
|
end
|
54
57
|
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::CreateUser do
|
4
|
+
require_no_required_api_version
|
5
|
+
|
6
|
+
let(:context) { Mongo::Operation::Context.new }
|
4
7
|
|
5
8
|
describe '#execute' do
|
6
9
|
|
@@ -26,7 +29,7 @@ describe Mongo::Operation::CreateUser do
|
|
26
29
|
context 'when user creation was successful' do
|
27
30
|
|
28
31
|
let!(:response) do
|
29
|
-
operation.execute(root_authorized_primary,
|
32
|
+
operation.execute(root_authorized_primary, context: context)
|
30
33
|
end
|
31
34
|
|
32
35
|
it 'saves the user in the database' do
|
@@ -38,8 +41,8 @@ describe Mongo::Operation::CreateUser do
|
|
38
41
|
|
39
42
|
it 'raises an exception' do
|
40
43
|
expect {
|
41
|
-
operation.execute(root_authorized_primary,
|
42
|
-
operation.execute(root_authorized_primary,
|
44
|
+
operation.execute(root_authorized_primary, context: context)
|
45
|
+
operation.execute(root_authorized_primary, context: context)
|
43
46
|
}.to raise_error(Mongo::Error::OperationFailure)
|
44
47
|
end
|
45
48
|
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::Delete do
|
4
|
+
require_no_required_api_version
|
5
|
+
|
6
|
+
let(:context) { Mongo::Operation::Context.new }
|
4
7
|
|
5
8
|
let(:documents) do
|
6
9
|
[ { 'q' => { foo: 1 }, 'limit' => 1 } ]
|
@@ -100,7 +103,7 @@ describe Mongo::Operation::Delete do
|
|
100
103
|
|
101
104
|
it 'deletes the document from the database' do
|
102
105
|
authorized_primary.with_connection do |connection|
|
103
|
-
op.bulk_execute(connection,
|
106
|
+
op.bulk_execute(connection, context: context)
|
104
107
|
end
|
105
108
|
expect(authorized_collection.find.count).to eq(1)
|
106
109
|
end
|
@@ -125,7 +128,7 @@ describe Mongo::Operation::Delete do
|
|
125
128
|
|
126
129
|
it 'deletes the documents from the database' do
|
127
130
|
authorized_primary.with_connection do |connection|
|
128
|
-
op.bulk_execute(connection,
|
131
|
+
op.bulk_execute(connection, context: context)
|
129
132
|
end
|
130
133
|
expect(authorized_collection.find.count).to eq(0)
|
131
134
|
end
|
@@ -162,7 +165,7 @@ describe Mongo::Operation::Delete do
|
|
162
165
|
|
163
166
|
it 'aborts after first error' do
|
164
167
|
authorized_primary.with_connection do |connection|
|
165
|
-
failing_delete.bulk_execute(connection,
|
168
|
+
failing_delete.bulk_execute(connection, context: context)
|
166
169
|
end
|
167
170
|
expect(authorized_collection.find.count).to eq(2)
|
168
171
|
end
|
@@ -176,7 +179,7 @@ describe Mongo::Operation::Delete do
|
|
176
179
|
|
177
180
|
it 'aborts after first error' do
|
178
181
|
authorized_primary.with_connection do |connection|
|
179
|
-
failing_delete.bulk_execute(connection,
|
182
|
+
failing_delete.bulk_execute(connection, context: context)
|
180
183
|
end
|
181
184
|
expect(authorized_collection.find.count).to eq(2)
|
182
185
|
end
|
@@ -214,7 +217,7 @@ describe Mongo::Operation::Delete do
|
|
214
217
|
|
215
218
|
it 'does not abort after first error' do
|
216
219
|
authorized_primary.with_connection do |connection|
|
217
|
-
failing_delete.bulk_execute(connection,
|
220
|
+
failing_delete.bulk_execute(connection, context: context)
|
218
221
|
end
|
219
222
|
expect(authorized_collection.find.count).to eq(1)
|
220
223
|
end
|
@@ -228,7 +231,7 @@ describe Mongo::Operation::Delete do
|
|
228
231
|
|
229
232
|
it 'does not abort after first error' do
|
230
233
|
authorized_primary.with_connection do |connection|
|
231
|
-
failing_delete.bulk_execute(connection,
|
234
|
+
failing_delete.bulk_execute(connection, context: context)
|
232
235
|
end
|
233
236
|
expect(authorized_collection.find.count).to eq(1)
|
234
237
|
end
|