svn commit: samba r23693 - in branches/SAMBA_4_0/source/selftest: .

abartlet at samba.org abartlet at samba.org
Wed Jul 4 00:34:18 GMT 2007


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



More information about the samba-cvs mailing list