mongo 2.13.2 → 2.14.0.rc1
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/lib/mongo.rb +9 -0
- data/lib/mongo/address.rb +1 -1
- data/lib/mongo/address/ipv4.rb +1 -1
- data/lib/mongo/address/ipv6.rb +1 -1
- data/lib/mongo/bulk_write.rb +17 -0
- data/lib/mongo/caching_cursor.rb +74 -0
- data/lib/mongo/client.rb +47 -8
- data/lib/mongo/cluster.rb +3 -3
- data/lib/mongo/cluster/topology/single.rb +1 -1
- data/lib/mongo/collection.rb +26 -0
- data/lib/mongo/collection/view.rb +24 -20
- data/lib/mongo/collection/view/aggregation.rb +25 -4
- data/lib/mongo/collection/view/builder/find_command.rb +38 -18
- data/lib/mongo/collection/view/explainable.rb +27 -8
- data/lib/mongo/collection/view/iterable.rb +72 -12
- data/lib/mongo/collection/view/readable.rb +12 -2
- data/lib/mongo/collection/view/writable.rb +15 -1
- data/lib/mongo/crypt/encryption_io.rb +6 -6
- data/lib/mongo/cursor.rb +1 -0
- data/lib/mongo/database.rb +6 -0
- data/lib/mongo/database/view.rb +1 -1
- data/lib/mongo/error.rb +2 -0
- data/lib/mongo/error/invalid_read_concern.rb +28 -0
- data/lib/mongo/error/server_certificate_revoked.rb +22 -0
- data/lib/mongo/error/unsupported_option.rb +14 -12
- data/lib/mongo/lint.rb +2 -1
- data/lib/mongo/logger.rb +3 -3
- data/lib/mongo/operation.rb +2 -0
- data/lib/mongo/operation/aggregate/result.rb +9 -8
- data/lib/mongo/operation/collections_info/command.rb +0 -5
- data/lib/mongo/operation/collections_info/result.rb +3 -16
- data/lib/mongo/operation/delete/bulk_result.rb +2 -0
- data/lib/mongo/operation/delete/result.rb +3 -0
- data/lib/mongo/operation/explain/command.rb +4 -0
- data/lib/mongo/operation/explain/legacy.rb +4 -0
- data/lib/mongo/operation/explain/op_msg.rb +6 -0
- data/lib/mongo/operation/explain/result.rb +3 -0
- data/lib/mongo/operation/find/legacy/result.rb +2 -0
- data/lib/mongo/operation/find/result.rb +3 -0
- data/lib/mongo/operation/get_more/result.rb +3 -0
- data/lib/mongo/operation/indexes/result.rb +5 -0
- data/lib/mongo/operation/insert/bulk_result.rb +5 -0
- data/lib/mongo/operation/insert/result.rb +5 -0
- data/lib/mongo/operation/list_collections/result.rb +5 -0
- data/lib/mongo/operation/map_reduce/result.rb +10 -0
- data/lib/mongo/operation/parallel_scan/result.rb +4 -0
- data/lib/mongo/operation/result.rb +35 -6
- data/lib/mongo/operation/shared/bypass_document_validation.rb +1 -0
- data/lib/mongo/operation/shared/causal_consistency_supported.rb +1 -0
- data/lib/mongo/operation/shared/collections_info_or_list_collections.rb +2 -0
- data/lib/mongo/operation/shared/executable.rb +1 -0
- data/lib/mongo/operation/shared/idable.rb +2 -1
- data/lib/mongo/operation/shared/limited.rb +1 -0
- data/lib/mongo/operation/shared/object_id_generator.rb +1 -0
- data/lib/mongo/operation/shared/result/aggregatable.rb +1 -0
- data/lib/mongo/operation/shared/sessions_supported.rb +1 -0
- data/lib/mongo/operation/shared/specifiable.rb +1 -0
- data/lib/mongo/operation/shared/write.rb +1 -0
- data/lib/mongo/operation/shared/write_concern_supported.rb +1 -0
- data/lib/mongo/operation/update/legacy/result.rb +7 -0
- data/lib/mongo/operation/update/result.rb +8 -0
- data/lib/mongo/operation/users_info/result.rb +3 -0
- data/lib/mongo/query_cache.rb +242 -0
- data/lib/mongo/retryable.rb +8 -1
- data/lib/mongo/server.rb +5 -1
- data/lib/mongo/server/connection_common.rb +2 -2
- data/lib/mongo/server/connection_pool.rb +3 -0
- data/lib/mongo/server/monitor.rb +1 -1
- data/lib/mongo/server/monitor/connection.rb +3 -3
- data/lib/mongo/server/pending_connection.rb +2 -2
- data/lib/mongo/server/push_monitor.rb +1 -1
- data/lib/mongo/server_selector/base.rb +5 -1
- data/lib/mongo/session.rb +3 -0
- data/lib/mongo/socket.rb +6 -4
- data/lib/mongo/socket/ocsp_cache.rb +97 -0
- data/lib/mongo/socket/ocsp_verifier.rb +368 -0
- data/lib/mongo/socket/ssl.rb +45 -24
- data/lib/mongo/srv/monitor.rb +7 -13
- data/lib/mongo/srv/resolver.rb +14 -10
- data/lib/mongo/timeout.rb +2 -0
- data/lib/mongo/uri.rb +21 -390
- data/lib/mongo/uri/options_mapper.rb +582 -0
- data/lib/mongo/uri/srv_protocol.rb +3 -2
- data/lib/mongo/utils.rb +12 -1
- data/lib/mongo/version.rb +1 -1
- data/spec/NOTES.aws-auth.md +12 -7
- data/spec/README.md +56 -1
- data/spec/integration/bson_symbol_spec.rb +2 -4
- data/spec/integration/bulk_write_spec.rb +48 -0
- data/spec/integration/client_authentication_options_spec.rb +55 -28
- data/spec/integration/connection_pool_populator_spec.rb +3 -1
- data/spec/integration/cursor_reaping_spec.rb +53 -17
- data/spec/integration/ocsp_connectivity_spec.rb +26 -0
- data/spec/integration/ocsp_verifier_cache_spec.rb +188 -0
- data/spec/integration/ocsp_verifier_spec.rb +334 -0
- data/spec/integration/query_cache_spec.rb +1045 -0
- data/spec/integration/query_cache_transactions_spec.rb +179 -0
- data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +1 -0
- data/spec/integration/retryable_writes/shared/performs_legacy_retries.rb +2 -0
- data/spec/integration/sdam_error_handling_spec.rb +68 -17
- data/spec/integration/sdam_events_spec.rb +5 -8
- data/spec/integration/server_selection_spec.rb +36 -0
- data/spec/integration/srv_monitoring_spec.rb +38 -3
- data/spec/integration/srv_spec.rb +56 -0
- data/spec/lite_spec_helper.rb +4 -2
- data/spec/mongo/address_spec.rb +1 -1
- data/spec/mongo/caching_cursor_spec.rb +70 -0
- data/spec/mongo/client_construction_spec.rb +54 -1
- data/spec/mongo/client_encryption_spec.rb +10 -16
- data/spec/mongo/client_spec.rb +40 -0
- data/spec/mongo/cluster/topology/single_spec.rb +14 -5
- data/spec/mongo/cluster_spec.rb +3 -0
- data/spec/mongo/collection/view/explainable_spec.rb +87 -4
- data/spec/mongo/collection/view/map_reduce_spec.rb +2 -0
- data/spec/mongo/collection_spec.rb +60 -0
- data/spec/mongo/crypt/auto_decryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/auto_encryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/data_key_context_spec.rb +1 -1
- data/spec/mongo/crypt/explicit_decryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/explicit_encryption_context_spec.rb +1 -1
- data/spec/mongo/database_spec.rb +44 -64
- data/spec/mongo/error/no_server_available_spec.rb +1 -1
- data/spec/mongo/logger_spec.rb +13 -11
- data/spec/mongo/query_cache_spec.rb +279 -0
- data/spec/mongo/server/app_metadata_shared.rb +1 -1
- data/spec/mongo/server/connection_pool_spec.rb +7 -3
- data/spec/mongo/server/connection_spec.rb +14 -7
- data/spec/mongo/socket/ssl_spec.rb +1 -1
- data/spec/mongo/socket_spec.rb +1 -1
- data/spec/mongo/uri/srv_protocol_spec.rb +64 -33
- data/spec/mongo/uri_option_parsing_spec.rb +11 -11
- data/spec/mongo/uri_spec.rb +68 -41
- data/spec/mongo/utils_spec.rb +39 -0
- data/spec/runners/auth.rb +3 -0
- data/spec/runners/connection_string.rb +35 -124
- data/spec/spec_tests/cmap_spec.rb +7 -3
- data/spec/spec_tests/data/change_streams/change-streams-errors.yml +0 -1
- data/spec/spec_tests/data/change_streams/change-streams.yml +0 -1
- data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +6 -2
- data/spec/spec_tests/data/cmap/pool-create-min-size.yml +3 -0
- data/spec/spec_tests/data/connection_string/valid-warnings.yml +24 -0
- data/spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml +1 -3
- data/spec/spec_tests/data/sdam_monitoring/standalone.yml +2 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone_repeated.yml +2 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +2 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone_to_rs_with_me_mismatch.yml +2 -2
- data/spec/spec_tests/data/uri_options/auth-options.yml +25 -0
- data/spec/spec_tests/data/uri_options/compression-options.yml +6 -3
- data/spec/spec_tests/data/uri_options/read-preference-options.yml +24 -0
- data/spec/spec_tests/data/uri_options/ruby-connection-options.yml +1 -0
- data/spec/spec_tests/data/uri_options/tls-options.yml +160 -4
- data/spec/spec_tests/dns_seedlist_discovery_spec.rb +9 -1
- data/spec/spec_tests/uri_options_spec.rb +31 -33
- data/spec/support/certificates/atlas-ocsp-ca.crt +28 -0
- data/spec/support/certificates/atlas-ocsp.crt +41 -0
- data/spec/support/client_registry_macros.rb +11 -2
- data/spec/support/common_shortcuts.rb +45 -0
- data/spec/support/constraints.rb +23 -0
- data/spec/support/lite_constraints.rb +24 -0
- data/spec/support/matchers.rb +16 -0
- data/spec/support/ocsp +1 -0
- data/spec/support/session_registry.rb +52 -0
- data/spec/support/spec_config.rb +22 -0
- data/spec/support/utils.rb +19 -1
- metadata +1017 -992
- metadata.gz.sig +0 -0
- data/spec/shared/LICENSE +0 -20
- data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
- data/spec/shared/lib/mrss/constraints.rb +0 -303
- data/spec/shared/lib/mrss/lite_constraints.rb +0 -175
- data/spec/shared/lib/mrss/spec_organizer.rb +0 -149
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'lite_spec_helper'
|
2
|
+
|
3
|
+
describe Mongo::Utils do
|
4
|
+
describe '#shallow_symbolize_keys' do
|
5
|
+
it 'symbolizes' do
|
6
|
+
described_class.shallow_symbolize_keys(
|
7
|
+
'foo' => 'bar',
|
8
|
+
'aKey' => 'aValue',
|
9
|
+
'a_key' => 'a_value',
|
10
|
+
key: :value,
|
11
|
+
).should == {
|
12
|
+
foo: 'bar',
|
13
|
+
aKey: 'aValue',
|
14
|
+
a_key: 'a_value',
|
15
|
+
key: :value,
|
16
|
+
}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#shallow_camelize_keys' do
|
21
|
+
it 'camelizes' do
|
22
|
+
described_class.shallow_camelize_keys(
|
23
|
+
'foo' => 'bar',
|
24
|
+
'aKey' => 'aValue',
|
25
|
+
'aa_key' => 'a_value',
|
26
|
+
key: :value,
|
27
|
+
sKey: :sValue,
|
28
|
+
us_key: :us_value,
|
29
|
+
).should == {
|
30
|
+
'foo' => 'bar',
|
31
|
+
'aKey' => 'aValue',
|
32
|
+
'aaKey' => 'a_value',
|
33
|
+
'key' => :value,
|
34
|
+
'sKey' => :sValue,
|
35
|
+
'usKey' => :us_value,
|
36
|
+
}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/spec/runners/auth.rb
CHANGED
@@ -84,20 +84,6 @@ RSpec::Matchers.define :match_auth do |test|
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
-
RSpec::Matchers.define :match_options do |test|
|
88
|
-
|
89
|
-
match do |client|
|
90
|
-
options = test.options
|
91
|
-
return true unless options
|
92
|
-
options.match?(client.options)
|
93
|
-
end
|
94
|
-
|
95
|
-
failure_message do |client|
|
96
|
-
"With URI: #{test.uri_string}\n" +
|
97
|
-
"Expected that test options: #{test.options.options} would match client options: #{client.options}"
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
87
|
module Mongo
|
102
88
|
module ConnectionString
|
103
89
|
|
@@ -159,7 +145,7 @@ module Mongo
|
|
159
145
|
end
|
160
146
|
|
161
147
|
def options
|
162
|
-
@
|
148
|
+
@spec['options']
|
163
149
|
end
|
164
150
|
|
165
151
|
def client
|
@@ -239,115 +225,31 @@ module Mongo
|
|
239
225
|
end
|
240
226
|
end
|
241
227
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
'sockettimeoutms' => :socket_timeout,
|
252
|
-
'serverselectiontimeoutms' => :server_selection_timeout,
|
253
|
-
'localthresholdms' => :local_threshold,
|
254
|
-
'heartbeatfrequencyms' => :heartbeat_frequency,
|
255
|
-
'maxidletimems' => :max_idle_time,
|
256
|
-
|
257
|
-
# Write Options
|
258
|
-
'journal' => [:write_concern, 'j'],
|
259
|
-
'w' => [:write_concern, 'w'],
|
260
|
-
'wtimeoutms' => [:write_concern, 'wtimeout'],
|
261
|
-
|
262
|
-
# Read Options
|
263
|
-
'readpreference' => ['read', 'mode'],
|
264
|
-
'readpreferencetags' => ['read', 'tag_sets'],
|
265
|
-
'maxstalenessseconds' => ['read', 'max_staleness'],
|
266
|
-
|
267
|
-
# Pool Options
|
268
|
-
'minpoolsize' => :min_pool_size,
|
269
|
-
'maxpoolsize' => :max_pool_size,
|
270
|
-
|
271
|
-
# Security Options
|
272
|
-
'tls' => :ssl,
|
273
|
-
'tlsallowinvalidcertificates' => :ssl_verify_certificate,
|
274
|
-
'tlsallowinvalidhostnames' => :ssl_verify_hostname,
|
275
|
-
'tlscafile' => :ssl_ca_cert,
|
276
|
-
'tlscertificatekeyfile' => :ssl_cert,
|
277
|
-
'tlscertificatekeyfilepassword' => :ssl_key_pass_phrase,
|
278
|
-
'tlsinsecure' => :ssl_verify,
|
279
|
-
|
280
|
-
# Auth Options
|
281
|
-
'authsource' => :auth_source,
|
282
|
-
'authmechanism' => :auth_mech,
|
283
|
-
'authmechanismproperties' => :auth_mech_properties,
|
284
|
-
|
285
|
-
# Client Options
|
286
|
-
'appname' => :app_name,
|
287
|
-
'readconcernlevel' => [:read_concern, 'level'],
|
288
|
-
'retrywrites' => :retry_writes,
|
289
|
-
'zlibcompressionlevel' => :zlib_compression_level,
|
290
|
-
}
|
291
|
-
|
292
|
-
attr_reader :options
|
293
|
-
|
294
|
-
def initialize(options)
|
295
|
-
@options = options
|
296
|
-
end
|
297
|
-
|
298
|
-
def match?(opts)
|
299
|
-
@options.all? do |k, v|
|
300
|
-
k = k.downcase
|
301
|
-
|
302
|
-
expected =
|
303
|
-
case k
|
304
|
-
when 'authmechanism'
|
305
|
-
Mongo::URI::AUTH_MECH_MAP[v].downcase.to_s
|
306
|
-
when 'authmechanismproperties'
|
307
|
-
v.reduce({}) do |new_v, prop|
|
308
|
-
prop_key = prop.first.downcase
|
309
|
-
prop_val = prop.last == 'true' ? true : prop.last
|
310
|
-
new_v[prop_key] = prop_val
|
311
|
-
|
312
|
-
new_v
|
313
|
-
end
|
314
|
-
when 'compressors'
|
315
|
-
v.dup.tap do |compressors|
|
316
|
-
# The Ruby driver doesn't support snappy
|
317
|
-
compressors.delete('snappy')
|
318
|
-
end
|
319
|
-
when 'readpreference'
|
320
|
-
Mongo::URI::READ_MODE_MAP[v.downcase].to_s
|
321
|
-
when 'tlsallowinvalidcertificates', 'tlsallowinvalidhostnames', 'tlsinsecure'
|
322
|
-
!v
|
323
|
-
else
|
324
|
-
if k.end_with?('ms') && k != 'wtimeoutms'
|
325
|
-
v / 1000.0
|
326
|
-
elsif v.is_a?(String)
|
327
|
-
v.downcase
|
328
|
-
else
|
329
|
-
v
|
330
|
-
end
|
331
|
-
end
|
332
|
-
|
333
|
-
actual =
|
334
|
-
case MAPPINGS[k]
|
335
|
-
when nil
|
336
|
-
opts[k]
|
337
|
-
when Array
|
338
|
-
opts[MAPPINGS[k].first][MAPPINGS[k].last]
|
339
|
-
else
|
340
|
-
opts[MAPPINGS[k]]
|
341
|
-
end
|
342
|
-
|
343
|
-
if actual.is_a?(Symbol)
|
344
|
-
actual = actual.to_s
|
228
|
+
module_function def adjust_expected_mongo_client_options(options)
|
229
|
+
expected = options.dup.tap do |expected|
|
230
|
+
expected.each do |k, v|
|
231
|
+
# Ruby driver downcases auth mechanism properties when
|
232
|
+
# constructing the client.
|
233
|
+
#
|
234
|
+
# Some tests give options in all lower case.
|
235
|
+
if k.downcase == 'authmechanismproperties'
|
236
|
+
expected[k] = ::Utils.downcase_keys(v)
|
345
237
|
end
|
346
|
-
|
347
|
-
|
238
|
+
# Ruby driver does not support snappy.
|
239
|
+
if k == 'compressors'
|
240
|
+
expected[k] = v.reject { |sub_v| sub_v == 'snappy' }
|
348
241
|
end
|
349
|
-
|
350
|
-
|
242
|
+
end
|
243
|
+
# We omit retryReads/retryWrites=true because some tests do not
|
244
|
+
# provide those.
|
245
|
+
%w(retryReads retryWrites).each do |k, v|
|
246
|
+
if expected[k] == true
|
247
|
+
expected.delete(k)
|
248
|
+
end
|
249
|
+
end
|
250
|
+
# Fix appName case.
|
251
|
+
if expected.key?('appname') && !expected.key?('appName')
|
252
|
+
expected['appName'] = expected.delete('appname')
|
351
253
|
end
|
352
254
|
end
|
353
255
|
end
|
@@ -406,8 +308,17 @@ def define_connection_string_spec_tests(test_paths, spec_cls = Mongo::Connection
|
|
406
308
|
expect(test.client).to match_auth(test)
|
407
309
|
end
|
408
310
|
|
409
|
-
|
410
|
-
|
311
|
+
if test.options
|
312
|
+
it 'creates a client with the correct options' do
|
313
|
+
mapped = Mongo::URI::OptionsMapper.new.ruby_to_smc(test.client.options)
|
314
|
+
# Connection string spec tests do not use canonical URI option names
|
315
|
+
actual = Utils.downcase_keys(mapped)
|
316
|
+
actual.delete('authsource')
|
317
|
+
expected = Mongo::ConnectionString.adjust_expected_mongo_client_options(
|
318
|
+
test.options,
|
319
|
+
)
|
320
|
+
actual.should == expected
|
321
|
+
end
|
411
322
|
end
|
412
323
|
|
413
324
|
if test.read_concern_expectation
|
@@ -22,9 +22,13 @@ describe 'Cmap' do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
let(:options) do
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
Mongo::Utils.shallow_symbolize_keys(Mongo::Client.canonicalize_ruby_options(
|
26
|
+
SpecConfig.instance.all_test_options,
|
27
|
+
)).update(monitoring_io: false).tap do |options|
|
28
|
+
# We have a wait queue timeout set in the test suite options, but having
|
29
|
+
# this option set interferes with assertions in the cmap spec tests.
|
30
|
+
options.delete(:wait_queue_timeout)
|
31
|
+
end
|
28
32
|
end
|
29
33
|
|
30
34
|
CMAP_TESTS.each do |file|
|
@@ -6,10 +6,14 @@ operations:
|
|
6
6
|
events:
|
7
7
|
- type: ConnectionCheckOutStarted
|
8
8
|
address: 42
|
9
|
+
- type: ConnectionCreated
|
10
|
+
connectionId: 1
|
11
|
+
address: 42
|
12
|
+
- type: ConnectionReady
|
13
|
+
connectionId: 1
|
14
|
+
address: 42
|
9
15
|
- type: ConnectionCheckedOut
|
10
16
|
connectionId: 1
|
11
17
|
address: 42
|
12
18
|
ignore:
|
13
19
|
- ConnectionPoolCreated
|
14
|
-
- ConnectionCreated
|
15
|
-
- ConnectionReady
|
@@ -49,3 +49,27 @@ tests:
|
|
49
49
|
auth: ~
|
50
50
|
options:
|
51
51
|
wtimeoutms: 10
|
52
|
+
-
|
53
|
+
description: "Empty integer option values are ignored"
|
54
|
+
uri: "mongodb://localhost/?maxIdleTimeMS="
|
55
|
+
valid: true
|
56
|
+
warning: true
|
57
|
+
hosts:
|
58
|
+
-
|
59
|
+
type: "hostname"
|
60
|
+
host: "localhost"
|
61
|
+
port: ~
|
62
|
+
auth: ~
|
63
|
+
options: ~
|
64
|
+
-
|
65
|
+
description: "Empty boolean option value are ignored"
|
66
|
+
uri: "mongodb://localhost/?journal="
|
67
|
+
valid: true
|
68
|
+
warning: true
|
69
|
+
hosts:
|
70
|
+
-
|
71
|
+
type: "hostname"
|
72
|
+
host: "localhost"
|
73
|
+
port: ~
|
74
|
+
auth: ~
|
75
|
+
options: ~
|
@@ -1,7 +1,5 @@
|
|
1
|
-
# This is a Ruby driver-specific test because other drivers
|
2
|
-
# do not allow discovering a standalone topology.
|
3
1
|
description: "Monitoring a discovered standalone connection"
|
4
|
-
uri: "mongodb://a:27017"
|
2
|
+
uri: "mongodb://a:27017/?directConnection=false"
|
5
3
|
phases:
|
6
4
|
-
|
7
5
|
responses:
|
@@ -1,5 +1,5 @@
|
|
1
|
-
description: "Monitoring a
|
2
|
-
uri: "mongodb://a:27017/?
|
1
|
+
description: "Monitoring a direct connection with repeated ismaster response"
|
2
|
+
uri: "mongodb://a:27017/?directConnection=true"
|
3
3
|
phases:
|
4
4
|
# phase 1
|
5
5
|
- responses: []
|
@@ -1,5 +1,5 @@
|
|
1
|
-
description: "Monitoring a
|
2
|
-
uri: "mongodb://a:27017/?
|
1
|
+
description: "Monitoring a direct connection - suppress update events for equal server descriptions"
|
2
|
+
uri: "mongodb://a:27017/?directConnection=true"
|
3
3
|
phases:
|
4
4
|
-
|
5
5
|
responses:
|
@@ -12,6 +12,31 @@ tests:
|
|
12
12
|
SERVICE_NAME: "other"
|
13
13
|
CANONICALIZE_HOST_NAME: true
|
14
14
|
authSource: "$external"
|
15
|
+
-
|
16
|
+
description: "Mixed case in auth mechanism properties is preserved"
|
17
|
+
uri: "mongodb://foo:bar@example.com/?authMechanism=GSSAPI&authMechanismProperties=PropertyName:PropertyValue&authSource=$external"
|
18
|
+
valid: true
|
19
|
+
warning: false
|
20
|
+
hosts: ~
|
21
|
+
auth: ~
|
22
|
+
options:
|
23
|
+
authMechanism: "GSSAPI"
|
24
|
+
authMechanismProperties:
|
25
|
+
PropertyName: PropertyValue
|
26
|
+
service_name: mongodb
|
27
|
+
authSource: "$external"
|
28
|
+
-
|
29
|
+
description: "Auth mechanism properties are all invalid"
|
30
|
+
uri: "mongodb://foo:bar@example.com/?authMechanism=GSSAPI&authMechanismProperties=PropertyName&authSource=$external"
|
31
|
+
valid: true
|
32
|
+
warning: true
|
33
|
+
hosts: ~
|
34
|
+
auth: ~
|
35
|
+
options:
|
36
|
+
authMechanism: "GSSAPI"
|
37
|
+
authMechanismProperties:
|
38
|
+
service_name: mongodb
|
39
|
+
authSource: "$external"
|
15
40
|
-
|
16
41
|
description: "Valid auth options are parsed correctly (SCRAM-SHA-1)"
|
17
42
|
uri: "mongodb://foo:bar@example.com/?authMechanism=SCRAM-SHA-1&authSource=authSourceDB"
|
@@ -28,7 +28,8 @@ tests:
|
|
28
28
|
warning: true
|
29
29
|
hosts: ~
|
30
30
|
auth: ~
|
31
|
-
|
31
|
+
# https://jira.mongodb.org/browse/DRIVERS-1368
|
32
|
+
options: ~
|
32
33
|
-
|
33
34
|
description: "Too low zlibCompressionLevel causes a warning"
|
34
35
|
uri: "mongodb://example.com/?compressors=zlib&zlibCompressionLevel=-2"
|
@@ -36,7 +37,8 @@ tests:
|
|
36
37
|
warning: true
|
37
38
|
hosts: ~
|
38
39
|
auth: ~
|
39
|
-
|
40
|
+
# https://jira.mongodb.org/browse/DRIVERS-1368
|
41
|
+
options: ~
|
40
42
|
-
|
41
43
|
description: "Too high zlibCompressionLevel causes a warning"
|
42
44
|
uri: "mongodb://example.com/?compressors=zlib&zlibCompressionLevel=10"
|
@@ -44,5 +46,6 @@ tests:
|
|
44
46
|
warning: true
|
45
47
|
hosts: ~
|
46
48
|
auth: ~
|
47
|
-
|
49
|
+
# https://jira.mongodb.org/browse/DRIVERS-1368
|
50
|
+
options: ~
|
48
51
|
|
@@ -15,6 +15,18 @@ tests:
|
|
15
15
|
-
|
16
16
|
dc: "ny"
|
17
17
|
maxStalenessSeconds: 120
|
18
|
+
-
|
19
|
+
description: "Case is preserved in read preference tag names and values"
|
20
|
+
uri: "mongodb://example.com/?readPreference=secondary&readPreferenceTags=DataCenter:NewYork"
|
21
|
+
valid: true
|
22
|
+
warning: false
|
23
|
+
hosts: ~
|
24
|
+
auth: ~
|
25
|
+
options:
|
26
|
+
readPreference: "secondary"
|
27
|
+
readPreferenceTags:
|
28
|
+
-
|
29
|
+
DataCenter: NewYork
|
18
30
|
-
|
19
31
|
description: "Invalid readPreferenceTags causes a warning"
|
20
32
|
uri: "mongodb://example.com/?readPreferenceTags=invalid"
|
@@ -23,6 +35,18 @@ tests:
|
|
23
35
|
hosts: ~
|
24
36
|
auth: ~
|
25
37
|
options: {}
|
38
|
+
# https://jira.mongodb.org/browse/DRIVERS-1369
|
39
|
+
-
|
40
|
+
description: "Valid and invalid readPreferenceTags mix"
|
41
|
+
uri: "mongodb://example.com/?readPreferenceTags=a:b,invalid"
|
42
|
+
valid: true
|
43
|
+
warning: true
|
44
|
+
hosts: ~
|
45
|
+
auth: ~
|
46
|
+
options:
|
47
|
+
readPreferenceTags:
|
48
|
+
-
|
49
|
+
a: b
|
26
50
|
-
|
27
51
|
description: "Non-numeric maxStalenessSeconds causes a warning"
|
28
52
|
uri: "mongodb://example.com/?maxStalenessSeconds=invalid"
|