X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=xt%2Fimapd-validate.t;h=5d27d2a0655eefddb914522a62453311a9c1c467;hb=21fcd8a37c82c1ef654d402cf592f0c9d803aa26;hp=f96ec8791b925eab85e9f5dbd29272f82a051796;hpb=94245dfc85576b5981b23fc5c917189b5fbbe3e8;p=public-inbox.git diff --git a/xt/imapd-validate.t b/xt/imapd-validate.t index f96ec879..5d27d2a0 100644 --- a/xt/imapd-validate.t +++ b/xt/imapd-validate.t @@ -1,9 +1,9 @@ #!perl -w -# Copyright (C) 2020 all contributors +# Copyright (C) 2020-2021 all contributors # License: AGPL-3.0+ # Expensive test to validate compression and TLS. use strict; -use Test::More; +use v5.10.1; use Symbol qw(gensym); use PublicInbox::DS qw(now); use POSIX qw(_exit); @@ -13,8 +13,9 @@ plan skip_all => "GIANT_INBOX_DIR not defined for $0" unless $inbox_dir; # how many emails to read into memory at once per-process my $BATCH = $ENV{TEST_BATCH} // 100; my $REPEAT = $ENV{TEST_REPEAT} // 1; +diag "TEST_BATCH=$BATCH TEST_REPEAT=$REPEAT"; -require_mods(qw(Mail::IMAPClient)); +require_mods(qw(Mail::IMAPClient -imapd)); my $imap_client = 'Mail::IMAPClient'; my $can_compress = $imap_client->can('compress'); if ($can_compress) { # hope this gets fixed upstream, soon @@ -30,7 +31,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 +40,7 @@ if (($ENV{IMAP_TEST_URL} // '') =~ m!\Aimap://([^/]+)/(.+)\z!) { } else { require_mods(qw(DBD::SQLite)); $make_local_server->(); + $mailbox = "$newsgroup.0"; } my %opts = (imap => \%OPT, 'imap+compress' => { %OPT, Compress => 1 }); @@ -124,15 +126,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 @@ -150,11 +152,11 @@ $make_local_server = sub { # not using multiple workers, here, since we want to increase # the chance of tripping concurrency bugs within PublicInbox/IMAP*.pm my $cmd = [ '-imapd', "--stdout=$out", "--stderr=$err", '-W0' ]; - push @$cmd, '-limap://'.$imap->sockhost.':'.$imap->sockport; + push @$cmd, '-limap://'.tcp_host_port($imap); if ($test_tls) { my $imaps = tcp_server(); $rdr->{4} = $imaps; - push @$cmd, '-limaps://'.$imaps->sockhost.':'.$imaps->sockport; + push @$cmd, '-limaps://'.tcp_host_port($imaps); push @$cmd, "--cert=$cert", "--key=$key"; my $tls_opt = [ SSL_hostname => 'server.local',