| ActivityManagerPerfTests |
| |
| Performance tests for various ActivityManager components, e.g. Services, Broadcasts |
| |
| Command to run tests (not working yet, atest seems buggy) |
| * atest .../frameworks/base/tests/ActivityManagerPerfTests |
| * m ActivityManagerPerfTests ActivityManagerPerfTestsTestApp && \ |
| adb install $OUT/data/app/ActivityManagerPerfTests/ActivityManagerPerfTests.apk && \ |
| adb install $OUT/data/app/ActivityManagerPerfTestsTestApp/ActivityManagerPerfTestsTestApp.apk && \ |
| adb shell am instrument -w \ |
| com.android.frameworks.perftests.amtests/android.support.test.runner.AndroidJUnitRunner |
| |
| Overview |
| * The numbers we are trying to measure are end-to-end numbers |
| * For example, the time it takes from sending an Intent to start a Service |
| to the time the Service runs its callbacks |
| * System.nanoTime() is monotonic and consistent between processes, so we use that for measuring time |
| * To make sure the test app is running, we start an Activity |
| * If the test app is involved, it will measure the time and send it back to the instrumentation test |
| * The time is sent back through a Binder interface in the Intent |
| * Each sent time is tagged with an id since there can be multiple events that send back a time |
| * For example, one is sent when the Activity is started, and another could be sent when a |
| Broadcast is received |
| |
| Structure |
| * tests |
| * Instrumentation test which runs the various performance tests and reports the results |
| |
| * test-app |
| * Target package which contains the Services, BroadcastReceivers, etc. to test against |
| * Sends the time it measures back to the test package |
| |
| * utils |
| * Utilities that both the instrumentation test and test app can use |