* [PATCH 1/2] tests: replace select/usleep calls with tick()
2022-12-12 4:21 6% [PATCH 0/2] some sleep elimination Eric Wong
@ 2022-12-12 4:22 7% ` Eric Wong
0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2022-12-12 4:22 UTC (permalink / raw)
To: meta
This makes it easier to identify places in tests which cause
unnecessary slowdowns doing busy waits.
---
t/cmd_ipc.t | 3 +--
t/httpd-corner.t | 2 +-
t/httpd-unix.t | 8 ++++----
t/nntpd.t | 6 +++---
4 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/t/cmd_ipc.t b/t/cmd_ipc.t
index 75697a15..cd76d5e8 100644
--- a/t/cmd_ipc.t
+++ b/t/cmd_ipc.t
@@ -10,7 +10,6 @@ pipe(my ($r, $w)) or BAIL_OUT;
my ($send, $recv);
require_ok 'PublicInbox::Spawn';
my $SOCK_SEQPACKET = eval { Socket::SOCK_SEQPACKET() } // undef;
-use Time::HiRes qw(usleep);
my $do_test = sub { SKIP: {
my ($type, $flag, $desc) = @_;
@@ -61,7 +60,7 @@ my $do_test = sub { SKIP: {
if ($pid == 0) {
# need to loop since Perl signals are racy
# (the interpreter doesn't self-pipe)
- while (usleep(1000)) {
+ while (tick(0.01)) {
kill 'ALRM', $tgt;
}
}
diff --git a/t/httpd-corner.t b/t/httpd-corner.t
index e16e8dc8..88820270 100644
--- a/t/httpd-corner.t
+++ b/t/httpd-corner.t
@@ -320,7 +320,7 @@ sub conn_for {
$spawn_httpd->('-W0');
}
-sub delay { select(undef, undef, undef, shift || rand(0.02)) }
+sub delay { tick(shift || rand(0.02)) }
my $str = 'abcdefghijklmnopqrstuvwxyz';
my $len = length $str;
diff --git a/t/httpd-unix.t b/t/httpd-unix.t
index fe4a2161..e915ea2c 100644
--- a/t/httpd-unix.t
+++ b/t/httpd-unix.t
@@ -1,8 +1,8 @@
-# Copyright (C) 2016-2021 all contributors <meta@public-inbox.org>
+#!perl -w
+# Copyright (C) all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
# Tests for binding Unix domain sockets
use strict;
-use warnings;
use Test::More;
use PublicInbox::TestCommon;
use Errno qw(EADDRINUSE);
@@ -36,7 +36,7 @@ $spawn_httpd->("-l$unix", '-W0');
my %o = (Peer => $unix, Type => SOCK_STREAM);
for (1..1000) {
last if -S $unix && IO::Socket::UNIX->new(%o);
- select undef, undef, undef, 0.02
+ tick(0.02);
}
ok(-S $unix, 'UNIX socket was bound by -httpd');
@@ -89,7 +89,7 @@ sub delay_until {
my $end = time + 30;
do {
return if $cond->();
- select undef, undef, undef, 0.012;
+ tick(0.012);
} until (time > $end);
Carp::confess('condition failed');
}
diff --git a/t/nntpd.t b/t/nntpd.t
index 058bd796..30233ce0 100644
--- a/t/nntpd.t
+++ b/t/nntpd.t
@@ -358,7 +358,7 @@ Date: Fri, 02 Oct 1993 00:00:00 +0000
}
ok(run_script([qw(-index -c -j0 --reindex), $ibx->{inboxdir}],
undef, $noerr), '-compacted');
- select(undef, undef, undef, $fast_idle ? 0.1 : 2.1);
+ tick($fast_idle ? 0.1 : 2.1);
$art = $n->article($ex->header('Message-ID'));
ok($art, 'new article retrieved after compact');
$lsof or skip 'lsof missing', 1;
@@ -372,9 +372,9 @@ Date: Fri, 02 Oct 1993 00:00:00 +0000
{
setsockopt($s, IPPROTO_TCP, TCP_NODELAY, 1);
syswrite($s, 'HDR List-id 1-');
- select(undef, undef, undef, 0.15);
+ tick(0.15);
ok($td->kill, 'killed nntpd');
- select(undef, undef, undef, 0.15);
+ tick(0.15);
syswrite($s, "\r\n");
$buf = '';
do {
^ permalink raw reply related [relevance 7%]
* [PATCH 0/2] some sleep elimination
@ 2022-12-12 4:21 6% Eric Wong
2022-12-12 4:22 7% ` [PATCH 1/2] tests: replace select/usleep calls with tick() Eric Wong
0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2022-12-12 4:21 UTC (permalink / raw)
To: meta
Since I am having trouble sleeping, I won't be letting tests
sleep, either :P No huge gains, but stuff w.r.t.
inotify/EVFILT_VNODE probably coming...
Eric Wong (2):
tests: replace select/usleep calls with tick()
t/httpd-unix: eliminate some busy waits
t/cmd_ipc.t | 3 +-
t/httpd-corner.psgi | 19 +++-
t/httpd-corner.t | 2 +-
t/httpd-unix.t | 208 ++++++++++++++++++++++++++------------------
t/nntpd.t | 6 +-
5 files changed, 146 insertions(+), 92 deletions(-)
^ permalink raw reply [relevance 6%]
Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2022-12-12 4:21 6% [PATCH 0/2] some sleep elimination Eric Wong
2022-12-12 4:22 7% ` [PATCH 1/2] tests: replace select/usleep calls with tick() 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).