xfs/084: fix test program status collection and processing
authorDarrick J. Wong <djwong@kernel.org>
Wed, 7 Jul 2021 00:21:39 +0000 (17:21 -0700)
committerEryu Guan <guaneryu@gmail.com>
Sun, 18 Jul 2021 14:32:55 +0000 (22:32 +0800)
On a test VM with 1.2GB memory, I noticed that the test will
sometimes fail because resvtest leaks too much memory and gets OOM
killed.  It would be useful to _notrun the test when this happens so
that it doesn't appear as an intermittent regression.

The exit code processing in this test is incorrect, since "$?" will
get us the exit status of _filter_resv, not $here/src/resvtest.  Fix
that as part of learning to detect a SIGKILL and skip the test.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
tests/xfs/084

index 5967fe12fb5afc32696b974998de6c13cd9bbb5f..e796fec4ac22bcd999de7260e496c002159878a5 100755 (executable)
@@ -33,13 +33,17 @@ _require_test
 echo
 echo "*** First case - I/O blocksize same as pagesize"
 $here/src/resvtest -i 20 -b $pgsize "$TEST_DIR/resv" | _filter_resv
-[ $? -eq 0 ] && echo done
+res=${PIPESTATUS[0]}
+[ $res -eq 137 ] && _notrun "resvtest -i 20 -b $pgsize was SIGKILLed (OOM?)"
+[ $res -eq 0 ] && echo done
 rm -f "$TEST_DIR/mumble"
 
 echo
 echo "*** Second case - 512 byte I/O blocksize"
 $here/src/resvtest -i 40 -b 512 "$TEST_DIR/resv" | _filter_resv
-[ $? -eq 0 ] && echo done
+res=${PIPESTATUS[0]}
+[ $res -eq 137 ] && _notrun "resvtest -i 40 -b 512 was SIGKILLed (OOM?)"
+[ $res -eq 0 ] && echo done
 rm -f "$TEST_DIR/grumble"
 
 # success, all done