Merge "Fix flaky tests in NetworkPolicyManagerServiceTest." into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
8c85b1d0b7
@@ -432,7 +432,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
mListeners = new RemoteCallbackList<>();
|
mListeners = new RemoteCallbackList<>();
|
||||||
|
|
||||||
final Handler mHandler;
|
final Handler mHandler;
|
||||||
final Handler mUidEventHandler;
|
@VisibleForTesting
|
||||||
|
public final Handler mUidEventHandler;
|
||||||
|
|
||||||
private final ServiceThread mUidEventThread;
|
private final ServiceThread mUidEventThread;
|
||||||
|
|
||||||
|
|||||||
@@ -223,11 +223,16 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
|
|
||||||
private IUidObserver mUidObserver;
|
private IUidObserver mUidObserver;
|
||||||
private INetworkManagementEventObserver mNetworkObserver;
|
private INetworkManagementEventObserver mNetworkObserver;
|
||||||
private PowerManagerInternal mPowerManagerInternal;
|
|
||||||
|
|
||||||
private NetworkPolicyListenerAnswer mPolicyListener;
|
private NetworkPolicyListenerAnswer mPolicyListener;
|
||||||
private NetworkPolicyManagerService mService;
|
private NetworkPolicyManagerService mService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In some of the tests while initializing NetworkPolicyManagerService,
|
||||||
|
* ACTION_RESTRICT_BACKGROUND_CHANGED is broadcasted. This is for capturing that broadcast.
|
||||||
|
*/
|
||||||
|
private FutureIntent mFutureIntent;
|
||||||
|
|
||||||
private long mStartTime;
|
private long mStartTime;
|
||||||
private long mElapsedRealtime;
|
private long mElapsedRealtime;
|
||||||
|
|
||||||
@@ -257,14 +262,13 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
|
|
||||||
public final @Rule NetPolicyMethodRule mNetPolicyXmlRule = new NetPolicyMethodRule();
|
public final @Rule NetPolicyMethodRule mNetPolicyXmlRule = new NetPolicyMethodRule();
|
||||||
|
|
||||||
@BeforeClass
|
private void registerLocalServices() {
|
||||||
public static void registerLocalServices() {
|
|
||||||
final PowerManagerInternal powerManager = addLocalServiceMock(PowerManagerInternal.class);
|
|
||||||
when(powerManager.getLowPowerState(anyInt())).thenReturn(mock(PowerSaveState.class));
|
|
||||||
addLocalServiceMock(DeviceIdleController.LocalService.class);
|
addLocalServiceMock(DeviceIdleController.LocalService.class);
|
||||||
|
|
||||||
final UsageStatsManagerInternal usageStats =
|
final UsageStatsManagerInternal usageStats =
|
||||||
addLocalServiceMock(UsageStatsManagerInternal.class);
|
addLocalServiceMock(UsageStatsManagerInternal.class);
|
||||||
when(usageStats.getIdleUidsForUser(anyInt())).thenReturn(new int[]{});
|
when(usageStats.getIdleUidsForUser(anyInt())).thenReturn(new int[]{});
|
||||||
|
|
||||||
mActivityManagerInternal = addLocalServiceMock(ActivityManagerInternal.class);
|
mActivityManagerInternal = addLocalServiceMock(ActivityManagerInternal.class);
|
||||||
|
|
||||||
final PowerSaveState state = new PowerSaveState.Builder()
|
final PowerSaveState state = new PowerSaveState.Builder()
|
||||||
@@ -281,6 +285,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
|
|
||||||
setCurrentTimeMillis(TEST_START);
|
setCurrentTimeMillis(TEST_START);
|
||||||
|
|
||||||
|
registerLocalServices();
|
||||||
// Intercept various broadcasts, and pretend that uids have packages.
|
// Intercept various broadcasts, and pretend that uids have packages.
|
||||||
// Also return mock service instances for a few critical services.
|
// Also return mock service instances for a few critical services.
|
||||||
mServiceContext = new BroadcastInterceptingContext(context) {
|
mServiceContext = new BroadcastInterceptingContext(context) {
|
||||||
@@ -322,6 +327,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
}).when(mActivityManager).registerUidObserver(any(), anyInt(),
|
}).when(mActivityManager).registerUidObserver(any(), anyInt(),
|
||||||
eq(ActivityManager.PROCESS_STATE_UNKNOWN), isNull(String.class));
|
eq(ActivityManager.PROCESS_STATE_UNKNOWN), isNull(String.class));
|
||||||
|
|
||||||
|
mFutureIntent = newRestrictBackgroundChangedFuture();
|
||||||
mService = new NetworkPolicyManagerService(mServiceContext, mActivityManager, mStatsService,
|
mService = new NetworkPolicyManagerService(mServiceContext, mActivityManager, mStatsService,
|
||||||
mNetworkManager, mIpm, mTime, mPolicyDir, true);
|
mNetworkManager, mIpm, mTime, mPolicyDir, true);
|
||||||
mService.bindConnectivityManager(mConnManager);
|
mService.bindConnectivityManager(mConnManager);
|
||||||
@@ -379,6 +385,12 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
public void unregisterLocalServices() throws Exception {
|
public void unregisterLocalServices() throws Exception {
|
||||||
// Registered by NetworkPolicyManagerService's constructor.
|
// Registered by NetworkPolicyManagerService's constructor.
|
||||||
LocalServices.removeServiceForTest(NetworkPolicyManagerInternal.class);
|
LocalServices.removeServiceForTest(NetworkPolicyManagerInternal.class);
|
||||||
|
|
||||||
|
// Added in registerLocalServices()
|
||||||
|
LocalServices.removeServiceForTest(ActivityManagerInternal.class);
|
||||||
|
LocalServices.removeServiceForTest(PowerManagerInternal.class);
|
||||||
|
LocalServices.removeServiceForTest(DeviceIdleController.LocalService.class);
|
||||||
|
LocalServices.removeServiceForTest(UsageStatsManagerInternal.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -393,6 +405,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
@NetPolicyXml("restrict-background-on.xml")
|
@NetPolicyXml("restrict-background-on.xml")
|
||||||
public void testTurnRestrictBackgroundOff() throws Exception {
|
public void testTurnRestrictBackgroundOff() throws Exception {
|
||||||
assertRestrictBackgroundOn(); // Sanity check.
|
assertRestrictBackgroundOn(); // Sanity check.
|
||||||
|
assertRestrictBackgroundChangedReceived(mFutureIntent, null);
|
||||||
final FutureIntent futureIntent = newRestrictBackgroundChangedFuture();
|
final FutureIntent futureIntent = newRestrictBackgroundChangedFuture();
|
||||||
setRestrictBackground(false);
|
setRestrictBackground(false);
|
||||||
assertRestrictBackgroundChangedReceived(futureIntent, null);
|
assertRestrictBackgroundChangedReceived(futureIntent, null);
|
||||||
@@ -405,6 +418,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
@NetPolicyXml("restrict-background-on.xml")
|
@NetPolicyXml("restrict-background-on.xml")
|
||||||
public void testAddRestrictBackgroundWhitelist_restrictBackgroundOn() throws Exception {
|
public void testAddRestrictBackgroundWhitelist_restrictBackgroundOn() throws Exception {
|
||||||
assertRestrictBackgroundOn(); // Sanity check.
|
assertRestrictBackgroundOn(); // Sanity check.
|
||||||
|
assertRestrictBackgroundChangedReceived(mFutureIntent, null);
|
||||||
addRestrictBackgroundWhitelist(true);
|
addRestrictBackgroundWhitelist(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -445,6 +459,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
@NetPolicyXml("uidA-whitelisted-restrict-background-on.xml")
|
@NetPolicyXml("uidA-whitelisted-restrict-background-on.xml")
|
||||||
public void testRemoveRestrictBackgroundWhitelist_restrictBackgroundOn() throws Exception {
|
public void testRemoveRestrictBackgroundWhitelist_restrictBackgroundOn() throws Exception {
|
||||||
assertRestrictBackgroundOn(); // Sanity check.
|
assertRestrictBackgroundOn(); // Sanity check.
|
||||||
|
assertRestrictBackgroundChangedReceived(mFutureIntent, null);
|
||||||
removeRestrictBackgroundWhitelist(true);
|
removeRestrictBackgroundWhitelist(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -564,6 +579,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
@NetPolicyXml("restrict-background-on.xml")
|
@NetPolicyXml("restrict-background-on.xml")
|
||||||
public void testAddRestrictBackgroundBlacklist_restrictBackgroundOn() throws Exception {
|
public void testAddRestrictBackgroundBlacklist_restrictBackgroundOn() throws Exception {
|
||||||
assertRestrictBackgroundOn(); // Sanity check.
|
assertRestrictBackgroundOn(); // Sanity check.
|
||||||
|
assertRestrictBackgroundChangedReceived(mFutureIntent, null);
|
||||||
addRestrictBackgroundBlacklist(false);
|
addRestrictBackgroundBlacklist(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -600,6 +616,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
@NetPolicyXml("uidA-blacklisted-restrict-background-on.xml")
|
@NetPolicyXml("uidA-blacklisted-restrict-background-on.xml")
|
||||||
public void testRemoveRestrictBackgroundBlacklist_restrictBackgroundOn() throws Exception {
|
public void testRemoveRestrictBackgroundBlacklist_restrictBackgroundOn() throws Exception {
|
||||||
assertRestrictBackgroundOn(); // Sanity check.
|
assertRestrictBackgroundOn(); // Sanity check.
|
||||||
|
assertRestrictBackgroundChangedReceived(mFutureIntent, null);
|
||||||
removeRestrictBackgroundBlacklist(false);
|
removeRestrictBackgroundBlacklist(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -635,6 +652,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
public void testBlacklistedAppIsNotNotifiedWhenRestrictBackgroundIsOn() throws Exception {
|
public void testBlacklistedAppIsNotNotifiedWhenRestrictBackgroundIsOn() throws Exception {
|
||||||
// Sanity checks.
|
// Sanity checks.
|
||||||
assertRestrictBackgroundOn();
|
assertRestrictBackgroundOn();
|
||||||
|
assertRestrictBackgroundChangedReceived(mFutureIntent, null);
|
||||||
assertUidPolicy(UID_A, POLICY_REJECT_METERED_BACKGROUND);
|
assertUidPolicy(UID_A, POLICY_REJECT_METERED_BACKGROUND);
|
||||||
|
|
||||||
final FutureIntent futureIntent = newRestrictBackgroundChangedFuture();
|
final FutureIntent futureIntent = newRestrictBackgroundChangedFuture();
|
||||||
@@ -647,6 +665,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
public void testWhitelistedAppIsNotNotifiedWhenRestrictBackgroundIsOn() throws Exception {
|
public void testWhitelistedAppIsNotNotifiedWhenRestrictBackgroundIsOn() throws Exception {
|
||||||
// Sanity checks.
|
// Sanity checks.
|
||||||
assertRestrictBackgroundOn();
|
assertRestrictBackgroundOn();
|
||||||
|
assertRestrictBackgroundChangedReceived(mFutureIntent, null);
|
||||||
assertWhitelistUids(UID_A);
|
assertWhitelistUids(UID_A);
|
||||||
|
|
||||||
final FutureIntent futureIntent = newRestrictBackgroundChangedFuture();
|
final FutureIntent futureIntent = newRestrictBackgroundChangedFuture();
|
||||||
@@ -659,6 +678,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
public void testWhitelistedAppIsNotifiedWhenBlacklisted() throws Exception {
|
public void testWhitelistedAppIsNotifiedWhenBlacklisted() throws Exception {
|
||||||
// Sanity checks.
|
// Sanity checks.
|
||||||
assertRestrictBackgroundOn();
|
assertRestrictBackgroundOn();
|
||||||
|
assertRestrictBackgroundChangedReceived(mFutureIntent, null);
|
||||||
assertWhitelistUids(UID_A);
|
assertWhitelistUids(UID_A);
|
||||||
|
|
||||||
final FutureIntent futureIntent = newRestrictBackgroundChangedFuture();
|
final FutureIntent futureIntent = newRestrictBackgroundChangedFuture();
|
||||||
@@ -741,19 +761,19 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testUidForeground() throws Exception {
|
public void testUidForeground() throws Exception {
|
||||||
// push all uids into background
|
// push all uids into background
|
||||||
mUidObserver.onUidStateChanged(UID_A, ActivityManager.PROCESS_STATE_SERVICE, 0);
|
callOnUidStateChanged(UID_A, ActivityManager.PROCESS_STATE_SERVICE, 0);
|
||||||
mUidObserver.onUidStateChanged(UID_B, ActivityManager.PROCESS_STATE_SERVICE, 0);
|
callOnUidStateChanged(UID_B, ActivityManager.PROCESS_STATE_SERVICE, 0);
|
||||||
assertFalse(mService.isUidForeground(UID_A));
|
assertFalse(mService.isUidForeground(UID_A));
|
||||||
assertFalse(mService.isUidForeground(UID_B));
|
assertFalse(mService.isUidForeground(UID_B));
|
||||||
|
|
||||||
// push one of the uids into foreground
|
// push one of the uids into foreground
|
||||||
mUidObserver.onUidStateChanged(UID_A, ActivityManager.PROCESS_STATE_TOP, 0);
|
callOnUidStateChanged(UID_A, ActivityManager.PROCESS_STATE_TOP, 0);
|
||||||
assertTrue(mService.isUidForeground(UID_A));
|
assertTrue(mService.isUidForeground(UID_A));
|
||||||
assertFalse(mService.isUidForeground(UID_B));
|
assertFalse(mService.isUidForeground(UID_B));
|
||||||
|
|
||||||
// and swap another uid into foreground
|
// and swap another uid into foreground
|
||||||
mUidObserver.onUidStateChanged(UID_A, ActivityManager.PROCESS_STATE_SERVICE, 0);
|
callOnUidStateChanged(UID_A, ActivityManager.PROCESS_STATE_SERVICE, 0);
|
||||||
mUidObserver.onUidStateChanged(UID_B, ActivityManager.PROCESS_STATE_TOP, 0);
|
callOnUidStateChanged(UID_B, ActivityManager.PROCESS_STATE_TOP, 0);
|
||||||
assertFalse(mService.isUidForeground(UID_A));
|
assertFalse(mService.isUidForeground(UID_A));
|
||||||
assertTrue(mService.isUidForeground(UID_B));
|
assertTrue(mService.isUidForeground(UID_B));
|
||||||
}
|
}
|
||||||
@@ -1111,8 +1131,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testOnUidStateChanged_notifyAMS() throws Exception {
|
public void testOnUidStateChanged_notifyAMS() throws Exception {
|
||||||
final long procStateSeq = 222;
|
final long procStateSeq = 222;
|
||||||
mUidObserver.onUidStateChanged(UID_A, ActivityManager.PROCESS_STATE_SERVICE,
|
callOnUidStateChanged(UID_A, ActivityManager.PROCESS_STATE_SERVICE, procStateSeq);
|
||||||
procStateSeq);
|
|
||||||
verify(mActivityManagerInternal).notifyNetworkPolicyRulesUpdated(UID_A, procStateSeq);
|
verify(mActivityManagerInternal).notifyNetworkPolicyRulesUpdated(UID_A, procStateSeq);
|
||||||
|
|
||||||
final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||||
@@ -1124,6 +1143,16 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
outputStream.toString().trim());
|
outputStream.toString().trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void callOnUidStateChanged(int uid, int procState, long procStateSeq)
|
||||||
|
throws Exception {
|
||||||
|
mUidObserver.onUidStateChanged(uid, procState, procStateSeq);
|
||||||
|
final CountDownLatch latch = new CountDownLatch(1);
|
||||||
|
mService.mUidEventHandler.post(() -> {
|
||||||
|
latch.countDown();
|
||||||
|
});
|
||||||
|
latch.await(2, TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProcStateHistory() {
|
public void testProcStateHistory() {
|
||||||
// Verify dump works correctly with no elements added.
|
// Verify dump works correctly with no elements added.
|
||||||
@@ -1425,7 +1454,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
private static NetworkPolicy buildFakeMobilePolicy(int cycleDay, long warningBytes,
|
private static NetworkPolicy buildFakeMobilePolicy(int cycleDay, long warningBytes,
|
||||||
long limitBytes, boolean inferred){
|
long limitBytes, boolean inferred){
|
||||||
final NetworkTemplate template = buildTemplateMobileAll(FAKE_SUBSCRIBER_ID);
|
final NetworkTemplate template = buildTemplateMobileAll(FAKE_SUBSCRIBER_ID);
|
||||||
return new NetworkPolicy(template, cycleDay, "America/Los_Angeles", warningBytes,
|
return new NetworkPolicy(template, cycleDay, new Time().timezone, warningBytes,
|
||||||
limitBytes, SNOOZE_NEVER, SNOOZE_NEVER, true, inferred);
|
limitBytes, SNOOZE_NEVER, SNOOZE_NEVER, true, inferred);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user