Test syslogd(8) "last message repeated" feature and -r option.
authorbluhm <bluhm@openbsd.org>
Mon, 17 Apr 2017 14:27:46 +0000 (14:27 +0000)
committerbluhm <bluhm@openbsd.org>
Mon, 17 Apr 2017 14:27:46 +0000 (14:27 +0000)
regress/usr.sbin/syslogd/Client.pm
regress/usr.sbin/syslogd/args-repeat.pl [new file with mode: 0644]

index 4be39f7..bcc02b2 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: Client.pm,v 1.9 2017/01/02 16:58:28 bluhm Exp $
+#      $OpenBSD: Client.pm,v 1.10 2017/04/17 14:27:46 bluhm Exp $
 
 # Copyright (c) 2010-2014 Alexander Bluhm <bluhm@openbsd.org>
 #
@@ -114,7 +114,7 @@ sub child {
                    or die ref($self), " setlogsock failed: $!";
        }
        # we take LOG_UUCP as it is not used nowadays
-       openlog("syslogd-regress", "ndelay,perror,pid", LOG_UUCP);
+       openlog("syslogd-regress", "perror,pid", LOG_UUCP);
 }
 
 1;
diff --git a/regress/usr.sbin/syslogd/args-repeat.pl b/regress/usr.sbin/syslogd/args-repeat.pl
new file mode 100644 (file)
index 0000000..25cb6f0
--- /dev/null
@@ -0,0 +1,58 @@
+# Start syslogd with -r option.
+# The client writes messages repeatedly 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 message repeated is not in server or pipe log.
+
+use strict;
+use warnings;
+
+our %args = (
+    client => {
+       func => sub {
+           my $self = shift;
+           write_message($self, "foo");
+           write_message($self, "bar");
+           write_message($self, "bar");
+           write_message($self, "bar");
+           write_message($self, "foo");
+           write_message($self, "bar");
+           write_log($self);
+       },
+    },
+    syslogd => {
+       options => ["-r"],
+    },
+    server => {
+       loggrep => {
+           qr/foo/ => 2,
+           qr/bar/ => 4,
+           qr/message repeated/ => 0,
+       },
+    },
+    pipe => {
+       loggrep => {
+           qr/foo/ => 2,
+           qr/bar/ => 4,
+           qr/message repeated/ => 0,
+       },
+    },
+    file => {
+       loggrep => {
+           qr/foo/ => 2,
+           qr/bar/ => 2,
+           qr/message repeated 2 times/ => 1,
+       },
+    },
+    tty => {
+       loggrep => {
+           qr/foo/ => 2,
+           qr/bar/ => 2,
+           qr/message repeated 2 times/ => 1,
+       },
+    },
+);
+
+1;