Author: abartlet Date: 2007-07-04 00:34:16 +0000 (Wed, 04 Jul 2007) New Revision: 23693
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23693 Log: Give the process a chance to write out it's coverage data, before we blast a kill -9 at it. Andrew Bartlett Modified: branches/SAMBA_4_0/source/selftest/Samba4.pm Changeset: Modified: branches/SAMBA_4_0/source/selftest/Samba4.pm =================================================================== --- branches/SAMBA_4_0/source/selftest/Samba4.pm 2007-07-03 23:48:02 UTC (rev 23692) +++ branches/SAMBA_4_0/source/selftest/Samba4.pm 2007-07-04 00:34:16 UTC (rev 23693) @@ -514,19 +514,34 @@ sub teardown_env($$) { my ($self, $envvars) = @_; + my $pid; close(DATA); - sleep(2); - - my $failed = $? >> 8; - if (-f "$envvars->{PIDDIR}/smbd.pid" ) { open(IN, "<$envvars->{PIDDIR}/smbd.pid") or die("unable to open smbd pid file"); - kill 9, <IN>; + $pid = <IN>; close(IN); + + # Give the process 20 seconds to exit. gcov needs + # this time to write out the covarge data + my $count = 0; + until (kill(0, $pid) == 0) { + # if no process sucessfully signalled, then we are done + sleep(1); + $count++; + last if $count > 20; + } + + # If it is still around, kill it + if ($count > 20) { + print "smbd process $pid took more than $count seconds to exit, killing\n"; + kill 9, $pid; + } } + my $failed = $? >> 8; + $self->slapd_stop($envvars) if ($self->{ldap}); print $self->getlog_env($envvars);
