mongo 2.2.5 → 2.2.6
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/auth/scram/conversation.rb +9 -3
- data/lib/mongo/error.rb +1 -0
- data/lib/mongo/error/unexpected_response.rb +38 -0
- data/lib/mongo/operation/commands/map_reduce/result.rb +1 -1
- data/lib/mongo/operation/commands/user_query.rb +1 -1
- data/lib/mongo/operation/commands/users_info/result.rb +6 -0
- data/lib/mongo/protocol/message.rb +10 -3
- data/lib/mongo/retryable.rb +23 -0
- data/lib/mongo/server/connectable.rb +7 -6
- data/lib/mongo/server/connection.rb +18 -2
- data/lib/mongo/server/connection_pool.rb +4 -6
- data/lib/mongo/server/monitor/connection.rb +6 -3
- data/lib/mongo/uri.rb +7 -8
- data/lib/mongo/version.rb +1 -1
- data/mongo.gemspec +1 -0
- data/spec/mongo/address_spec.rb +2 -2
- data/spec/mongo/auth/cr_spec.rb +1 -1
- data/spec/mongo/auth/ldap_spec.rb +1 -1
- data/spec/mongo/auth/scram_spec.rb +1 -1
- data/spec/mongo/auth/user/view_spec.rb +12 -0
- data/spec/mongo/auth/x509_spec.rb +1 -1
- data/spec/mongo/client_spec.rb +1 -9
- data/spec/mongo/operation/result_spec.rb +3 -3
- data/spec/mongo/operation/write/update_spec.rb +1 -1
- data/spec/mongo/server/connection_spec.rb +168 -4
- data/spec/mongo/server/monitor_spec.rb +34 -4
- data/spec/mongo/server_selector/nearest_spec.rb +4 -4
- data/spec/mongo/server_selector/primary_preferred_spec.rb +4 -4
- data/spec/mongo/server_selector/primary_spec.rb +2 -2
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +4 -4
- data/spec/mongo/server_selector/secondary_spec.rb +3 -3
- data/spec/mongo/server_spec.rb +3 -3
- data/spec/mongo/socket/ssl_spec.rb +1 -1
- data/spec/mongo/uri_spec.rb +124 -23
- data/spec/support/authorization.rb +10 -6
- data/spec/support/shared/server_selector.rb +1 -1
- metadata +18 -3
- metadata.gz.sig +0 -0
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Mongo::Socket::SSL, if: running_ssl? do
|
4
4
|
|
5
5
|
let(:socket) do
|
6
|
-
described_class.new(*
|
6
|
+
described_class.new(*default_address.to_s.split(":"), default_address.host, 5, Socket::PF_INET, options)
|
7
7
|
end
|
8
8
|
|
9
9
|
let(:options) do
|
data/spec/mongo/uri_spec.rb
CHANGED
@@ -4,7 +4,7 @@ describe Mongo::URI do
|
|
4
4
|
let(:scheme) { 'mongodb://' }
|
5
5
|
let(:uri) { described_class.new(string) }
|
6
6
|
|
7
|
-
describe 'invalid uris' do
|
7
|
+
describe 'invalid uris' do
|
8
8
|
|
9
9
|
context 'string is not uri' do
|
10
10
|
|
@@ -370,6 +370,10 @@ describe 'invalid uris' do
|
|
370
370
|
it 'sets the write concern options' do
|
371
371
|
expect(uri.uri_options[:write]).to eq(concern)
|
372
372
|
end
|
373
|
+
|
374
|
+
it 'sets the options on a client created with the uri' do
|
375
|
+
expect(Mongo::Client.new(string).options[:write]).to eq(concern)
|
376
|
+
end
|
373
377
|
end
|
374
378
|
|
375
379
|
context 'w=majority' do
|
@@ -379,6 +383,10 @@ describe 'invalid uris' do
|
|
379
383
|
it 'sets the write concern options' do
|
380
384
|
expect(uri.uri_options[:write]).to eq(concern)
|
381
385
|
end
|
386
|
+
|
387
|
+
it 'sets the options on a client created with the uri' do
|
388
|
+
expect(Mongo::Client.new(string).options[:write]).to eq(concern)
|
389
|
+
end
|
382
390
|
end
|
383
391
|
|
384
392
|
context 'journal' do
|
@@ -388,6 +396,10 @@ describe 'invalid uris' do
|
|
388
396
|
it 'sets the write concern options' do
|
389
397
|
expect(uri.uri_options[:write]).to eq(concern)
|
390
398
|
end
|
399
|
+
|
400
|
+
it 'sets the options on a client created with the uri' do
|
401
|
+
expect(Mongo::Client.new(string).options[:write]).to eq(concern)
|
402
|
+
end
|
391
403
|
end
|
392
404
|
|
393
405
|
context 'fsync' do
|
@@ -397,6 +409,10 @@ describe 'invalid uris' do
|
|
397
409
|
it 'sets the write concern options' do
|
398
410
|
expect(uri.uri_options[:write]).to eq(concern)
|
399
411
|
end
|
412
|
+
|
413
|
+
it 'sets the options on a client created with the uri' do
|
414
|
+
expect(Mongo::Client.new(string).options[:write]).to eq(concern)
|
415
|
+
end
|
400
416
|
end
|
401
417
|
|
402
418
|
context 'wtimeoutMS' do
|
@@ -407,6 +423,10 @@ describe 'invalid uris' do
|
|
407
423
|
it 'sets the write concern options' do
|
408
424
|
expect(uri.uri_options[:write]).to eq(concern)
|
409
425
|
end
|
426
|
+
|
427
|
+
it 'sets the options on a client created with the uri' do
|
428
|
+
expect(Mongo::Client.new(string).options[:write]).to eq(concern)
|
429
|
+
end
|
410
430
|
end
|
411
431
|
end
|
412
432
|
|
@@ -420,6 +440,10 @@ describe 'invalid uris' do
|
|
420
440
|
it 'sets the read preference' do
|
421
441
|
expect(uri.uri_options[:read]).to eq(read)
|
422
442
|
end
|
443
|
+
|
444
|
+
it 'sets the options on a client created with the uri' do
|
445
|
+
expect(Mongo::Client.new(string).options[:read]).to eq(read)
|
446
|
+
end
|
423
447
|
end
|
424
448
|
|
425
449
|
context 'primaryPreferred' do
|
@@ -429,6 +453,10 @@ describe 'invalid uris' do
|
|
429
453
|
it 'sets the read preference' do
|
430
454
|
expect(uri.uri_options[:read]).to eq(read)
|
431
455
|
end
|
456
|
+
|
457
|
+
it 'sets the options on a client created with the uri' do
|
458
|
+
expect(Mongo::Client.new(string).options[:read]).to eq(read)
|
459
|
+
end
|
432
460
|
end
|
433
461
|
|
434
462
|
context 'secondary' do
|
@@ -438,6 +466,10 @@ describe 'invalid uris' do
|
|
438
466
|
it 'sets the read preference' do
|
439
467
|
expect(uri.uri_options[:read]).to eq(read)
|
440
468
|
end
|
469
|
+
|
470
|
+
it 'sets the options on a client created with the uri' do
|
471
|
+
expect(Mongo::Client.new(string).options[:read]).to eq(read)
|
472
|
+
end
|
441
473
|
end
|
442
474
|
|
443
475
|
context 'secondaryPreferred' do
|
@@ -447,6 +479,10 @@ describe 'invalid uris' do
|
|
447
479
|
it 'sets the read preference' do
|
448
480
|
expect(uri.uri_options[:read]).to eq(read)
|
449
481
|
end
|
482
|
+
|
483
|
+
it 'sets the options on a client created with the uri' do
|
484
|
+
expect(Mongo::Client.new(string).options[:read]).to eq(read)
|
485
|
+
end
|
450
486
|
end
|
451
487
|
|
452
488
|
context 'nearest' do
|
@@ -456,6 +492,10 @@ describe 'invalid uris' do
|
|
456
492
|
it 'sets the read preference' do
|
457
493
|
expect(uri.uri_options[:read]).to eq(read)
|
458
494
|
end
|
495
|
+
|
496
|
+
it 'sets the options on a client created with the uri' do
|
497
|
+
expect(Mongo::Client.new(string).options[:read]).to eq(read)
|
498
|
+
end
|
459
499
|
end
|
460
500
|
end
|
461
501
|
|
@@ -473,6 +513,10 @@ describe 'invalid uris' do
|
|
473
513
|
it 'sets the read preference tag set' do
|
474
514
|
expect(uri.uri_options[:read]).to eq(read)
|
475
515
|
end
|
516
|
+
|
517
|
+
it 'sets the options on a client created with the uri' do
|
518
|
+
expect(Mongo::Client.new(string).options[:read]).to eq(read)
|
519
|
+
end
|
476
520
|
end
|
477
521
|
|
478
522
|
context 'multiple read preference tag sets' do
|
@@ -487,6 +531,10 @@ describe 'invalid uris' do
|
|
487
531
|
it 'sets the read preference tag sets' do
|
488
532
|
expect(uri.uri_options[:read]).to eq(read)
|
489
533
|
end
|
534
|
+
|
535
|
+
it 'sets the options on a client created with the uri' do
|
536
|
+
expect(Mongo::Client.new(string).options[:read]).to eq(read)
|
537
|
+
end
|
490
538
|
end
|
491
539
|
end
|
492
540
|
|
@@ -497,6 +545,10 @@ describe 'invalid uris' do
|
|
497
545
|
it 'sets the replica set option' do
|
498
546
|
expect(uri.uri_options[:replica_set]).to eq(rs_name)
|
499
547
|
end
|
548
|
+
|
549
|
+
it 'sets the options on a client created with the uri' do
|
550
|
+
expect(Mongo::Client.new(string).options[:replica_set]).to eq(rs_name)
|
551
|
+
end
|
500
552
|
end
|
501
553
|
|
502
554
|
context 'auth mechanism provided' do
|
@@ -509,6 +561,14 @@ describe 'invalid uris' do
|
|
509
561
|
it 'sets the auth mechanism to :plain' do
|
510
562
|
expect(uri.uri_options[:auth_mech]).to eq(expected)
|
511
563
|
end
|
564
|
+
|
565
|
+
it 'sets the options on a client created with the uri' do
|
566
|
+
expect(Mongo::Client.new(string).options[:auth_mech]).to eq(expected)
|
567
|
+
end
|
568
|
+
|
569
|
+
it 'is case-insensitive' do
|
570
|
+
expect(Mongo::Client.new(string.downcase).options[:auth_mech]).to eq(expected)
|
571
|
+
end
|
512
572
|
end
|
513
573
|
|
514
574
|
context 'mongodb-cr' do
|
@@ -518,6 +578,14 @@ describe 'invalid uris' do
|
|
518
578
|
it 'sets the auth mechanism to :mongodb_cr' do
|
519
579
|
expect(uri.uri_options[:auth_mech]).to eq(expected)
|
520
580
|
end
|
581
|
+
|
582
|
+
it 'sets the options on a client created with the uri' do
|
583
|
+
expect(Mongo::Client.new(string).options[:auth_mech]).to eq(expected)
|
584
|
+
end
|
585
|
+
|
586
|
+
it 'is case-insensitive' do
|
587
|
+
expect(Mongo::Client.new(string.downcase).options[:auth_mech]).to eq(expected)
|
588
|
+
end
|
521
589
|
end
|
522
590
|
|
523
591
|
context 'gssapi' do
|
@@ -527,6 +595,14 @@ describe 'invalid uris' do
|
|
527
595
|
it 'sets the auth mechanism to :gssapi' do
|
528
596
|
expect(uri.uri_options[:auth_mech]).to eq(expected)
|
529
597
|
end
|
598
|
+
|
599
|
+
it 'sets the options on a client created with the uri' do
|
600
|
+
expect(Mongo::Client.new(string).options[:auth_mech]).to eq(expected)
|
601
|
+
end
|
602
|
+
|
603
|
+
it 'is case-insensitive' do
|
604
|
+
expect(Mongo::Client.new(string.downcase).options[:auth_mech]).to eq(expected)
|
605
|
+
end
|
530
606
|
end
|
531
607
|
|
532
608
|
context 'scram-sha-1' do
|
@@ -536,6 +612,14 @@ describe 'invalid uris' do
|
|
536
612
|
it 'sets the auth mechanism to :scram' do
|
537
613
|
expect(uri.uri_options[:auth_mech]).to eq(expected)
|
538
614
|
end
|
615
|
+
|
616
|
+
it 'sets the options on a client created with the uri' do
|
617
|
+
expect(Mongo::Client.new(string).options[:auth_mech]).to eq(expected)
|
618
|
+
end
|
619
|
+
|
620
|
+
it 'is case-insensitive' do
|
621
|
+
expect(Mongo::Client.new(string.downcase).options[:auth_mech]).to eq(expected)
|
622
|
+
end
|
539
623
|
end
|
540
624
|
end
|
541
625
|
|
@@ -544,19 +628,26 @@ describe 'invalid uris' do
|
|
544
628
|
|
545
629
|
context 'regular db' do
|
546
630
|
let(:source) { 'foo' }
|
547
|
-
let(:auth) { Mongo::Options::Redacted.new(:source => 'foo') }
|
548
631
|
|
549
632
|
it 'sets the auth source to the database' do
|
550
|
-
expect(uri.uri_options[:
|
633
|
+
expect(uri.uri_options[:auth_source]).to eq(source)
|
634
|
+
end
|
635
|
+
|
636
|
+
it 'sets the options on a client created with the uri' do
|
637
|
+
expect(Mongo::Client.new(string).options[:auth_source]).to eq(source)
|
551
638
|
end
|
552
639
|
end
|
553
640
|
|
554
641
|
context '$external' do
|
555
642
|
let(:source) { '$external' }
|
556
|
-
let(:
|
643
|
+
let(:expected) { :external }
|
557
644
|
|
558
645
|
it 'sets the auth source to :external' do
|
559
|
-
expect(uri.uri_options[:
|
646
|
+
expect(uri.uri_options[:auth_source]).to eq(expected)
|
647
|
+
end
|
648
|
+
|
649
|
+
it 'sets the options on a client created with the uri' do
|
650
|
+
expect(Mongo::Client.new(string).options[:auth_source]).to eq(expected)
|
560
651
|
end
|
561
652
|
end
|
562
653
|
end
|
@@ -569,12 +660,14 @@ describe 'invalid uris' do
|
|
569
660
|
end
|
570
661
|
|
571
662
|
let(:service_name) { 'foo' }
|
572
|
-
let(:
|
573
|
-
Mongo::Options::Redacted.new(auth_mech_properties: { service_name: service_name })
|
574
|
-
end
|
663
|
+
let(:expected) { Mongo::Options::Redacted.new({ service_name: service_name }) }
|
575
664
|
|
576
665
|
it 'sets the auth mechanism properties' do
|
577
|
-
expect(uri.uri_options[:
|
666
|
+
expect(uri.uri_options[:auth_mech_properties]).to eq(expected)
|
667
|
+
end
|
668
|
+
|
669
|
+
it 'sets the options on a client created with the uri' do
|
670
|
+
expect(Mongo::Client.new(string).options[:auth_mech_properties]).to eq(expected)
|
578
671
|
end
|
579
672
|
end
|
580
673
|
|
@@ -582,14 +675,15 @@ describe 'invalid uris' do
|
|
582
675
|
let(:options) do
|
583
676
|
"authMechanismProperties=CANONICALIZE_HOST_NAME:#{canonicalize_host_name}"
|
584
677
|
end
|
585
|
-
|
586
678
|
let(:canonicalize_host_name) { 'true' }
|
587
|
-
let(:
|
588
|
-
Mongo::Options::Redacted.new(auth_mech_properties: { canonicalize_host_name: true })
|
589
|
-
end
|
679
|
+
let(:expected) { Mongo::Options::Redacted.new({ canonicalize_host_name: true }) }
|
590
680
|
|
591
681
|
it 'sets the auth mechanism properties' do
|
592
|
-
expect(uri.uri_options[:
|
682
|
+
expect(uri.uri_options[:auth_mech_properties]).to eq(expected)
|
683
|
+
end
|
684
|
+
|
685
|
+
it 'sets the options on a client created with the uri' do
|
686
|
+
expect(Mongo::Client.new(string).options[:auth_mech_properties]).to eq(expected)
|
593
687
|
end
|
594
688
|
end
|
595
689
|
|
@@ -599,12 +693,15 @@ describe 'invalid uris' do
|
|
599
693
|
end
|
600
694
|
|
601
695
|
let(:service_realm) { 'dumdum' }
|
602
|
-
let(:
|
603
|
-
|
604
|
-
end
|
696
|
+
let(:expected) { Mongo::Options::Redacted.new({ service_realm: service_realm }) }
|
697
|
+
|
605
698
|
|
606
699
|
it 'sets the auth mechanism properties' do
|
607
|
-
expect(uri.uri_options[:
|
700
|
+
expect(uri.uri_options[:auth_mech_properties]).to eq(expected)
|
701
|
+
end
|
702
|
+
|
703
|
+
it 'sets the options on a client created with the uri' do
|
704
|
+
expect(Mongo::Client.new(string).options[:auth_mech_properties]).to eq(expected)
|
608
705
|
end
|
609
706
|
end
|
610
707
|
|
@@ -619,14 +716,18 @@ describe 'invalid uris' do
|
|
619
716
|
let(:canonicalize_host_name) { 'true' }
|
620
717
|
let(:service_realm) { 'dumdum' }
|
621
718
|
|
622
|
-
let(:
|
623
|
-
Mongo::Options::Redacted.new(
|
624
|
-
|
625
|
-
|
719
|
+
let(:expected) do
|
720
|
+
Mongo::Options::Redacted.new({ service_name: service_name,
|
721
|
+
canonicalize_host_name: true,
|
722
|
+
service_realm: service_realm })
|
626
723
|
end
|
627
724
|
|
628
725
|
it 'sets the auth mechanism properties' do
|
629
|
-
expect(uri.uri_options[:
|
726
|
+
expect(uri.uri_options[:auth_mech_properties]).to eq(expected)
|
727
|
+
end
|
728
|
+
|
729
|
+
it 'sets the options on a client created with the uri' do
|
730
|
+
expect(Mongo::Client.new(string).options[:auth_mech_properties]).to eq(expected)
|
630
731
|
end
|
631
732
|
end
|
632
733
|
end
|
@@ -28,11 +28,6 @@ TEST_COLL = 'test'.freeze
|
|
28
28
|
ADDRESSES = ENV['MONGODB_ADDRESSES'] ? ENV['MONGODB_ADDRESSES'].split(',').freeze :
|
29
29
|
[ '127.0.0.1:27017' ].freeze
|
30
30
|
|
31
|
-
# A default address to use in tests.
|
32
|
-
#
|
33
|
-
# @since 2.0.0
|
34
|
-
DEFAULT_ADDRESS = ADDRESSES.first
|
35
|
-
|
36
31
|
# The topology type.
|
37
32
|
#
|
38
33
|
# @since 2.0.0
|
@@ -65,7 +60,9 @@ SSL_OPTIONS = {
|
|
65
60
|
# @since 2.1.0
|
66
61
|
BASE_OPTIONS = {
|
67
62
|
max_pool_size: 1,
|
68
|
-
write: WRITE_CONCERN
|
63
|
+
write: WRITE_CONCERN,
|
64
|
+
heartbeat_frequency: 5,
|
65
|
+
max_read_retries: 5
|
69
66
|
}
|
70
67
|
|
71
68
|
# Options for test suite clients.
|
@@ -245,5 +242,12 @@ module Authorization
|
|
245
242
|
context.let(:unauthorized_primary) do
|
246
243
|
authorized_client.cluster.next_primary
|
247
244
|
end
|
245
|
+
|
246
|
+
# Get a default address (of the primary).
|
247
|
+
#
|
248
|
+
# @since 2.2.6
|
249
|
+
context.let(:default_address) do
|
250
|
+
authorized_client.cluster.next_primary.address
|
251
|
+
end
|
248
252
|
end
|
249
253
|
end
|
@@ -12,7 +12,7 @@ def server(mode, options = {})
|
|
12
12
|
|
13
13
|
listeners = Mongo::Event::Listeners.new
|
14
14
|
monitoring = Mongo::Monitoring.new
|
15
|
-
address =
|
15
|
+
address = options[:address]
|
16
16
|
|
17
17
|
server = Mongo::Server.new(address, double('cluster'), monitoring, listeners, TEST_OPTIONS)
|
18
18
|
description = Mongo::Server::Description.new(address, ismaster, average_round_trip_time)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Brock
|
@@ -32,7 +32,7 @@ cert_chain:
|
|
32
32
|
EhIn2f8suSc9QAqYt7w4T+PMtjxWTVcXs+Uy2PbDtjhtEBz6ZsP6YSsOpJbrCjCV
|
33
33
|
wZtXjpRUvWz86V5vjhHCTE8fqfEb85aeDwUCckPzpio=
|
34
34
|
-----END CERTIFICATE-----
|
35
|
-
date: 2016-
|
35
|
+
date: 2016-07-12 00:00:00.000000000 Z
|
36
36
|
dependencies:
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: bson
|
@@ -48,6 +48,20 @@ dependencies:
|
|
48
48
|
- - "~>"
|
49
49
|
- !ruby/object:Gem::Version
|
50
50
|
version: '4.0'
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: pry
|
53
|
+
requirement: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
type: :runtime
|
59
|
+
prerelease: false
|
60
|
+
version_requirements: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
51
65
|
description: A Ruby driver for MongoDB
|
52
66
|
email: mongodb-dev@googlegroups.com
|
53
67
|
executables:
|
@@ -151,6 +165,7 @@ files:
|
|
151
165
|
- lib/mongo/error/socket_timeout_error.rb
|
152
166
|
- lib/mongo/error/unchangeable_collection_option.rb
|
153
167
|
- lib/mongo/error/unexpected_chunk_length.rb
|
168
|
+
- lib/mongo/error/unexpected_response.rb
|
154
169
|
- lib/mongo/error/unsupported_features.rb
|
155
170
|
- lib/mongo/event.rb
|
156
171
|
- lib/mongo/event/description_changed.rb
|
@@ -578,7 +593,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
578
593
|
version: '0'
|
579
594
|
requirements: []
|
580
595
|
rubyforge_project:
|
581
|
-
rubygems_version: 2.
|
596
|
+
rubygems_version: 2.5.1
|
582
597
|
signing_key:
|
583
598
|
specification_version: 4
|
584
599
|
summary: Ruby driver for MongoDB
|
metadata.gz.sig
CHANGED
Binary file
|