Adapt and add regression tests for sending syslog messages over TCP.
authorbluhm <bluhm@openbsd.org>
Wed, 31 Dec 2014 14:05:26 +0000 (14:05 +0000)
committerbluhm <bluhm@openbsd.org>
Wed, 31 Dec 2014 14:05:26 +0000 (14:05 +0000)
14 files changed:
regress/usr.sbin/syslogd/args-maxunix.pl
regress/usr.sbin/syslogd/args-proto-udp.pl
regress/usr.sbin/syslogd/args-proto-udp4.pl
regress/usr.sbin/syslogd/args-proto-udp6.pl
regress/usr.sbin/syslogd/args-server-tcp-close.pl [new file with mode: 0644]
regress/usr.sbin/syslogd/args-server-tcp-error.pl [new file with mode: 0644]
regress/usr.sbin/syslogd/args-server-tcp-sendback.pl [new file with mode: 0644]
regress/usr.sbin/syslogd/args-server-tcp4.pl [new file with mode: 0644]
regress/usr.sbin/syslogd/args-server-tcp6.pl [new file with mode: 0644]
regress/usr.sbin/syslogd/args-server-udp4.pl
regress/usr.sbin/syslogd/args-server-udp6.pl
regress/usr.sbin/syslogd/args-sighup-config.pl
regress/usr.sbin/syslogd/args-sighup-privsep.pl
regress/usr.sbin/syslogd/args-sighup.pl

index 084e85f..98357ec 100644 (file)
@@ -36,7 +36,7 @@ our %args = (
            (map { (get_testlog()." unix-$_.sock unix socket" => 1) }
                (1..(MAXUNIX-1))),
            get_testlog()." unix-".MAXUNIX.".sock unix socket" => 0,
-       }
+       },
     },
 );
 
