diff options
author | Eric Wong <e@80x24.org> | 2020-12-26 09:34:39 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2020-12-26 19:27:15 +0000 |
commit | 10bf54305da8422d9ece6b809996092c1c4b1786 (patch) | |
tree | fc588a7ba743c1d440beb2e80444503035fd982b /t | |
parent | 5e05c2eb58a450849f1826f3d02ed62b814b6617 (diff) | |
download | public-inbox-10bf54305da8422d9ece6b809996092c1c4b1786.tar.gz |
We don't have to replace a bunch of existing watches with identical new ones. On Linux with Linux::Inotify2 installed, this avoids a storm of inotify_add_watch(2) and inotify_rm_watch(2) syscalls on SIGHUP with -imapd and "-extindex --watch"
Diffstat (limited to 't')
-rw-r--r-- | t/imapd.t | 26 |
1 files changed, 5 insertions, 21 deletions
@@ -296,27 +296,11 @@ $pi_cfg->each_inbox(sub { # ensure IDLE persists across HUP, w/o extra watches or FDs $td->kill('HUP') or BAIL_OUT "failed to kill -imapd: $!"; - SKIP: { - skip 'no inotify fdinfo (or support)', 2 if !@ino_info; - my (@tmp, %prev); - local $/ = "\n"; - my $end = time + 5; - until (time > $end) { - select undef, undef, undef, 0.01; - open my $fh, '<', $ino_fdinfo or - BAIL_OUT "$ino_fdinfo: $!"; - %prev = map { $_ => 1 } @ino_info; - @tmp = grep(/^inotify wd:/, <$fh>); - if (scalar(@tmp) == scalar(@ino_info)) { - delete @prev{@tmp}; - last if scalar(keys(%prev)) == @ino_info; - } - } - is(scalar @tmp, scalar @ino_info, - 'old inotify watches replaced'); - is(scalar keys %prev, scalar @ino_info, - 'no previous watches overlap'); - }; + for my $n (1..2) { # kick the event loop so we know HUP is done + my $m = $imap_client->new(%mic_opt); + ok($m->login && $m->IsAuthenticated && $m->logout, + "connection $n works after HUP"); + } open($fh, '<', 't/data/0001.patch') or BAIL_OUT("open: $!"); run_script(['-mda', '--no-precheck'], $env, { 0 => $fh }) or |