fix comments that were in wrong spot from refactoring
[scpubgit/Object-Remote.git] / t / logrouter.t
1 use strictures 1;
2 use Test::More;
3 use Sys::Hostname;
4
5 $ENV{OBJECT_REMOTE_TEST_LOGGER} = 1;
6
7 use Object::Remote::Logging::Router;
8
9 my $controller_name = 'Test::Log::Controller';
10 my $generator = sub { "Generator output" };
11 my $metadata = {
12   controller => $controller_name, package => __PACKAGE__, level => 'test1',
13   caller_level => 0,
14 };
15
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');
20
21 require 't/lib/ORFeedbackLogger.pm';
22 my $logger = ORFeedbackLogger->new(level_names => [qw( test1 test2 )], min_level => 'test1');
23
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');
28
29 $logger->reset;
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__,
40     object_remote => {
41       connection_id => 'TestConnectionId', router => undef,
42     },
43   },
44 ], 'Input to logger was correct');
45
46 $logger->reset;
47 undef($selector);
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');
52
53 $router->connect($logger);
54 ok(scalar(@{$router->_connections} == 1), 'There is a single connection');
55 undef($logger);
56 $router->handle_log_request($metadata, $generator);
57 ok(scalar(@{$router->_connections} == 1), 'Connection is still active');
58
59 done_testing;