Check that non existing log files in syslog.conf are reported to
authorbluhm <bluhm@openbsd.org>
Fri, 28 Apr 2017 15:04:49 +0000 (15:04 +0000)
committerbluhm <bluhm@openbsd.org>
Fri, 28 Apr 2017 15:04:49 +0000 (15:04 +0000)
/dev/console during startup and restart.  Startup warnings contain
the pid now.  Console logging creates additional errors if the file
descriptor limit is exhausted.

13 files changed:
regress/usr.sbin/syslogd/args-fdexhaustion-config.pl
regress/usr.sbin/syslogd/args-fdexhaustion-tcp.pl
regress/usr.sbin/syslogd/args-maxhostlen.pl
regress/usr.sbin/syslogd/args-maxloghostlen.pl
regress/usr.sbin/syslogd/args-maxportlen.pl
regress/usr.sbin/syslogd/args-nofile-sighup.pl [new file with mode: 0644]
regress/usr.sbin/syslogd/args-nofile.pl [new file with mode: 0644]
regress/usr.sbin/syslogd/args-proto-invalid.pl
regress/usr.sbin/syslogd/args-proto-udp4-host6.pl
regress/usr.sbin/syslogd/args-proto-udp4-only6.pl
regress/usr.sbin/syslogd/args-proto-udp6-host4.pl
regress/usr.sbin/syslogd/args-proto-udp6-only4.pl
regress/usr.sbin/syslogd/args-tls-cafile-noexist.pl

