mongo 1.8.2 → 1.8.3.rc0
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.
- data.tar.gz.sig +0 -0
- data/LICENSE +1 -1
- data/README.md +2 -7
- data/VERSION +1 -1
- data/lib/mongo.rb +2 -18
- data/lib/mongo/collection.rb +20 -24
- data/lib/mongo/cursor.rb +30 -35
- data/lib/mongo/db.rb +1 -19
- data/lib/mongo/exceptions.rb +0 -19
- data/lib/mongo/gridfs/grid.rb +18 -29
- data/lib/mongo/gridfs/grid_ext.rb +0 -18
- data/lib/mongo/gridfs/grid_file_system.rb +17 -26
- data/lib/mongo/gridfs/grid_io.rb +0 -18
- data/lib/mongo/legacy.rb +0 -18
- data/lib/mongo/mongo_client.rb +11 -33
- data/lib/mongo/mongo_replica_set_client.rb +29 -56
- data/lib/mongo/mongo_sharded_client.rb +38 -50
- data/lib/mongo/networking.rb +5 -4
- data/lib/mongo/util/conversions.rb +0 -17
- data/lib/mongo/util/core_ext.rb +0 -18
- data/lib/mongo/util/node.rb +16 -3
- data/lib/mongo/util/pool.rb +46 -36
- data/lib/mongo/util/pool_manager.rb +102 -71
- data/lib/mongo/util/read_preference.rb +4 -2
- data/lib/mongo/util/server_version.rb +0 -17
- data/lib/mongo/util/sharding_pool_manager.rb +4 -23
- data/lib/mongo/util/socket_util.rb +20 -0
- data/lib/mongo/util/ssl_socket.rb +10 -19
- data/lib/mongo/util/support.rb +0 -18
- data/lib/mongo/util/tcp_socket.rb +1 -9
- data/lib/mongo/util/thread_local_variable_manager.rb +0 -18
- data/lib/mongo/util/uri_parser.rb +87 -82
- data/lib/mongo/util/write_concern.rb +0 -18
- data/mongo.gemspec +4 -1
- data/test/auxillary/pool_reuse_test.rb +65 -0
- data/test/functional/collection_test.rb +92 -3
- data/test/functional/connection_test.rb +30 -6
- data/test/functional/db_api_test.rb +11 -0
- data/test/functional/timeout_test.rb +23 -0
- data/test/functional/uri_test.rb +69 -0
- data/test/replica_set/client_test.rb +0 -22
- data/test/replica_set/cursor_test.rb +11 -5
- data/test/replica_set/refresh_test.rb +0 -0
- data/test/replica_set/z_cluster_shutdown.rb +13 -0
- data/test/sharded_cluster/basic_test.rb +46 -32
- data/test/test_helper.rb +26 -1
- data/test/threading/basic_test.rb +10 -9
- data/test/tools/mongo_config.rb +6 -2
- data/test/unit/collection_test.rb +1 -1
- data/test/unit/grid_test.rb +20 -13
- data/test/unit/mongo_sharded_client_test.rb +32 -0
- data/test/unit/pool_manager_test.rb +28 -14
- metadata +45 -12
- metadata.gz.sig +0 -0
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
# mock test case to shutdown cluster for rake test:replica_set, must be last by file name sort order
|
4
|
+
class ZClusterShutdownTest < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
ensure_cluster(:rs)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_cluster_shutdown
|
10
|
+
@@force_shutdown = true
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
@@ -6,28 +6,24 @@ class Cursor
|
|
6
6
|
end
|
7
7
|
|
8
8
|
class BasicTest < Test::Unit::TestCase
|
9
|
-
|
9
|
+
|
10
10
|
def setup
|
11
11
|
ensure_cluster(:sc)
|
12
|
-
|
13
|
-
|
14
|
-
def self.shutdown
|
15
|
-
@@cluster.stop
|
16
|
-
@@cluster.clobber
|
12
|
+
@document = { "name" => "test_user" }
|
13
|
+
@seeds = @sc.mongos_seeds
|
17
14
|
end
|
18
15
|
|
19
16
|
# TODO member.primary? ==> true
|
20
17
|
def test_connect
|
21
|
-
|
22
|
-
@client = MongoShardedClient.new(seeds)
|
18
|
+
@client = MongoShardedClient.new(@seeds)
|
23
19
|
assert @client.connected?
|
24
|
-
assert_equal(seeds.size, @client.seeds.size)
|
25
|
-
probe(seeds.size)
|
20
|
+
assert_equal(@seeds.size, @client.seeds.size)
|
21
|
+
probe(@seeds.size)
|
26
22
|
@client.close
|
27
23
|
end
|
28
24
|
|
29
25
|
def test_connect_from_standard_client
|
30
|
-
mongos = @
|
26
|
+
mongos = @seeds.first
|
31
27
|
@client = MongoClient.new(*mongos.split(':'))
|
32
28
|
assert @client.connected?
|
33
29
|
assert @client.mongos?
|
@@ -35,26 +31,48 @@ class BasicTest < Test::Unit::TestCase
|
|
35
31
|
end
|
36
32
|
|
37
33
|
def test_read_from_client
|
38
|
-
host, port = @
|
39
|
-
tags = [{:dc => "mongolia"}]
|
34
|
+
host, port = @seeds.first.split(':')
|
35
|
+
tags = [{:dc => "mongolia"}]
|
40
36
|
@client = MongoClient.new(host, port, {:read => :secondary, :tag_sets => tags})
|
41
37
|
assert @client.connected?
|
42
38
|
cursor = Cursor.new(@client[MONGO_TEST_DB]['whatever'], {})
|
43
39
|
assert_equal cursor.construct_query_spec['$readPreference'], {:mode => :secondary, :tags => tags}
|
44
40
|
end
|
45
41
|
|
42
|
+
def test_find_one_with_read_secondary
|
43
|
+
@client = MongoShardedClient.new(@seeds, { :read => :secondary })
|
44
|
+
@client[MONGO_TEST_DB]["users"].insert([ @document ])
|
45
|
+
assert_equal @client[MONGO_TEST_DB]['users'].find_one["name"], "test_user"
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_find_one_with_read_secondary_preferred
|
49
|
+
@client = MongoShardedClient.new(@seeds, { :read => :secondary_preferred })
|
50
|
+
@client[MONGO_TEST_DB]["users"].insert([ @document ])
|
51
|
+
assert_equal @client[MONGO_TEST_DB]['users'].find_one["name"], "test_user"
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_find_one_with_read_primary
|
55
|
+
@client = MongoShardedClient.new(@seeds, { :read => :primary })
|
56
|
+
@client[MONGO_TEST_DB]["users"].insert([ @document ])
|
57
|
+
assert_equal @client[MONGO_TEST_DB]['users'].find_one["name"], "test_user"
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_find_one_with_read_primary_preferred
|
61
|
+
@client = MongoShardedClient.new(@seeds, { :read => :primary_preferred })
|
62
|
+
@client[MONGO_TEST_DB]["users"].insert([ @document ])
|
63
|
+
assert_equal @client[MONGO_TEST_DB]['users'].find_one["name"], "test_user"
|
64
|
+
end
|
65
|
+
|
46
66
|
def test_read_from_sharded_client
|
47
|
-
|
48
|
-
|
49
|
-
@client = MongoShardedClient.new(seeds, {:read => :secondary, :tag_sets => tags})
|
67
|
+
tags = [{:dc => "mongolia"}]
|
68
|
+
@client = MongoShardedClient.new(@seeds, {:read => :secondary, :tag_sets => tags})
|
50
69
|
assert @client.connected?
|
51
70
|
cursor = Cursor.new(@client[MONGO_TEST_DB]['whatever'], {})
|
52
71
|
assert_equal cursor.construct_query_spec['$readPreference'], {:mode => :secondary, :tags => tags}
|
53
72
|
end
|
54
73
|
|
55
74
|
def test_hard_refresh
|
56
|
-
|
57
|
-
@client = MongoShardedClient.new(seeds)
|
75
|
+
@client = MongoShardedClient.new(@seeds)
|
58
76
|
assert @client.connected?
|
59
77
|
@client.hard_refresh!
|
60
78
|
assert @client.connected?
|
@@ -62,44 +80,41 @@ class BasicTest < Test::Unit::TestCase
|
|
62
80
|
end
|
63
81
|
|
64
82
|
def test_reconnect
|
65
|
-
|
66
|
-
@client = MongoShardedClient.new(seeds)
|
83
|
+
@client = MongoShardedClient.new(@seeds)
|
67
84
|
assert @client.connected?
|
68
85
|
router = @sc.servers(:routers).first
|
69
86
|
router.stop
|
70
|
-
probe(seeds.size)
|
87
|
+
probe(@seeds.size)
|
71
88
|
assert @client.connected?
|
72
89
|
@client.close
|
73
90
|
end
|
74
91
|
|
75
92
|
def test_all_down
|
76
|
-
|
77
|
-
@client = MongoShardedClient.new(seeds)
|
93
|
+
@client = MongoShardedClient.new(@seeds)
|
78
94
|
assert @client.connected?
|
79
95
|
@sc.servers(:routers).each{|router| router.stop}
|
80
96
|
assert_raises Mongo::ConnectionFailure do
|
81
|
-
probe(seeds.size)
|
97
|
+
probe(@seeds.size)
|
82
98
|
end
|
83
99
|
assert_false @client.connected?
|
84
100
|
@client.close
|
85
101
|
end
|
86
102
|
|
87
103
|
def test_cycle
|
88
|
-
|
89
|
-
@client = MongoShardedClient.new(seeds)
|
104
|
+
@client = MongoShardedClient.new(@seeds)
|
90
105
|
assert @client.connected?
|
91
106
|
routers = @sc.servers(:routers)
|
92
107
|
while routers.size > 0 do
|
93
108
|
rescue_connection_failure do
|
94
|
-
probe(seeds.size)
|
109
|
+
probe(@seeds.size)
|
95
110
|
end
|
96
|
-
probe(seeds.size)
|
111
|
+
probe(@seeds.size)
|
97
112
|
router = routers.detect{|r| r.port == @client.manager.primary.last}
|
98
113
|
routers.delete(router)
|
99
114
|
router.stop
|
100
115
|
end
|
101
116
|
assert_raises Mongo::ConnectionFailure do
|
102
|
-
probe(seeds.size)
|
117
|
+
probe(@seeds.size)
|
103
118
|
end
|
104
119
|
assert_false @client.connected?
|
105
120
|
routers = @sc.servers(:routers).reverse
|
@@ -107,9 +122,9 @@ class BasicTest < Test::Unit::TestCase
|
|
107
122
|
r.start
|
108
123
|
@client.hard_refresh!
|
109
124
|
rescue_connection_failure do
|
110
|
-
probe(seeds.size)
|
125
|
+
probe(@seeds.size)
|
111
126
|
end
|
112
|
-
probe(seeds.size)
|
127
|
+
probe(@seeds.size)
|
113
128
|
end
|
114
129
|
@client.close
|
115
130
|
end
|
@@ -119,5 +134,4 @@ class BasicTest < Test::Unit::TestCase
|
|
119
134
|
def probe(size)
|
120
135
|
assert_equal(size, @client['config']['mongos'].find.to_a.size)
|
121
136
|
end
|
122
|
-
|
123
137
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,4 +1,16 @@
|
|
1
1
|
require 'rubygems'
|
2
|
+
# SimpleCov must load before our code - A coverage report summary line will print after each test suite
|
3
|
+
if RUBY_VERSION >= '1.9.0' && RUBY_ENGINE == 'ruby'
|
4
|
+
if ENV.key?('COVERAGE')
|
5
|
+
require 'simplecov'
|
6
|
+
SimpleCov.start do
|
7
|
+
add_group "Mongo", 'lib/mongo'
|
8
|
+
add_group "BSON", 'lib/bson'
|
9
|
+
add_filter "/test/"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
gem 'test-unit' # Do NOT remove this line - gem version is needed for Test::Unit::TestCase.shutdown
|
2
14
|
require 'test/unit'
|
3
15
|
require 'tools/mongo_config'
|
4
16
|
|
@@ -7,7 +19,7 @@ class Test::Unit::TestCase
|
|
7
19
|
TEST_DATA = File.join(File.dirname(__FILE__), 'data')
|
8
20
|
|
9
21
|
def ensure_cluster(kind=nil, opts={})
|
10
|
-
@@cluster ||=
|
22
|
+
@@cluster ||= nil
|
11
23
|
|
12
24
|
unless @@cluster
|
13
25
|
if kind == :rs
|
@@ -25,6 +37,17 @@ class Test::Unit::TestCase
|
|
25
37
|
config = Mongo::Config.cluster(cluster_opts)
|
26
38
|
#debug 1, config
|
27
39
|
@@cluster = Mongo::Config::ClusterManager.new(config)
|
40
|
+
|
41
|
+
Test::Unit::TestCase.class_eval do
|
42
|
+
@@force_shutdown = false
|
43
|
+
|
44
|
+
def self.shutdown
|
45
|
+
if @@force_shutdown || /rake_test_loader/ !~ $0
|
46
|
+
@@cluster.stop
|
47
|
+
@@cluster.clobber
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
28
51
|
end
|
29
52
|
|
30
53
|
@@cluster.start
|
@@ -143,6 +166,8 @@ class Test::Unit::TestCase
|
|
143
166
|
socket.stubs(:setsockopt).with(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
|
144
167
|
socket.stubs(:close)
|
145
168
|
socket.stubs(:closed?)
|
169
|
+
socket.stubs(:checkin)
|
170
|
+
socket.stubs(:pool)
|
146
171
|
socket
|
147
172
|
end
|
148
173
|
|
@@ -5,7 +5,7 @@ class TestThreading < Test::Unit::TestCase
|
|
5
5
|
include Mongo
|
6
6
|
|
7
7
|
def setup
|
8
|
-
@client = standard_connection(:pool_size =>
|
8
|
+
@client = standard_connection(:pool_size => 10, :pool_timeout => 30)
|
9
9
|
@db = @client.db(MONGO_TEST_DB)
|
10
10
|
@coll = @db.collection('thread-test-collection')
|
11
11
|
@coll.drop
|
@@ -58,22 +58,23 @@ class TestThreading < Test::Unit::TestCase
|
|
58
58
|
threads.each {|thread| thread.join}
|
59
59
|
end
|
60
60
|
|
61
|
-
def
|
61
|
+
def test_concurrent_find
|
62
|
+
n_threads = 50
|
63
|
+
|
62
64
|
1000.times do |i|
|
63
|
-
@coll.insert({ "x" =>
|
65
|
+
@coll.insert({ "x" => "a" })
|
64
66
|
end
|
65
67
|
|
66
68
|
threads = []
|
67
|
-
|
69
|
+
n_threads.times do |i|
|
68
70
|
threads << Thread.new do
|
69
71
|
sum = 0
|
70
|
-
@coll.find
|
71
|
-
sum += document["x"]
|
72
|
-
end
|
73
|
-
assert_equal 499500, sum
|
72
|
+
@coll.find.to_a.size
|
74
73
|
end
|
75
74
|
end
|
76
75
|
|
77
|
-
|
76
|
+
thread_values = threads.map(&:value)
|
77
|
+
assert thread_values.all?{|v| v == 1000}
|
78
|
+
assert_equal thread_values.size, n_threads
|
78
79
|
end
|
79
80
|
end
|
data/test/tools/mongo_config.rb
CHANGED
@@ -145,6 +145,7 @@ module Mongo
|
|
145
145
|
def self.port_available?(port)
|
146
146
|
ret = false
|
147
147
|
socket = Socket.new(Socket::Constants::AF_INET, Socket::Constants::SOCK_STREAM, 0)
|
148
|
+
socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1)
|
148
149
|
sockaddr = Socket.sockaddr_in(port, '0.0.0.0')
|
149
150
|
begin
|
150
151
|
socket.bind(sockaddr)
|
@@ -211,7 +212,10 @@ module Mongo
|
|
211
212
|
false
|
212
213
|
end
|
213
214
|
# cleanup lock if unclean shutdown
|
214
|
-
|
215
|
+
begin
|
216
|
+
File.delete(File.join(@config[:dbpath], 'mongod.lock')) if @config[:dbpath]
|
217
|
+
rescue Errno::ENOENT
|
218
|
+
end
|
215
219
|
end
|
216
220
|
|
217
221
|
def wait
|
@@ -550,7 +554,7 @@ module Mongo
|
|
550
554
|
end
|
551
555
|
|
552
556
|
def clobber
|
553
|
-
|
557
|
+
FileUtils.rm_rf @config[:dbpath]
|
554
558
|
self
|
555
559
|
end
|
556
560
|
end
|
@@ -37,7 +37,7 @@ class CollectionTest < Test::Unit::TestCase
|
|
37
37
|
@client = MongoClient.new('localhost', 27017, :logger => @logger, :connect => false)
|
38
38
|
@db = @client['testing']
|
39
39
|
@coll = @db.collection('books')
|
40
|
-
@client.expects(:checkout_reader).returns(
|
40
|
+
@client.expects(:checkout_reader).returns(new_mock_socket)
|
41
41
|
@client.expects(:receive_message).with do |op, msg, log, sock|
|
42
42
|
op == 2004
|
43
43
|
end.returns([[], 0, 0])
|
data/test/unit/grid_test.rb
CHANGED
@@ -13,43 +13,50 @@ class GridTest < Test::Unit::TestCase
|
|
13
13
|
@files = mock()
|
14
14
|
@chunks = mock()
|
15
15
|
|
16
|
-
@db.
|
17
|
-
@db.
|
16
|
+
@db.stubs(:[]).with('fs.files').returns(@files)
|
17
|
+
@db.stubs(:[]).with('fs.chunks').returns(@chunks)
|
18
18
|
@db.stubs(:safe)
|
19
19
|
@db.stubs(:read).returns(:primary)
|
20
20
|
end
|
21
21
|
|
22
|
-
context "Grid
|
22
|
+
context "Grid classes with standard connections" do
|
23
23
|
setup do
|
24
|
-
@
|
25
|
-
@client.expects(:read_primary?).returns(true)
|
24
|
+
@chunks.expects(:ensure_index)
|
26
25
|
end
|
27
26
|
|
28
27
|
should "create indexes for Grid" do
|
29
|
-
@chunks.expects(:create_index)
|
30
28
|
Grid.new(@db)
|
31
29
|
end
|
32
30
|
|
33
31
|
should "create indexes for GridFileSystem" do
|
34
|
-
@files.expects(:
|
35
|
-
@chunks.expects(:create_index)
|
32
|
+
@files.expects(:ensure_index)
|
36
33
|
GridFileSystem.new(@db)
|
37
34
|
end
|
38
35
|
end
|
39
36
|
|
40
37
|
context "Grid classes with slave connection" do
|
41
38
|
setup do
|
42
|
-
@
|
43
|
-
@
|
39
|
+
@chunks.stubs(:ensure_index).raises(Mongo::ConnectionFailure)
|
40
|
+
@files.stubs(:ensure_index).raises(Mongo::ConnectionFailure)
|
44
41
|
end
|
45
42
|
|
46
43
|
should "not create indexes for Grid" do
|
47
|
-
Grid.new(@db)
|
44
|
+
grid = Grid.new(@db)
|
45
|
+
data = "hello world!"
|
46
|
+
assert_raise Mongo::ConnectionFailure do
|
47
|
+
grid.put(data)
|
48
|
+
end
|
48
49
|
end
|
49
50
|
|
50
51
|
should "not create indexes for GridFileSystem" do
|
51
|
-
GridFileSystem.new(@db)
|
52
|
+
gridfs = GridFileSystem.new(@db)
|
53
|
+
data = "hello world!"
|
54
|
+
assert_raise Mongo::ConnectionFailure do
|
55
|
+
gridfs.open('image.jpg', 'w') do |f|
|
56
|
+
f.write data
|
57
|
+
end
|
58
|
+
end
|
52
59
|
end
|
53
60
|
end
|
54
61
|
end
|
55
|
-
end
|
62
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class MongoShardedClientTest < Test::Unit::TestCase
|
4
|
+
include Mongo
|
5
|
+
|
6
|
+
def setup
|
7
|
+
ENV["MONGODB_URI"] = nil
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_initialize_with_single_mongos_uri
|
11
|
+
ENV["MONGODB_URI"] = "mongodb://localhost:27017"
|
12
|
+
client = MongoShardedClient.new
|
13
|
+
assert_equal [[ "localhost", 27017 ]], client.seeds
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_initialize_with_multiple_mongos_uris
|
17
|
+
ENV["MONGODB_URI"] = "mongodb://localhost:27017,localhost:27018"
|
18
|
+
client = MongoShardedClient.new
|
19
|
+
assert_equal [[ "localhost", 27017 ], [ "localhost", 27018 ]], client.seeds
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_from_uri_with_string
|
23
|
+
client = MongoShardedClient.from_uri("mongodb://localhost:27017,localhost:27018")
|
24
|
+
assert_equal [[ "localhost", 27017 ], [ "localhost", 27018 ]], client.seeds
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_from_uri_with_env_variable
|
28
|
+
ENV["MONGODB_URI"] = "mongodb://localhost:27017,localhost:27018"
|
29
|
+
client = MongoShardedClient.from_uri
|
30
|
+
assert_equal [[ "localhost", 27017 ], [ "localhost", 27018 ]], client.seeds
|
31
|
+
end
|
32
|
+
end
|
@@ -22,21 +22,33 @@ class PoolManagerTest < Test::Unit::TestCase
|
|
22
22
|
@client.stubs(:replica_set_name).returns(nil)
|
23
23
|
@client.stubs(:log)
|
24
24
|
@arbiters = ['localhost:27020']
|
25
|
-
@hosts = [
|
26
|
-
'localhost:
|
25
|
+
@hosts = [
|
26
|
+
'localhost:27017',
|
27
|
+
'localhost:27018',
|
28
|
+
'localhost:27019',
|
29
|
+
'localhost:27020'
|
30
|
+
]
|
31
|
+
|
32
|
+
@ismaster = {
|
33
|
+
'hosts' => @hosts,
|
34
|
+
'arbiters' => @arbiters,
|
35
|
+
'maxMessageSizeBytes' => 1024 * 2.5,
|
36
|
+
'maxBsonObjectSize' => 1024
|
37
|
+
}
|
27
38
|
end
|
28
39
|
|
29
40
|
should "populate pools correctly" do
|
30
41
|
|
31
42
|
@db.stubs(:command).returns(
|
32
43
|
# First call to get a socket.
|
33
|
-
{'ismaster' => true
|
44
|
+
@ismaster.merge({'ismaster' => true}),
|
34
45
|
|
35
46
|
# Subsequent calls to configure pools.
|
36
|
-
{'ismaster' => true
|
37
|
-
{'secondary' => true, '
|
38
|
-
{'secondary' => true, '
|
39
|
-
{'arbiterOnly' => true
|
47
|
+
@ismaster.merge({'ismaster' => true}),
|
48
|
+
@ismaster.merge({'secondary' => true, 'maxMessageSizeBytes' => 700}),
|
49
|
+
@ismaster.merge({'secondary' => true, 'maxBsonObjectSize' => 500}),
|
50
|
+
@ismaster.merge({'arbiterOnly' => true})
|
51
|
+
)
|
40
52
|
|
41
53
|
seeds = [['localhost', 27017]]
|
42
54
|
manager = Mongo::PoolManager.new(@client, seeds)
|
@@ -45,22 +57,24 @@ class PoolManagerTest < Test::Unit::TestCase
|
|
45
57
|
assert_equal ['localhost', 27017], manager.primary
|
46
58
|
assert_equal 27017, manager.primary_pool.port
|
47
59
|
assert_equal 2, manager.secondaries.length
|
48
|
-
assert_equal 27018, manager.secondary_pools
|
49
|
-
assert_equal 27019, manager.secondary_pools[1].port
|
60
|
+
assert_equal [27018, 27019], manager.secondary_pools.map(&:port).sort
|
50
61
|
assert_equal [['localhost', 27020]], manager.arbiters
|
62
|
+
assert_equal 500, manager.max_bson_size
|
63
|
+
assert_equal 700 , manager.max_message_size
|
51
64
|
end
|
52
65
|
|
53
66
|
should "populate pools with single unqueryable seed" do
|
54
67
|
|
55
68
|
@db.stubs(:command).returns(
|
56
69
|
# First call to recovering node
|
57
|
-
{'ismaster' => false, 'secondary' => false
|
70
|
+
@ismaster.merge({'ismaster' => false, 'secondary' => false}),
|
58
71
|
|
59
72
|
# Subsequent calls to configure pools.
|
60
|
-
{'ismaster' => false, 'secondary' => false
|
61
|
-
{'ismaster' => true
|
62
|
-
{'secondary' => true
|
63
|
-
{'arbiterOnly' => true
|
73
|
+
@ismaster.merge({'ismaster' => false, 'secondary' => false}),
|
74
|
+
@ismaster.merge({'ismaster' => true}),
|
75
|
+
@ismaster.merge({'secondary' => true}),
|
76
|
+
@ismaster.merge({'arbiterOnly' => true})
|
77
|
+
)
|
64
78
|
|
65
79
|
seeds = [['localhost', 27017]]
|
66
80
|
manager = Mongo::PoolManager.new(@client, seeds)
|