Skip to content

Commit

Permalink
Finish testing job logging options.
Browse files Browse the repository at this point in the history
  • Loading branch information
chanks committed May 18, 2018
1 parent 89a7a4b commit 7ccb256
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 11 deletions.
47 changes: 42 additions & 5 deletions lib/que/worker.spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -98,18 +98,55 @@ def finished_job_ids
end

describe "logging the job's completion" do
it "should default to logging at the debug level" do
def run_a_job
WorkerJob.enqueue
run_jobs
end

skip "figuring out how to test this"
def assert_logging(event:, level:)
run_a_job
msg, actual_level = QUE_LOGGER.messages_with_levels.first
msg = JSON.parse(msg)
assert_equal event, msg['event']
assert_equal level, actual_level
msg
end

it "should use the output of log_level if it is defined"
it "should default to logging at the debug level" do
assert_logging(event: 'job_worked', level: :debug)
end

it "should not log if log_level doesn't return a valid level"
it "should use the output of log_level if it is defined" do
WorkerJob.class_eval do
def log_level(elapsed)
:warn
end
end

assert_logging(event: 'job_worked', level: :warn)
end

it "should log at the error level if the job fails"
it "should not log if log_level doesn't return a valid level" do
WorkerJob.class_eval do
def log_level(elapsed)
:blah
end
end

run_a_job
assert_empty QUE_LOGGER.messages
end

it "should log at the error level if the job fails" do
WorkerJob.class_eval do
def run(*args)
raise "Blah!"
end
end

msg = assert_logging(event: 'job_errored', level: :error)
assert_equal "RuntimeError: Blah!", msg['error']
end
end

describe "when given a priority requirement" do
Expand Down
4 changes: 2 additions & 2 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -303,8 +303,8 @@ def around
Que.run_synchronously = false
Que.use_prepared_statements = true

QUE_LOGGER.messages.clear
QUE_INTERNAL_LOGGER.messages.clear
QUE_LOGGER.reset
QUE_INTERNAL_LOGGER.reset

$q1, $q2 = Queue.new, Queue.new
$passed_args = nil
Expand Down
14 changes: 10 additions & 4 deletions spec/support/dummy_logger.rb
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
# frozen_string_literal: true

class DummyLogger
attr_reader :messages
attr_reader :messages, :messages_with_levels

def initialize
@mutex = Mutex.new
@messages = []
@messages_with_levels = []
end

[:debug, :info, :warn, :error, :fatal, :unknown].each do |level|
define_method level do |thing|
messages << thing
define_method level do |message|
messages << message
messages_with_levels << [message, level]
end
end

def reset
messages.clear
messages_with_levels.clear
end
end

0 comments on commit 7ccb256

Please sign in to comment.