Testing Query Monitoring System in PgHero
This test suite validates core query monitoring and filtering functionality in PgHero, focusing on running queries, long-running queries, and query blocking detection. The tests ensure proper database query tracking and data filtering capabilities.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
ankane/pghero
test/queries_test.rb
require_relative "test_helper"
class QueriesTest < Minitest::Test
def test_running_queries
assert database.running_queries
end
def test_filter_data
query = "SELECT pg_sleep(1)"
# TODO manually checkout connection if needed
t = Thread.new { ActiveRecord::Base.connection.execute(query) }
sleep(0.5)
assert_equal query, database.running_queries.first[:query]
with_filter_data do
assert_equal "SELECT pg_sleep($1)", database.running_queries.first[:query]
end
t.join
end
def test_long_running_queries
assert database.long_running_queries
end
def test_blocked_queries
assert database.blocked_queries
end
def with_filter_data
previous_value = PgHero.filter_data
begin
PgHero.filter_data = true
database.remove_instance_variable(:@filter_data)
yield
ensure
PgHero.filter_data = previous_value
database.remove_instance_variable(:@filter_data)
end
end
end