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);

Reply via email to