5 $ENV{OBJECT_REMOTE_TEST_LOGGER} = 1;
7 use Object::Remote::Logging::Router;
9 my $controller_name = 'Test::Log::Controller';
10 my $generator = sub { "Generator output" };
12 controller => $controller_name, package => __PACKAGE__, level => 'test1',
16 my $router = Object::Remote::Logging::Router->new;
17 $router->_remote_metadata({ router => undef, connection_id => 'TestConnectionId' });
18 isa_ok($router, 'Object::Remote::Logging::Router');
19 ok($router->does('Log::Contextual::Role::Router'), 'Router does router role');
21 require 't/lib/ORFeedbackLogger.pm';
22 my $logger = ORFeedbackLogger->new(level_names => [qw( test1 test2 )], min_level => 'test1');
24 my $selector = sub { $logger };
25 $router->connect($selector, 1);
26 ok($router->_connections->[0] eq $selector, 'Selector is stored in connections');
27 ok(scalar(@{$router->_connections} == 1), 'There is a single connection');
30 my $linenum = __LINE__ + 1;
31 $router->handle_log_request($metadata, $generator);
32 is($logger->feedback_output, "test1: Generator output\n", 'Rendered log message is correct');
33 ok($logger->feedback_input->[2]->{timestamp} > 0, 'Timestamp value is present');
34 delete $logger->feedback_input->[2]->{timestamp};
35 is_deeply($logger->feedback_input, [
36 'test1', [ 'Generator output' ], {
37 controller => 'Test::Log::Controller', level => 'test1',
38 hostname => hostname(), pid => $$, package => __PACKAGE__,
39 line => $linenum, method => undef, filename => __FILE__,
41 connection_id => 'TestConnectionId', router => undef,
44 ], 'Input to logger was correct');
48 $router->handle_log_request($metadata, $generator);
49 ok(scalar(@{$router->_connections}) == 0, 'Selector has been disconnected');
50 ok(! defined $logger->feedback_output, 'Logger has no output feedback');
51 ok(! defined $logger->feedback_input, 'Logger has no input feedback');
53 $router->connect($logger);
54 ok(scalar(@{$router->_connections} == 1), 'There is a single connection');
56 $router->handle_log_request($metadata, $generator);
57 ok(scalar(@{$router->_connections} == 1), 'Connection is still active');