* [PATCH 00/30] autodie-ification and code simplifications
@ 2023-10-17 23:37 5% Eric Wong
2023-10-17 23:37 7% ` [PATCH 13/30] xt/git-http-backend: remove Net::HTTP usage Eric Wong
0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2023-10-17 23:37 UTC (permalink / raw)
To: meta
Noisy code is less pleasant to work on, so use autodie more and
a few more simplifications. There's a couple of small bugfixes
discovered along the way, too.
Eric Wong (30):
lei_mirror: start converting to autodie
lei_mirror: autodie most `close' calls
lei_mirror: use autodie for most `open' calls
git: introduce read_all function
import: use read_all to detect short reads
lei_mirror: use read_all
use read_all in more places to improve safety
xap_helper*: use autodie in more places
xap_helper: die more easily in both implementations
xap_helper: simplify SIGTERM exit checks
xap_helper: autodie for getsockopt
xap_client: autodie for pipe and socketpair
xt/git-http-backend: remove Net::HTTP usage
ds: introduce and use do_fork helper
ds: get rid of SetLoopTimeout
cindex: drop some unused functions
syscall: common $F_SETPIPE_SZ definition
t/lei-up: additional diagnostics for match failures
test_common: use autodie and read_all where possible
test_common: only hide TCP port in messages
test_common: use $cwdfh for every run_script command
init: drop extraneous `+'
init: use autodie to reduce distractions
xt/mem-imapd-tls: remove unused/broken epoll imports
xt/mem-imapd-tls: reduce FDs for lsof use
lei: use autodie where appropriate
lei_auth: update comments and use v5.12
lei_config: drop redundant open check
convert: use read_all to simplify error checks
idx_stack: use autodie + read_all
lib/PublicInbox/CidxLogP.pm | 4 +-
lib/PublicInbox/CodeSearchIdx.pm | 5 --
lib/PublicInbox/DS.pm | 36 ++++----
lib/PublicInbox/Daemon.pm | 16 ++--
lib/PublicInbox/EOFpipe.pm | 6 +-
lib/PublicInbox/Gcf2.pm | 7 +-
lib/PublicInbox/Git.pm | 19 +++--
lib/PublicInbox/IPC.pm | 12 +--
lib/PublicInbox/IdxStack.pm | 20 ++---
lib/PublicInbox/Import.pm | 8 +-
lib/PublicInbox/InboxWritable.pm | 6 +-
lib/PublicInbox/LEI.pm | 48 +++++------
lib/PublicInbox/LeiALE.pm | 11 +--
lib/PublicInbox/LeiAuth.pm | 7 +-
lib/PublicInbox/LeiBlob.pm | 6 +-
lib/PublicInbox/LeiConfig.pm | 4 +-
lib/PublicInbox/LeiMailSync.pm | 5 +-
lib/PublicInbox/LeiMirror.pm | 131 ++++++++++++++----------------
lib/PublicInbox/LeiSucks.pm | 5 +-
lib/PublicInbox/LeiXSearch.pm | 2 +-
lib/PublicInbox/MultiGit.pm | 3 +-
lib/PublicInbox/SearchIdxShard.pm | 14 ++--
lib/PublicInbox/Syscall.pm | 16 ++--
lib/PublicInbox/TestCommon.pm | 85 +++++++++----------
lib/PublicInbox/ViewVCS.pm | 12 ++-
lib/PublicInbox/WWW.pm | 4 +-
lib/PublicInbox/Watch.pm | 11 +--
lib/PublicInbox/XapClient.pm | 11 +--
lib/PublicInbox/XapHelper.pm | 24 ++----
lib/PublicInbox/XapHelperCxx.pm | 11 +--
lib/PublicInbox/Xapcmd.pm | 5 +-
lib/PublicInbox/xap_helper.h | 60 ++++++--------
script/public-inbox-convert | 8 +-
script/public-inbox-edit | 4 +-
script/public-inbox-init | 30 +++----
t/dir_idle.t | 2 +-
t/ds-leak.t | 4 +-
t/gcf2.t | 5 +-
t/init.t | 7 ++
t/lei-sigpipe.t | 7 +-
t/lei-up.t | 4 +-
xt/git-http-backend.t | 30 +++----
xt/mem-imapd-tls.t | 21 ++---
xt/mem-nntpd-tls.t | 8 +-
44 files changed, 335 insertions(+), 409 deletions(-)
^ permalink raw reply [relevance 5%]
* [PATCH 13/30] xt/git-http-backend: remove Net::HTTP usage
2023-10-17 23:37 5% [PATCH 00/30] autodie-ification and code simplifications Eric Wong
@ 2023-10-17 23:37 7% ` Eric Wong
0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2023-10-17 23:37 UTC (permalink / raw)
To: meta
HTTP::Tiny is part of the Perl standard library since Perl 5.14
while Net::HTTP has never been (unlike Net::NNTP or Net::POP3).
For the test which forces server-side buffering, we'll just use
regular socket handle.
---
xt/git-http-backend.t | 30 +++++++++++++-----------------
1 file changed, 13 insertions(+), 17 deletions(-)
diff --git a/xt/git-http-backend.t b/xt/git-http-backend.t
index d78fe79f..6c384faf 100644
--- a/xt/git-http-backend.t
+++ b/xt/git-http-backend.t
@@ -12,7 +12,7 @@ use PublicInbox::TestCommon;
my $git_dir = $ENV{GIANT_GIT_DIR};
plan 'skip_all' => 'GIANT_GIT_DIR not defined' unless $git_dir;
require_mods(qw(BSD::Resource Plack::Util Plack::Builder
- HTTP::Date HTTP::Status Net::HTTP));
+ HTTP::Date HTTP::Status HTTP::Tiny));
my $psgi = "./t/git-http-backend.psgi";
my ($tmpdir, $for_destroy) = tmpdir();
my $err = "$tmpdir/stderr.log";
@@ -20,15 +20,12 @@ my $out = "$tmpdir/stdout.log";
my $sock = tcp_server();
my ($host, $port) = tcp_host_port($sock);
my $td;
+my $http = HTTP::Tiny->new;
my $get_maxrss = sub {
- my $http = Net::HTTP->new(Host => "$host:$port");
- ok($http, 'Net::HTTP object created for maxrss');
- $http->write_request(GET => '/');
- my ($code, $mess, %h) = $http->read_response_headers;
- is($code, 200, 'success reading maxrss');
- my $n = $http->read_entity_body(my $buf, 256);
- ok(defined $n, 'read response body');
+ my $res = $http->get("http://$host:$port/");
+ is($res->{status}, 200, 'success reading maxrss');
+ my $buf = $res->{content};
like($buf, qr/\A\d+\n\z/, 'got memory response');
ok(int($buf) > 0, 'got non-zero memory response');
int($buf);
@@ -55,16 +52,15 @@ SKIP: {
if ($pack !~ m!(/objects/pack/pack-[a-f0-9]{40,64}.pack)\z!) {
skip "bad pack name: $pack";
}
- my $url = $1;
- my $http = Net::HTTP->new(Host => "$host:$port");
- ok($http, 'Net::HTTP object created');
- $http->write_request(GET => $url);
- my ($code, $mess, %h) = $http->read_response_headers;
- is(200, $code, 'got 200 success for pack');
- is($max, $h{'Content-Length'}, 'got expected Content-Length for pack');
+ my $s = tcp_connect($sock);
+ print $s "GET $1 HTTP/1.1\r\nHost: $host:$port\r\n\r\n" or xbail $!;
+ my $hdr = do { local $/ = "\r\n\r\n"; readline($s) };
+ like $hdr, qr!\AHTTP/1\.1\s+200\b!, 'got 200 success for pack';
+ like $hdr, qr/^content-length:\s*$max\r\n/ims,
+ 'got expected Content-Length for pack';
- # no $http->read_entity_body, here, since we want to force buffering
- foreach my $i (1..3) {
+ # don't read the body
+ for my $i (1..3) {
sleep 1;
my $diff = $get_maxrss->() - $mem_a;
note "${diff}K memory increase after $i seconds";
^ permalink raw reply related [relevance 7%]
Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2023-10-17 23:37 5% [PATCH 00/30] autodie-ification and code simplifications Eric Wong
2023-10-17 23:37 7% ` [PATCH 13/30] xt/git-http-backend: remove Net::HTTP usage Eric Wong
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).