about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2013-02-11 02:07:41 +0000
committerEric Wong <normalperson@yhbt.net>2013-02-11 09:41:32 +0000
commitf54e27e0ec0a520c0a079d6e8428eeefdcd366ab (patch)
tree86145efbbc12cca3746d5562534a22cb7cb60b6d
parent384c801cced851e782cbe94b548a31b1deaa70f3 (diff)
downloadcmogstored-f54e27e0ec0a520c0a079d6e8428eeefdcd366ab.tar.gz
Use SO_REUSEADDR, since Linux requires both the new program
(cmogstored) and this test both use SO_REUSEADDR for
SO_REUSEADDR to be effective.

Also, minimize the window for port conflicts.  While there are
hard-to-avoid race windows for conflicts when binding random
ports, we can minimize those windows by holding those ports open
in the parent as long as possible.
-rw-r--r--test/mogilefs_integration.perl7
1 files changed, 4 insertions, 3 deletions
diff --git a/test/mogilefs_integration.perl b/test/mogilefs_integration.perl
index dbdbb63..aa55df9 100644
--- a/test/mogilefs_integration.perl
+++ b/test/mogilefs_integration.perl
@@ -57,7 +57,7 @@ my %lopts = (
         LocalAddr => $TEST_HOST,
         LocalPort => 0,
         Proto => "tcp",
-        ReuseAddr => 0,
+        ReuseAddr => 1,
         Listen => 1024
 );
 
@@ -70,13 +70,12 @@ my $mgmt_port = $mgmt->sockport;
 my $http = IO::Socket::INET->new(%lopts);
 my $http_host = $http->sockhost;
 my $http_port = $http->sockport;
-$mgmt = $mgmt_host . ':' . $mgmt_port;
 $tracker = $tracker_host . ':' . $tracker_port;
-$http = $http_host . ':' . $http_port;
 
 $mogilefsd_pid = fork;
 fail("fork for mogilefsd failed: $!") unless defined $mogilefsd_pid;
 if ($mogilefsd_pid == 0) {
+        $http = $mgmt = undef;
         my $mogilefsd_conf = "$docroot/mogilefsd.conf";
         open(my $fh, ">", $mogilefsd_conf);
         $fh or die "failed to open $mogilefsd_conf: $!";
@@ -110,6 +109,8 @@ mogadm(qw/device add localhost dev2/);
 ok(mkdir("$docroot/dev1"), "mkdir $docroot/dev1");
 ok(mkdir("$docroot/dev2"), "mkdir $docroot/dev2");
 
+$mgmt = $mgmt_host . ':' . $mgmt_port;
+$http = $http_host . ':' . $http_port;
 $cmogstored_pid = fork;
 fail("fork for cmogstored failed: $!") unless defined $cmogstored_pid;
 if ($cmogstored_pid == 0) {