index dfeb97e..b30d7eb 100644 (file)
@@ -17,7 +17,7 @@ our %args = (
            RLIMIT_NOFILE => 30,
        },
        loggrep => {
-           qr/syslogd: receive_fd: recvmsg: Message too long/ => 5,
+           qr/syslogd: receive_fd: recvmsg: Message too long/ => 5*2,
            # One file is opened by test default config, 20 by multifile.
            qr/X FILE:/ => 1+15,
            qr/X UNUSED:/ => 5,
index d4bae23..4cb0e8c 100644 (file)
@@ -25,7 +25,7 @@ our %args = (
            RLIMIT_NOFILE => 30,
        },
        loggrep => {
-           qr/syslogd: receive_fd: recvmsg: Message too long/ => 6,
+           qr/syslogd: receive_fd: recvmsg: Message too long/ => 6*2,
            # One file is opened by test default config, 20 by multifile.
            qr/X FILE:/ => 1+14,
            qr/X UNUSED:/ => 6,
index 8122f75..803d227 100644 (file)
@@ -11,7 +11,7 @@ our %args = (
     syslogd => {
        loghost => '@'.('X'x256).':514',
        loggrep => {
-           qr/syslogd: host too long "\@X+/ => 1,
+           qr/syslogd\[\d+\]: host too long "\@X+/ => 1,
            get_testgrep() => 1,
        },
     },
index 009d709..1bb3f70 100644 (file)
@@ -11,7 +11,7 @@ our %args = (
     syslogd => {
        loghost => '@'.('X'x300),
        loggrep => {
-           qr/syslogd: loghost too long "\@X+/ => 1,
+           qr/syslogd\[\d+\]: loghost too long "\@X+/ => 1,
            get_testgrep() => 1,
        },
     },
index 6ac63f4..170c78d 100644 (file)
@@ -12,7 +12,7 @@ our %args = (
     syslogd => {
        loghost => '@127.0.0.1:'.('X'x32),
        loggrep => {
-           qr/syslogd: port too long "\@127.0.0.1:X+/ => 1,
+           qr/syslogd\[\d+\]: port too long "\@127.0.0.1:X+/ => 1,
            get_testgrep() => 1,
        },
     },
diff --git a/regress/usr.sbin/syslogd/args-nofile-sighup.pl b/regress/usr.sbin/syslogd/args-nofile-sighup.pl
new file mode 100644 (file)
index 0000000..bde2e8f
--- /dev/null
@@ -0,0 +1,53 @@
+# The syslogd has a non existing log file in its config.
+# The client waits for syslogd startup and sends sighup.
+# The client writes a message to Sys::Syslog native method.
+# The syslogd writes it into a file and through a pipe and to tty.
+# The syslogd passes it via UDP to the loghost.
+# The server receives the message on its UDP socket.
+# Find the message in client, file, pipe, console, user, syslogd, server log.
+# Check that only the error message is twice in the console log.
+
+use strict;
+use warnings;
+
+our %args = (
+    client => {
+       func => sub {
+           my $self = shift;
+           ${$self->{syslogd}}->loggrep("syslogd: started", 5)
+               or die ref($self), " no 'syslogd: started' in log";
+           ${$self->{syslogd}}->kill_syslogd('HUP');
+           ${$self->{syslogd}}->loggrep("syslogd: restarted", 5)
+               or die ref($self), " no 'syslogd: restarted' in log";
+           write_log($self);
+       },
+    },
+    syslogd => {
+       conf => "*.*\t\$objdir/file-noexist.log\n",
+       loggrep => {
+           qr{syslogd\[\d+\]: priv_open_log ".*/file-noexist.log": }.
+               qr{No such file or directory} => 2,
+           qr/syslogd: started/ => 1,
+           qr/syslogd: restarted/ => 1,
+       },
+       noconsole => 1,  # do not write /dev/console in config file
+    },
+    console => {
+       loggrep => {
+           qr{".*/file-noexist.log": No such file or directory} => 2,
+           qr/syslogd\[\d+\]: start/ => 0,
+           qr/syslogd\[\d+\]: restart/ => 0,
+           get_testgrep() => 0,
+       },
+    },
+    file => {
+       loggrep => {
+           qr{".*/file-noexist.log": No such file or directory} => 0,
+           qr/syslogd\[\d+\]: start/ => 1,
+           qr/syslogd\[\d+\]: restart/ => 1,
+           get_testgrep() => 1,
+       },
+    },
+);
+
+1;
diff --git a/regress/usr.sbin/syslogd/args-nofile.pl b/regress/usr.sbin/syslogd/args-nofile.pl
new file mode 100644 (file)
index 0000000..0e5ffad
--- /dev/null
@@ -0,0 +1,34 @@
+# The syslogd has a non existing log file in its config.
+# The client writes a message to Sys::Syslog native method.
+# The syslogd writes it into a file and through a pipe and to tty.
+# The syslogd passes it via UDP to the loghost.
+# The server receives the message on its UDP socket.
+# Find the message in client, file, pipe, console, user, syslogd, server log.
+# Check that the error message during config read is in the console log.
+
+use strict;
+use warnings;
+
+our %args = (
+    syslogd => {
+       conf => "*.*\t\$objdir/file-noexist.log\n",
+       loggrep => {
+           qr{syslogd\[\d+\]: priv_open_log ".*/file-noexist.log": }.
+               qr{No such file or directory} => 1,
+       },
+    },
+    console => {
+       loggrep => {
+           qr{".*/file-noexist.log": No such file or directory} => 1,
+           get_testgrep() => 1,
+       },
+    },
+    file => {
+       loggrep => {
+           qr{".*/file-noexist.log": No such file or directory} => 0,
+           get_testgrep() => 1,
+       },
+    },
+);
+
+1;
index f998ef5..553cb82 100644 (file)
@@ -11,7 +11,7 @@ our %args = (
     syslogd => {
        loghost => '@invalid://127.0.0.1',
        loggrep => {
-           qr/syslogd: bad protocol "\@invalid:\/\/127.0.0.1"/ => 1,
+           qr/syslogd\[\d+\]: bad protocol "\@invalid:\/\/127.0.0.1"/ => 1,
            get_testgrep() => 1,
        },
     },
index d702288..37f6a07 100644 (file)
@@ -11,7 +11,7 @@ our %args = (
     syslogd => {
        loghost => '@udp4://[::1]',
        loggrep => {
-           qr/syslogd: bad hostname "\@udp4:\/\/\[::1\]"/ => 1,
+           qr/syslogd\[\d+\]: bad hostname "\@udp4:\/\/\[::1\]"/ => 1,
            get_testgrep() => 1,
        },
     },
index f28e26d..ba8ddf8 100644 (file)
@@ -11,7 +11,7 @@ our %args = (
     syslogd => {
        loghost => '@udp4://127.0.0.1',
        loggrep => {
-           qr/syslogd: no udp4 "\@udp4:\/\/127.0.0.1/ => 1,
+           qr/syslogd\[\d+\]: no udp4 "\@udp4:\/\/127.0.0.1/ => 1,
            get_testgrep() => 1,
        },
        options => ["-6"],
index bc0f3aa..aff56c9 100644 (file)
@@ -11,7 +11,7 @@ our %args = (
     syslogd => {
        loghost => '@udp6://127.0.0.1',
        loggrep => {
-           qr/syslogd: bad hostname "\@udp6:\/\/127.0.0.1"/ => 1,
+           qr/syslogd\[\d+\]: bad hostname "\@udp6:\/\/127.0.0.1"/ => 1,
            get_testgrep() => 1,
        },
     },
index a863c34..0aca809 100644 (file)
@@ -11,7 +11,7 @@ our %args = (
     syslogd => {
        loghost => '@udp6://[::1]',
        loggrep => {
-           qr/syslogd: no udp6 "\@udp6:\/\/\[::1\]/ => 1,
+           qr/syslogd\[\d+\]: no udp6 "\@udp6:\/\/\[::1\]/ => 1,
            get_testgrep() => 1,
        },
        options => ["-4"],
index 8105a94..83c05c7 100644 (file)
@@ -13,7 +13,7 @@ our %args = (
     syslogd => {
        loghost => '@tls://localhost:$connectport',
        loggrep => {
-           qr/syslogd: load client TLS CA: failed to open CA file/ => 1,
+           qr/syslogd\[\d+\]: load client TLS CA: failed to open CA file/ => 1,
            qr/Logging to FORWTLS \@tls:\/\/localhost:\d+/ => '>=4',
            qr/syslogd\[\d+\]: tls_connect_socket .*: /.
                qr/ssl verify memory setup failure/ => 1,