Skip to content

Commit e7baa97

Browse files
authored
Merge pull request rails#48062 from Shopify/trilogy-disconnect-tests
TrilogyAdapter: implement AdapterConnectionTest primitives
2 parents cd100e5 + af97f7e commit e7baa97

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

activerecord/test/cases/adapter_test.rb

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -375,9 +375,6 @@ def setup
375375
@connection = ActiveRecord::Base.connection
376376
end
377377

378-
unless in_memory_db?
379-
end
380-
381378
def test_create_with_query_cache
382379
@connection.enable_query_cache!
383380

@@ -696,27 +693,29 @@ def teardown
696693
end
697694
end
698695

699-
unless current_adapter?(:SQLite3Adapter)
700-
test "#execute is retryable" do
701-
conn_id = case @connection.class::ADAPTER_NAME
702-
when "Mysql2"
703-
@connection.execute("SELECT CONNECTION_ID()").to_a[0][0]
704-
when "PostgreSQL"
705-
@connection.execute("SELECT pg_backend_pid()").to_a[0]["pg_backend_pid"]
706-
end
696+
test "#execute is retryable" do
697+
conn_id = case @connection.class::ADAPTER_NAME
698+
when "Mysql2"
699+
@connection.execute("SELECT CONNECTION_ID()").to_a[0][0]
700+
when "Trilogy"
701+
@connection.execute("SELECT CONNECTION_ID() as connection_id").to_a[0][0]
702+
when "PostgreSQL"
703+
@connection.execute("SELECT pg_backend_pid()").to_a[0]["pg_backend_pid"]
704+
else
705+
skip("kill_connection_from_server unsupported")
706+
end
707707

708-
kill_connection_from_server(conn_id)
708+
kill_connection_from_server(conn_id)
709709

710-
@connection.execute("SELECT 1", allow_retry: true)
711-
end
710+
@connection.execute("SELECT 1", allow_retry: true)
712711
end
713712

714713
private
715714
def raw_transaction_open?(connection)
716715
case connection.class::ADAPTER_NAME
717716
when "PostgreSQL"
718717
connection.instance_variable_get(:@raw_connection).transaction_status == ::PG::PQTRANS_INTRANS
719-
when "Mysql2"
718+
when "Mysql2", "Trilogy"
720719
begin
721720
connection.instance_variable_get(:@raw_connection).query("SAVEPOINT transaction_test")
722721
connection.instance_variable_get(:@raw_connection).query("RELEASE SAVEPOINT transaction_test")
@@ -733,7 +732,7 @@ def raw_transaction_open?(connection)
733732
true
734733
end
735734
else
736-
skip
735+
skip("kill_connection_from_server unsupported")
737736
end
738737
end
739738

@@ -745,21 +744,23 @@ def remote_disconnect(connection)
745744
end
746745
connection.instance_variable_get(:@raw_connection).async_exec("set idle_in_transaction_session_timeout = '10ms'")
747746
sleep 0.05
748-
when "Mysql2"
747+
when "Mysql2", "Trilogy"
749748
connection.send(:internal_execute, "set @@wait_timeout=1")
750749
sleep 1.2
751750
else
752-
skip
751+
skip("remote_disconnect unsupported")
753752
end
754753
end
755754

756755
def kill_connection_from_server(connection_id)
757756
conn = @connection.pool.checkout
758757
case conn.class::ADAPTER_NAME
759-
when "Mysql2"
758+
when "Mysql2", "Trilogy"
760759
conn.execute("KILL #{connection_id}")
761760
when "PostgreSQL"
762761
conn.execute("SELECT pg_cancel_backend(#{connection_id})")
762+
else
763+
skip("kill_connection_from_server unsupported")
763764
end
764765

765766
conn.close

0 commit comments

Comments
 (0)