run-all.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. #!/bin/sh
  2. errors=0
  3. umask 0002
  4. DATE="$(date +%s)"
  5. unset LOGBASEDIR
  6. if [ -z "$LOGDIR" ]; then
  7. LOGBASEDIR=logs
  8. LOGDIR=$LOGBASEDIR/$DATE
  9. mkdir -p $LOGDIR
  10. fi
  11. export LOGDIR
  12. if [ -z "$DBFILE" ]; then
  13. DB=""
  14. else
  15. DB="-S $DBFILE --commit $(git rev-parse HEAD)"
  16. if [ -n "$BUILD" ]; then
  17. DB="$DB -b $BUILD"
  18. fi
  19. if [ "$PREFILL_DB" = "y" ] ; then
  20. DB="$DB --prefill-tests"
  21. fi
  22. fi
  23. unset VALGRIND
  24. unset TRACE
  25. unset TRACE_ARGS
  26. unset RUN_TEST_ARGS
  27. unset BUILD
  28. unset BUILD_ARGS
  29. unset CODECOV
  30. while [ "$1" != "" ]; do
  31. case $1 in
  32. -v | --valgrind | valgrind)
  33. shift
  34. echo "$0: using valgrind"
  35. VALGRIND=valgrind
  36. ;;
  37. -t | --trace | trace)
  38. shift
  39. echo "$0: using Trace"
  40. TRACE=trace
  41. ;;
  42. -n | --channels)
  43. shift
  44. NUM_CH=$1
  45. shift
  46. echo "$0: using channels=$NUM_CH"
  47. ;;
  48. -B | --build)
  49. shift
  50. echo "$0: build before running tests"
  51. BUILD=build
  52. ;;
  53. -c | --codecov)
  54. shift
  55. echo "$0: using code coverage"
  56. CODECOV=lcov
  57. BUILD_ARGS=-c
  58. ;;
  59. *)
  60. RUN_TEST_ARGS="$RUN_TEST_ARGS$1 "
  61. shift
  62. ;;
  63. esac
  64. done
  65. if [ ! -z "$RUN_TEST_ARGS" ]; then
  66. echo "$0: passing the following args to run-tests.py: $RUN_TEST_ARGS"
  67. fi
  68. unset SUFFIX
  69. if [ ! -z "$BUILD" ]; then
  70. SUFFIX=-build
  71. fi
  72. if [ ! -z "$VALGRIND" ]; then
  73. SUFFIX=$SUFFIX-valgrind
  74. fi
  75. if [ ! -z "$TRACE" ]; then
  76. SUFFIX=$SUFFIX-trace
  77. TRACE_ARGS="-T"
  78. fi
  79. if [ ! -z "$CODECOV" ]; then
  80. SUFFIX=$SUFFIX-codecov
  81. fi
  82. if [ ! -z "$BUILD" ]; then
  83. echo "Building with args=$BUILD_ARGS"
  84. if ! ./build.sh $BUILD_ARGS; then
  85. echo "Failed building components"
  86. exit 1
  87. fi
  88. fi
  89. if ! ./start.sh $VALGRIND $TRACE $NUM_CH; then
  90. if ! [ -z "$LOGBASEDIR" ] ; then
  91. echo "Could not start test environment" > $LOGDIR/run
  92. fi
  93. exit 1
  94. fi
  95. sudo ./run-tests.py -D --logdir "$LOGDIR" $TRACE_ARGS -q $DB $RUN_TEST_ARGS || errors=1
  96. ./stop.sh
  97. if [ ! -z "$VALGRIND" ] ; then
  98. failures=`grep "ERROR SUMMARY" $LOGDIR/valgrind-* | grep -v " 0 errors" | wc -l`
  99. if [ $failures -gt 0 ]; then
  100. echo "Mark as failed due to valgrind errors"
  101. errors=1
  102. fi
  103. fi
  104. if [ ! -z "$CODECOV" ] ; then
  105. lcov -q --capture --directory ../../wpa_supplicant --output-file $LOGDIR/wpas_lcov.info
  106. genhtml -q $LOGDIR/wpas_lcov.info --output-directory $LOGDIR/wpas_lcov
  107. lcov -q --capture --directory ../../hostapd --output-file $LOGDIR/hostapd_lcov.info
  108. genhtml -q $LOGDIR/hostapd_lcov.info --output-directory $LOGDIR/hostapd_lcov
  109. fi
  110. if [ $errors -gt 0 ]; then
  111. tar czf /tmp/hwsim-tests-$DATE-FAILED$SUFFIX.tar.gz $LOGDIR/
  112. exit 1
  113. fi
  114. echo "ALL-PASSED"