update logging system to match log-contextual router changes
[scpubgit/Object-Remote.git] / t / logrouter.t
CommitLineData
60029bf7 1use strictures 1;
2use Test::More;
3use Sys::Hostname;
4
5$ENV{OBJECT_REMOTE_TEST_LOGGER} = 1;
6
7use Object::Remote::Logging::Router;
8
9my $controller_name = 'Test::Log::Controller';
10my $generator = sub { "Generator output" };
a663aea5 11my %metadata = (
12 exporter => $controller_name,
13 caller_package => __PACKAGE__, caller_level => 0,
14 log_level => 'test1', message_sub => $generator, message_args => [],
15);
60029bf7 16
17my $router = Object::Remote::Logging::Router->new;
18$router->_remote_metadata({ router => undef, connection_id => 'TestConnectionId' });
19isa_ok($router, 'Object::Remote::Logging::Router');
20ok($router->does('Log::Contextual::Role::Router'), 'Router does router role');
21
22require 't/lib/ORFeedbackLogger.pm';
23my $logger = ORFeedbackLogger->new(level_names => [qw( test1 test2 )], min_level => 'test1');
24
25my $selector = sub { $logger };
26$router->connect($selector, 1);
27ok($router->_connections->[0] eq $selector, 'Selector is stored in connections');
28ok(scalar(@{$router->_connections} == 1), 'There is a single connection');
29
30$logger->reset;
31my $linenum = __LINE__ + 1;
a663aea5 32$router->handle_log_request(%metadata);
60029bf7 33is($logger->feedback_output, "test1: Generator output\n", 'Rendered log message is correct');
34ok($logger->feedback_input->[2]->{timestamp} > 0, 'Timestamp value is present');
35delete $logger->feedback_input->[2]->{timestamp};
a663aea5 36is(ref $logger->feedback_input->[2]->{message_sub}, 'CODE', 'message sub did exist');
37delete $logger->feedback_input->[2]->{message_sub};
60029bf7 38is_deeply($logger->feedback_input, [
39 'test1', [ 'Generator output' ], {
a663aea5 40 exporter => 'Test::Log::Controller', log_level => 'test1',
41 hostname => hostname(), pid => $$, caller_package => __PACKAGE__,
60029bf7 42 line => $linenum, method => undef, filename => __FILE__,
a663aea5 43 message_args => [], object_remote => {
60029bf7 44 connection_id => 'TestConnectionId', router => undef,
45 },
46 },
47], 'Input to logger was correct');
48
49$logger->reset;
50undef($selector);
a663aea5 51$router->handle_log_request(%metadata);
60029bf7 52ok(scalar(@{$router->_connections}) == 0, 'Selector has been disconnected');
53ok(! defined $logger->feedback_output, 'Logger has no output feedback');
54ok(! defined $logger->feedback_input, 'Logger has no input feedback');
55
56$router->connect($logger);
57ok(scalar(@{$router->_connections} == 1), 'There is a single connection');
58undef($logger);
a663aea5 59$router->handle_log_request(%metadata);
60029bf7 60ok(scalar(@{$router->_connections} == 1), 'Connection is still active');
61
62done_testing;