index 835ee05..01b58f1 100644 (file)
@@ -13,7 +13,7 @@ our %args = (
     syslogd => {
        loghost => '@udp://127.0.0.1:$connectport',
        loggrep => {
-           qr/Logging to FORW \@udp:\/\/127.0.0.1:\d+/ => '>=4',
+           qr/Logging to FORWUDP \@udp:\/\/127.0.0.1:\d+/ => '>=4',
            get_testlog() => 1,
        },
     },
index b6de14f..66953a8 100644 (file)
@@ -13,7 +13,7 @@ our %args = (
     syslogd => {
        loghost => '@udp4://127.0.0.1:$connectport',
        loggrep => {
-           qr/Logging to FORW \@udp4:\/\/127.0.0.1:\d+/ => '>=4',
+           qr/Logging to FORWUDP \@udp4:\/\/127.0.0.1:\d+/ => '>=4',
            get_testlog() => 1,
        },
     },
index 55d3ea5..8b39c15 100644 (file)
@@ -13,7 +13,7 @@ our %args = (
     syslogd => {
        loghost => '@udp6://[::1]:$connectport',
        loggrep => {
-           qr/Logging to FORW \@udp6:\/\/\[::1\]:\d+/ => '>=4',
+           qr/Logging to FORWUDP \@udp6:\/\/\[::1\]:\d+/ => '>=4',
            get_testlog() => 1,
        },
     },
diff --git a/regress/usr.sbin/syslogd/args-server-tcp-close.pl b/regress/usr.sbin/syslogd/args-server-tcp-close.pl
new file mode 100644 (file)
index 0000000..aba01c7
--- /dev/null
@@ -0,0 +1,42 @@
+# The TCP server closes the connection to syslogd.
+# The client writes a message to Sys::Syslog native method.
+# The syslogd writes it into a file and through a pipe.
+# The syslogd passes it via IPv4 TCP to an explicit loghost.
+# The server receives the message on its TCP socket.
+# Find the message in client, pipe, syslogd log.
+# Check that syslogd writes a log message about the server close.
+
+use strict;
+use warnings;
+use Socket;
+
+our %args = (
+    client => {
+       func => sub {
+           my $self = shift;
+           ${$self->{syslogd}}->loggrep("loghost .* connection close", 2)
+               or die "connection close in syslogd.log";
+           write_log($self, @_);
+       },
+    },
+    syslogd => {
+       loghost => '@tcp://127.0.0.1:$connectport',
+       loggrep => {
+           qr/Logging to FORWTCP \@tcp:\/\/127.0.0.1:\d+/ => '>=4',
+           get_testlog() => 1,
+           qr/syslogd: loghost .* connection close/ => 2,
+       },
+    },
+    server => {
+       listen => { domain => AF_INET, proto => "tcp", addr => "127.0.0.1" },
+       func => sub {},
+       loggrep => {},
+    },
+    file => {
+       loggrep => {
+           qr/syslogd: loghost .* connection close/ => 1,
+       },
+    },
+);
+
+1;
diff --git a/regress/usr.sbin/syslogd/args-server-tcp-error.pl b/regress/usr.sbin/syslogd/args-server-tcp-error.pl
new file mode 100644 (file)
index 0000000..a9f3d84
--- /dev/null
@@ -0,0 +1,47 @@
+# The TCP server aborts the connection to syslogd.
+# The client writes a message to Sys::Syslog native method.
+# The syslogd writes it into a file and through a pipe.
+# The syslogd passes it via IPv4 TCP to an explicit loghost.
+# The server receives the message on its TCP socket.
+# Find the message in client, pipe, syslogd log.
+# Check that syslogd writes a log message about the server error.
+
+use strict;
+use warnings;
+use Socket;
+
+our %args = (
+    client => {
+       func => sub {
+           my $self = shift;
+           ${$self->{syslogd}}->loggrep("loghost .* connection error", 2)
+               or die "connection error in syslogd.log";
+           write_log($self, @_);
+       },
+    },
+    syslogd => {
+       loghost => '@tcp://127.0.0.1:$connectport',
+       loggrep => {
+           qr/Logging to FORWTCP \@tcp:\/\/127.0.0.1:\d+/ => '>=4',
+           get_testlog() => 1,
+           qr/syslogd: loghost .* connection error/ => 2,
+       },
+    },
+    server => {
+       listen => { domain => AF_INET, proto => "tcp", addr => "127.0.0.1" },
+       func => sub {
+           my $self = shift;
+           setsockopt(STDOUT, SOL_SOCKET, SO_LINGER, pack('ii', 1, 0))
+               or die "set socket linger failed: $!";
+       },
+       loggrep => {},
+    },
+    file => {
+       loggrep => {
+           qr/syslogd: loghost .* connection error: Connection reset by peer/
+               => 1,
+       },
+    },
+);
+
+1;
diff --git a/regress/usr.sbin/syslogd/args-server-tcp-sendback.pl b/regress/usr.sbin/syslogd/args-server-tcp-sendback.pl
new file mode 100644 (file)
index 0000000..2677c05
--- /dev/null
@@ -0,0 +1,46 @@
+# The TCP server writes a message back to the syslogd.
+# The client writes a message to Sys::Syslog native method.
+# The syslogd writes it into a file and through a pipe.
+# The syslogd passes it via IPv4 TCP to an explicit loghost.
+# The server receives the message on its TCP socket.
+# Find the message in client, pipe, syslogd, server log.
+# Check that syslogd writes a debug message about the message sent back.
+
+use strict;
+use warnings;
+use Socket;
+
+my $sendback = "syslogd tcp server send back message";
+
+our %args = (
+    client => {
+       func => sub {
+           my $self = shift;
+           ${$self->{syslogd}}->loggrep("loghost .* did send .* back", 2)
+               or die "no send back in syslogd.log";
+           write_log($self, @_);
+       },
+    },
+    syslogd => {
+       loghost => '@tcp://127.0.0.1:$connectport',
+       loggrep => {
+           qr/Logging to FORWTCP \@tcp:\/\/127.0.0.1:\d+/ => '>=4',
+           get_testlog() => 1,
+           qr/did send /.length($sendback).qr/ bytes back/ => 1,
+       },
+    },
+    server => {
+       listen => { domain => AF_INET, proto => "tcp", addr => "127.0.0.1" },
+       func => sub {
+           print($sendback);
+           read_log(@_);
+       },
+    },
+    file => {
+       loggrep => {
+           qr/$sendback/ => 0,
+       },
+    },
+);
+
+1;
diff --git a/regress/usr.sbin/syslogd/args-server-tcp4.pl b/regress/usr.sbin/syslogd/args-server-tcp4.pl
new file mode 100644 (file)
index 0000000..b52e659
--- /dev/null
@@ -0,0 +1,29 @@
+# The client writes a message to Sys::Syslog native method.
+# The syslogd writes it into a file and through a pipe.
+# The syslogd passes it via IPv4 TCP to an explicit loghost.
+# The server receives the message on its TCP socket.
+# Find the message in client, file, pipe, syslogd, server log.
+# Check that syslogd and server log contain 127.0.0.1 address.
+
+use strict;
+use warnings;
+use Socket;
+
+our %args = (
+    syslogd => {
+       loghost => '@tcp://127.0.0.1:$connectport',
+       loggrep => {
+           qr/Logging to FORWTCP \@tcp:\/\/127.0.0.1:\d+/ => '>=4',
+           get_testlog() => 1,
+       },
+    },
+    server => {
+       listen => { domain => AF_INET, proto => "tcp", addr => "127.0.0.1" },
+       loggrep => {
+           qr/listen sock: 127.0.0.1 \d+/ => 1,
+           get_testlog() => 1,
+       },
+    },
+);
+
+1;
diff --git a/regress/usr.sbin/syslogd/args-server-tcp6.pl b/regress/usr.sbin/syslogd/args-server-tcp6.pl
new file mode 100644 (file)
index 0000000..faa71aa
--- /dev/null
@@ -0,0 +1,29 @@
+# The client writes a message to Sys::Syslog native method.
+# The syslogd writes it into a file and through a pipe.
+# The syslogd passes it via IPv6 TCP to an explicit loghost.
+# The server receives the message on its TCP socket.
+# Find the message in client, file, pipe, syslogd, server log.
+# Check that syslogd and server log contain ::1 address.
+
+use strict;
+use warnings;
+use Socket;
+
+our %args = (
+    syslogd => {
+       loghost => '@tcp://[::1]:$connectport',
+       loggrep => {
+           qr/Logging to FORWTCP \@tcp:\/\/\[::1\]:\d+/ => '>=4',
+           get_testlog() => 1,
+       },
+    },
+    server => {
+       listen => { domain => AF_INET6, proto => "tcp", addr => "::1" },
+       loggrep => {
+           qr/listen sock: ::1 \d+/ => 1,
+           get_testlog() => 1,
+       },
+    },
+);
+
+1;
index 93a8298..0abeb83 100644 (file)
@@ -13,7 +13,7 @@ our %args = (
     syslogd => {
        loghost => '@127.0.0.1:$connectport',
        loggrep => {
-           qr/Logging to FORW \@127.0.0.1:\d+/ => '>=4',
+           qr/Logging to FORWUDP \@127.0.0.1:\d+/ => '>=4',
            get_testlog() => 1,
        },
     },
index 8db614a..dadfea4 100644 (file)
@@ -13,7 +13,7 @@ our %args = (
     syslogd => {
        loghost => '@[::1]:$connectport',
        loggrep => {
-           qr/Logging to FORW \@\[::1\]:\d+/ => '>=4',
+           qr/Logging to FORWUDP \@\[::1\]:\d+/ => '>=4',
            get_testlog() => 1,
        },
     },
index 9098824..5f75fdd 100644 (file)
@@ -30,7 +30,7 @@ our %args = (
            qr/config file changed: dying/ => 1,
            qr/syslogd: restarted/ => 0,
            get_between2loggrep(),
-       }
+       },
     },
     server => {
        func => sub {
index 2caf900..e28b529 100644 (file)
@@ -28,7 +28,7 @@ our %args = (
        loggrep => {
            qr/syslogd: restarted/ => 1,
            get_between2loggrep(),
-       }
+       },
     },
     server => {
        func => sub {
index 73d0f56..63ffe2c 100644 (file)
@@ -30,7 +30,7 @@ our %args = (
            qr/config file modified: restarting/ => 0,
            qr/syslogd: restarted/ => 1,
            get_between2loggrep(),
-       }
+       },
     },
     server => {
        func => sub {