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

/test/test_mixin.rb

https://github.com/greenwellness/fluentd
Ruby | 279 lines | 226 code | 53 blank | 0 comment | 0 complexity | ad1c4d373378114873288701c33f81aa MD5 | raw file
Possible License(s): Apache-2.0
  1. require 'helper'
  2. require 'fluent/mixin'
  3. require 'fluent/env'
  4. require 'fluent/plugin'
  5. require 'fluent/config'
  6. require 'fluent/test'
  7. require 'timecop'
  8. module MixinTest
  9. module Utils
  10. def setup
  11. super
  12. Fluent::Test.setup
  13. @time = Time.utc(1,2,3,4,5,2010,nil,nil,nil,nil)
  14. Timecop.freeze(@time)
  15. end
  16. def teardown
  17. super
  18. Timecop.return
  19. GC.start
  20. end
  21. module Checker
  22. extend self
  23. def format_check(tag, time, record); end
  24. end
  25. @@num = 0
  26. def create_register_output_name
  27. "mixin_text_#{@@num+=1}"
  28. end
  29. def format_check(hash, tagname = 'test')
  30. mock(Checker).format_check(tagname, @time.to_i, hash)
  31. end
  32. def create_driver(include_klass, conf = '', tag = "test")
  33. register_output_name = create_register_output_name
  34. include_klasses = [include_klass].flatten
  35. klass = Class.new(Fluent::BufferedOutput) {
  36. include_klasses.each {|k| include k }
  37. Fluent::Plugin.register_output(register_output_name, self)
  38. def format(tag, time, record)
  39. Checker.format_check(tag, time, record)
  40. [tag, time, record].to_msgpack
  41. end
  42. def write(chunk); end
  43. }
  44. Fluent::Test::BufferedOutputTestDriver.new(klass, tag) {
  45. }.configure("type #{register_output_name}" + conf)
  46. end
  47. end
  48. class SetTagKeyMixinText < Test::Unit::TestCase
  49. include Utils
  50. def test_tag_key_default
  51. format_check({
  52. 'a' => 1
  53. })
  54. d = create_driver(Fluent::SetTagKeyMixin, %[
  55. ])
  56. d.emit({'a' => 1})
  57. d.run
  58. end
  59. def test_include_tag_key_true
  60. format_check({
  61. 'tag' => 'test',
  62. 'a' => 1
  63. })
  64. d = create_driver(Fluent::SetTagKeyMixin, %[
  65. include_tag_key true
  66. ])
  67. d.emit({'a' => 1})
  68. d.run
  69. end
  70. def test_include_tag_key_false
  71. format_check({
  72. 'a' => 1
  73. })
  74. d = create_driver(Fluent::SetTagKeyMixin, %[
  75. include_tag_key false
  76. ])
  77. d.emit({'a' => 1})
  78. d.run
  79. end
  80. def test_tag_key_set
  81. format_check({
  82. 'tag_key_changed' => 'test',
  83. 'a' => 1
  84. })
  85. d = create_driver(Fluent::SetTagKeyMixin, %[
  86. include_tag_key true
  87. tag_key tag_key_changed
  88. ])
  89. d.emit({'a' => 1})
  90. d.run
  91. end
  92. end
  93. class SetTimeKeyMixinText < Test::Unit::TestCase
  94. include Utils
  95. def test_time_key_default
  96. format_check({
  97. 'a' => 1
  98. })
  99. d = create_driver(Fluent::SetTimeKeyMixin, %[
  100. ])
  101. d.emit({'a' => 1})
  102. d.run
  103. end
  104. def test_include_time_key_true
  105. format_check({
  106. 'time' => "2010-05-04T03:02:01Z",
  107. 'a' => 1
  108. })
  109. d = create_driver(Fluent::SetTimeKeyMixin, %[
  110. include_time_key true
  111. ])
  112. d.emit({'a' => 1})
  113. d.run
  114. end
  115. def test_time_format
  116. format_check({
  117. 'time' => "20100504",
  118. 'a' => 1
  119. })
  120. d = create_driver(Fluent::SetTimeKeyMixin, %[
  121. include_time_key true
  122. time_format %Y%m%d
  123. ])
  124. d.emit({'a' => 1})
  125. d.run
  126. end
  127. end
  128. class HandleTagMixinTest < Test::Unit::TestCase
  129. include Utils
  130. def test_add_tag_prefix
  131. format_check({
  132. 'a' => 1
  133. }, 'tag_prefix.test')
  134. format_check({
  135. 'a' => 2
  136. }, 'tag_prefix.test')
  137. d = create_driver(Fluent::HandleTagNameMixin, %[
  138. add_tag_prefix tag_prefix.
  139. include_tag_key true
  140. ])
  141. d.emit({'a' => 1})
  142. d.emit({'a' => 2})
  143. d.run
  144. end
  145. def test_add_tag_suffix
  146. format_check({
  147. 'a' => 1
  148. }, 'test.test_suffix')
  149. format_check({
  150. 'a' => 2
  151. }, 'test.test_suffix')
  152. d = create_driver(Fluent::HandleTagNameMixin, %[
  153. add_tag_suffix .test_suffix
  154. include_tag_key true
  155. ])
  156. d.emit({'a' => 1})
  157. d.emit({'a' => 2})
  158. d.run
  159. end
  160. def test_remove_tag_prefix
  161. format_check({
  162. 'a' => 1
  163. }, 'test')
  164. format_check({
  165. 'a' => 2
  166. }, 'test')
  167. d = create_driver(Fluent::HandleTagNameMixin, %[
  168. remove_tag_prefix te
  169. include_tag_key true
  170. ], "tetest")
  171. d.emit({'a' => 1})
  172. d.emit({'a' => 2})
  173. d.run
  174. end
  175. def test_remove_tag_suffix
  176. format_check({
  177. 'a' => 1
  178. }, 'test')
  179. format_check({
  180. 'a' => 2
  181. }, 'test')
  182. d = create_driver(Fluent::HandleTagNameMixin, %[
  183. remove_tag_suffix st
  184. include_tag_key true
  185. ], "testst")
  186. d.emit({'a' => 1})
  187. d.emit({'a' => 2})
  188. d.run
  189. end
  190. def test_mix_tag_handle
  191. format_check({
  192. 'a' => 1
  193. }, 'prefix.t')
  194. d = create_driver(Fluent::HandleTagNameMixin, %[
  195. remove_tag_prefix tes
  196. add_tag_prefix prefix.
  197. ])
  198. d.emit({'a' => 1})
  199. d.run
  200. end
  201. def test_with_set_tag_key_mixin
  202. format_check({
  203. 'tag' => 'tag_prefix.test',
  204. 'a' => 1
  205. }, 'tag_prefix.test')
  206. d = create_driver([Fluent::SetTagKeyMixin, Fluent::HandleTagNameMixin], %[
  207. add_tag_prefix tag_prefix.
  208. include_tag_key true
  209. ])
  210. d.emit({'a' => 1})
  211. d.run
  212. end
  213. def test_with_set_tag_key_mixin_include_order_reverse
  214. format_check({
  215. 'tag' => 'tag_prefix.test',
  216. 'a' => 1
  217. }, 'tag_prefix.test')
  218. d = create_driver([Fluent::HandleTagNameMixin, Fluent::SetTagKeyMixin], %[
  219. add_tag_prefix tag_prefix.
  220. include_tag_key true
  221. ])
  222. d.emit({'a' => 1})
  223. d.run
  224. end
  225. end
  226. end