public inbox for fstests@vger.kernel.org
 help / color / mirror / Atom feed
From: ira.weiny@intel.com
To: fstests@vger.kernel.org, Eryu Guan <guaneryu@gmail.com>
Cc: john.hubbard@gmail.com, Dave Chinner <david@fromorbit.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Jan Kara <jack@suse.cz>,
	dan.j.williams@intel.com, Jeff Layton <jlayton@kernel.org>,
	Ira Weiny <ira.weiny@intel.com>
Subject: [PATCH 08/13] generic/131: Save stderr for debugging
Date: Tue, 17 Sep 2019 21:15:53 -0700	[thread overview]
Message-ID: <20190918041558.2621-9-ira.weiny@intel.com> (raw)
In-Reply-To: <20190918041558.2621-1-ira.weiny@intel.com>

From: Ira Weiny <ira.weiny@intel.com>

Details of which internal step failed within a test are lost without
additional debugging output.  Save that output by separating stdout and
stderr.

This allows the server port to be written solely to stdout for
consumption by the script.  Then all error output can be sent to the
seqres.full file in the event of a failure.  Then, depend on the return
code of the server _and_ the client to detect failure and save the error
output for inspection.

Signed-off-by: Ira Weiny <ira.weiny@intel.com>
---
 tests/generic/131 | 63 +++++++++++++++++++++++++++++++++--------------
 1 file changed, 45 insertions(+), 18 deletions(-)

diff --git a/tests/generic/131 b/tests/generic/131
index c333e676e8f9..4d90411d4a19 100755
--- a/tests/generic/131
+++ b/tests/generic/131
@@ -14,11 +14,15 @@ here=`pwd`
 tmp=/tmp/$$
 status=1	# failure is the default!
 trap "_cleanup; exit \$status" 0 1 2 3 15
+debug="-d"
+
+TESTFILE=$TEST_DIR/lock_file
 
 _cleanup()
 {
 	kill $client_pid > /dev/null 2>&1
 	kill $server_pid > /dev/null 2>&1
+	rm -f $TESTFILE
 }
 
 # get standard environment, filters and checks
@@ -31,48 +35,71 @@ _supported_os Linux
 _require_test
 _require_test_fcntl_advisory_locks
 
-TESTFILE=$TEST_DIR/lock_file
+# set up log files
+SERVER_LOG=$TEST_DIR/server.out
+rm -f $SERVER_LOG
+touch $SERVER_LOG
+SERVER_PORT=$TEST_DIR/server.port
+rm -f $SERVER_PORT
+touch $SERVER_PORT
+CLIENT_LOG=$TEST_DIR/client.out
+rm -f $CLIENT_LOG
+touch $CLIENT_LOG
+
+touch $TESTFILE
+
+function dump_logs_fail()
+{
+	fail_str=$1
 
-rm -f $TEST_DIR/server.out
-touch $TEST_DIR/server.out
+	echo "     ***** Client log *****" >> $seqres.full
+	cat $CLIENT_LOG >> $seqres.full
+	echo "     ***** Server log *****" >> $seqres.full
+	cat $SERVER_LOG >> $seqres.full
+	echo "     ***** End file details *****" >> $seqres.full
+	ls -la $TESTFILE >> $seqres.full
+	_fail $fail_str
+	exit 1
+}
 
 # Start the server
-src/locktest $TESTFILE 2>&1 > $TEST_DIR/server.out &
+src/locktest $debug $TESTFILE 2> $SERVER_LOG 1> $SERVER_PORT &
 server_pid=$!
 
 timeout=30
 while [ $timeout -gt 0 ]; do
 	sleep 1
 
-	PORT=$(cat $TEST_DIR/server.out | grep "^server port: " | awk '{print $3}')
+	PORT=$(cat $SERVER_PORT | grep "^server port: " | awk '{print $3}')
 	if [ -n "$PORT" ]; then
 		break
 	fi
 
 	# check the existence of server process
 	if ! kill -s 0 $server_pid >/dev/null 2>&1; then
-		echo "Server died abnormally"
-		exit 1
+		dump_logs_fail "Server died abnormally"
 	fi
 
 	let timeout=timeout-1
 done
 
 if [ -z "$PORT" ]; then
-	echo "Could not get server port"
-	exit 1
+	dump_logs_fail "Could not get server port"
 fi
 
 # Start the client
-src/locktest -p $PORT -h localhost $TESTFILE 2>&1 > $TEST_DIR/client.out
+
+src/locktest $debug -p $PORT -h localhost $TESTFILE 2> $CLIENT_LOG
+client_result=$?
 client_pid=$!
-result=$?
-if [ $result -eq 0 ]; then
-	echo success!
-	status=0
-else
-	echo "Client reported failure ($result)"
-	cat $TEST_DIR/*.out
+if [ $client_result -ne 0 ]; then
+	dump_logs_fail "Client reported failure ($client_result)"
 fi
-
+wait $server_pid
+server_result=$?
+if [ $server_result -ne 0 ]; then
+	dump_logs_fail "Server reported failure ($server_result)"
+fi
+echo success!
+status=0
 exit
-- 
2.20.1

  parent reply	other threads:[~2019-09-18  4:16 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-18  4:15 [PATCH 00/13] Fix locktest and add lease testing to it ira.weiny
2019-09-18  4:15 ` [PATCH 01/13] src/locktest: Remove unnecessary sleep ira.weiny
2019-09-18  4:15 ` [PATCH 02/13] src/locktest: Remove OPEN macro ira.weiny
2019-09-18  4:15 ` [PATCH 03/13] src/locktest: Change command macro names ira.weiny
2019-09-18  4:15 ` [PATCH 04/13] src/locktest: Add get_cmd_str ira.weiny
2019-09-18  4:15 ` [PATCH 05/13] src/locktest.c: Clean up client command passing ira.weiny
2019-09-18  4:15 ` [PATCH 06/13] src/locktest.c: Fix return code if last test fails ira.weiny
2019-09-18  4:15 ` [PATCH 07/13] generic/131: Clean up pid variables ira.weiny
2019-09-18  4:15 ` ira.weiny [this message]
2019-09-18  4:15 ` [PATCH 09/13] src/locktest: Add simple lease testing ira.weiny
2019-09-18  4:15 ` [PATCH 10/13] src/locktest: Add lease testing for basic signal reception ira.weiny
2019-09-18  4:15 ` [PATCH 11/13] src/locktest: Add truncate lease tests ira.weiny
2019-09-18  4:15 ` [PATCH 12/13] src/locktest: Clean up error output ira.weiny
2019-09-18  4:15 ` [PATCH 13/13] src/locktest: Audit all debug output ira.weiny
2019-09-20 13:12 ` [PATCH 00/13] Fix locktest and add lease testing to it Jeff Layton
2019-09-21 16:20 ` Eryu Guan
2019-09-22  2:01   ` Weiny, Ira
2019-09-22  7:52     ` Eryu Guan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190918041558.2621-9-ira.weiny@intel.com \
    --to=ira.weiny@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=david@fromorbit.com \
    --cc=fstests@vger.kernel.org \
    --cc=guaneryu@gmail.com \
    --cc=jack@suse.cz \
    --cc=jgg@ziepe.ca \
    --cc=jlayton@kernel.org \
    --cc=john.hubbard@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox