Guest User

Untitled

a guest
Apr 19th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. require_relative "../lib/fluent/load"
  2. require_relative "../lib/fluent/plugin/filter_grep"
  3. require_relative "../lib/fluent/plugin/filter_grep_new1"
  4. require_relative "../lib/fluent/plugin/filter_grep_new2"
  5. require_relative "../lib/fluent/test"
  6. require_relative "../lib/fluent/test/driver/filter"
  7.  
  8. require "benchmark"
  9. require "benchmark/ips"
  10.  
  11. def create_driver(conf = '', mode = 1)
  12. case mode
  13. when 1
  14. Fluent::Test::Driver::Filter.new(Fluent::Plugin::GrepFilter).configure(conf)
  15. when 2
  16. Fluent::Test::Driver::Filter.new(Fluent::Plugin::Grep2Filter).configure(conf)
  17. when 3
  18. Fluent::Test::Driver::Filter.new(Fluent::Plugin::Grep3Filter).configure(conf)
  19. end
  20. end
  21.  
  22. @time = Fluent::EventTime.now
  23.  
  24. def filter(d, messages)
  25. d.run do
  26. messages.each do |message|
  27. d.feed("filter.test", time, message)
  28. end
  29. end
  30. d.filtered_records
  31. end
  32.  
  33. Fluent::Test.setup
  34.  
  35. conf = %[
  36. <and>
  37. <regexp>
  38. key level
  39. pattern ^ERROR|WARN$
  40. </regexp>
  41. <regexp>
  42. key method
  43. pattern ^GET|POST$
  44. </regexp>
  45. </and>
  46.  
  47. <or>
  48. <regexp>
  49. key level
  50. pattern ^ERROR|WARN$
  51. </regexp>
  52. <regexp>
  53. key method
  54. pattern ^PUT$
  55. </regexp>
  56. </or>
  57.  
  58. <or>
  59. <exclude>
  60. key level
  61. pattern ^WARN$
  62. </exclude>
  63. <exclude>
  64. key method
  65. pattern ^GET$
  66. </exclude>
  67. </or>
  68.  
  69. <and>
  70. <exclude>
  71. key level
  72. pattern ^INFO$
  73. </exclude>
  74. <exclude>
  75. key method
  76. pattern ^DELETE$
  77. </exclude>
  78. </and>
  79.  
  80. ]
  81.  
  82. messages = [
  83. { "time" => "2013/01/13T07:02:11.124202", "level" => "INFO", "method" => "GET", "path" => "/ping" },
  84. { "time" => "2013/01/13T07:02:13.232645", "level" => "WARN", "method" => "POST", "path" => "/auth" },
  85. { "time" => "2013/01/13T07:02:21.542145", "level" => "WARN", "method" => "GET", "path" => "/favicon.ico" },
  86. { "time" => "2013/01/13T07:02:43.632145", "level" => "WARN", "method" => "POST", "path" => "/login" },
  87. { "time" => "2013/01/13T07:02:13.232645", "level" => "ERROR", "method" => "PUT", "path" => "/edit" },
  88. { "time" => "2013/01/13T07:02:21.542145", "level" => "INFO", "method" => "PUT", "path" => "/edit" },
  89. { "time" => "2013/01/13T07:02:43.632145", "level" => "WARN", "method" => "PUT", "path" => "/edit" },
  90. { "time" => "2013/01/13T07:02:21.542145", "level" => "INFO", "method" => "DELETE", "path" => "/article/1" },
  91. { "time" => "2013/01/13T07:02:43.632145", "level" => "WARN", "method" => "DELETE", "path" => "/article/2" },
  92. { "time" => "2013/01/13T07:02:43.632145", "level" => "ERROR", "method" => "DELETE", "path" => "/article/3" },
  93. ]
  94.  
  95. Benchmark.ips do |x|
  96. x.time = 10
  97. x.report(:original) do
  98. d = create_driver(conf, 1)
  99. d.run do
  100. messages.each do |message|
  101. d.feed("filter.test", @time, message)
  102. end
  103. end
  104. end
  105. x.report("1940") do
  106. d = create_driver(conf, 2)
  107. d.run do
  108. messages.each do |message|
  109. d.feed("filter.test", @time, message)
  110. end
  111. end
  112. end
  113. x.report("1940+") do
  114. d = create_driver(conf, 3)
  115. d.run do
  116. messages.each do |message|
  117. d.feed("filter.test", @time, message)
  118. end
  119. end
  120. end
  121.  
  122. x.compare!
  123. end
Add Comment
Please, Sign In to add comment