about summary refs log tree commit
path: root/t/nntpd-validate.t
diff options
context:
space:
mode:
Diffstat (limited to 't/nntpd-validate.t')
-rw-r--r--t/nntpd-validate.t27
1 files changed, 11 insertions, 16 deletions
diff --git a/t/nntpd-validate.t b/t/nntpd-validate.t
index de024394..e3c10d9c 100644
--- a/t/nntpd-validate.t
+++ b/t/nntpd-validate.t
@@ -10,9 +10,15 @@ use Symbol qw(gensym);
 use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC);
 my $inbox_dir = $ENV{GIANT_INBOX_DIR};
 plan skip_all => "GIANT_INBOX_DIR not defined for $0" unless $inbox_dir;
+if (my $m = $ENV{TEST_RUN_MODE}) {
+        plan skip_all => "threads conflict w/ TEST_RUN_MODE=$m";
+}
 my $mid = $ENV{TEST_MID};
 
 # This test is also an excuse for me to experiment with Perl threads :P
+# TODO: get rid of threads, I was reading an old threads(3perl) manpage
+# and missed the WARNING in the newer ones about it being "discouraged"
+# in perlpolicy(1).
 unless (eval 'use threads; 1') {
         plan skip_all => "$0 requires a threaded perl" if $@;
 }
@@ -37,13 +43,8 @@ if ($test_tls && !-r $key || !-r $cert) {
 require './t/common.perl';
 my $keep_tmp = !!$ENV{TEST_KEEP_TMP};
 my $tmpdir = tempdir('nntpd-validate-XXXXXX',TMPDIR => 1,CLEANUP => $keep_tmp);
-my (%OPT, $pid, $tail_pid, $host_port, $group);
+my (%OPT, $td, $host_port, $group);
 my $batch = 1000;
-END {
-        foreach ($pid, $tail_pid) {
-                kill 'TERM', $_ if defined $_;
-        }
-};
 if (($ENV{NNTP_TEST_URL} // '') =~ m!\Anntp://([^/]+)/([^/]+)\z!) {
         ($host_port, $group) = ($1, $2);
         $host_port .= ":119" unless index($host_port, ':') > 0;
@@ -149,7 +150,6 @@ sub make_local_server {
         $group = 'inbox.test.perf.nntpd';
         my $ibx = { inboxdir => $inbox_dir, newsgroup => $group };
         $ibx = PublicInbox::Inbox->new($ibx);
-        my $nntpd = 'blib/script/public-inbox-nntpd';
         my $pi_config = "$tmpdir/config";
         {
                 open my $fh, '>', $pi_config or die "open($pi_config): $!";
@@ -165,20 +165,13 @@ sub make_local_server {
         for ($out, $err) {
                 open my $fh, '>', $_ or die "truncate: $!";
         }
-        if (my $tail_cmd = $ENV{TAIL}) { # don't assume GNU tail
-                $tail_pid = fork;
-                if (defined $tail_pid && $tail_pid == 0) {
-                        open STDOUT, '>&STDERR' or die ">&2 failed: $!";
-                        exec(split(' ', $tail_cmd), $out, $err);
-                }
-        }
         my $sock = tcp_server();
         ok($sock, 'sock created');
         $host_port = $sock->sockhost . ':' . $sock->sockport;
 
         # not using multiple workers, here, since we want to increase
         # the chance of tripping concurrency bugs within PublicInbox/NNTP*.pm
-        my $cmd = [ $nntpd, "--stdout=$out", "--stderr=$err", '-W0' ];
+        my $cmd = [ '-nntpd', "--stdout=$out", "--stderr=$err", '-W0' ];
         push @$cmd, "-lnntp://$host_port";
         if ($test_tls) {
                 push @$cmd, "--cert=$cert", "--key=$key";
@@ -190,7 +183,9 @@ sub make_local_server {
                 );
         }
         print STDERR "# CMD ". join(' ', @$cmd). "\n";
-        $pid = spawn_listener({ PI_CONFIG => $pi_config }, $cmd, [$sock]);
+        my $env = { PI_CONFIG => $pi_config };
+        # perl threads and run_mode != 0 don't get along
+        $td = start_script($cmd, $env, { run_mode => 0, 3 => $sock });
 }
 
 package DigestPipe;