|
| 1 | +use strict; |
| 2 | +use warnings; |
| 3 | +use FindBin; |
| 4 | +use lib "$FindBin::Bin/../"; |
| 5 | +use Test::More; |
| 6 | +use Test::TCP; |
| 7 | +use Time::Piece; |
| 8 | +use Encode; |
| 9 | +use t::Util qw/ run_fluentd slurp_log /; |
| 10 | +use POSIX qw/ setlocale LC_ALL /; |
| 11 | +use Capture::Tiny qw/ capture /; |
| 12 | + |
| 13 | +use Config; |
| 14 | +if ( $Config{d_setlocale} ) { |
| 15 | + setlocale(LC_ALL, "C"); |
| 16 | +} |
| 17 | + |
| 18 | +my ($server, $dir) = run_fluentd(); |
| 19 | +my $port = $server->port; |
| 20 | + |
| 21 | +use_ok "Fluent::Logger"; |
| 22 | + |
| 23 | +subtest str_bin => sub { |
| 24 | + my $logger = Fluent::Logger->new( port => $port, utf8 => 1 ); |
| 25 | + |
| 26 | + isa_ok $logger, "Fluent::Logger"; |
| 27 | + is $logger->packer->get_utf8, 1, "packer utf8 is on"; |
| 28 | + my $tag = "test.tcp"; |
| 29 | + ok $logger->post( $tag, { "foo" => decode_utf8("内部文字列") }), "post str ok"; |
| 30 | + ok $logger->post( $tag, { "bar" => "バイナリ列" }), "post bin ok"; |
| 31 | + ok $logger->post( $tag, { "broken" => "\xE0\x80\xAF" }), "post broken utf8 ok"; |
| 32 | + sleep 1; |
| 33 | + my $log = slurp_log $dir; |
| 34 | + note $log; |
| 35 | + like $log => qr/"foo":"内部文字列","tag":"$tag"/, "match post str log"; |
| 36 | + like $log => qr/"bar":"バイナリ列","tag":"$tag"/, "match post bin log"; |
| 37 | + like $log => qr/"broken":"\xE0\x80\xAF","tag":"$tag"/, "match post broken utf8 log"; |
| 38 | +}; |
| 39 | + |
| 40 | +done_testing; |
0 commit comments