X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Frun.perl;h=e5ee0ade3de72ca57467e27f72f128b27484de0e;hb=67fe4d8d90ac77419c8fc41457c849aa7d366a9d;hp=f6eb0ad31410a905f90dafd70dc2e33ec5544298;hpb=943be29048b2aa652b53929243bdda3d5464f980;p=public-inbox.git diff --git a/t/run.perl b/t/run.perl index f6eb0ad3..e5ee0ade 100755 --- a/t/run.perl +++ b/t/run.perl @@ -18,7 +18,7 @@ use PublicInbox::Spawn; use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev); use Errno qw(EINTR); use Fcntl qw(:seek); -use POSIX qw(_POSIX_PIPE_BUF WNOHANG); +use POSIX qw(WNOHANG); use File::Temp (); my $jobs = 1; my $repeat = 1; @@ -53,10 +53,11 @@ key2sub($_) for @tests; # precache my ($for_destroy, $lei_env, $lei_daemon_pid, $owner_pid); -# I get ECONNRESET from lei on FreeBSD 11.3 even with -# kern.ipc.soacceptqueue=1073741823, so persistent lei-daemon in tests -# is Linux-only for now: -if ($^O eq 'linux' && !$ENV{TEST_LEI_DAEMON_PERSIST_DIR} && +# TEST_LEI_DAEMON_PERSIST is currently broken. I get ECONNRESET from +# lei even with high kern.ipc.soacceptqueue=1073741823 or SOMAXCONN, not +# sure why. Also, testing our internal inotify usage is unreliable +# because lei-daemon uses a single inotify FD for all clients. +if ($ENV{TEST_LEI_DAEMON_PERSIST} && !$ENV{TEST_LEI_DAEMON_PERSIST_DIR} && (PublicInbox::Spawn->can('recv_cmd4') || eval { require Socket::MsgHdr })) { $lei_env = {}; @@ -198,7 +199,7 @@ for (my $i = $repeat; $i != 0; $i--) { pipe(my ($rd, $wr)) or DIE "pipe: $!"; # fill the queue before forking so children can start earlier - my $n = (_POSIX_PIPE_BUF / UINT_SIZE); + my $n = (POSIX::PIPE_BUF / UINT_SIZE); if ($n >= $#todo) { print $wr join('', map { pack('I', $_) } (0..$#todo)) or DIE; undef $wr; @@ -253,5 +254,8 @@ for (my $i = $repeat; $i != 0; $i--) { print $OLDOUT "1..".($repeat * scalar(@tests))."\n" if $repeat >= 0; if ($lei_env && $$ == $owner_pid) { my $opt = { 1 => $OLDOUT, 2 => $OLDERR }; + my $cur_daemon_pid; + run_script([qw(lei daemon-pid)], $lei_env, { 1 => \$cur_daemon_pid }); run_script([qw(lei daemon-kill)], $lei_env, $opt); + DIE "lei daemon restarted\n" if $cur_daemon_pid != $lei_daemon_pid; }