• Erik Chen's avatar
    Add Android OOP HP end-to-end tests. · e0b4355f
    Erik Chen authored
    This CL has three components:
      1) The bulk of the logic in OOP HP was refactored into ProfilingTestDriver.
      2) Adds a java instrumentation test, along with a JNI shim that forwards into
      ProfilingTestDriver.
      3) Creates a new apk: chrome_public_apk_for_test that contains the same
      content as chrome_public_apk, as well as native files needed for (2).
      chrome_public_apk_test now targets chrome_public_apk_for_test instead of
      chrome_public_apk.
    
    Other ideas, discarded:
      * Originally, I attempted to make the browser_tests target runnable on
      Android. The primary problem is that native test harness cannot fork
      or spawn processes. This is difficult to solve.
    
    More details on each of the components:
    (1) ProfilingTestDriver
      * The TracingController test was migrated to use ProfilingTestDriver, but the
      write-to-file test was left as-is. The latter behavior will likely be phased
      out, but I'll clean that up in a future CL.
      * gtest isn't supported for Android instrumentation tests. ProfilingTestDriver
      has a single function RunTest that returns a 'bool' indicating success. On
      failure, the class uses LOG(ERROR) to print the nature of the error. This will
      cause the error to be printed out on browser_test error. On instrumentation
      test failure, the error will be forwarded to logcat, which is available on all
      infra bot test runs.
    (2) Instrumentation test
      * For now, I only added a single test for the "browser" mode. Furthermore, I'm
      only testing the start with command-line path.
    (3) New apk
      * libchromefortest is a new shared library that contains all content from
      libchrome, but also contains native sources for the JNI shim.
      * chrome_public_apk_for_test is a new apk that contains all content from
      chrome_public_apk, but uses a single shared library libchromefortest rather
      than libchrome. This also contains java sources for the JNI shim.
      * There is no way to just add a second shared library to chrome_public_apk
      that just contains the native sources from the JNI shim without causing ODR
      issues.
      * chrome_public_test_apk now has apk_under_test = chrome_public_apk_for_test.
      * There is no way to add native JNI sources as a shared library to
      chrome_public_test_apk without causing ODR issues.
    
    Finally, this CL drastically increases the timeout to wait for native
    initialization. The previous timeout was 2 *
    CriteriaHelper.DEFAULT_MAX_TIME_TO_POLL, which flakily failed for this test.
    This suggests that this step/timeout is generally flaky. I increased the timeout
    to 20 * CriteriaHelper.DEFAULT_MAX_TIME_TO_POLL.
    
    Bug: 753218
    Change-Id: Ic224b7314fff57f1770a4048aa5753f54e040b55
    Reviewed-on: https://chromium-review.googlesource.com/770148
    Commit-Queue: Erik Chen <erikchen@chromium.org>
    Reviewed-by: default avatarJohn Budorick <jbudorick@chromium.org>
    Reviewed-by: default avatarBrett Wilson <brettw@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#517541}
    e0b4355f
test_android_shim.h 1.02 KB