1# Stop syslogd.
2# The client writes 8 message with 8192 to a localhost IPv6 UDP socket.
3# Continue syslogd.
4# The syslogd writes it into a file and through a pipe.
5# The syslogd passes it via TCP to the loghost.
6# The server receives the message on its TCP socket.
7# Find the message in client, file, syslogd, server log.
8# Check that 8 long UDP messages can be processed at once.
9
10use strict;
11use warnings;
12use Socket;
13use constant MAXLINE => 8192;
14
15our %args = (
16    client => {
17	connect => { domain => AF_INET6, addr => "::1", port => 514 },
18	func => sub {
19	    my $self = shift;
20	    ${$self->{syslogd}}->kill_syslogd('STOP');
21	    write_lines($self, 8, MAXLINE);
22	    IO::Handle::flush(\*STDOUT);
23	    ${$self->{syslogd}}->kill_syslogd('CONT');
24	    ${$self->{server}}->loggrep(get_charlog(), 8)
25		or die ref($self), " server did not receive all messages";
26	    write_shutdown($self);
27	},
28	loggrep => { get_charlog() => 8 },
29    },
30    syslogd => {
31	options => ["-un"],
32	loghost => '@tcp://localhost:$connectport',
33	loggrep => {
34	    qr/[gs]etsockopt bufsize/ => 0,
35	    get_charlog() => 8,
36	},
37    },
38    server => {
39	listen => { domain => AF_UNSPEC, proto => "tcp", addr => "localhost" },
40	loggrep => { get_charlog() => 8 },
41    },
42    file => {
43	loggrep => { get_charlog() => 8 },
44    },
45    pipe => { nocheck => 1 },
46    tty => { nocheck => 1 },
47);
48
491;
50