test/mixin/test_plaintextformatter.rb in fluent-mixin-plaintextformatter-0.2.2 vs test/mixin/test_plaintextformatter.rb in fluent-mixin-plaintextformatter-0.2.3
- old
+ new
@@ -103,11 +103,11 @@
# output_include_time true, output_include_tag true, localtime, separator SOH
assert_equal ['2012/07/13:07:05:05', 'b'], line.chomp.split(/\001/, 3)[0..1]
# output_data_type json
assert_equal r, JSON.parse(line.chomp.split(/\001/, 3)[2])
end
-
+
def test_default_without_time_tag
p = create_plugin_instance(Fluent::TestCOutput, "type testc\n")
r = {'foo' => 'foo foo baz', 'bar' => 10000}
# stringify
assert_equal r, JSON.parse(p.stringify_record(r))
@@ -172,10 +172,35 @@
assert_equal "10000,foo foo baz", p.stringify_record(r)
# format
assert_equal "10000,foo foo baz\n", p.format('test.a', 1342163105, r)
end
+ def test_format_invalid_utf8_sequence
+ invalid_str = [0xFA, 0xFB].pack('CC').force_encoding('utf-8')
+ valid_str = [0xFF, 0xE3].pack("U*")
+
+ p1 = create_plugin_instance(Fluent::TestAOutput, %[
+type testa
+output_include_time true
+output_include_tag true
+output_data_type json
+])
+ r1 = p1.format('tag', Fluent::Engine.now, {'foo' => valid_str, 'bar' => invalid_str + valid_str})
+ # #format should logs for this record (but we cannot test it...)
+ assert_equal '', r1
+
+ p2 = create_plugin_instance(Fluent::TestAOutput, %[
+type testa
+output_include_time true
+output_include_tag true
+output_data_type ltsv
+])
+ r2 = p2.format('tag', Fluent::Engine.now, {'foo' => valid_str, 'bar' => invalid_str + valid_str})
+ # #format should logs for this record (but we cannot test it...)
+ assert_equal '', r2
+ end
+
def test_field_separator_newline_ltsv
p = create_plugin_instance(Fluent::TestDOutput, "type testd\nutc\n")
r = {'foo' => 'foo foo baz', 'bar' => 10000}
rs = {:foo => 'foo foo baz', :bar => "10000"}
# stringify
@@ -196,7 +221,21 @@
# LTSV breaks compatibility for LTSV.parse
# Results of LTSV.parse(string_of_single_object) returns Array instance after v0.0.2
obj_from_ltsv = obj_from_ltsv.first
end
assert_equal rs, obj_from_ltsv
+ end
+
+ def test_format_boolean_attribute
+ p = create_plugin_instance(Fluent::TestAOutput, %[
+type testa
+output_include_time true
+output_include_tag true
+output_data_type attr:foo,bar
+])
+ r = {'foo' => true, 'bar' => false}
+ # stringify
+ assert_equal "true\tfalse", p.stringify_record(r)
+ # format
+ assert_equal "2012-07-13T07:05:05Z\ttest.a\ttrue\tfalse\n", p.format('test.a', 1342163105, r)
end
end