[PATCH] hwsim tests: refactor run-all.sh
Johannes Berg
johannes
Wed Oct 30 10:17:17 PDT 2013
From: Johannes Berg <johannes.berg at intel.com>
Reuse the code rather than duplicating the implementation
of starting the tests. To make that easier, allow passing
multiple modules with -f to run-tests.py.
Signed-hostap: Johannes Berg <johannes.berg at intel.com>
---
tests/hwsim/run-all.sh | 125 +++++++++++++++++++----------------------------
tests/hwsim/run-tests.py | 12 ++---
2 files changed, 56 insertions(+), 81 deletions(-)
diff --git a/tests/hwsim/run-all.sh b/tests/hwsim/run-all.sh
index 9471dd8..9adea3f 100755
--- a/tests/hwsim/run-all.sh
+++ b/tests/hwsim/run-all.sh
@@ -17,90 +17,65 @@ else
fi
if [ "x$1" = "xconcurrent-valgrind" ]; then
- if ! ./start.sh concurrent valgrind; then
- echo "Could not start test environment" > $LOGDIR/last-debug
- exit 1
- fi
- DATE=`ls -1tr $LOGDIR | tail -1 | cut -f1 -d-`
- rm $LOGDIR/last-debug
- for i in autogo discovery grpform; do
- ./run-tests.py -l $LOGDIR/$DATE-run-$i $DB -e $LOGDIR/$DATE-failed-$i -r $LOGDIR/results.txt -f test_p2p_$i || errors=1
- cat $LOGDIR/$DATE-run-$i >> $LOGDIR/last-debug
- done
- ./stop-wifi.sh
- failures=`grep "ERROR SUMMARY" $LOGDIR/$DATE-valgrind-* | grep -v " 0 errors" | wc -l`
- if [ $failures -gt 0 ]; then
- echo "Mark as failed due to valgrind errors"
- errors=1
- fi
- if [ $errors -gt 0 ]; then
- tar czf /tmp/hwsim-tests-$DATE-FAILED-concurrent-valgrind.tar.gz $LOGDIR/$DATE*
- exit 1
- fi
+ VALGRIND=valgrind
+ CONCURRENT=concurrent
+ CONCURRENT_TESTS=-f test_p2p_autogo test_p2p_discovery test_p2p_grpform
+ SUFFIX=-concurrent-valgrind
+ shift
elif [ "x$1" = "xconcurrent" ]; then
- if ! ./start.sh concurrent; then
- echo "Could not start test environment" > $LOGDIR/last-debug
- exit 1
- fi
- DATE=`ls -1tr $LOGDIR | tail -1 | cut -f1 -d-`
- rm $LOGDIR/last-debug
- for i in autogo discovery grpform; do
- ./run-tests.py -l $LOGDIR/$DATE-run-$i $DB -e $LOGDIR/$DATE-failed-$i -r $LOGDIR/results.txt -f test_p2p_$i || errors=1
- cat $LOGDIR/$DATE-run-$i >> $LOGDIR/last-debug
- done
- ./stop-wifi.sh
- if [ $errors -gt 0 ]; then
- tar czf /tmp/hwsim-tests-$DATE-FAILED-concurrent.tar.gz $LOGDIR/$DATE*
- exit 1
- fi
+ CONCURRENT=concurrent
+ CONCURRENT_TESTS=-f test_p2p_autogo test_p2p_discovery test_p2p_grpform
+ unset VALGRIND
+ SUFFIX=-concurrent
+ shift
elif [ "x$1" = "xvalgrind" ]; then
- if ! ./start.sh valgrind; then
+ VALGRIND=valgrind
+ unset CONCURRENT
+ unset CONCURRENT_TESTS
+ SUFFIX=-valgrind
+ shift
+else
+ unset VALGRIND
+ unset CONCURRENT
+ unset CONCURRENT_TESTS
+ SUFFIX=
+fi
+
+if [ "x$1" = "xtrace" ] ; then
+ TRACE=trace
+ SUFFIX=$SUFFIX-trace
+else
+ unset TRACE
+fi
+
+if ! ./start.sh $CONCURRENT $VALGRIND $TRACE; then
echo "Could not start test environment" > $LOGDIR/last-debug
exit 1
- fi
- DATE=`ls -1tr $LOGDIR | tail -1 | cut -f1 -d-`
- ./run-tests.py -l $LOGDIR/$DATE-run $DB -e $LOGDIR/$DATE-failed -r $LOGDIR/results.txt || errors=1
- cat $LOGDIR/$DATE-run > $LOGDIR/last-debug
- ./stop-wifi.sh
+fi
+DATE=`ls -1tr $LOGDIR | tail -1 | cut -f1 -d-`
+rm $LOGDIR/last-debug 2>/dev/null
+RUNTESTS="./run-tests.py -l $LOGDIR/$DATE-run $DB -e $LOGDIR/$DATE-failed -r $LOGDIR/results.txt $CONCURRENT_TESTS"
+
+if [ "$TRACE" != "" ] ; then
+ sudo trace-cmd record -o $LOGDIR/$DATE-trace.dat -e mac80211 -e cfg80211 su $USER -c $RUNTESTS || errors=1
+else
+ $RUNTESTS || errors=1
+fi
+
+
+cat $LOGDIR/$DATE-run >> $LOGDIR/last-debug
+./stop-wifi.sh
+
+if [ ! -z "$VALGRIND" ] ; then
failures=`grep "ERROR SUMMARY" $LOGDIR/$DATE-valgrind-* | grep -v " 0 errors" | wc -l`
if [ $failures -gt 0 ]; then
echo "Mark as failed due to valgrind errors"
errors=1
fi
- if [ $errors -gt 0 ]; then
- tar czf /tmp/hwsim-tests-$DATE-FAILED-valgrind.tar.gz $LOGDIR/$DATE*
- exit 1
- fi
-elif [ "x$1" = "xtrace" ]; then
- if ! ./start.sh trace; then
- echo "Could not start test environment" > $LOGDIR/last-debug
- exit 1
- fi
- DATE=`ls -1tr $LOGDIR | tail -1 | cut -f1 -d-`
- sudo trace-cmd record -o $LOGDIR/$DATE-trace.dat -e mac80211 -e cfg80211 su $USER -c "./run-tests.py -l $LOGDIR/$DATE-run $DB -e $LOGDIR/$DATE-failed -r $LOGDIR/results.txt" || errors=1
- if [ -e $LOGDIR/$DATE-failed ]; then
- error=1
- fi
- sudo chown $USER $LOGDIR/$DATE-trace.dat
- cat $LOGDIR/$DATE-run > $LOGDIR/last-debug
- ./stop-wifi.sh
- if [ $errors -gt 0 ]; then
- tar czf /tmp/hwsim-tests-$DATE-FAILED-trace.tar.gz $LOGDIR/$DATE*
- exit 1
- fi
-else
- if ! ./start.sh; then
- echo "Could not start test environment" > $LOGDIR/last-debug
- exit 1
- fi
- DATE=`ls -1tr $LOGDIR | tail -1 | cut -f1 -d-`
- ./run-tests.py -l $LOGDIR/$DATE-run $DB -e $LOGDIR/$DATE-failed -r $LOGDIR/results.txt || errors=1
- cat $LOGDIR/$DATE-run > $LOGDIR/last-debug
- ./stop-wifi.sh
- if [ $errors -gt 0 ]; then
- tar czf /tmp/hwsim-tests-$DATE-FAILED.tar.gz $LOGDIR/$DATE*
- exit 1
- fi
+fi
+if [ $errors -gt 0 ]; then
+ tar czf /tmp/hwsim-tests-$DATE-FAILED$SUFFIX.tar.gz $LOGDIR/$DATE*
+ exit 1
fi
echo "ALL-PASSED"
diff --git a/tests/hwsim/run-tests.py b/tests/hwsim/run-tests.py
index 9644b4a..d9a135d 100755
--- a/tests/hwsim/run-tests.py
+++ b/tests/hwsim/run-tests.py
@@ -85,16 +85,16 @@ def main():
parser.add_argument('-b', metavar='<build>', dest='build', help='build ID')
parser.add_argument('-L', action='store_true', dest='update_tests_db',
help='List tests (and update descriptions in DB)')
- parser.add_argument('-f', dest='testmodule', metavar='<test module>',
- help='execute only tests from this test module',
- type=str, choices=[[]] + test_modules)
+ parser.add_argument('-f', dest='testmodules', metavar='<test module>',
+ help='execute only tests from these test modules',
+ type=str, choices=[[]] + test_modules, nargs='+')
parser.add_argument('tests', metavar='<test>', nargs='*', type=str,
help='tests to run (only valid without -f)',
choices=[[]] + test_names)
args = parser.parse_args()
- if args.tests and args.testmodule:
+ if args.tests and args.testmodules:
print 'Invalid arguments - both test module and tests given'
sys.exit(2)
@@ -168,8 +168,8 @@ def main():
if args.tests:
if not t.__name__ in args.tests:
continue
- if args.testmodule:
- if not t.__module__ == args.testmodule:
+ if args.testmodules:
+ if not t.__module__ in args.testmodules:
continue
reset_devs(dev, apdev)
logger.info("START " + t.__name__)
--
1.8.4.rc3
More information about the Hostap
mailing list