Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 38d362ca authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "iorap: AppLaunch - wait for background job to complete." into rvc-dev

parents cbd80ea0 fcbe6c43
Loading
Loading
Loading
Loading
+23 −4
Original line number Diff line number Diff line
@@ -510,15 +510,18 @@ public class AppLaunch extends InstrumentationTestCase {
     * based on status of the compilation command.
     */
    private boolean compileAppForIorap(String appPkgName) throws IOException {
        String logcatTimestamp = getTimeNowForLogcat();

        getInstrumentation().getUiAutomation().
                executeShellCommand(IORAP_COMPILE_CMD);

        for (int i = 0; i < IORAP_COMPILE_CMD_TIMEOUT; ++i) {
        int i = 0;
        for (i = 0; i < IORAP_COMPILE_CMD_TIMEOUT; ++i) {
            IorapCompilationStatus status = waitForIorapCompiled(appPkgName);
            if (status == IorapCompilationStatus.COMPLETE) {
                Log.v(TAG, "compileAppForIorap: success");
                logDumpsysIorapd(appPkgName);
                return true;
                break;
            } else if (status == IorapCompilationStatus.INSUFFICIENT_TRACES) {
                Log.e(TAG, "compileAppForIorap: failed due to insufficient traces");
                logDumpsysIorapd(appPkgName);
@@ -527,11 +530,27 @@ public class AppLaunch extends InstrumentationTestCase {
            sleep(1000);
        }

        if (i == IORAP_COMPILE_CMD_TIMEOUT) {
            Log.e(TAG, "compileAppForIorap: failed due to timeout");
            logDumpsysIorapd(appPkgName);
            return false;
        }

        // Wait for the job to finish completely.
        // Other packages could be compiled in cyclic runs.
        int currentAttempt = 0;
        do {
            String logcatLines = getLogcatSinceTime(logcatTimestamp);
            if (logcatLines.contains("IorapForwardingService: Finished background job")) {
                return true;
            }
            sleep(1000);
        } while (currentAttempt++ < IORAP_COMPILE_CMD_TIMEOUT);

        Log.e(TAG, "compileAppForIorap: failed due to jobscheduler timeout.");
        return false;
    }

    /** Save the contents of $(adb shell dumpsys iorapd) to the launch_logs directory. */
    private void logDumpsysIorapd(String packageName) throws IOException {
        InstrumentationTestRunner instrumentation =