[Lldb-commits] [Diffusion] rL238467: Refactor test runner to print sub-test-case pass/fail rate.

Dawn Perchik via lldb-commits lldb-commits at lists.llvm.org
Mon Aug 24 14:15:38 PDT 2015


dawn accepted this commit.
dawn added a comment.

After some investigation, it appears your patch may have simply exposed an existing bug, so in one sense I owe an appology, but in another, your patch made that bug impossible to workaround. :) Before your change, it was possible to count the total tests run via adding up all the Ns in the lines:

  Ran N tests in .*

and this would give the correct total.  But after your change, these lines were no longer getting printed, forcing one to depend on the final count from:

  Ran N test cases .*

Which is wrong, as I'll explain below.  Below I've done a comparison between dosep and dotest on a narrowed subset of tests to show how dosep can omit the test cases from a test suite in its count.

Tested on subset of lldb/test with just the following directories/files (i.e. all others directories/files were removed):

      test/make
      test/pexpect-2.4
      test/plugins
      test/types
      test/unittest2
  # The .py files kept in test/types are as follows (so test/types/TestIntegerTypes.py* was removed):
      test/types/AbstractBase.py
      test/types/HideTestFailures.py
      test/types/TestFloatTypes.py
      test/types/TestFloatTypesExpr.py
      test/types/TestIntegerTypesExpr.py
      test/types/TestRecursiveTypes.py

Tests were run in the lldb/test directory using the following commands:

  dotest:
      ./dotest.py -v
  dosep:
      ./dosep.py -s --options "-v"

Comparing the test case totals, dotest correctly counts 46, but dosep counts only 16:

  dotest:
      Ran 46 tests in 75.934s
  dosep:
      Testing: 23 tests, 4 threads ## note: this number changes randonmly
      Ran 6 tests in 7.049s
      [PASSED TestFloatTypes.py] - 1 out of 23 test suites processed
      Ran 6 tests in 11.165s
      [PASSED TestFloatTypesExpr.py] - 2 out of 23 test suites processed
      Ran 30 tests in 54.581s ## FIXME: not counted?
      [PASSED TestIntegerTypesExpr.py] - 3 out of 23 test suites processed
      Ran 4 tests in 3.212s
      [PASSED TestRecursiveTypes.py] - 4 out of 23 test suites processed
      Ran 4 test suites (0 failed) (0.000000%)
      Ran 16 test cases (0 failed) (0.000000%)

With test/types/TestIntegerTypesExpr.py* removed, both correctly count 16 test cases:

  dosep:
      Testing: 16 tests, 4 threads
      Ran 6 tests in 7.059s
      Ran 6 tests in 11.186s
      Ran 4 tests in 3.241s
      Ran 3 test suites (0 failed) (0.000000%)
      Ran 16 test cases (0 failed) (0.000000%)

In rev.238454 (before your change), results didn't count the number of test
cases, but the test suite count is wrong.  Running dosep on the above test
subset but with all tests in types (i.e. adding back TestIntegerTypes.py so we
have 5 tests in types), we get:

  dosep:
      Ran 6 tests in 7.871s
      Ran 6 tests in 13.812s
      Ran 30 tests in 36.102s
      Ran 30 tests in 64.063s
      Ran 4 tests.

It seems now that, with dosep's -s option, we can once again see the output:

  Ran N tests in .*

So counting the totals via:

  ./dosep.py -s --options "-v --executable $INSTALLDIR/bin/lldb" 2>&1 | tee test_out.log || true
  export total=`grep -E "^Ran [0-9]+ tests? in" test_out.log | awk '{count+=$2} END {print count}'`

works once again.

BTW, what about tests that time out?  I don't see where dosep will report any information about tests which time out.

Note: I couldn't compare the test counts on all the tests because of the concern raised in http://reviews.llvm.org/rL237053.  That is, dotest can no longer complete the tests, as all test suites fail after test case 898: test_disassemble_invalid_vst_1_64_raw_data get ERRORs.  I don't think that issue is related to problems in dosep, but I could be wrong.

Note also: When running dotest on earlier sources, it can hang on several tests.
To work around this, delete these tests from lldb/test:

  rm -rf ./functionalities/thread/create_after_attach/TestCreateAfterAttach.py*
  rm -rf ./functionalities/plugins/python_os_plugin/TestPythonOSPlugin.py*
  rm -rf ./functionalities/unwind/sigtramp/TestSigtrampUnwind.py*
  rm -rf ./test/macosx/queues/TestQueues.py*
  rm -rf ./test/functionalities/inferior-crashing/TestInferiorCrashing.py*

In summary, dosep is unable to count the test cases correctly, but this problem existed before your change, and I'm happy that I'm able to use my workaround again.  It would be nice to get that fixed someday, as well as see information about the tests that timed out.

Thanks,
-Dawn


Users:
  zturner (Author)
  dawn (Auditor)

http://reviews.llvm.org/rL238467





More information about the lldb-commits mailing list