user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [PATCH 10/35] t/plack: use create_inbox
  2021-03-15 11:57  7% [PATCH 00/35] memoize inbox creations Eric Wong
@ 2021-03-15 11:58  4% ` Eric Wong
  0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2021-03-15 11:58 UTC (permalink / raw)
  To: meta

Only a few dozen milliseconds saved, but better than nothing.
---
 t/plack.t | 69 +++++++++++++++++++++----------------------------------
 1 file changed, 26 insertions(+), 43 deletions(-)

diff --git a/t/plack.t b/t/plack.t
index 8d8aa100..db72e6cc 100644
--- a/t/plack.t
+++ b/t/plack.t
@@ -1,37 +1,20 @@
+#!perl -w
 # Copyright (C) 2014-2021 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict;
-use warnings;
-use Test::More;
+use v5.10.1;
 use PublicInbox::TestCommon;
 my $psgi = "./examples/public-inbox.psgi";
-my ($tmpdir, $for_destroy) = tmpdir();
-my $pi_config = "$tmpdir/config";
-my $inboxdir = "$tmpdir/main.git";
-my $addr = 'test-public@example.com';
 my @mods = qw(HTTP::Request::Common Plack::Test URI::Escape);
 require_mods(@mods);
-use_ok 'PublicInbox::Import';
-use_ok 'PublicInbox::Git';
-my @ls;
-
 foreach my $mod (@mods) { use_ok $mod; }
-local $ENV{PI_CONFIG} = $pi_config;
 ok(-f $psgi, "psgi example file found");
 my $pfx = 'http://example.com/test';
-ok(run_script(['-init', 'test', $inboxdir, "$pfx/", $addr]),
-	'initialized repo');
-xsys_e(qw(git config -f), $pi_config,
-	qw(publicinbox.test.newsgroup inbox.test));
-open my $fh, '>', "$inboxdir/description" or die "open: $!\n";
-print $fh "test for public-inbox\n";
-close $fh or die "close: $!\n";
-my $app = require $psgi;
-my $git = PublicInbox::Git->new($inboxdir);
-my $im = PublicInbox::Import->new($git, 'test', $addr);
 # ensure successful message delivery
-{
-	my $mime = PublicInbox::Eml->new(<<EOF);
+my $ibx = create_inbox('test', sub {
+	my ($im, $ibx) = @_;
+	my $addr = $ibx->{-primary_address};
+	$im->add(PublicInbox::Eml->new(<<EOF)) or BAIL_OUT '->add';
 From: Me <me\@example.com>
 To: You <you\@example.com>
 Cc: $addr
@@ -42,26 +25,14 @@ Date: Fri, 02 Oct 1993 00:00:00 +0000
 > quoted text
 zzzzzz
 EOF
-	$im->add($mime);
-	$im->done;
-	my $rev = $git->qx(qw(rev-list HEAD));
-	like($rev, qr/\A[a-f0-9]{40,}/, "good revision committed");
-	@ls = $git->qx(qw(ls-tree -r --name-only HEAD));
-	chomp @ls;
-
 	# multipart with two text bodies
-	$mime = eml_load 't/plack-2-txt-bodies.eml';
-	$im->add($mime);
+	$im->add(eml_load('t/plack-2-txt-bodies.eml')) or BAIL_OUT '->add';
 
 	# multipart with attached patch + filename
-	$mime = eml_load 't/plack-attached-patch.eml';
-	$im->add($mime);
+	$im->add(eml_load('t/plack-attached-patch.eml')) or BAIL_OUT '->add';
 
 	# multipart collapsed to single quoted-printable text/plain
-	$mime = eml_load 't/plack-qp.eml';
-	like($mime->body_raw, qr/hi =3D bye=/, 'our test used QP correctly');
-	$im->add($mime);
-
+	$im->add(eml_load('t/plack-qp.eml')) or BAIL_OUT '->add';
 	my $crlf = <<EOF;
 From: Me
   <me\@example.com>
@@ -77,11 +48,24 @@ Date: Fri, 02 Oct 1993 00:00:00 +0000
 :(
 EOF
 	$crlf =~ s/\n/\r\n/sg;
-	$im->add(PublicInbox::Eml->new($crlf));
+	$im->add(PublicInbox::Eml->new($crlf)) or BAIL_OUT '->add';
 
-	$im->done;
-}
+	open my $fh, '>', "$ibx->{inboxdir}/description" or BAIL_OUT "open: $!";
+	print $fh "test for public-inbox\n" or BAIL_OUT;
+	close $fh or BAIL_OUT "close: $!";
+	open $fh, '>', "$ibx->{inboxdir}/pi_config";
+	print $fh <<EOF or BAIL_OUT;
+[publicinbox "test"]
+	inboxdir = $ibx->{inboxdir}
+	newsgroup = inbox.test
+	address = $addr
+	url = $pfx/
+EOF
+	close $fh or BAIL_OUT "close: $!";
+});
 
+local $ENV{PI_CONFIG} = "$ibx->{inboxdir}/pi_config";
+my $app = require $psgi;
 test_psgi($app, sub {
 	my ($cb) = @_;
 	foreach my $u (qw(robots.txt favicon.ico .well-known/foo)) {
@@ -259,8 +243,7 @@ test_psgi($app, sub {
 	# for a while, we used to support /$INBOX/$X40/
 	# when we "compressed" long Message-IDs to SHA-1
 	# Now we're stuck supporting them forever :<
-	foreach my $path (@ls) {
-		$path =~ tr!/!!d;
+	foreach my $path ('f2912279bd7bcd8b7ab3033234942d58746d56f7') {
 		my $from = "http://example.com/test/$path/";
 		my $res = $cb->(GET($from));
 		is(301, $res->code, 'is permanent redirect');

^ permalink raw reply related	[relevance 4%]

* [PATCH 00/35] memoize inbox creations
@ 2021-03-15 11:57  7% Eric Wong
  2021-03-15 11:58  4% ` [PATCH 10/35] t/plack: use create_inbox Eric Wong
  0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2021-03-15 11:57 UTC (permalink / raw)
  To: meta

