PageRenderTime 47ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/gems/logging-0.9.7/test/appenders/test_syslog.rb

https://github.com/ehedberg/travis
Ruby | 194 lines | 147 code | 43 blank | 4 comment | 3 complexity | 3f81e97747791b5ee7991405aacf8926 MD5 | raw file
Possible License(s): BSD-3-Clause, GPL-2.0, LGPL-2.1
  1. require File.join(File.dirname(__FILE__), %w[.. setup])
  2. if HAVE_SYSLOG
  3. module TestLogging
  4. module TestAppenders
  5. class TestSyslog < Test::Unit::TestCase
  6. include LoggingTestCase
  7. include ::Syslog::Constants
  8. def setup
  9. super
  10. ::Logging.init
  11. @levels = ::Logging::LEVELS
  12. @logopt = defined?(::Syslog::LOG_NDELAY) ?
  13. (::Syslog::LOG_PERROR | ::Syslog::LOG_NDELAY) :
  14. (::Syslog::LOG_PERROR)
  15. end
  16. def test_append
  17. return if RUBY_PLATFORM =~ %r/cygwin/
  18. stderr = IO::pipe
  19. pid = fork do
  20. stderr[0].close
  21. STDERR.reopen(stderr[1])
  22. stderr[1].close
  23. appender = create_syslog
  24. event = ::Logging::LogEvent.new('TestLogger', @levels['info'],
  25. [1, 2, 3, 4], false)
  26. appender.append event
  27. event.level = @levels['debug']
  28. event.data = 'the big log message'
  29. appender.append event
  30. appender.level = :warn
  31. event.level = @levels['info']
  32. event.data = 'this message should not get logged'
  33. appender.append event
  34. event.level = @levels['warn']
  35. event.data = 'this is your last warning'
  36. appender.append event
  37. exit!
  38. end
  39. stderr[1].close
  40. Process.waitpid(pid)
  41. assert_equal("syslog_test: INFO TestLogger : <Array> #{[1,2,3,4]}\n",
  42. stderr[0].gets)
  43. assert_equal("syslog_test: DEBUG TestLogger : the big log message\n",
  44. stderr[0].gets)
  45. assert_equal("syslog_test: WARN TestLogger : this is your last warning\n",
  46. stderr[0].gets)
  47. end
  48. def test_append_error
  49. appender = create_syslog
  50. appender.close false
  51. event = ::Logging::LogEvent.new('TestLogger', @levels['warn'],
  52. [1, 2, 3, 4], false)
  53. assert_raise(RuntimeError) {appender.append event}
  54. assert_equal true, appender.closed?
  55. end
  56. def test_close
  57. appender = create_syslog
  58. assert_equal false, appender.closed?
  59. appender.close false
  60. assert_equal true, appender.closed?
  61. end
  62. def test_concat
  63. return if RUBY_PLATFORM =~ %r/cygwin/
  64. stderr = IO::pipe
  65. pid = fork do
  66. stderr[0].close
  67. STDERR.reopen(stderr[1])
  68. stderr[1].close
  69. appender = create_syslog
  70. appender << 'this is a test message'
  71. appender << 'this is another message'
  72. appender << 'some other line'
  73. exit!
  74. end
  75. stderr[1].close
  76. Process.waitpid(pid)
  77. assert_equal("syslog_test: this is a test message\n", stderr[0].gets)
  78. assert_equal("syslog_test: this is another message\n", stderr[0].gets)
  79. assert_equal("syslog_test: some other line\n", stderr[0].gets)
  80. end
  81. def test_concat_error
  82. appender = create_syslog
  83. appender.close false
  84. assert_raise(RuntimeError) {appender << 'oopsy'}
  85. assert_equal true, appender.closed?
  86. end
  87. def test_map_eq
  88. appender = create_syslog
  89. assert_equal(
  90. [LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERR, LOG_CRIT],
  91. get_map_from(appender)
  92. )
  93. appender.map = {
  94. :debug => LOG_DEBUG,
  95. :info => 'LOG_NOTICE',
  96. :warn => :LOG_WARNING,
  97. :error => 'log_err',
  98. :fatal => :log_alert
  99. }
  100. assert_equal(
  101. [LOG_DEBUG, LOG_NOTICE, LOG_WARNING, LOG_ERR, LOG_ALERT],
  102. get_map_from(appender)
  103. )
  104. end
  105. def test_map_eq_error
  106. appender = create_syslog
  107. # Object is not a valid syslog level
  108. assert_raise(ArgumentError) do
  109. appender.map = {:debug => Object}
  110. end
  111. # there is no syslog level named "info"
  112. # it should be "log_info"
  113. assert_raise(NameError) do
  114. appender.map = {:info => 'lg_info'}
  115. end
  116. end
  117. def test_initialize_map
  118. appender = ::Logging::Appenders::Syslog.new(
  119. 'syslog_test',
  120. :logopt => @logopt,
  121. :map => {
  122. :debug => :log_debug,
  123. :info => :log_info,
  124. :warn => :log_warning,
  125. :error => :log_err,
  126. :fatal => :log_alert
  127. }
  128. )
  129. assert_equal(
  130. [LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERR, LOG_ALERT],
  131. get_map_from(appender)
  132. )
  133. end
  134. private
  135. def create_syslog
  136. layout = ::Logging::Layouts::Pattern.new(:pattern => '%5l %c : %m')
  137. ::Logging::Appenders::Syslog.new(
  138. 'syslog_test',
  139. :logopt => @logopt,
  140. :facility => ::Syslog::LOG_USER,
  141. :layout => layout
  142. )
  143. end
  144. def get_map_from( syslog )
  145. syslog.instance_variable_get :@map
  146. end
  147. end # class TestIO
  148. end # module TestAppenders
  149. end # module TestLogging
  150. end # HAVE_SYSLOG
  151. # EOF