diff options
Diffstat (limited to 'activejob/test/jobs')
-rw-r--r-- | activejob/test/jobs/application_job.rb | 4 | ||||
-rw-r--r-- | activejob/test/jobs/callback_job.rb | 29 | ||||
-rw-r--r-- | activejob/test/jobs/gid_job.rb | 9 | ||||
-rw-r--r-- | activejob/test/jobs/hello_job.rb | 9 | ||||
-rw-r--r-- | activejob/test/jobs/inherited_job.rb | 7 | ||||
-rw-r--r-- | activejob/test/jobs/kwargs_job.rb | 9 | ||||
-rw-r--r-- | activejob/test/jobs/logging_job.rb | 11 | ||||
-rw-r--r-- | activejob/test/jobs/nested_job.rb | 11 | ||||
-rw-r--r-- | activejob/test/jobs/overridden_logging_job.rb | 11 | ||||
-rw-r--r-- | activejob/test/jobs/provider_jid_job.rb | 9 | ||||
-rw-r--r-- | activejob/test/jobs/queue_adapter_job.rb | 5 | ||||
-rw-r--r-- | activejob/test/jobs/queue_as_job.rb | 12 | ||||
-rw-r--r-- | activejob/test/jobs/rescue_job.rb | 29 | ||||
-rw-r--r-- | activejob/test/jobs/retry_job.rb | 31 | ||||
-rw-r--r-- | activejob/test/jobs/translated_hello_job.rb | 12 |
15 files changed, 198 insertions, 0 deletions
diff --git a/activejob/test/jobs/application_job.rb b/activejob/test/jobs/application_job.rb new file mode 100644 index 0000000000..d92ffddcb5 --- /dev/null +++ b/activejob/test/jobs/application_job.rb @@ -0,0 +1,4 @@ +# frozen_string_literal: true + +class ApplicationJob < ActiveJob::Base +end diff --git a/activejob/test/jobs/callback_job.rb b/activejob/test/jobs/callback_job.rb new file mode 100644 index 0000000000..436cb55492 --- /dev/null +++ b/activejob/test/jobs/callback_job.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class CallbackJob < ActiveJob::Base + before_perform ->(job) { job.history << "CallbackJob ran before_perform" } + after_perform ->(job) { job.history << "CallbackJob ran after_perform" } + + before_enqueue ->(job) { job.history << "CallbackJob ran before_enqueue" } + after_enqueue ->(job) { job.history << "CallbackJob ran after_enqueue" } + + around_perform do |job, block| + job.history << "CallbackJob ran around_perform_start" + block.call + job.history << "CallbackJob ran around_perform_stop" + end + + around_enqueue do |job, block| + job.history << "CallbackJob ran around_enqueue_start" + block.call + job.history << "CallbackJob ran around_enqueue_stop" + end + + def perform(person = "david") + # NOTHING! + end + + def history + @history ||= [] + end +end diff --git a/activejob/test/jobs/gid_job.rb b/activejob/test/jobs/gid_job.rb new file mode 100644 index 0000000000..2136f57e05 --- /dev/null +++ b/activejob/test/jobs/gid_job.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require_relative "../support/job_buffer" + +class GidJob < ActiveJob::Base + def perform(person) + JobBuffer.add("Person with ID: #{person.id}") + end +end diff --git a/activejob/test/jobs/hello_job.rb b/activejob/test/jobs/hello_job.rb new file mode 100644 index 0000000000..404df6150a --- /dev/null +++ b/activejob/test/jobs/hello_job.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require_relative "../support/job_buffer" + +class HelloJob < ActiveJob::Base + def perform(greeter = "David") + JobBuffer.add("#{greeter} says hello") + end +end diff --git a/activejob/test/jobs/inherited_job.rb b/activejob/test/jobs/inherited_job.rb new file mode 100644 index 0000000000..14f852ed06 --- /dev/null +++ b/activejob/test/jobs/inherited_job.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require_relative "application_job" + +class InheritedJob < ApplicationJob + self.queue_adapter = :inline +end diff --git a/activejob/test/jobs/kwargs_job.rb b/activejob/test/jobs/kwargs_job.rb new file mode 100644 index 0000000000..b86b06bada --- /dev/null +++ b/activejob/test/jobs/kwargs_job.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require_relative "../support/job_buffer" + +class KwargsJob < ActiveJob::Base + def perform(argument: 1) + JobBuffer.add("Job with argument: #{argument}") + end +end diff --git a/activejob/test/jobs/logging_job.rb b/activejob/test/jobs/logging_job.rb new file mode 100644 index 0000000000..4605fa6937 --- /dev/null +++ b/activejob/test/jobs/logging_job.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class LoggingJob < ActiveJob::Base + def perform(dummy) + logger.info "Dummy, here is it: #{dummy}" + end + + def job_id + "LOGGING-JOB-ID" + end +end diff --git a/activejob/test/jobs/nested_job.rb b/activejob/test/jobs/nested_job.rb new file mode 100644 index 0000000000..aafad0dba9 --- /dev/null +++ b/activejob/test/jobs/nested_job.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class NestedJob < ActiveJob::Base + def perform + LoggingJob.perform_later "NestedJob" + end + + def job_id + "NESTED-JOB-ID" + end +end diff --git a/activejob/test/jobs/overridden_logging_job.rb b/activejob/test/jobs/overridden_logging_job.rb new file mode 100644 index 0000000000..2ee363637d --- /dev/null +++ b/activejob/test/jobs/overridden_logging_job.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class OverriddenLoggingJob < ActiveJob::Base + def perform(dummy) + logger.info "Dummy, here is it: #{dummy}" + end + + def logger + @logger ||= ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(nil)) + end +end diff --git a/activejob/test/jobs/provider_jid_job.rb b/activejob/test/jobs/provider_jid_job.rb new file mode 100644 index 0000000000..dacd09afdc --- /dev/null +++ b/activejob/test/jobs/provider_jid_job.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require_relative "../support/job_buffer" + +class ProviderJidJob < ActiveJob::Base + def perform + JobBuffer.add("Provider Job ID: #{provider_job_id}") + end +end diff --git a/activejob/test/jobs/queue_adapter_job.rb b/activejob/test/jobs/queue_adapter_job.rb new file mode 100644 index 0000000000..1c31a60ba2 --- /dev/null +++ b/activejob/test/jobs/queue_adapter_job.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +class QueueAdapterJob < ActiveJob::Base + self.queue_adapter = :inline +end diff --git a/activejob/test/jobs/queue_as_job.rb b/activejob/test/jobs/queue_as_job.rb new file mode 100644 index 0000000000..0feee99e87 --- /dev/null +++ b/activejob/test/jobs/queue_as_job.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +require_relative "../support/job_buffer" + +class QueueAsJob < ActiveJob::Base + MY_QUEUE = :low_priority + queue_as MY_QUEUE + + def perform(greeter = "David") + JobBuffer.add("#{greeter} says hello") + end +end diff --git a/activejob/test/jobs/rescue_job.rb b/activejob/test/jobs/rescue_job.rb new file mode 100644 index 0000000000..d142cec1ea --- /dev/null +++ b/activejob/test/jobs/rescue_job.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require_relative "../support/job_buffer" + +class RescueJob < ActiveJob::Base + class OtherError < StandardError; end + + rescue_from(ArgumentError) do + JobBuffer.add("rescued from ArgumentError") + arguments[0] = "DIFFERENT!" + retry_job + end + + rescue_from(ActiveJob::DeserializationError) do |e| + JobBuffer.add("rescued from DeserializationError") + JobBuffer.add("DeserializationError original exception was #{e.cause.class.name}") + end + + def perform(person = "david") + case person + when "david" + raise ArgumentError, "Hair too good" + when "other" + raise OtherError, "Bad hair" + else + JobBuffer.add("performed beautifully") + end + end +end diff --git a/activejob/test/jobs/retry_job.rb b/activejob/test/jobs/retry_job.rb new file mode 100644 index 0000000000..a12d09779b --- /dev/null +++ b/activejob/test/jobs/retry_job.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require_relative "../support/job_buffer" +require "active_support/core_ext/integer/inflections" + +class DefaultsError < StandardError; end +class LongWaitError < StandardError; end +class ShortWaitTenAttemptsError < StandardError; end +class ExponentialWaitTenAttemptsError < StandardError; end +class CustomWaitTenAttemptsError < StandardError; end +class CustomCatchError < StandardError; end +class DiscardableError < StandardError; end + +class RetryJob < ActiveJob::Base + retry_on DefaultsError + retry_on LongWaitError, wait: 1.hour, attempts: 10 + retry_on ShortWaitTenAttemptsError, wait: 1.second, attempts: 10 + retry_on ExponentialWaitTenAttemptsError, wait: :exponentially_longer, attempts: 10 + retry_on CustomWaitTenAttemptsError, wait: ->(executions) { executions * 2 }, attempts: 10 + retry_on(CustomCatchError) { |job, exception| JobBuffer.add("Dealt with a job that failed to retry in a custom way after #{job.arguments.second} attempts") } + discard_on DiscardableError + + def perform(raising, attempts) + if executions < attempts + JobBuffer.add("Raised #{raising} for the #{executions.ordinalize} time") + raise raising.constantize + else + JobBuffer.add("Successfully completed job") + end + end +end diff --git a/activejob/test/jobs/translated_hello_job.rb b/activejob/test/jobs/translated_hello_job.rb new file mode 100644 index 0000000000..a0a68b4040 --- /dev/null +++ b/activejob/test/jobs/translated_hello_job.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +require_relative "../support/job_buffer" + +class TranslatedHelloJob < ActiveJob::Base + def perform(greeter = "David") + translations = { en: "Hello", de: "Guten Tag" } + hello = translations[I18n.locale] + + JobBuffer.add("#{greeter} says #{hello}") + end +end |