[perl-Server-Starter] Fix a race between t/06-autorestart.t and t/05-killolddelay-echod.pl
Petr Pisar
ppisar at fedoraproject.org
Tue Sep 9 07:25:34 UTC 2014
commit 451ab85b9f12cdc40c3bcf569b10771535c6206f
Author: Petr Písař <ppisar at redhat.com>
Date: Tue Sep 9 09:17:13 2014 +0200
Fix a race between t/06-autorestart.t and t/05-killolddelay-echod.pl
...17-Synchronize-to-content-in-signame-file.patch | 78 ++++++++++++++++++++
perl-Server-Starter.spec | 11 +++-
2 files changed, 88 insertions(+), 1 deletions(-)
---
diff --git a/Server-Starter-0.17-Synchronize-to-content-in-signame-file.patch b/Server-Starter-0.17-Synchronize-to-content-in-signame-file.patch
new file mode 100644
index 0000000..6236bea
--- /dev/null
+++ b/Server-Starter-0.17-Synchronize-to-content-in-signame-file.patch
@@ -0,0 +1,78 @@
+From 3ec63d1650f9199d6d2b2413c7e855bc108646a4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar at redhat.com>
+Date: Mon, 8 Sep 2014 19:03:08 +0200
+Subject: [PATCH] Synchronize to content in signame file
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+There is a race between t/06-autorestart.t and
+t/05-killolddelay-echod.pl. If t/05-killolddelay-echod.pl is not fast
+enough with writing received signal name (e.g. by adding "sleep 2;" in
+the beginning of a signal handler), the t/06-autorestart.t will get
+empty signame file and the test for the signal name will fail.
+
+This patch adds synchornization by locking the signame file.
+
+Similar to CPAN RT#73711.
+
+Signed-off-by: Petr Písař <ppisar at redhat.com>
+---
+ t/05-killolddelay-echod.pl | 3 +++
+ t/06-autorestart.t | 8 ++++++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/t/05-killolddelay-echod.pl b/t/05-killolddelay-echod.pl
+index 5b48ca5..bd6be30 100755
+--- a/t/05-killolddelay-echod.pl
++++ b/t/05-killolddelay-echod.pl
+@@ -5,16 +5,19 @@ use warnings;
+
+ use lib qw(blib/lib lib);
+
++use Fcntl qw(:flock);
+ use IO::Socket::INET;
+ use Server::Starter qw(server_ports);
+
+ my $sigfn = shift @ARGV;
+ open my $sigfh, '>', $sigfn
+ or die "could not open file:$sigfn:$!";
++flock $sigfh, LOCK_EX or die "could lock file:$sigfh:$!";
+
+ $SIG{TERM} = $SIG{USR1} = sub {
+ my $signame = shift;
+ print $sigfh $signame;
++ flock $sigfh, LOCK_UN or die $!;
+ sleep 1;
+ exit 0;
+ };
+diff --git a/t/06-autorestart.t b/t/06-autorestart.t
+index 9401500..58e98d1 100644
+--- a/t/06-autorestart.t
++++ b/t/06-autorestart.t
+@@ -1,6 +1,7 @@
+ use strict;
+ use warnings;
+
++use Fcntl qw(:flock);
+ use File::Temp ();
+ use Test::TCP;
+ use Test::More tests => 26;
+@@ -61,9 +62,12 @@ for my $signal_on_hup ('TERM', 'USR1') {
+ 'status after auto-restart');
+ is(
+ do {
+- open my $fh, '<', "$tempdir/signame"
++ open my $fh, '+<', "$tempdir/signame"
+ or die $!;
+- <$fh>;
++ flock $fh, LOCK_EX or die $!;
++ my $signal = <$fh>;
++ flock $fh, LOCK_UN or die $!;
++ $signal;
+ },
+ $signal_on_hup,
+ 'signal sent on hup',
+--
+1.9.3
+
diff --git a/perl-Server-Starter.spec b/perl-Server-Starter.spec
index dd3fc01..3250263 100644
--- a/perl-Server-Starter.spec
+++ b/perl-Server-Starter.spec
@@ -1,6 +1,6 @@
Name: perl-Server-Starter
Version: 0.17
-Release: 7%{?dist}
+Release: 8%{?dist}
Summary: Superdaemon for hot-deploying server programs
License: GPL+ or Artistic
Group: Development/Libraries
@@ -16,6 +16,9 @@ Patch2: Server-Starter-0.17-Synchronize-to-PID-in-t-06-autorestart.t.pat
Patch3: Server-Starter-0.17-Synchronize-to-PID-in-t-01-starter.t.patch
# Fix t/05-killolddelay.t race, bug #1100158, CPAN RT#73711
Patch4: Server-Starter-0.17-Synchronize-to-PID-in-t-05-killolddelay.t.patch
+# Fix a race between t/06-autorestart.t and t/05-killolddelay-echod.pl,
+# bug #1100158, CPAN RT#73711
+Patch5: Server-Starter-0.17-Synchronize-to-content-in-signame-file.patch
BuildArch: noarch
BuildRequires: perl(ExtUtils::MakeMaker) >= 6.42
@@ -24,6 +27,7 @@ BuildRequires: perl(List::MoreUtils)
BuildRequires: perl(Proc::Wait3)
BuildRequires: perl(Scope::Guard)
# For the tests
+BuildRequires: perl(Fcntl)
BuildRequires: perl(Test::TCP) >= 2.00
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
@@ -54,6 +58,7 @@ perl-Server-Starter's start_server script.
%patch2 -p1
%patch3 -p1
%patch4 -p1
+%patch5 -p1
%build
# --skipdeps causes ExtUtils::AutoInstall not to try auto-installing
@@ -84,6 +89,10 @@ make test
%{_mandir}/man1/start_server.*
%changelog
+* Tue Sep 09 2014 Petr Pisar <ppisar at redhat.com> - 0.17-8
+- Fix a race between t/06-autorestart.t and t/05-killolddelay-echod.pl
+ (bug #1100158)
+
* Fri Aug 29 2014 Jitka Plesnikova <jplesnik at redhat.com> - 0.17-7
- Perl 5.20 rebuild
More information about the scm-commits
mailing list