mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
bde6547bb6
The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
107 lines
3.1 KiB
Ruby
107 lines
3.1 KiB
Ruby
require "helper"
|
|
require "jobs/retry_job"
|
|
|
|
class ExceptionsTest < ActiveJob::TestCase
|
|
setup do
|
|
JobBuffer.clear
|
|
skip if ActiveJob::Base.queue_adapter.is_a?(ActiveJob::QueueAdapters::InlineAdapter)
|
|
end
|
|
|
|
test "successfully retry job throwing exception against defaults" do
|
|
perform_enqueued_jobs do
|
|
RetryJob.perform_later "DefaultsError", 5
|
|
|
|
assert_equal [
|
|
"Raised DefaultsError for the 1st time",
|
|
"Raised DefaultsError for the 2nd time",
|
|
"Raised DefaultsError for the 3rd time",
|
|
"Raised DefaultsError for the 4th time",
|
|
"Successfully completed job" ], JobBuffer.values
|
|
end
|
|
end
|
|
|
|
test "successfully retry job throwing exception against higher limit" do
|
|
perform_enqueued_jobs do
|
|
RetryJob.perform_later "ShortWaitTenAttemptsError", 9
|
|
assert_equal 9, JobBuffer.values.count
|
|
end
|
|
end
|
|
|
|
test "failed retry job when exception kept occurring against defaults" do
|
|
perform_enqueued_jobs do
|
|
begin
|
|
RetryJob.perform_later "DefaultsError", 6
|
|
assert_equal "Raised DefaultsError for the 5th time", JobBuffer.last_value
|
|
rescue DefaultsError
|
|
pass
|
|
end
|
|
end
|
|
end
|
|
|
|
test "failed retry job when exception kept occurring against higher limit" do
|
|
perform_enqueued_jobs do
|
|
begin
|
|
RetryJob.perform_later "ShortWaitTenAttemptsError", 11
|
|
assert_equal "Raised ShortWaitTenAttemptsError for the 10th time", JobBuffer.last_value
|
|
rescue ShortWaitTenAttemptsError
|
|
pass
|
|
end
|
|
end
|
|
end
|
|
|
|
test "discard job" do
|
|
perform_enqueued_jobs do
|
|
RetryJob.perform_later "DiscardableError", 2
|
|
assert_equal "Raised DiscardableError for the 1st time", JobBuffer.last_value
|
|
end
|
|
end
|
|
|
|
test "custom handling of job that exceeds retry attempts" do
|
|
perform_enqueued_jobs do
|
|
RetryJob.perform_later "CustomCatchError", 6
|
|
assert_equal "Dealt with a job that failed to retry in a custom way", JobBuffer.last_value
|
|
end
|
|
end
|
|
|
|
test "long wait job" do
|
|
travel_to Time.now
|
|
|
|
perform_enqueued_jobs do
|
|
assert_performed_with at: (Time.now + 3600.seconds).to_i do
|
|
RetryJob.perform_later "LongWaitError", 5
|
|
end
|
|
end
|
|
end
|
|
|
|
test "exponentially retrying job" do
|
|
travel_to Time.now
|
|
|
|
perform_enqueued_jobs do
|
|
assert_performed_with at: (Time.now + 3.seconds).to_i do
|
|
assert_performed_with at: (Time.now + 18.seconds).to_i do
|
|
assert_performed_with at: (Time.now + 83.seconds).to_i do
|
|
assert_performed_with at: (Time.now + 258.seconds).to_i do
|
|
RetryJob.perform_later "ExponentialWaitTenAttemptsError", 5
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
test "custom wait retrying job" do
|
|
travel_to Time.now
|
|
|
|
perform_enqueued_jobs do
|
|
assert_performed_with at: (Time.now + 2.seconds).to_i do
|
|
assert_performed_with at: (Time.now + 4.seconds).to_i do
|
|
assert_performed_with at: (Time.now + 6.seconds).to_i do
|
|
assert_performed_with at: (Time.now + 8.seconds).to_i do
|
|
RetryJob.perform_later "CustomWaitTenAttemptsError", 5
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|