1# The syslogd listens on 127.0.0.1 TCP socket. 2# The client writes three lines into a 127.0.0.1 TCP socket in a single chunk. 3# The syslogd writes it into a file and through a pipe. 4# The syslogd passes it via UDP to the loghost. 5# The server receives the message on its UDP socket. 6# Find the message in file, pipe, syslogd, server log. 7# Check that the file log contains all messages. 8 9use strict; 10use warnings; 11use Socket; 12 13my %threegrep = ( 14 get_firstlog() => 1, 15 get_secondlog() => 1, 16 get_thirdlog() => 1, 17); 18 19our %args = ( 20 client => { 21 connect => { domain => AF_INET, proto => "tcp", addr => "127.0.0.1", 22 port => 514 }, 23 func => sub { 24 my $self = shift; 25 my $msg = get_firstlog()."\n".get_secondlog()."\n".get_thirdlog(); 26 write_message($self, $msg); 27 ${$self->{syslogd}}->loggrep(get_thirdlog(), 5) 28 or die ref($self), " syslogd did not receive third log"; 29 write_shutdown($self); 30 }, 31 loggrep => {}, 32 }, 33 syslogd => { 34 options => ["-T", "127.0.0.1:514"], 35 loggrep => { 36 %threegrep, 37 qr/tcp logger .* non transparent framing, use \d+ bytes/ => 3, 38 }, 39 }, 40 server => { loggrep => \%threegrep }, 41 file => { loggrep => \%threegrep }, 42 pipe => { loggrep => \%threegrep }, 43 tty => { loggrep => \%threegrep }, 44); 45 461; 47