diff options
author | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-08-20 13:43:46 +0000 |
---|---|---|
committer | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-08-20 13:43:46 +0000 |
commit | f003069ecd77611b10e24cc0119ad322c003e2b3 (patch) | |
tree | fd3e17750d08d42efff954ea3ce4102407a55b7d /test/logger/test_logger.rb | |
parent | 3dec8be26548a46d3ab5833f4248088fa44be846 (diff) |
* lib/logger.rb (write, shift_log?, shift_log): file shifting race
condition bug fixed. [ruby-dev:26764]
* test/logger/test_logger.rb: tests.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9011 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/logger/test_logger.rb')
-rw-r--r-- | test/logger/test_logger.rb | 98 |
1 files changed, 80 insertions, 18 deletions
diff --git a/test/logger/test_logger.rb b/test/logger/test_logger.rb index b86b9cf372..3528ff21e2 100644 --- a/test/logger/test_logger.rb +++ b/test/logger/test_logger.rb @@ -32,10 +32,10 @@ class TestLogger < Test::Unit::TestCase end def log_add(logger, severity, msg, progname = nil, &block) - do_log(logger, :add, severity, msg, progname, &block) + log(logger, :add, severity, msg, progname, &block) end - def do_log(logger, msg_id, *arg, &block) + def log(logger, msg_id, *arg, &block) logdev = Tempfile.new(File.basename(__FILE__) + '.log') logger.instance_eval { @logdev = Logger::LogDevice.new(logdev) } logger.__send__(msg_id, *arg, &block) @@ -90,15 +90,9 @@ class TestLogger < Test::Unit::TestCase logger = Logger.new(dummy) log = log_add(logger, INFO, "foo") assert_match(/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\s*\d+ $/, log.datetime) - # [ruby-dev:24828] - #logger.datetime_format = "%d%b%Y@%H:%M:%S" - #log = log_add(logger, INFO, "foo") - #assert_match(/^\d\d\w\w\w\d\d\d\d@\d\d:\d\d:\d\d$/, log.datetime) - # - # don't run the next test at 23:59, or just run again if failed. - logger.datetime_format = "@%d%b%Y@" + logger.datetime_format = "%d%b%Y@%H:%M:%S" log = log_add(logger, INFO, "foo") - assert_equal(Time.now.strftime("@%d%b%Y@"), log.datetime) + assert_match(/^\d\d\w\w\w\d\d\d\d@\d\d:\d\d:\d\d$/, log.datetime) logger.datetime_format = "" log = log_add(logger, INFO, "foo") assert_match(/^$/, log.datetime) @@ -134,44 +128,44 @@ class TestLogger < Test::Unit::TestCase def test_level_log logger = Logger.new(nil) logger.progname = "my_progname" - log = do_log(logger, :debug, "custom_progname") { "msg" } + log = log(logger, :debug, "custom_progname") { "msg" } assert_equal("msg\n", log.msg) assert_equal("custom_progname", log.progname) assert_equal("DEBUG", log.severity) assert_equal("D", log.label) # - log = do_log(logger, :debug) { "msg_block" } + log = log(logger, :debug) { "msg_block" } assert_equal("msg_block\n", log.msg) assert_equal("my_progname", log.progname) - log = do_log(logger, :debug, "msg_inline") + log = log(logger, :debug, "msg_inline") assert_equal("msg_inline\n", log.msg) assert_equal("my_progname", log.progname) # - log = do_log(logger, :info, "custom_progname") { "msg" } + log = log(logger, :info, "custom_progname") { "msg" } assert_equal("msg\n", log.msg) assert_equal("custom_progname", log.progname) assert_equal("INFO", log.severity) assert_equal("I", log.label) # - log = do_log(logger, :warn, "custom_progname") { "msg" } + log = log(logger, :warn, "custom_progname") { "msg" } assert_equal("msg\n", log.msg) assert_equal("custom_progname", log.progname) assert_equal("WARN", log.severity) assert_equal("W", log.label) # - log = do_log(logger, :error, "custom_progname") { "msg" } + log = log(logger, :error, "custom_progname") { "msg" } assert_equal("msg\n", log.msg) assert_equal("custom_progname", log.progname) assert_equal("ERROR", log.severity) assert_equal("E", log.label) # - log = do_log(logger, :fatal, "custom_progname") { "msg" } + log = log(logger, :fatal, "custom_progname") { "msg" } assert_equal("msg\n", log.msg) assert_equal("custom_progname", log.progname) assert_equal("FATAL", log.severity) assert_equal("F", log.label) # - log = do_log(logger, :unknown, "custom_progname") { "msg" } + log = log(logger, :unknown, "custom_progname") { "msg" } assert_equal("msg\n", log.msg) assert_equal("custom_progname", log.progname) assert_equal("ANY", log.severity) @@ -279,4 +273,72 @@ class TestLogDevice < Test::Unit::TestCase assert(w.closed?) r.close end + + def test_shifting_size + logfile = File.basename(__FILE__) + '_1.log' + logfile0 = logfile + '.0' + logfile1 = logfile + '.1' + logfile2 = logfile + '.2' + logfile3 = logfile + '.3' + File.unlink(logfile) if File.exist?(logfile) + File.unlink(logfile0) if File.exist?(logfile0) + File.unlink(logfile1) if File.exist?(logfile1) + File.unlink(logfile2) if File.exist?(logfile2) + logger = Logger.new(logfile, 4, 100) + logger.error("0" * 15) + assert(File.exist?(logfile)) + assert(!File.exist?(logfile0)) + logger.error("0" * 15) + assert(File.exist?(logfile0)) + assert(!File.exist?(logfile1)) + logger.error("0" * 15) + assert(File.exist?(logfile1)) + assert(!File.exist?(logfile2)) + logger.error("0" * 15) + assert(File.exist?(logfile2)) + assert(!File.exist?(logfile3)) + logger.error("0" * 15) + assert(!File.exist?(logfile3)) + logger.error("0" * 15) + assert(!File.exist?(logfile3)) + File.unlink(logfile) + File.unlink(logfile0) + File.unlink(logfile1) + File.unlink(logfile2) + + logfile = File.basename(__FILE__) + '_2.log' + logfile0 = logfile + '.0' + logfile1 = logfile + '.1' + logfile2 = logfile + '.2' + logfile3 = logfile + '.3' + logger = Logger.new(logfile, 4, 150) + logger.error("0" * 15) + assert(File.exist?(logfile)) + assert(!File.exist?(logfile0)) + logger.error("0" * 15) + assert(!File.exist?(logfile0)) + logger.error("0" * 15) + assert(File.exist?(logfile0)) + assert(!File.exist?(logfile1)) + logger.error("0" * 15) + assert(!File.exist?(logfile1)) + logger.error("0" * 15) + assert(File.exist?(logfile1)) + assert(!File.exist?(logfile2)) + logger.error("0" * 15) + assert(!File.exist?(logfile2)) + logger.error("0" * 15) + assert(File.exist?(logfile2)) + assert(!File.exist?(logfile3)) + logger.error("0" * 15) + assert(!File.exist?(logfile3)) + logger.error("0" * 15) + assert(!File.exist?(logfile3)) + logger.error("0" * 15) + assert(!File.exist?(logfile3)) + File.unlink(logfile) + File.unlink(logfile0) + File.unlink(logfile1) + File.unlink(logfile2) + end end |