r23693: Give the process a chance to write out it's coverage data, before we
authorAndrew Bartlett <abartlet@samba.org>
Wed, 4 Jul 2007 00:34:16 +0000 (00:34 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:59:02 +0000 (14:59 -0500)
blast a kill -9 at it.

Andrew Bartlett
(This used to be commit 16692ae7d9ce269ca7d610319df20d894fe06a1c)

source4/selftest/Samba4.pm

index 07ed12a80f8be2a0b38d3b49d116ba9560c535ca..ec34358e0aa9ef5de14982c8b90ff2115ef0c27b 100644 (file)
@@ -514,19 +514,34 @@ sub provision_dc($$)
 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);