mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
5fe6635e05
The 'reconenct' boolean option is read from the connection specification and is used to set the reconnect attribute of Mysql. The default is false in order not to change existing application behaviour. Also, reconnect is set AFTER real_connect is called, so its value sticks (the mysql gem sets reconnect to false inside real_connect). Signed-off-by: Michael Koziarski <michael@koziarski.com> [#1797 state:committed]
56 lines
1.6 KiB
Ruby
56 lines
1.6 KiB
Ruby
require "cases/helper"
|
|
|
|
class MysqlConnectionTest < ActiveRecord::TestCase
|
|
def setup
|
|
super
|
|
@connection = ActiveRecord::Base.connection
|
|
end
|
|
|
|
def test_mysql_reconnect_attribute_after_connection_with_reconnect_true
|
|
run_without_connection do |orig_connection|
|
|
ActiveRecord::Base.establish_connection(orig_connection.merge({:reconnect => true}))
|
|
assert ActiveRecord::Base.connection.raw_connection.reconnect
|
|
end
|
|
end
|
|
|
|
def test_mysql_reconnect_attribute_after_connection_with_reconnect_false
|
|
run_without_connection do |orig_connection|
|
|
ActiveRecord::Base.establish_connection(orig_connection.merge({:reconnect => false}))
|
|
assert !ActiveRecord::Base.connection.raw_connection.reconnect
|
|
end
|
|
end
|
|
|
|
def test_no_automatic_reconnection_after_timeout
|
|
assert @connection.active?
|
|
@connection.update('set @@wait_timeout=1')
|
|
sleep 2
|
|
assert !@connection.active?
|
|
end
|
|
|
|
def test_successful_reconnection_after_timeout_with_manual_reconnect
|
|
assert @connection.active?
|
|
@connection.update('set @@wait_timeout=1')
|
|
sleep 2
|
|
@connection.reconnect!
|
|
assert @connection.active?
|
|
end
|
|
|
|
def test_successful_reconnection_after_timeout_with_verify
|
|
assert @connection.active?
|
|
@connection.update('set @@wait_timeout=1')
|
|
sleep 2
|
|
@connection.verify!
|
|
assert @connection.active?
|
|
end
|
|
|
|
private
|
|
|
|
def run_without_connection
|
|
original_connection = ActiveRecord::Base.remove_connection
|
|
begin
|
|
yield original_connection
|
|
ensure
|
|
ActiveRecord::Base.establish_connection(original_connection)
|
|
end
|
|
end
|
|
end
|