Skip to content

Commit ceb42c5

Browse files
committed
Improve specs and add test for error handling
1 parent 1004c10 commit ceb42c5

File tree

3 files changed

+23
-12
lines changed

3 files changed

+23
-12
lines changed

lib/que/active_support/job_middleware.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def self.call(job)
1818
"que_job.worked",
1919
started,
2020
Process.clock_gettime(Process::CLOCK_MONOTONIC),
21-
labels.merge(error: !!job.que_error.present?),
21+
labels.merge(error: job.que_error.present?),
2222
)
2323
end
2424
end

spec/que/active_support/job_middleware_spec.rb

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,7 @@
66
require 'que/active_support/job_middleware'
77

88
describe Que::ActiveSupport::JobMiddleware do
9-
let(:job) do
10-
Que::Job.new(
11-
job_class: "Foo",
12-
priority: 100,
13-
queue: "foo_queue",
14-
latency: 100,
15-
)
16-
end
9+
let(:job) { Que::Job.new(**labels) }
1710

1811
let(:labels) do
1912
{
@@ -24,9 +17,9 @@
2417
}
2518
end
2619

27-
it "records metrics" do
20+
it "records metrics when job succeeds" do
2821
called = false
29-
::ActiveSupport::Notifications.subscribe("que_job.worked") do |message, started, finished, metric_labels|
22+
subscriber = ::ActiveSupport::Notifications.subscribe("que_job.worked") do |message, started, finished, metric_labels|
3023
assert_equal "que_job.worked", message
3124
assert started != nil
3225
assert finished != nil
@@ -37,6 +30,24 @@
3730
Que::ActiveSupport::JobMiddleware.call(job) { }
3831

3932
assert_equal true, called
33+
34+
::ActiveSupport::Notifications.unsubscribe(subscriber)
35+
end
36+
37+
it "records metrics when job fails" do
38+
called = false
39+
subscriber = ::ActiveSupport::Notifications.subscribe("que_job.worked") do |message, started, finished, metric_labels|
40+
assert_equal "que_job.worked", message
41+
assert started != nil
42+
assert finished != nil
43+
assert_equal labels.merge(error: true), metric_labels
44+
called = true
45+
end
46+
47+
Que::ActiveSupport::JobMiddleware.call(job) { job.que_error = "error" }
48+
49+
assert_equal true, called
50+
::ActiveSupport::Notifications.unsubscribe(subscriber)
4051
end
4152
end
4253
end

spec/spec_helper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
# in some spec runs.
99
if ENV['USE_RAILS'] == 'true'
1010
require 'active_record'
11-
require 'active_support'
11+
require 'active_support/notifications'
1212
require 'active_job'
1313

1414
ActiveJob::Base.queue_adapter = :que

0 commit comments

Comments
 (0)