test/test_clogger.rb in clogger-0.5.0 vs test/test_clogger.rb in clogger-0.6.0

- old
+ new

@@ -1,10 +1,11 @@ # -*- encoding: binary -*- $stderr.sync = $stdout.sync = true require "test/unit" require "date" require "stringio" +require "tempfile" require "rack" require "clogger" @@ -238,36 +239,56 @@ def test_msec str = StringIO.new app = lambda { |env| [ 200, {}, [] ] } cl = Clogger.new(app, :logger => str, :format => '$msec') + a = Time.now.to_f - 0.001 status, header, bodies = cl.call(@req) assert_match %r(\A\d+\.\d{3}\n\z), str.string + b = Time.now.to_f + 0.001 + logged = str.string.to_f + assert logged >= a, "#{logged} >= #{a}" + assert logged <= b, "#{logged} <= #{b}" end def test_usec str = StringIO.new app = lambda { |env| [ 200, {}, [] ] } cl = Clogger.new(app, :logger => str, :format => '$usec') + a = Time.now.to_f - 0.000001 status, header, bodies = cl.call(@req) assert_match %r(\A\d+\.\d{6}\n\z), str.string + b = Time.now.to_f + 0.000001 + logged = str.string.to_f + assert logged >= a, "#{logged} >= #{a}" + assert logged <= b, "#{logged} <= #{b}" end def test_time_0 str = StringIO.new app = lambda { |env| [ 200, {}, [] ] } cl = Clogger.new(app, :logger => str, :format => '$time{0}') + a = Time.now.to_f - 1 status, header, bodies = cl.call(@req) assert_match %r(\A\d+\n\z), str.string + b = Time.now.to_f + 1 + logged = str.string.to_f + assert logged >= a, "#{logged} >= #{a}" + assert logged <= b, "#{logged} <= #{b}" end def test_time_1 str = StringIO.new app = lambda { |env| [ 200, {}, [] ] } cl = Clogger.new(app, :logger => str, :format => '$time{1}') + a = Time.now.to_f - 0.5 status, header, bodies = cl.call(@req) assert_match %r(\A\d+\.\d\n\z), str.string + b = Time.now.to_f + 0.5 + logged = str.string.to_f + assert logged >= a, "#{logged} >= #{a}" + assert logged <= b, "#{logged} <= #{b}" end def test_request_length str = StringIO.new input = StringIO.new('.....') @@ -627,6 +648,33 @@ diff = after - before assert(diff < 10000, "memory grew more than 10M: #{diff}") end end if RUBY_PLATFORM =~ /linux/ && File.readable?(LINUX_PROC_PID_STATUS) + def test_path_open_file + tmp = Tempfile.new('test_clogger') + app = lambda { |env| [ 200, {}, [] ] } + app = Clogger.new(app, :format => '$status', :path => tmp.path) + assert_kind_of Integer, app.fileno + assert app.fileno != tmp.fileno + status, headers, body = app.call(@req) + assert_equal "200\n", tmp.read + end + + def test_path_logger_conflict + tmp = Tempfile.new('test_clogger') + app = lambda { |env| [ 200, {}, [] ] } + assert_raises(ArgumentError) { + Clogger.new(app, :logger=> $stderr, :path => tmp.path) + } + end + + def test_request_time + s = [] + app = lambda { |env| sleep(0.1) ; [302, [], [] ] } + cl = Clogger.new(app, :logger => s, :format => "$request_time") + status, headers, body = cl.call(@req) + assert_nothing_raised { body.each { |x| } ; body.close } + assert s[-1].to_f >= 0.100 + assert s[-1].to_f <= 0.110 + end end