diff options
author | Eric Wong <e@80x24.org> | 2020-09-19 09:37:14 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2020-09-19 21:39:47 +0000 |
commit | d78f50649a5545d66a61b5465ca7f5ce4be398ea (patch) | |
tree | 7a0dc7bde92e89bd57dca861624fac8cae7c1be6 /t/gcf2_client.t | |
parent | 881a5493a8c970c10c051cc55d10d2968e71e691 (diff) | |
download | public-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.t | 14 |
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; |