diff --git a/bin/tests/system/start.pl b/bin/tests/system/start.pl index d9a8c9080f..724547713a 100644 --- a/bin/tests/system/start.pl +++ b/bin/tests/system/start.pl @@ -15,7 +15,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: start.pl,v 1.20 2011/04/27 17:46:47 each Exp $ +# $Id: start.pl,v 1.21 2011/05/05 04:47:45 marka Exp $ # Framework for starting test servers. # Based on the type of server specified, check for port availability, remove @@ -196,13 +196,21 @@ sub start_server { unlink glob $cleanup_files; } - system "$command"; + # get the shell to report the pid of the server ($!) + $command .= "echo \$!"; + # start the server + my $child = `$command`; + + # wait up to 14 seconds for the server to start and to write the + # pid file otherwise kill this server and any others that have + # already been started my $tries = 0; - while (!-f $pid_file) { + while (!-s $pid_file) { if (++$tries > 14) { - print "I:Couldn't start server $server\n"; + print "I:Couldn't start server $server (pid=$child)\n"; print "R:FAIL\n"; + system "kill -9 $child" if ("$child" ne ""); system "$PERL $topdir/stop.pl $testdir"; exit 1; }