require 'test_helper' 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 @client = stub("MongoClient") @client.stubs(:connect_timeout).returns(5) @client.stubs(:op_timeout).returns(5) @client.stubs(:pool_size).returns(2) @client.stubs(:pool_timeout).returns(100) @client.stubs(:seeds).returns(['localhost:30000']) @client.stubs(:socket_class).returns(TCPSocket) @client.stubs(:[]).returns(@db) @client.stubs(:replica_set_name).returns(nil) @client.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(@client, 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