diff --git a/lib/mongo/repl_set_connection.rb b/lib/mongo/repl_set_connection.rb index f07c7f9..95e5741 100644 --- a/lib/mongo/repl_set_connection.rb +++ b/lib/mongo/repl_set_connection.rb @@ -22,7 +22,7 @@ module Mongo # Instantiates and manages connections to a MongoDB replica set. class ReplSetConnection < Connection - attr_reader :nodes, :secondaries, :arbiters, :secondary_pools, + attr_reader :secondaries, :arbiters, :secondary_pools, :replica_set_name, :read_pool, :seeds, :tags_to_pools, :refresh_interval, :refresh_mode @@ -101,9 +101,6 @@ module Mongo # TODO: get rid of this @nodes = @seeds.dup - # The members of the replica set, stored as instances of Mongo::Node. - @members = [] - # Connection pool for primary node @primary = nil @primary_pool = nil diff --git a/lib/mongo/util/pool_manager.rb b/lib/mongo/util/pool_manager.rb index 35ad9c6..4b1e48c 100644 --- a/lib/mongo/util/pool_manager.rb +++ b/lib/mongo/util/pool_manager.rb @@ -8,7 +8,6 @@ module Mongo def initialize(connection, seeds) @connection = connection @seeds = seeds - @refresh_node = nil @previously_connected = false end @@ -31,11 +30,7 @@ module Mongo end def healthy? - if !@refresh_node || !refresh_node.set_config - return false - end - #if refresh_node.node_list end def close diff --git a/test/replica_sets/basic_test.rb b/test/replica_sets/basic_test.rb new file mode 100644 index 0000000..d79cf9c --- /dev/null +++ b/test/replica_sets/basic_test.rb @@ -0,0 +1,47 @@ +$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) +require './test/replica_sets/rs_test_helper' + +class ConnectTest < Test::Unit::TestCase + include Mongo + + def teardown + RS.restart_killed_nodes + @conn.close if defined?(@conn) && @conn + end + + def test_connect + @conn = ReplSetConnection.new([RS.host, RS.ports[1]], [RS.host, RS.ports[0]], + [RS.host, RS.ports[2]], :name => RS.name) + assert @conn.connected? + + assert_equal RS.primary, @conn.primary + assert_equal RS.secondaries.sort, @conn.secondaries.sort + assert_equal RS.arbiters.sort, @conn.arbiters.sort + + @conn = ReplSetConnection.new([RS.host, RS.ports[1]], [RS.host, RS.ports[0]], + :name => RS.name) + assert @conn.connected? + end + + def test_accessors + seeds = [RS.host, RS.ports[0]], [RS.host, RS.ports[1]], + [RS.host, RS.ports[2]] + @conn = ReplSetConnection.new(*seeds, :name => RS.name) + + assert_equal @conn.host, RS.primary[0] + assert_equal @conn.port, RS.primary[1] + assert_equal @conn.host, @conn.primary_pool.host + assert_equal @conn.port, @conn.primary_pool.port + assert_equal @conn.nodes, @conn.seeds + assert_equal 2, @conn.secondaries.length + assert_equal 2, @conn.arbiters.length + assert_equal 2, @conn.secondary_pools.length + assert_equal RS.name, @conn.replica_set_name + assert @conn.secondary_pools.include?(@conn.read_pool) + assert_equal seeds.sort {|a,b| a[1] <=> b[1]}, + @conn.seeds.sort {|a,b| a[1] <=> b[1]} + assert_equal 5, @conn.tags_to_pools.keys.length + assert_equal 90, @conn.refresh_interval + assert_equal @conn.refresh_mode, :sync + end +end diff --git a/test/replica_sets/connect_test.rb b/test/replica_sets/connect_test.rb index 95bd8b6..68bc750 100644 --- a/test/replica_sets/connect_test.rb +++ b/test/replica_sets/connect_test.rb @@ -11,6 +11,8 @@ class ConnectTest < Test::Unit::TestCase @conn.close if defined?(@conn) && @conn end + # TODO: test connect timeout. + def test_connect_with_deprecated_multi @conn = Connection.multi([[RS.host, RS.ports[0]], [RS.host, RS.ports[1]]], :name => RS.name) assert @conn.is_a?(ReplSetConnection) @@ -24,43 +26,6 @@ class ConnectTest < Test::Unit::TestCase end end - # def test_connect_timeout - # passed = false - # timeout = 3 - # begin - # t0 = Time.now - # @conn = ReplSetConnection.new(['192.169.169.1', 27017], :connect_timeout => timeout) - # rescue OperationTimeout - # passed = true - # t1 = Time.now - # end - - # assert passed - # assert t1 - t0 < timeout + 1 - # end - - def test_connect - @conn = ReplSetConnection.new([RS.host, RS.ports[1]], [RS.host, RS.ports[0]], - [RS.host, RS.ports[2]], :name => RS.name) - assert @conn.connected? - - assert_equal RS.primary, @conn.primary - assert_equal RS.secondaries.sort, @conn.secondaries.sort - assert_equal RS.arbiters.sort, @conn.arbiters.sort - - @conn = ReplSetConnection.new([RS.host, RS.ports[1]], [RS.host, RS.ports[0]], - :name => RS.name) - assert @conn.connected? - end - - def test_host_port_accessors - @conn = ReplSetConnection.new([RS.host, RS.ports[0]], [RS.host, RS.ports[1]], - [RS.host, RS.ports[2]], :name => RS.name) - - assert_equal @conn.host, RS.primary[0] - assert_equal @conn.port, RS.primary[1] - end - def test_connect_with_primary_node_killed node = RS.kill_primary