Test java.util Collections tests using guava-testlib.
Based on Guava 20.0 jars from https://github.com/google/guava/releases
Notes:
- guava-testlib 20.0 has tests for OpenJDK 7 APIs only.
- Due to bug 33068110, the classes with the suite() methods need to
extend TestSuite, so they need to use delegation to delegate to
the guava-testlib classes which don't extend TestSuite.
- Per ABI, the entire suite involves well over 226,608 test methods
invocations and tens of thousands of TestSuite objects. JUnit holds
on to these objects throughout, which leads to the test process
running out of its ~ 250 MBytes of heap memory part way through
running the test. Therefore I needed to break up the CTS module
into five chunks that run consecutively, with tests for:
1.) ConcurrentSkipListMap, natural order
2.) ConcurrentSkipListMap, custom order (Comparator)
3.) TreeMap, natural order
4.) TreeMap, custom order (Comparator)
5.) everything else
1.-4.) are > 50k test method invocations each, 5.) is another ~ 37k.
cts-tradefed run these in reverse order and outputs an incorrect
total number of tests to run because it only counts the chunks
run so far. So it will initially claim that 36,730 tests will run
and only arrive at the correct number of 226,608 tests when
running the last chunk. There is also a pause between each chunk
(while it discovers the tests for the next chunk) which can lead
to confusion.
The SortedMap/NavigableMap implementations make up the bulk because of
the combinatorial explosion of exhaustively testing combinations of:
{ bounded/unbounded } x {head/tail} submap x { keySet, values }
x multiple map sizes x { multiple test methods } x ...
Altogether they take 43min to run on one ABI on Nexus6P.
Test: cts-tradefed run cts -m CtsLibcoreJavaUtilCollectionsTestCases \
-a arm64-v8a
Bug: 16149939
Change-Id: Ia74f2a46a416c521107d2c1974cc7db43f78e6a5
14 files changed