test/parser.rb in fluentd-0.10.44 vs test/parser.rb in fluentd-0.10.45
- old
+ new
@@ -280,6 +280,87 @@
assert_equal({'foobar' => 'log message!'}, record)
end
end
+ class MultilineParserTest < ::Test::Unit::TestCase
+ include ParserTest
+
+ def create_parser(conf)
+ parser = TextParser::TEMPLATE_FACTORIES['multiline'].call
+ parser.configure(conf)
+ parser
+ end
+
+ def test_configure_with_invalid_params
+ [{'format100' => '/(?<msg>.*)/'}, {'format1' => '/(?<msg>.*)/', 'format3' => '/(?<msg>.*)/'}, 'format1' => '/(?<msg>.*)'].each { |config|
+ assert_raise(ConfigError) {
+ create_parser(config)
+ }
+ }
+ end
+
+ def test_call
+ parser = create_parser('format1' => '/^(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) \[(?<thread>.*)\] (?<level>[^\s]+)(?<message>.*)/')
+ time, record = parser.call(<<EOS.chomp)
+2013-3-03 14:27:33 [main] ERROR Main - Exception
+javax.management.RuntimeErrorException: null
+\tat Main.main(Main.java:16) ~[bin/:na]
+EOS
+
+ assert_equal(str2time('2013-3-03 14:27:33').to_i, time)
+ assert_equal({
+ "thread" => "main",
+ "level" => "ERROR",
+ "message" => " Main - Exception\njavax.management.RuntimeErrorException: null\n\tat Main.main(Main.java:16) ~[bin/:na]"
+ }, record)
+ end
+
+ def test_call_with_firstline
+ parser = create_parser('format_firstline' => '/----/', 'format1' => '/time=(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}).*message=(?<message>.*)/')
+ time, record = parser.call(<<EOS.chomp)
+----
+time=2013-3-03 14:27:33
+message=test1
+EOS
+
+ assert(parser.firstline?('----'))
+ assert_equal(str2time('2013-3-03 14:27:33').to_i, time)
+ assert_equal({"message" => "test1"}, record)
+ end
+
+ def test_call_with_multiple_formats
+ parser = create_parser('format_firstline' => '/^Started/',
+ 'format1' => '/Started (?<method>[^ ]+) "(?<path>[^"]+)" for (?<host>[^ ]+) at (?<time>[^ ]+ [^ ]+ [^ ]+)\n/',
+ 'format2' => '/Processing by (?<controller>[^\u0023]+)\u0023(?<controller_method>[^ ]+) as (?<format>[^ ]+?)\n/',
+ 'format3' => '/( Parameters: (?<parameters>[^ ]+)\n)?/',
+ 'format4' => '/ Rendered (?<template>[^ ]+) within (?<layout>.+) \([\d\.]+ms\)\n/',
+ 'format5' => '/Completed (?<code>[^ ]+) [^ ]+ in (?<runtime>[\d\.]+)ms \(Views: (?<view_runtime>[\d\.]+)ms \| ActiveRecord: (?<ar_runtime>[\d\.]+)ms\)/'
+ )
+ time, record = parser.call(<<EOS.chomp)
+Started GET "/users/123/" for 127.0.0.1 at 2013-06-14 12:00:11 +0900
+Processing by UsersController#show as HTML
+ Parameters: {"user_id"=>"123"}
+ Rendered users/show.html.erb within layouts/application (0.3ms)
+Completed 200 OK in 4ms (Views: 3.2ms | ActiveRecord: 0.0ms)
+EOS
+
+ assert(parser.firstline?('Started GET "/users/123/" for 127.0.0.1...'))
+ assert_equal(str2time('2013-06-14 12:00:11 +0900').to_i, time)
+ assert_equal({
+ "method" => "GET",
+ "path" => "/users/123/",
+ "host" => "127.0.0.1",
+ "controller" => "UsersController",
+ "controller_method" => "show",
+ "format" => "HTML",
+ "parameters" => "{\"user_id\"=>\"123\"}",
+ "template" => "users/show.html.erb",
+ "layout" => "layouts/application",
+ "code" => "200",
+ "runtime" => "4",
+ "view_runtime" => "3.2",
+ "ar_runtime" => "0.0"
+ }, record)
+ end
+ end
end