1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
# frozen_string_literal: true
require "activejob/helper"
require "active_record/railties/job_runtime"
class JobRuntimeTest < ActiveSupport::TestCase
class TestJob < ActiveJob::Base
include ActiveRecord::Railties::JobRuntime
def perform(*)
ActiveRecord::RuntimeRegistry.sql_runtime += 42.0
end
end
test "job notification payload includes db_runtime" do
ActiveRecord::RuntimeRegistry.sql_runtime = 0.0
assert_equal 42, notification_payload[:db_runtime]
end
test "db_runtime tracks database runtime for job only" do
ActiveRecord::RuntimeRegistry.sql_runtime = 100.0
assert_equal 42.0, notification_payload[:db_runtime]
assert_equal 142.0, ActiveRecord::RuntimeRegistry.sql_runtime
end
private
def notification_payload
payload = nil
subscriber = ActiveSupport::Notifications.subscribe("perform.active_job") do |*, _payload|
payload = _payload
end
TestJob.perform_now
ActiveSupport::Notifications.unsubscribe(subscriber)
payload
end
end
|