This speeds up a bunch of tests by a few dozen to hundreds of
milliseconds.  Part of it is due to disabling fsync/fdatasync in
a few more places.

Users with slower TMPDIR will notice more, and users with TMPDIR
pointed to tmpfs will notice it least.

Overall it's not hugely significant, but the diffstat
and LoC reduction still makes it nice even if there were
no performance improvements.

Eric Wong (35):
  test_common: add create_inbox helper sub
  t/lei_xsearch: use create_inbox
  test_common: minor simplifications to setup_public_inboxes
  t/imapd-tls: switch to create_inbox
  t/www_altid: use create_inbox
  t/xcpdb-reshard: use create_inbox
  t/v2dupindex: create_inbox
  t/admin: switch to create_inbox
  t/html_index: remove now-worthless test
  t/plack: use create_inbox
  t/psgi_attach: convert to create_inbox
  t/httpd: convert to create_inbox
  t/convert-compact: create_inbox
  t/altid: use create_inbox
  t/psgi_mount: switch to create_inbox
  t/feed: switch to create_inbox
  t/psgi_bad_mids: use create_inbox
  t/psgi_multipart_not: use create_inbox
  t/psgi_scan_all: create_inbox lots saved
  t/psgi_v2: create_inbox
  t/imapd: create_inbox (minor)
  t/solver_git: use create_inbox
  t/cgi: create_inbox
  t/edit: switch to create_inbox
  t/inbox_idle: switch to create_inbox
  t/lei_xsearch: use create_inbox
  t/indexlevels-mirror: use create_inbox
  t/multi-mid: use create_inbox
  t/psgi_search: use create_inbox
  t/miscsearch: use create_inbox
  t/nntpd-tls: use create_inbox
  t/nntpd: use create_inbox
  t/thread-index-gap: create_inbox
  t/altid_v2: create_inbox
  t/*: disable fsync on tests were create_inbox isn't worth it

 MANIFEST                      |   2 +-
 Makefile.PL                   |   3 +-
 lib/PublicInbox/TestCommon.pm |  67 ++++++++++++++---
 t/admin.t                     |  38 ++++------
 t/altid.t                     |  26 ++-----
 t/altid_v2.t                  |  48 +++++-------
 t/cgi.t                       |  84 +++++++++------------
 t/convert-compact.t           |  48 +++++-------
 t/data-gen/.gitignore         |   2 +
 t/edit.t                      |  34 ++++-----
 t/extsearch.t                 |   2 +
 t/feed.t                      |  53 ++++----------
 t/html_index.t                |  56 --------------
 t/httpd.t                     |  36 +++------
 t/imapd-tls.t                 |  38 +++-------
 t/imapd.t                     |  66 ++++++++---------
 t/inbox_idle.t                |  31 ++++----
 t/indexlevels-mirror.t        |  24 +++---
 t/lei-q-remote-import.t       |  20 ++---
 t/lei_xsearch.t               |  56 +++++---------
 t/miscsearch.t                |  28 +++----
 t/multi-mid.t                 |  34 +++------
 t/nntpd-tls.t                 |  52 ++++---------
 t/nntpd.t                     | 102 ++++++++++++--------------
 t/plack.t                     |  69 +++++++----------
 t/psgi_attach.t               |  56 ++++++--------
 t/psgi_bad_mids.t             |  46 ++++--------
 t/psgi_mount.t                |  35 ++++-----
 t/psgi_multipart_not.t        |  35 +++------
 t/psgi_scan_all.t             |  48 ++++--------
 t/psgi_search.t               |  37 +++-------
 t/psgi_v2.t                   | 134 ++++++++++++++++------------------
 t/purge.t                     |   1 +
 t/replace.t                   |   1 +
 t/solver_git.t                |  88 +++++++++++-----------
 t/thread-index-gap.t          |  24 +++---
 t/v1reindex.t                 |   1 +
 t/v2-add-remove-add.t         |   1 +
 t/v2dupindex.t                |  76 +++++++++----------
 t/v2mirror.t                  |   1 +
 t/v2reindex.t                 |   1 +
 t/v2writable.t                |   1 +
 t/watch_filter_rubylang.t     |   2 +
 t/watch_maildir_v2.t          |   1 +
 t/www_altid.t                 |  47 +++++-------
 t/xcpdb-reshard.t             |  54 ++++++--------
 46 files changed, 692 insertions(+), 1017 deletions(-)
 create mode 100644 t/data-gen/.gitignore
 delete mode 100644 t/html_index.t

^ permalink raw reply	[relevance 7%]

Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2021-03-15 11:57  7% [PATCH 00/35] memoize inbox creations Eric Wong
2021-03-15 11:58  4% ` [PATCH 10/35] t/plack: use create_inbox 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).