summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Gavin Corkery <gavincorkery@google.com> 2020-03-12 13:24:18 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-03-12 13:24:18 +0000
commite3f3fd1e4f251e44abeedf84f8547de823ef0813 (patch)
treed80d2ea29dcb1ae9fa8b5b3b0baee15c203b46c7
parent507be52dc7d41a0ee10ea89ce55d7d816935bf2a (diff)
parent56b46738d79cc7725358edab03ae3fb02e74eef4 (diff)
Merge "Revert "Only sync requests when there are changes to report"" into rvc-dev
-rw-r--r--services/core/java/com/android/server/PackageWatchdog.java18
-rw-r--r--tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java52
2 files changed, 5 insertions, 65 deletions
diff --git a/services/core/java/com/android/server/PackageWatchdog.java b/services/core/java/com/android/server/PackageWatchdog.java
index 2cfe404f8c6f..b464422e9e3d 100644
--- a/services/core/java/com/android/server/PackageWatchdog.java
+++ b/services/core/java/com/android/server/PackageWatchdog.java
@@ -161,9 +161,6 @@ public class PackageWatchdog {
private final Runnable mSaveToFile = this::saveToFile;
private final SystemClock mSystemClock;
private final BootThreshold mBootThreshold;
- // The set of packages that have been synced with the ExplicitHealthCheckController
- @GuardedBy("mLock")
- private Set<String> mRequestedHealthCheckPackages = new ArraySet<>();
@GuardedBy("mLock")
private boolean mIsPackagesReady;
// Flag to control whether explicit health checks are supported or not
@@ -627,22 +624,17 @@ public class PackageWatchdog {
* @see #syncRequestsAsync
*/
private void syncRequests() {
- boolean syncRequired = false;
+ Set<String> packages = null;
synchronized (mLock) {
if (mIsPackagesReady) {
- Set<String> packages = getPackagesPendingHealthChecksLocked();
- if (!packages.equals(mRequestedHealthCheckPackages)) {
- syncRequired = true;
- mRequestedHealthCheckPackages = packages;
- }
+ packages = getPackagesPendingHealthChecksLocked();
} // else, we will sync requests when packages become ready
}
// Call outside lock to avoid holding lock when calling into the controller.
- if (syncRequired) {
- Slog.i(TAG, "Syncing health check requests for packages: "
- + mRequestedHealthCheckPackages);
- mHealthCheckController.syncRequests(mRequestedHealthCheckPackages);
+ if (packages != null) {
+ Slog.i(TAG, "Syncing health check requests for packages: " + packages);
+ mHealthCheckController.syncRequests(packages);
}
}
diff --git a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
index 819fc020e397..8cc8cf4d2a97 100644
--- a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
+++ b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
@@ -1063,52 +1063,6 @@ public class PackageWatchdogTest {
assertThat(bootObserver2.mitigatedBootLoop()).isFalse();
}
- /**
- * Test to verify that Package Watchdog syncs health check requests with the controller
- * correctly, and that the requests are only synced when the set of observed packages
- * changes.
- */
- @Test
- public void testSyncHealthCheckRequests() {
- TestController testController = spy(TestController.class);
- testController.setSupportedPackages(List.of(APP_A, APP_B, APP_C));
- PackageWatchdog watchdog = createWatchdog(testController, true);
-
- TestObserver testObserver1 = new TestObserver(OBSERVER_NAME_1);
- watchdog.registerHealthObserver(testObserver1);
- watchdog.startObservingHealth(testObserver1, List.of(APP_A), LONG_DURATION);
- mTestLooper.dispatchAll();
-
- TestObserver testObserver2 = new TestObserver(OBSERVER_NAME_2);
- watchdog.registerHealthObserver(testObserver2);
- watchdog.startObservingHealth(testObserver2, List.of(APP_B), LONG_DURATION);
- mTestLooper.dispatchAll();
-
- TestObserver testObserver3 = new TestObserver(OBSERVER_NAME_3);
- watchdog.registerHealthObserver(testObserver3);
- watchdog.startObservingHealth(testObserver3, List.of(APP_C), LONG_DURATION);
- mTestLooper.dispatchAll();
-
- watchdog.unregisterHealthObserver(testObserver1);
- mTestLooper.dispatchAll();
-
- watchdog.unregisterHealthObserver(testObserver2);
- mTestLooper.dispatchAll();
-
- watchdog.unregisterHealthObserver(testObserver3);
- mTestLooper.dispatchAll();
-
- List<Set> expectedSyncRequests = List.of(
- Set.of(APP_A),
- Set.of(APP_A, APP_B),
- Set.of(APP_A, APP_B, APP_C),
- Set.of(APP_B, APP_C),
- Set.of(APP_C),
- Set.of()
- );
- assertThat(testController.getSyncRequests()).isEqualTo(expectedSyncRequests);
- }
-
private void adoptShellPermissions(String... permissions) {
InstrumentationRegistry
.getInstrumentation()
@@ -1265,7 +1219,6 @@ public class PackageWatchdogTest {
private Consumer<String> mPassedConsumer;
private Consumer<List<PackageConfig>> mSupportedConsumer;
private Runnable mNotifySyncRunnable;
- private List<Set> mSyncRequests = new ArrayList<>();
@Override
public void setEnabled(boolean enabled) {
@@ -1285,7 +1238,6 @@ public class PackageWatchdogTest {
@Override
public void syncRequests(Set<String> packages) {
- mSyncRequests.add(packages);
mRequestedPackages.clear();
if (mIsEnabled) {
packages.retainAll(mSupportedPackages);
@@ -1316,10 +1268,6 @@ public class PackageWatchdogTest {
return Collections.emptyList();
}
}
-
- public List<Set> getSyncRequests() {
- return mSyncRequests;
- }
}
private static class TestClock implements PackageWatchdog.SystemClock {