about summary refs log tree commit homepage
path: root/t/gcf2_client.t
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2020-09-19 09:37:14 +0000
committerEric Wong <e@80x24.org>2020-09-19 21:39:47 +0000
commitd78f50649a5545d66a61b5465ca7f5ce4be398ea (patch)
tree7a0dc7bde92e89bd57dca861624fac8cae7c1be6 /t/gcf2_client.t
parent881a5493a8c970c10c051cc55d10d2968e71e691 (diff)
downloadpublic-inbox-d78f50649a5545d66a61b5465ca7f5ce4be398ea.tar.gz
It seems easiest to have a singleton Gcf2Client client object
per daemon worker for all inboxes to use.  This reduces overall
FD usage from pipes.

The `public-inbox-gcf2' command + manpage are gone and a `$^X'
one-liner is used, instead.  This saves inodes for internal
commands and hopefully makes it easier to avoid mismatched
PERL5LIB include paths (as noticed during development :x).

We'll also make the existing cat-file process management
infrastructure more resilient to BOFHs on process killing
sprees (or in case our libgit2-based code fails on us).

(Rare) PublicInbox::WWW PSGI users NOT using public-inbox-httpd
won't automatically benefit from this change, and extra
configuration will be required (to be documented later).
Diffstat (limited to 't/gcf2_client.t')
-rw-r--r--t/gcf2_client.t14
1 files changed, 8 insertions, 6 deletions
diff --git a/t/gcf2_client.t b/t/gcf2_client.t
index 19462379..f1302a54 100644
--- a/t/gcf2_client.t
+++ b/t/gcf2_client.t
@@ -6,6 +6,7 @@ use PublicInbox::TestCommon;
 use Test::More;
 use Cwd qw(getcwd);
 use PublicInbox::Import;
+use PublicInbox::DS;
 
 require_mods('PublicInbox::Gcf2');
 use_ok 'PublicInbox::Gcf2Client';
@@ -24,8 +25,8 @@ my $tree = 'fdbc43725f21f485051c17463b50185f4c3cf88c';
 my $called = 0;
 my $err_f = "$tmpdir/err";
 {
-        local $ENV{PATH} = getcwd()."/blib/script:$ENV{PATH}";
-        open my $err, '>', $err_f or BAIL_OUT $!;
+        PublicInbox::DS->Reset;
+        open my $err, '>>', $err_f or BAIL_OUT $!;
         my $gcf2c = PublicInbox::Gcf2Client::new({ 2 => $err });
         $gcf2c->cat_async("$tree $git_a", sub {
                 my ($bref, $oid, $type, $size, $arg) = @_;
@@ -36,7 +37,7 @@ my $err_f = "$tmpdir/err";
                 is($arg, 'hi', 'arg passed');
                 $called++;
         }, 'hi');
-        $gcf2c->cat_async_wait;
+        $gcf2c->cat_async_step($gcf2c->{inflight});
 
         open $err, '<', $err_f or BAIL_OUT $!;
         my $estr = do { local $/; <$err> };
@@ -52,13 +53,14 @@ my $err_f = "$tmpdir/err";
                 is($arg, 'bye', 'arg passed when missing');
                 $called++;
         }, 'bye');
-        $gcf2c->cat_async_wait;
+        $gcf2c->cat_async_step($gcf2c->{inflight});
 
         open $err, '<', $err_f or BAIL_OUT $!;
         $estr = do { local $/; <$err> };
         like($estr, qr/retrying/, 'warned about retry');
 
         # try failed alternates lookup
+        PublicInbox::DS->Reset;
         open $err, '>', $err_f or BAIL_OUT $!;
         $gcf2c = PublicInbox::Gcf2Client::new({ 2 => $err });
         $gcf2c->cat_async("$tree $git_b", sub {
@@ -66,7 +68,7 @@ my $err_f = "$tmpdir/err";
                 is(undef, $bref, 'missing bref from alt is undef');
                 $called++;
         });
-        $gcf2c->cat_async_wait;
+        $gcf2c->cat_async_step($gcf2c->{inflight});
         open $err, '<', $err_f or BAIL_OUT $!;
         $estr = do { local $/; <$err> };
         like($estr, qr/retrying/, 'warned about retry before alt update');
@@ -82,7 +84,7 @@ my $err_f = "$tmpdir/err";
                 is($$bref, $expect, 'tree content matched');
                 $called++;
         });
-        $gcf2c->cat_async_wait;
+        $gcf2c->cat_async_step($gcf2c->{inflight});
 }
 is($called, 4, 'cat_async callbacks hit');
 done_testing;