diff options
author | Eric Wong <e@yhbt.net> | 2020-06-10 07:04:40 +0000 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-06-13 07:55:45 +0000 |
commit | cfae078171fc1453be0795e4ba5f0252627ebba3 (patch) | |
tree | 743f0b1b5cf356bf018b5619619edd362dcdd0a8 /xt/imapd-validate.t | |
parent | 48180dbb004b5f59b2e80613b6fa2e5e869316f1 (diff) | |
download | public-inbox-cfae078171fc1453be0795e4ba5f0252627ebba3.tar.gz |
Finish up the IMAP-only portion of iterative config reloading, which allows us to create all sub-ranges of an inbox up front. The InboxIdler still uses ->each_inbox which will struggle with 100K inboxes. Having messages in the top-level newsgroup name of an inbox will still waste bandwidth for clients which want to do full syncs once there's a rollover to a new 50K range. So instead, make every inbox accessible exclusively via 50K slices in the form of "$NEWSGROUP.$UID_MIN-$UID_END". This introduces the DummyInbox, which makes $NEWSGROUP and every parent component a selectable, empty inbox. This aids navigation with mutt and possibly other MUAs. Finally, the xt/perf-imap-list maintainer test is broken, now, so remove it. The grep perlfunc is already proven effective, and we'll have separate tests for mocking out ~100k inboxes.
Diffstat (limited to 'xt/imapd-validate.t')
-rw-r--r-- | xt/imapd-validate.t | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/xt/imapd-validate.t b/xt/imapd-validate.t index f96ec879..b7b66d05 100644 --- a/xt/imapd-validate.t +++ b/xt/imapd-validate.t @@ -30,7 +30,7 @@ if ($test_tls && !-r $key || !-r $cert) { } my ($tmpdir, $for_destroy) = tmpdir(); my %OPT = qw(User u Password p); -my (%STARTTLS_OPT, %IMAPS_OPT, $td, $mailbox, $make_local_server); +my (%STARTTLS_OPT, %IMAPS_OPT, $td, $newsgroup, $mailbox, $make_local_server); if (($ENV{IMAP_TEST_URL} // '') =~ m!\Aimap://([^/]+)/(.+)\z!) { ($OPT{Server}, $mailbox) = ($1, $2); $OPT{Server} =~ s/:([0-9]+)\z// and $OPT{Port} = $1 + 0; @@ -39,6 +39,7 @@ if (($ENV{IMAP_TEST_URL} // '') =~ m!\Aimap://([^/]+)/(.+)\z!) { } else { require_mods(qw(DBD::SQLite)); $make_local_server->(); + $mailbox = "$newsgroup.1-50000"; } my %opts = (imap => \%OPT, 'imap+compress' => { %OPT, Compress => 1 }); @@ -124,15 +125,15 @@ BEGIN { $make_local_server = sub { require PublicInbox::Inbox; - $mailbox = 'inbox.test'; - my $ibx = { inboxdir => $inbox_dir, newsgroup => $mailbox }; + $newsgroup = 'inbox.test'; + my $ibx = { inboxdir => $inbox_dir, newsgroup => $newsgroup }; $ibx = PublicInbox::Inbox->new($ibx); my $pi_config = "$tmpdir/config"; { open my $fh, '>', $pi_config or die "open($pi_config): $!"; print $fh <<"" or die "print $pi_config: $!"; [publicinbox "test"] - newsgroup = $mailbox + newsgroup = $newsgroup inboxdir = $inbox_dir address = test\@example.com |