96 lines
2.5 KiB
Perl
96 lines
2.5 KiB
Perl
#!/usr/bin/env perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
use JSON -convert_blessed_universally;
|
|
use Test::Most;
|
|
use Test::MockModule;
|
|
use Data::Faker;
|
|
use Data::Printer
|
|
output => 'stderr',
|
|
colored => 1,
|
|
deparse => 1,
|
|
caller_info => 1,
|
|
show_readonly => 1,
|
|
show_lvalue => 1,
|
|
max_depth => 5,
|
|
caller_info => 1,
|
|
class => { inherited => 'all', expand => 5 };
|
|
|
|
my $log;
|
|
|
|
subtest "Init Logger plain" => sub {
|
|
lives_ok {
|
|
use Log::Log4perl;
|
|
Log::Log4perl->reset();
|
|
use Log::Log4perl::Appender::Graylog;
|
|
use Log::Log4perl::Layout::NoopLayout;
|
|
my $config = <<'END';
|
|
log4perl.logger = DEBUG, SERVER
|
|
log4perl.appender.SERVER = Log::Log4perl::Appender::Graylog
|
|
log4perl.appender.SERVER.layout = NoopLayout
|
|
log4perl.appender.SERVER.PeerAddr = 127.0.0.1
|
|
log4perl.appender.SERVER.PeerPort = 12209
|
|
log4perl.appender.SERVER.Proto = udp
|
|
log4perl.appender.SERVER.Gzip = 0
|
|
log4perl.appender.SERVER.Chunked = 0
|
|
END
|
|
|
|
|
|
Log::Log4perl->init_once( \$config );
|
|
$log = Log::Log4perl->get_logger("log1");
|
|
}
|
|
"lives through setting up logger";
|
|
};
|
|
|
|
subtest "sends though udp plain" => sub {
|
|
my $log_data = Data::Faker->new()->domain_name();
|
|
my $mock = Test::MockModule->new('IO::Socket::INET');
|
|
$mock->mock(
|
|
'new',
|
|
sub {
|
|
my $proto = shift;
|
|
my $class = ref $proto || $proto;
|
|
my %params = @_;
|
|
|
|
cmp_ok( $params{PeerAddr}, 'eq', "127.0.0.1",
|
|
"PeerAddr is set to localhost" );
|
|
cmp_ok( $params{PeerPort}, '==', 12209,
|
|
"PeerPort is set to 12209 and is a number" );
|
|
cmp_ok( $params{Proto}, 'eq', "udp", "Proto is set to udp" );
|
|
|
|
|
|
return bless \%params, $class;
|
|
}
|
|
);
|
|
|
|
$mock->mock(
|
|
'send',
|
|
sub {
|
|
my $self = shift;
|
|
my ($data) = @_;
|
|
my $json =
|
|
JSON->new->utf8->space_after->allow_nonref->convert_blessed;
|
|
my $result;
|
|
lives_ok {
|
|
$result = $json->decode($data);
|
|
}
|
|
"GELF message is json and can be reparsed";
|
|
|
|
cmp_ok( $result->{full_message},
|
|
"eq", $log_data, "full_message is $log_data" );
|
|
}
|
|
);
|
|
my $closed = 0;
|
|
$mock->mock(
|
|
'close',
|
|
sub {
|
|
$closed = 1;
|
|
}
|
|
);
|
|
|
|
$log->debug($log_data);
|
|
ok( $closed, "Connection verified closed" );
|
|
};
|
|
done_testing;
|