diff --git a/services/core/java/com/android/server/PackageWatchdog.java b/services/core/java/com/android/server/PackageWatchdog.java index 919d3d02ba78e..16bc794dd36ad 100644 --- a/services/core/java/com/android/server/PackageWatchdog.java +++ b/services/core/java/com/android/server/PackageWatchdog.java @@ -994,7 +994,8 @@ public class PackageWatchdog { * Health check is enabled or disabled after reading the flags * from DeviceConfig. */ - private void updateConfigs() { + @VisibleForTesting + void updateConfigs() { synchronized (mLock) { mTriggerFailureCount = DeviceConfig.getInt( DeviceConfig.NAMESPACE_ROLLBACK, diff --git a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java index 9d4b74d4253aa..5381009fdf2b9 100644 --- a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java +++ b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java @@ -98,6 +98,8 @@ public class PackageWatchdogTest { private final TestClock mTestClock = new TestClock(); private TestLooper mTestLooper; private Context mSpyContext; + // Keep track of all created watchdogs to apply device config changes + private List mAllocatedWatchdogs; @Mock private ConnectivityModuleConnector mConnectivityModuleConnector; @Mock @@ -166,12 +168,15 @@ public class PackageWatchdogTest { DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ROLLBACK, PackageWatchdog.PROPERTY_WATCHDOG_TRIGGER_FAILURE_COUNT, Integer.toString(PackageWatchdog.DEFAULT_TRIGGER_FAILURE_COUNT), false); + + mAllocatedWatchdogs = new ArrayList<>(); } @After public void tearDown() throws Exception { dropShellPermissions(); mSession.finishMocking(); + mAllocatedWatchdogs.clear(); } @Test @@ -1295,11 +1300,9 @@ public class PackageWatchdogTest { DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ROLLBACK, PackageWatchdog.PROPERTY_WATCHDOG_EXPLICIT_HEALTH_CHECK_ENABLED, Boolean.toString(enabled), /*makeDefault*/false); - //give time for DeviceConfig to broadcast the property value change - try { - Thread.sleep(SHORT_DURATION); - } catch (InterruptedException e) { - fail("Thread.sleep unexpectedly failed!"); + // Call updateConfigs() so device config changes take effect immediately + for (PackageWatchdog watchdog : mAllocatedWatchdogs) { + watchdog.updateConfigs(); } } @@ -1348,6 +1351,7 @@ public class PackageWatchdogTest { verify(mConnectivityModuleConnector).registerHealthListener( mConnectivityModuleCallbackCaptor.capture()); } + mAllocatedWatchdogs.add(watchdog); return watchdog; }