1 Native tests for 'perfprofd'. Please run with 'runtest perfprofd' 2 (a.k.a. "$ANDROID_BUILD_TOP"/development/testrunner/runtest.py). 3 4 Notes: 5 6 1. One of the testpoints in this test suite performs a live 'perf' 7 run on the device; before invoking the test be sure that 'perf' 8 has been built and installed on the device in /system/bin/perf 9 10 2. The daemon under test, perfprofd, is broken into a main function, a 11 "core" library, and a "utils library. Picture: 12 13 +-----------+ perfprofdmain.o 14 | perfprofd | 15 | main() | 1-liner; calls perfprofd_main() 16 +-----------+ 17 | 18 v 19 +-----------+ perfprofdcore.a 20 | perfprofd | 21 | core | most of the interesting code is here; 22 | | calls into utils library when for 23 +-----------+ operations such as sleep, log, etc 24 | 25 v 26 +-----------+ perfprofdutils.a 27 | perfprofd | 28 | utils | real implementations of perfprofd_sleep, 29 | | perfprofd_log_* etc 30 +-----------+ 31 32 Because the daemon tends to spend a lot of time sleeping/waiting, 33 it is impractical to try to test it directly. Instead we insert a 34 mock utilities layer and then have a test driver that invokes the 35 daemon main function. Picture for perfprofd_test: 36 37 +----------------+ perfprofd_test.cc 38 | perfprofd_test | 39 | | makes calls into perfprofd_main(), 40 +----------------+ then verifies behavior 41 | 42 v 43 +-----------+ perfprofdcore.a 44 | perfprofd | 45 | core | same as above 46 +-----------+ 47 | 48 v 49 +-----------+ perfprofdmockutils.a 50 | perfprofd | 51 | mockutils | mock implementations of perfprofd_sleep, 52 | | perfprofd_log_* etc 53 +-----------+ 54 55 The mockup versions of perfprofd_sleep() and perfprofd_log_* do 56 simply log the fact that they are called; the test driver can 57 then examine the log to make sure that the daemon is doing 58 what it is supposed to be doing. 59