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

Commit 5a8cc723 authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Fix CTS tests failing due to job throttling

Instrumentation package should be immediately marked as active so
that the jobs aren't throttled.

Also, make sure special apps' buckets are correctly initialized.

Fixes: 68900608
Fixes: 69799327
Fixes: 69793822
Fixes: 69788489

Test: atest CtsNetSecPolicyUsesCleartextTrafficTrueTestCases
      atest FrameworksServicesTests:AppIdleHistoryTests
      atest FrameworksServicesTests:AppStandbyControllerTests
      atest CtsNetSecPolicyUsesCleartextTrafficUnspecifiedTestCases
      atest CtsNetSecConfigDownloadManagerTestCases
      atest CtsNetSecPolicyUsesCleartextTrafficFalseTestCases
      cts-tradefed run cts-dev -m CtsAppUsageHostTestCases
      cts-tradefed run cts-dev -m CtsHostsideNetworkTests
      gts-tradefed run gts-dev -m GtsUsageStatsTestCases

Change-Id: Ic880b6f5ed1fdb7912613e882ccf7b2d4e388159
parent 1229bed2
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -250,6 +250,7 @@ import android.app.assist.AssistStructure;
import android.app.backup.IBackupManager;
import android.app.servertransaction.ConfigurationChangeItem;
import android.app.usage.UsageEvents;
import android.app.usage.UsageStats;
import android.app.usage.UsageStatsManagerInternal;
import android.appwidget.AppWidgetManager;
import android.content.ActivityNotFoundException;
@@ -20168,6 +20169,11 @@ public class ActivityManagerService extends IActivityManager.Stub
            // Instrumentation can kill and relaunch even persistent processes
            forceStopPackageLocked(ii.targetPackage, -1, true, false, true, true, false, userId,
                    "start instr");
            // Inform usage stats to make the target package active
            if (mUsageStatsService != null) {
                mUsageStatsService.reportEvent(ii.targetPackage, userId,
                        UsageEvents.Event.SYSTEM_INTERACTION);
            }
            ProcessRecord app = addAppLocked(ai, defProcess, false, abiOverride);
            app.instr = activeInstr;
            activeInstr.mFinished = false;
+14 −2
Original line number Diff line number Diff line
@@ -16,10 +16,12 @@

package com.android.server.usage;

import static android.app.usage.UsageStatsManager.REASON_DEFAULT;
import static android.app.usage.UsageStatsManager.REASON_FORCED;
import static android.app.usage.UsageStatsManager.REASON_TIMEOUT;
import static android.app.usage.UsageStatsManager.REASON_USAGE;
import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_ACTIVE;
import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_EXEMPTED;
import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_FREQUENT;
import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_RARE;
import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_WORKING_SET;
@@ -378,8 +380,12 @@ public class AppStandbyController {
                    Slog.d(TAG, "   Checking idle state for " + packageName);
                }
                if (isSpecial) {
                    synchronized (mAppIdleLock) {
                        mAppIdleHistory.setAppStandbyBucket(packageName, userId, elapsedRealtime,
                                STANDBY_BUCKET_EXEMPTED, REASON_DEFAULT);
                    }
                    maybeInformListeners(packageName, userId, elapsedRealtime,
                            STANDBY_BUCKET_ACTIVE);
                            STANDBY_BUCKET_EXEMPTED);
                } else {
                    synchronized (mAppIdleLock) {
                        String bucketingReason = mAppIdleHistory.getAppStandbyReason(packageName,
@@ -389,7 +395,8 @@ public class AppStandbyController {
                            continue;
                        }
                        // If the bucket was moved up due to usage, let the timeouts apply.
                        if (REASON_USAGE.equals(bucketingReason)
                        if (REASON_DEFAULT.equals(bucketingReason)
                                || REASON_USAGE.equals(bucketingReason)
                                || REASON_TIMEOUT.equals(bucketingReason)) {
                            int oldBucket = mAppIdleHistory.getAppStandbyBucket(packageName, userId,
                                    elapsedRealtime);
@@ -886,6 +893,11 @@ public class AppStandbyController {
                String packageName = pi.packageName;
                if (pi.applicationInfo != null && pi.applicationInfo.isSystemApp()) {
                    mAppIdleHistory.reportUsage(packageName, userId, elapsedRealtime);
                    if (isAppSpecial(packageName, UserHandle.getAppId(pi.applicationInfo.uid),
                            userId)) {
                        mAppIdleHistory.setAppStandbyBucket(packageName, userId, elapsedRealtime,
                                STANDBY_BUCKET_EXEMPTED, REASON_DEFAULT);
                    }
                }
            }
        }