mongo 2.2.6 → 2.2.7
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/bin/mongo_console +19 -4
- data/lib/mongo/server/connectable.rb +1 -1
- data/lib/mongo/server/connection.rb +0 -3
- data/lib/mongo/version.rb +1 -1
- data/mongo.gemspec +0 -1
- data/spec/mongo/auth/user/view_spec.rb +1 -1
- data/spec/mongo/database_spec.rb +4 -7
- data/spec/mongo/server/connection_pool_spec.rb +28 -0
- metadata +3 -22
- metadata.gz.sig +0 -0
- data/bin/test.rb +0 -39
- data/spec/support/shared/cursor.rb +0 -38
- data/spec/support/shared/socket.rb +0 -82
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82e2963414b68a630d0784e70921c1d44775934e
|
4
|
+
data.tar.gz: db5398568a322af951e6b7ce3dfe7a22ddb8eb42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 108c89ec2a1e2849fc76a9d71b50307fd3fa6eca10389572a675d5065a700c0a48308e594f48cde6bb901f748387e0dae845ebd281afc6d96970024563cfb7a5
|
7
|
+
data.tar.gz: 47be1ace716e50c8020cc53599a9fd82e7c9f88ace2dfdd5d157a086f65002ae51d524a424e483795c9db6e7465a4ab04b79089315f140844f44d86f74a610e7
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/bin/mongo_console
CHANGED
@@ -1,11 +1,26 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
$LOAD_PATH[0, 0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
require 'pry'
|
5
|
-
require 'mongo'
|
6
4
|
|
5
|
+
require 'mongo'
|
7
6
|
# include the mongo namespace
|
8
7
|
include Mongo
|
9
8
|
|
10
|
-
|
11
|
-
|
9
|
+
begin
|
10
|
+
require 'pry'
|
11
|
+
rescue LoadError
|
12
|
+
end
|
13
|
+
|
14
|
+
begin
|
15
|
+
require 'irb'
|
16
|
+
rescue LoadError
|
17
|
+
end
|
18
|
+
|
19
|
+
if defined?(Pry)
|
20
|
+
Pry.config.prompt_name = 'mongo'
|
21
|
+
Pry.start
|
22
|
+
elsif defined?(IRB)
|
23
|
+
IRB.start
|
24
|
+
else
|
25
|
+
abort 'LoadError: mongo_console requires Pry or IRB'
|
26
|
+
end
|
data/lib/mongo/version.rb
CHANGED
data/mongo.gemspec
CHANGED
@@ -145,7 +145,7 @@ describe Mongo::Auth::User::View do
|
|
145
145
|
described_class.new(unauthorized_client.database)
|
146
146
|
end
|
147
147
|
|
148
|
-
it 'raises an OperationFailure' do
|
148
|
+
it 'raises an OperationFailure', if: auth_enabled? do
|
149
149
|
expect{
|
150
150
|
view.info('emily')
|
151
151
|
}.to raise_exception(Mongo::Error::OperationFailure)
|
data/spec/mongo/database_spec.rb
CHANGED
@@ -322,7 +322,7 @@ describe Mongo::Database do
|
|
322
322
|
end
|
323
323
|
end
|
324
324
|
|
325
|
-
describe '#fs' do
|
325
|
+
describe '#fs', unless: sharded? do
|
326
326
|
|
327
327
|
let(:database) do
|
328
328
|
described_class.new(authorized_client, TEST_DB)
|
@@ -340,21 +340,18 @@ describe Mongo::Database do
|
|
340
340
|
Mongo::Grid::File.new('Hello!', :filename => 'test.txt')
|
341
341
|
end
|
342
342
|
|
343
|
-
before do
|
344
|
-
fs.insert_one(file)
|
345
|
-
end
|
346
|
-
|
347
343
|
after do
|
348
344
|
fs.files_collection.delete_many
|
349
345
|
fs.chunks_collection.delete_many
|
350
346
|
end
|
351
347
|
|
352
348
|
let(:from_db) do
|
353
|
-
fs.
|
349
|
+
fs.insert_one(file)
|
350
|
+
fs.find({ filename: 'test.txt' }, limit: 1).first
|
354
351
|
end
|
355
352
|
|
356
353
|
it 'returns the assembled file from the db' do
|
357
|
-
expect(from_db
|
354
|
+
expect(from_db['filename']).to eq(file.info.filename)
|
358
355
|
end
|
359
356
|
end
|
360
357
|
end
|
@@ -192,4 +192,32 @@ describe Mongo::Server::ConnectionPool do
|
|
192
192
|
end
|
193
193
|
end
|
194
194
|
end
|
195
|
+
|
196
|
+
context 'when the connection does not finish authenticating before the thread is killed' do
|
197
|
+
|
198
|
+
let(:server) do
|
199
|
+
Mongo::Server.new(address, cluster, monitoring, listeners, options)
|
200
|
+
end
|
201
|
+
|
202
|
+
let!(:pool) do
|
203
|
+
described_class.get(server)
|
204
|
+
end
|
205
|
+
|
206
|
+
let(:options) do
|
207
|
+
{ user: ROOT_USER.name, password: ROOT_USER.password }.merge(TEST_OPTIONS).merge(max_pool_size: 1)
|
208
|
+
end
|
209
|
+
|
210
|
+
before do
|
211
|
+
t = Thread.new {
|
212
|
+
# Kill the thread when it's authenticating
|
213
|
+
allow(Mongo::Auth).to receive(:get) { t.kill }
|
214
|
+
pool.with_connection { |c| c.send(:ensure_connected) { |socket| socket } }
|
215
|
+
}
|
216
|
+
t.join
|
217
|
+
end
|
218
|
+
|
219
|
+
it 'disconnects the socket' do
|
220
|
+
expect(pool.checkout.send(:socket)).to be_nil
|
221
|
+
end
|
222
|
+
end
|
195
223
|
end
|
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.7
|
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-07-
|
35
|
+
date: 2016-07-25 00:00:00.000000000 Z
|
36
36
|
dependencies:
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: bson
|
@@ -48,20 +48,6 @@ 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'
|
65
51
|
description: A Ruby driver for MongoDB
|
66
52
|
email: mongodb-dev@googlegroups.com
|
67
53
|
executables:
|
@@ -74,7 +60,6 @@ files:
|
|
74
60
|
- README.md
|
75
61
|
- Rakefile
|
76
62
|
- bin/mongo_console
|
77
|
-
- bin/test.rb
|
78
63
|
- lib/csasl/csasl.bundle
|
79
64
|
- lib/mongo.rb
|
80
65
|
- lib/mongo/address.rb
|
@@ -567,11 +552,9 @@ files:
|
|
567
552
|
- spec/support/server_selection/selection/Single/read/SecondaryPreferred.yml
|
568
553
|
- spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml
|
569
554
|
- spec/support/server_selection_rtt.rb
|
570
|
-
- spec/support/shared/cursor.rb
|
571
555
|
- spec/support/shared/operation.rb
|
572
556
|
- spec/support/shared/protocol.rb
|
573
557
|
- spec/support/shared/server_selector.rb
|
574
|
-
- spec/support/shared/socket.rb
|
575
558
|
- spec/support/travis.rb
|
576
559
|
homepage: http://www.mongodb.org
|
577
560
|
licenses:
|
@@ -593,7 +576,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
593
576
|
version: '0'
|
594
577
|
requirements: []
|
595
578
|
rubyforge_project:
|
596
|
-
rubygems_version: 2.5.1
|
579
|
+
rubygems_version: 2.4.5.1
|
597
580
|
signing_key:
|
598
581
|
specification_version: 4
|
599
582
|
summary: Ruby driver for MongoDB
|
@@ -855,10 +838,8 @@ test_files:
|
|
855
838
|
- spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml
|
856
839
|
- spec/support/server_selection.rb
|
857
840
|
- spec/support/server_selection_rtt.rb
|
858
|
-
- spec/support/shared/cursor.rb
|
859
841
|
- spec/support/shared/operation.rb
|
860
842
|
- spec/support/shared/protocol.rb
|
861
843
|
- spec/support/shared/server_selector.rb
|
862
|
-
- spec/support/shared/socket.rb
|
863
844
|
- spec/support/travis.rb
|
864
845
|
has_rdoc: yard
|
metadata.gz.sig
CHANGED
Binary file
|
data/bin/test.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
$LOAD_PATH[0, 0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
require 'pry'
|
5
|
-
require 'mongo'
|
6
|
-
|
7
|
-
# include the mongo namespace
|
8
|
-
include Mongo
|
9
|
-
|
10
|
-
#gem 'mongo', '2.2.4' # this version raises "Cursor not found"
|
11
|
-
# gem 'mongo', '2.1.2' # this version works
|
12
|
-
|
13
|
-
#require 'uri'
|
14
|
-
#require 'mongo'
|
15
|
-
|
16
|
-
#binding.pry
|
17
|
-
puts "-" * 50
|
18
|
-
puts "Mongo Driver version: #{Mongo::VERSION}"
|
19
|
-
puts "-" * 50
|
20
|
-
|
21
|
-
uri = "mongodb://emily:qWQ6wfYfM5v7FGFf@aws-us-east-1-portal.14.dblayer.com:11118,aws-us-east-1-portal.13.dblayer.com:11141/tests?ssl=true"
|
22
|
-
#uri = "mongodb://localhost:2323,localhost:2324"
|
23
|
-
c = Mongo::Client.new(uri, ssl: true, ssl_verify: false, max_pool_size: 10)
|
24
|
-
#c = Mongo::Client.new(uri)
|
25
|
-
|
26
|
-
# c = Mongo::Client.new(["server:3000", "server:3001", "server:3002"],
|
27
|
-
# :ssl => true,
|
28
|
-
# :ssl_cert => "/Users/emily/ssl-certificates/client.pem",
|
29
|
-
# :ssl_key => "/Users/emily/ssl-certificates/client.pem",
|
30
|
-
# :ssl_ca_cert => "/Users/emily/ssl-certificates/ca.pem",
|
31
|
-
# :max_pool_size => 20)
|
32
|
-
|
33
|
-
binding.pry
|
34
|
-
|
35
|
-
c['samplecol'].drop
|
36
|
-
c['samplecol'].insert_many(50.times.map { |i| { someval: i } })
|
37
|
-
|
38
|
-
10.times.map { Thread.start { c['samplecol'].find({}).batch_size(10).to_a } }.map(&:join)
|
39
|
-
|
@@ -1,38 +0,0 @@
|
|
1
|
-
shared_context 'shared cursor' do
|
2
|
-
|
3
|
-
let(:client) do
|
4
|
-
double('client').tap do |client|
|
5
|
-
allow(client).to receive(:mongos?).and_return(false)
|
6
|
-
allow(client).to receive(:execute).and_return(*get_mores)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
let(:db) { Mongo::Database.new(client, TEST_DB) }
|
11
|
-
let(:collection) do
|
12
|
-
db[TEST_COLL].tap do |collection|
|
13
|
-
allow(collection).to receive(:full_namespace) do
|
14
|
-
"#{db.name}.#{collection.name}"
|
15
|
-
end
|
16
|
-
allow(collection).to receive(:client) { client }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
let(:view_options) { {} }
|
21
|
-
let(:view) { Mongo::View::Collection.new(collection, {}, view_options) }
|
22
|
-
|
23
|
-
let(:nonzero) { 1 }
|
24
|
-
let(:b) { proc { |d| d } }
|
25
|
-
|
26
|
-
let(:response) { make_response(1, 3) }
|
27
|
-
|
28
|
-
def make_response(cursor_id = 0, nreturned = 5)
|
29
|
-
double('response').tap do |response|
|
30
|
-
allow(response).to receive(:documents) { (0...nreturned).to_a }
|
31
|
-
allow(response).to receive(:cursor_id) { cursor_id }
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def get_mores
|
36
|
-
[ make_response ]
|
37
|
-
end
|
38
|
-
end
|
@@ -1,82 +0,0 @@
|
|
1
|
-
shared_examples 'shared socket behavior' do
|
2
|
-
|
3
|
-
describe '#read' do
|
4
|
-
before { allow(socket).to receive(:read).and_return(Object.new) }
|
5
|
-
|
6
|
-
context 'when an exception occurs in Socket#read' do
|
7
|
-
before do
|
8
|
-
allow(object).to receive(:alive?).and_return(true)
|
9
|
-
object.connect
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'raises a Mongo::SocketTimeoutError for Errno::ETIMEDOUT' do
|
13
|
-
allow_any_instance_of(::Socket).to receive(:read) do
|
14
|
-
raise Errno::ETIMEDOUT
|
15
|
-
end
|
16
|
-
expect { object.read(4096) }.to raise_error(Mongo::SocketTimeoutError)
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'raises a Mongo::SocketError for IOError' do
|
20
|
-
allow_any_instance_of(::Socket).to receive(:read) { raise IOError }
|
21
|
-
expect { object.read(4096) }.to raise_error(Mongo::SocketError)
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'raises a Mongo::SocketError for SystemCallError' do
|
25
|
-
allow_any_instance_of(::Socket).to receive(:read) do
|
26
|
-
raise SystemCallError, 'Oh god. Everything is ruined.'
|
27
|
-
end
|
28
|
-
expect { object.read(4096) }.to raise_error(Mongo::SocketError)
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'raises a Mongo::SocketError for OpenSSL::SSL::SSLError' do
|
32
|
-
allow_any_instance_of(::Socket).to receive(:read) do
|
33
|
-
raise OpenSSL::SSL::SSLError
|
34
|
-
end
|
35
|
-
expect { object.read(4096) }.to raise_error(Mongo::SocketError)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe '#write' do
|
41
|
-
let(:payload) { Object.new }
|
42
|
-
|
43
|
-
before { allow(socket).to receive(:write).and_return(1024) }
|
44
|
-
|
45
|
-
context 'when an exception occurs in Socket#write' do
|
46
|
-
before do
|
47
|
-
allow(object).to receive(:alive?).and_return(true)
|
48
|
-
object.connect
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'raises a Mongo::SocketTimeoutError for Errno::ETIMEDOUT' do
|
52
|
-
allow_any_instance_of(::Socket).to receive(:write) do
|
53
|
-
raise Errno::ETIMEDOUT
|
54
|
-
end
|
55
|
-
|
56
|
-
expect do
|
57
|
-
object.write(payload)
|
58
|
-
end.to raise_error(Mongo::SocketTimeoutError)
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'raises a Mongo::SocketError for IOError' do
|
62
|
-
allow_any_instance_of(::Socket).to receive(:write) { raise IOError }
|
63
|
-
expect { object.write(payload) }.to raise_error(Mongo::SocketError)
|
64
|
-
end
|
65
|
-
|
66
|
-
it 'raises a Mongo::SocketError for SystemCallError' do
|
67
|
-
allow_any_instance_of(::Socket).to receive(:write) do
|
68
|
-
raise SystemCallError, 'Oh god. Everything is ruined.'
|
69
|
-
end
|
70
|
-
expect { object.write(payload) }.to raise_error(Mongo::SocketError)
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'raises a Mongo::SocketError for OpenSSL::SSL::SSLError' do
|
74
|
-
allow_any_instance_of(::Socket).to receive(:write) do
|
75
|
-
raise OpenSSL::SSL::SSLError
|
76
|
-
end
|
77
|
-
expect { object.write(payload) }.to raise_error(Mongo::SocketError)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
end
|