summaryrefslogtreecommitdiff
path: root/source4/selftest/Samba4.pm
diff options
context:
space:
mode:
Diffstat (limited to 'source4/selftest/Samba4.pm')
-rw-r--r--source4/selftest/Samba4.pm25
1 files changed, 20 insertions, 5 deletions
diff --git a/source4/selftest/Samba4.pm b/source4/selftest/Samba4.pm
index 07ed12a80f..ec34358e0a 100644
--- a/source4/selftest/Samba4.pm
+++ b/source4/selftest/Samba4.pm
@@ -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);