diff --git a/lib/mongo/util/pool_manager.rb b/lib/mongo/util/pool_manager.rb index 194d863..a7ce367 100644 --- a/lib/mongo/util/pool_manager.rb +++ b/lib/mongo/util/pool_manager.rb @@ -3,7 +3,7 @@ module Mongo attr_reader :connection, :seeds, :arbiters, :primary, :secondaries, :primary_pool, :read_pool, :secondary_pools, :hosts, :nodes, :max_bson_size, - :tags_to_pools + :tags_to_pools, :members def initialize(connection, seeds) @connection = connection diff --git a/test/unit/pool_manager_test.rb b/test/unit/pool_manager_test.rb new file mode 100644 index 0000000..fd08ac7 --- /dev/null +++ b/test/unit/pool_manager_test.rb @@ -0,0 +1,49 @@ +require './test/test_helper' +include Mongo + +class PoolManagerTest < Test::Unit::TestCase + + context "Initialization: " do + + def setup + TCPSocket.stubs(:new).returns(new_mock_socket) + @db = new_mock_db + + @connection = stub("Connection") + @connection.stubs(:connect_timeout).returns(5000) + @connection.stubs(:pool_size).returns(2) + @connection.stubs(:socket_class).returns(TCPSocket) + @connection.stubs(:[]).returns(@db) + end + + should "populate pools correctly" do + @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