[lvm-devel] master - test: configurable write timeout

Alasdair Kergon agk at fedoraproject.org
Thu Apr 24 21:45:29 UTC 2014


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=0ee9d59b48b7b5eb844f6857977641e7a95f7ccb
Commit:        0ee9d59b48b7b5eb844f6857977641e7a95f7ccb
Parent:        448af9ff0ba04bfaeb45c15819f577fef089fd95
Author:        Alasdair G Kergon <agk at redhat.com>
AuthorDate:    Thu Apr 24 22:44:22 2014 +0100
Committer:     Alasdair G Kergon <agk at redhat.com>
CommitterDate: Thu Apr 24 22:44:22 2014 +0100

test: configurable write timeout

Hard-coded 3 minutes is far too short when investigating problems.
---
 test/lib/harness.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/test/lib/harness.c b/test/lib/harness.c
index 7ee45c8..d7e51ee 100644
--- a/test/lib/harness.c
+++ b/test/lib/harness.c
@@ -36,6 +36,7 @@ static int fds[2];
 
 #define MAX 1024
 #define MAX_LOG_SIZE (32*1024*1024) /* Default max size of test log */
+#define WRITE_TIMEOUT (180 * 2)	/* 3 minutes */
 
 struct stats {
 	int nfailed;
@@ -59,6 +60,7 @@ static int quiet = 0;
 static const char *results;
 static unsigned fullbuffer = 0;
 static int unlimited = 0;
+static int write_timeout = WRITE_TIMEOUT;
 
 static time_t harness_start;
 
@@ -433,13 +435,13 @@ static void run(int i, char *f) {
 			struct timeval selectwait = { .tv_usec = 500000 }; /* 0.5s */
 
 			if ((fullbuffer && fullbuffer++ == 8000) ||
-			    (no_write > 180 * 2)) /* a 3 minute timeout */
+			    (write_timeout > 0 && no_write > write_timeout)) 
 			{
 			timeout:
 				kill(pid, SIGINT);
 				sleep(5); /* wait a bit for a reaction */
 				if ((w = waitpid(pid, &st, WNOHANG)) == 0) {
-					if (no_write > 180 * 2)
+					if (write_timeout > 0 && no_write > write_timeout)
 						/*
 						 * Kernel traces needed, when stuck for
 						 * too long in userspace without producing
@@ -533,7 +535,8 @@ int main(int argc, char **argv) {
 	const char *result;
 	const char *be_verbose = getenv("VERBOSE"),
 		   *be_interactive = getenv("INTERACTIVE"),
-		   *be_quiet = getenv("QUIET");;
+		   *be_quiet = getenv("QUIET"),
+		   *be_write_timeout = getenv("WRITE_TIMEOUT");
 	time_t start = time(NULL);
 	int i;
 	FILE *list;
@@ -552,6 +555,9 @@ int main(int argc, char **argv) {
 	if (be_quiet)
 		quiet = atoi(be_quiet);
 
+	if (be_write_timeout)
+		write_timeout = atoi(be_write_timeout) * 2;
+
 	results = getenv("LVM_TEST_RESULTS") ? : "results";
 	unlimited = getenv("LVM_TEST_UNLIMITED") ? 1 : 0;
 	(void) snprintf(results_list, sizeof(results_list), "%s/list", results);




More information about the lvm-devel mailing list