From 6f2368c97f0423297d98bf8837daf1c5cdc0b1a2 Mon Sep 17 00:00:00 2001 From: Johannes Vetter Date: Thu, 31 May 2018 17:56:33 -0700 Subject: [PATCH] AROR-1545 make the log level used by the manager's log method configurable --- lib/clockwork/manager.rb | 11 ++++++++-- test/manager_test.rb | 43 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/lib/clockwork/manager.rb b/lib/clockwork/manager.rb index 55ec497..a276b59 100644 --- a/lib/clockwork/manager.rb +++ b/lib/clockwork/manager.rb @@ -2,6 +2,8 @@ module Clockwork class Manager class NoHandlerDefined < RuntimeError; end + LOG_LEVELS = %i[debug info warn error fatal unknown] + attr_reader :config def initialize @@ -26,7 +28,7 @@ def configure end def default_configuration - { :sleep_timeout => 1, :logger => Logger.new(STDOUT), :thread => false, :max_threads => 10 } + { :sleep_timeout => 1, :logger => Logger.new(STDOUT), :log_level => :info, :thread => false, :max_threads => 10 } end def handler(&block) @@ -155,7 +157,7 @@ def handle_error(e) end def log(msg) - config[:logger].info(msg) + config[:logger].send(log_level, msg) end private @@ -176,5 +178,10 @@ def every_with_multiple_times(period, job, options={}, &block) register(period, job, block, each_options) end end + + def log_level + return config[:log_level] if LOG_LEVELS.include?(config[:log_level]) + :info + end end end diff --git a/test/manager_test.rb b/test/manager_test.rb index c102c43..766254d 100644 --- a/test/manager_test.rb +++ b/test/manager_test.rb @@ -136,6 +136,7 @@ def assert_wont_run(t) @manager.configure do |config| config[:sleep_timeout] = 200 config[:logger] = "A Logger" + config[:log_level] = :debug config[:max_threads] = 10 config[:thread] = true end @@ -144,6 +145,7 @@ def assert_wont_run(t) assert_equal "A Logger", @manager.config[:logger] assert_equal 10, @manager.config[:max_threads] assert_equal true, @manager.config[:thread] + assert_equal :debug, @manager.config[:log_level] end it "configuration should have reasonable defaults" do @@ -151,6 +153,7 @@ def assert_wont_run(t) assert @manager.config[:logger].is_a?(Logger) assert_equal 10, @manager.config[:max_threads] assert_equal false, @manager.config[:thread] + assert_equal :info, @manager.config[:log_level] end it "should accept unnamed job" do @@ -401,4 +404,44 @@ def assert_wont_run(t) end end end + + describe 'log' do + before do + @lmanager = Clockwork::Manager.new + @lmanager.handler { } + end + + it 'uses info as default level' do + mocked_logger = MiniTest::Mock.new + mocked_logger.expect :info, true, ['something fancy'] + @lmanager.configure { |c| c[:logger] = mocked_logger } + @lmanager.log('something fancy') + @lmanager.tick(Time.now) + mocked_logger.verify + end + + it 'uses the configured log level' do + mocked_logger = MiniTest::Mock.new + mocked_logger.expect :debug, true, ['something really fancy'] + @lmanager.configure do |c| + c[:logger] = mocked_logger + c[:log_level] = :debug + end + @lmanager.log('something really fancy') + @lmanager.tick(Time.now) + mocked_logger.verify + end + + it 'falls back to info if an invalid level is given' do + mocked_logger = MiniTest::Mock.new + mocked_logger.expect :info, true, ['something really fancy'] + @lmanager.configure do |c| + c[:logger] = mocked_logger + c[:log_level] = :bad_and_dangerous_method + end + @lmanager.log('something really fancy') + @lmanager.tick(Time.now) + mocked_logger.verify + end + end end