mongo-ruby-driver/test/unit/pool_manager_test.rb

51 lines
1.8 KiB
Ruby

require File.expand_path("../../test_helper", __FILE__)
include Mongo
class PoolManagerTest < Test::Unit::TestCase
context "Initialization: " do
should "populate pools correctly" do
TCPSocket.stubs(:new).returns(new_mock_socket)
@db = new_mock_db
@connection = stub("Connection")
@connection.stubs(:connect_timeout).returns(5)
@connection.stubs(:op_timeout).returns(5)
@connection.stubs(:pool_size).returns(2)
@connection.stubs(:pool_timeout).returns(100)
@connection.stubs(:seeds).returns(['localhost:30000'])
@connection.stubs(:socket_class).returns(TCPSocket)
@connection.stubs(:[]).returns(@db)
@connection.stubs(:replica_set_name).returns(nil)
@connection.stubs(:log)
@arbiters = ['localhost:27020']
@hosts = ['localhost:27017', 'localhost:27018', 'localhost:27019',
'localhost:27020']
@db.stubs(:command).returns(
# First call to get a socket.
{'ismaster' => true, 'hosts' => @hosts, 'arbiters' => @arbiters},
# Subsequent calls to configure pools.
{'ismaster' => true, 'hosts' => @hosts, 'arbiters' => @arbiters},
{'secondary' => true, 'hosts' => @hosts, 'arbiters' => @arbiters},
{'secondary' => true, 'hosts' => @hosts, 'arbiters' => @arbiters},
{'arbiterOnly' => true, 'hosts' => @hosts, 'arbiters' => @arbiters})
seeds = [['localhost', 27017]]
manager = Mongo::PoolManager.new(@connection, seeds)
manager.connect
assert_equal ['localhost', 27017], manager.primary
assert_equal 27017, manager.primary_pool.port
assert_equal 2, manager.secondaries.length
assert_equal 27018, manager.secondary_pools[0].port
assert_equal [['localhost', 27020]], manager.arbiters
end
end
end