[lvm-devel] master - test: Improve tracking of silence (stuck testcases) in the runner.

Petr Rockai mornfall at fedoraproject.org
Thu Feb 5 13:41:19 UTC 2015


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=8c8fb67fc21f7f5c651ea0b30961039c868a0bc6
Commit:        8c8fb67fc21f7f5c651ea0b30961039c868a0bc6
Parent:        dc1d15787830e37480925fbd5bb3ab04982ad1dd
Author:        Petr Rockai <prockai at redhat.com>
AuthorDate:    Fri Jun 27 01:21:20 2014 +0200
Committer:     Petr Rockai <prockai at redhat.com>
CommitterDate: Thu Feb 5 13:47:18 2015 +0100

test: Improve tracking of silence (stuck testcases) in the runner.

---
 test/lib/runner.cpp |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/test/lib/runner.cpp b/test/lib/runner.cpp
index 1a91738..0c99dbd 100644
--- a/test/lib/runner.cpp
+++ b/test/lib/runner.cpp
@@ -112,10 +112,9 @@ struct TestCase {
 	struct rusage usage;
 	int status;
 	bool timeout;
-	int silent_ctr;
 	pid_t pid;
 
-	time_t start, end;
+	time_t start, end, silent_start;
 	Options options;
 
 	Journal *journal;
@@ -148,11 +147,13 @@ struct TestCase {
 
 	bool monitor() {
 		end = time( 0 );
-		if ( wait4(pid, &status, WNOHANG, &usage) != 0 )
+		if ( wait4(pid, &status, WNOHANG, &usage) != 0 ) {
+			io.sync();
 			return false;
+		}
 
 		/* kill off tests after a minute of silence */
-		if ( silent_ctr > 2 * 60 ) {
+		if ( end - silent_start > 60 ) {
 			kill( pid, SIGINT );
 			sleep( 5 ); /* wait a bit for a reaction */
 			if ( waitpid( pid, &status, WNOHANG ) == 0 ) {
@@ -175,14 +176,10 @@ struct TestCase {
 		if ( !options.verbose && !options.interactive )
 			progress( Update ) << tag( "running" ) << pretty() << " " << end - start << std::flush;
 
-		if ( select( io.fd + 1, &set, NULL, NULL, &wait ) <= 0 )
-		{
-			silent_ctr++;
-			return true;
-		}
+		if ( select( io.fd + 1, &set, NULL, NULL, &wait ) > 0 )
+			silent_start = end; /* something happened */
 
 		io.sync();
-		silent_ctr = 0;
 
 		return true;
 	}
@@ -216,7 +213,10 @@ struct TestCase {
 		return null;
 	}
 
-	void parent() {
+	void parent()
+	{
+		silent_start = start = time( 0 );
+
 		while ( monitor() );
 
 		Journal::R r = Journal::UNKNOWN;




More information about the lvm-devel mailing list