syslog.t revision 7c478bd95313f5f23a4c958a745db2134aa03244
#!./perl
BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
require Config; import Config;
if ($Config{'extensions'} !~ /\bSyslog\b/) {
print "1..0 # Skip: Sys::Syslog was not built\n";
exit 0;
}
if ($Config{'extensions'} !~ /\bSocket\b/) {
print "1..0 # Skip: Socket was not built\n";
exit 0;
}
require Socket;
# This code inspired by Sys::Syslog::connect():
require Sys::Hostname;
my ($host_uniq) = Sys::Hostname::hostname();
my ($host) = $host_uniq =~ /([A-Za-z0-9_.-]+)/;
if (! defined Socket::inet_aton($host)) {
print "1..0 # Skip: Can't lookup $host\n";
exit 0;
}
}
BEGIN {
eval {require Sys::Syslog} or do {
if ($@ =~ /Your vendor has not/) {
print "1..0 # Skip: missing macros\n";
exit 0;
}
}
}
use Sys::Syslog qw(:DEFAULT setlogsock);
# Test this to 1 if your syslog accepts udp connections.
# Most don't (or at least shouldn't)
my $Test_Syslog_INET = 0;
my $test_string = "uid $< is testing perl $] syslog capabilities";
print "1..6\n";
if (Sys::Syslog::_PATH_LOG()) {
if (-e Sys::Syslog::_PATH_LOG()) {
# The only known $^O eq 'svr4' that needs this is NCR MP-RAS,
# but assuming 'stream' in SVR4 is probably not that bad.
if ($^O =~ /^(solaris|irix|svr4|powerux)$/) {
# we should check for stream support here, not for solaris/irix
print defined(eval { setlogsock('stream') }) ? "ok 1\n" : "not ok 1 # $!\n";
} else {
print defined(eval { setlogsock('unix') }) ? "ok 1\n" : "not ok 1 # $!\n";
}
if (defined(eval { openlog('perl', 'ndelay', 'local0') })) {
print "ok 2\n";
print defined(eval { syslog('info', $test_string ) })
? "ok 3\n" : "not ok 3 # $!\n";
} else {
if ($@ =~ /no connection to syslog available/) {
print "ok 2 # Skip: syslogd not running\n";
} else {
print "not ok 2 # $@\n";
}
print "ok 3 # Skip: openlog failed\n";
}
} else {
for (1..3) {
print
"ok $_ # Skip: file ",
Sys::Syslog::_PATH_LOG(),
" does not exist\n";
}
}
}
else {
for (1..3) { print "ok $_ # Skip: _PATH_LOG unavailable\n" }
}
if( $Test_Syslog_INET ) {
print defined(eval { setlogsock('inet') }) ? "ok 4\n"
: "not ok 4\n";
print defined(eval { openlog('perl', 'ndelay', 'local0') }) ? "ok 5\n"
: "not ok 5 # $!\n";
print defined(eval { syslog('info', $test_string ) }) ? "ok 6\n"
: "not ok 6 # $!\n";
}
else {
print "ok $_ # Skip: assuming syslog doesn't accept inet connections\n"
foreach (4..6);
}