about summary refs log tree commit homepage
path: root/t
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2020-12-26 09:34:39 +0000
committerEric Wong <e@80x24.org>2020-12-26 19:27:15 +0000
commit10bf54305da8422d9ece6b809996092c1c4b1786 (patch)
treefc588a7ba743c1d440beb2e80444503035fd982b /t
parent5e05c2eb58a450849f1826f3d02ed62b814b6617 (diff)
downloadpublic-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.t26
1 files changed, 5 insertions, 21 deletions
diff --git a/t/imapd.t b/t/imapd.t
index 43ec200c..63a86e71 100644
--- a/t/imapd.t
+++ b/t/imapd.t
@@ -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