test/plugin/test_output.rb in fluentd-0.14.20 vs test/plugin/test_output.rb in fluentd-0.14.21
- old
+ new
@@ -265,10 +265,22 @@
v = {key1: "value1", key2: "value2"}
m = create_metadata(timekey: t, tag: 'fluentd.test.output', variables: v)
assert_equal "/mypath/%Y/%m/%d/%H-%M/${tag}/${tag[1]}/${tag[2]}/value1/value2/tail", @i.extract_placeholders(tmpl, m)
end
+ test '#extract_placeholders can extract nested variables if variables are configured with dot notation' do
+ @i.configure(config_element('ROOT', '', {}, [config_element('buffer', 'key,$.nest.key', {})]))
+ assert !@i.chunk_key_time
+ assert !@i.chunk_key_tag
+ assert_equal ['key','$.nest.key'], @i.chunk_keys
+ tmpl = "/mypath/%Y/%m/%d/%H-%M/${tag}/${tag[1]}/${tag[2]}/${key}/${$.nest.key}/tail"
+ t = event_time('2016-04-11 20:30:00 +0900')
+ v = {:key => "value1", :"$.nest.key" => "value2"}
+ m = create_metadata(timekey: t, tag: 'fluentd.test.output', variables: v)
+ assert_equal "/mypath/%Y/%m/%d/%H-%M/${tag}/${tag[1]}/${tag[2]}/value1/value2/tail", @i.extract_placeholders(tmpl, m)
+ end
+
test '#extract_placeholders can extract all chunk keys if configured' do
@i.configure(config_element('ROOT', '', {}, [config_element('buffer', 'time,tag,key1,key2', {'timekey' => 60*30, 'timekey_zone' => "+0900"})]))
assert @i.chunk_key_time
assert @i.chunk_key_tag
assert_equal ['key1','key2'], @i.chunk_keys
@@ -491,15 +503,25 @@
assert_equal [], @i.get_placeholders_keys("/path/to/my/${tag}/file.log")
assert_equal ['key1', 'key2'], @i.get_placeholders_keys("/path/to/${key2}/${tag}/file.${key1}.log")
assert_equal ['.hidden', '0001', '@timestamp', 'a_key', 'my-domain'], @i.get_placeholders_keys("http://${my-domain}/${.hidden}/${0001}/${a_key}?timestamp=${@timestamp}")
end
+ data('include space' => 'ke y',
+ 'bracket notation' => "$['key']",
+ 'invalid notation' => "$.ke y")
+ test 'configure checks invalid chunk keys' do |chunk_keys|
+ i = create_output(:buffered)
+ assert_raise Fluent::ConfigError do
+ i.configure(config_element('ROOT' , '', {}, [config_element('buffer', chunk_keys)]))
+ end
+ end
+
test '#metadata returns object which contains tag/timekey/variables from records as specified in configuration' do
tag = 'test.output'
time = event_time('2016-04-12 15:31:23 -0700')
timekey = event_time('2016-04-12 15:00:00 -0700')
- record = {"key1" => "value1", "num1" => 1, "message" => "my message"}
+ record = {"key1" => "value1", "num1" => 1, "message" => "my message", "nest" => {"key" => "nested value"}}
i1 = create_output(:buffered)
i1.configure(config_element('ROOT','',{},[config_element('buffer', '')]))
assert_equal create_metadata(), i1.metadata(tag, time, record)
@@ -528,9 +550,13 @@
assert_equal create_metadata(tag: tag, variables: {num1: 1}), i7.metadata(tag, time, record)
i8 = create_output(:buffered)
i8.configure(config_element('ROOT','',{},[config_element('buffer', 'time,tag,key1', {"timekey" => 3600, "timekey_zone" => "-0700"})]))
assert_equal create_metadata(timekey: timekey, tag: tag, variables: {key1: "value1"}), i8.metadata(tag, time, record)
+
+ i9 = create_output(:buffered)
+ i9.configure(config_element('ROOT','',{},[config_element('buffer', 'key1,$.nest.key', {})]))
+ assert_equal create_metadata(variables: {:key1 => "value1", :"$.nest.key" => 'nested value'}), i9.metadata(tag, time, record)
end
test '#emit calls #process via #emit_sync for non-buffered output' do
i = create_output(:sync)
process_called = false