Merge pull request #7292 from stevecj/fix-psql-reconnect-after-simulated-disconnect-test

Fix just-plain-wrongness of psql auto-reconnect test.
This commit is contained in:
Rafael Mendonça França 2012-08-08 14:09:25 -07:00
commit c0954a4802

@ -85,16 +85,17 @@ def test_reconnection_after_simulated_disconnection_with_verify
assert @connection.active? assert @connection.active?
original_connection_pid = @connection.query('select pg_backend_pid()') original_connection_pid = @connection.query('select pg_backend_pid()')
# Fail with bad connection after next query attempt. # Fail with bad connection on next query attempt.
connection_class = class << @connection ; self ; end raw_connection = @connection.raw_connection
connection_class.class_eval <<-CODE raw_connection_class = class << raw_connection ; self ; end
raw_connection_class.class_eval <<-CODE, __FILE__, __LINE__ + 1
def query_fake(*args) def query_fake(*args)
if @called ||= false if !( @called ||= false )
@connection.stubs(:status).returns(PCconn::CONNECTION_BAD) self.stubs(:status).returns(PGconn::CONNECTION_BAD)
raise PGError raise PGError
else else
@called = true @called = true
@connection.unstub(:status) self.unstub(:status)
query_unfake(*args) query_unfake(*args)
end end
end end
@ -107,13 +108,13 @@ def query_fake(*args)
@connection.verify! @connection.verify!
new_connection_pid = @connection.query('select pg_backend_pid()') new_connection_pid = @connection.query('select pg_backend_pid()')
ensure ensure
connection_class.class_eval <<-CODE raw_connection_class.class_eval <<-CODE
alias query query_unfake alias query query_unfake
undef query_fake undef query_fake
CODE CODE
end end
assert_equal original_connection_pid, new_connection_pid, "Should have a new underlying connection pid" assert_not_equal original_connection_pid, new_connection_pid, "Should have a new underlying connection pid"
end end
# Must have with_manual_interventions set to true for this # Must have with_manual_interventions set to true for this