diff --git a/tests/unit/java/android/app/usage/NetworkStatsManagerTest.java b/tests/unit/java/android/app/usage/NetworkStatsManagerTest.java index 899295a019..6bd2bd569f 100644 --- a/tests/unit/java/android/app/usage/NetworkStatsManagerTest.java +++ b/tests/unit/java/android/app/usage/NetworkStatsManagerTest.java @@ -24,8 +24,8 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -52,6 +52,7 @@ import org.mockito.invocation.InvocationOnMock; @RunWith(AndroidJUnit4.class) @SmallTest public class NetworkStatsManagerTest { + private static final String TEST_SUBSCRIBER_ID = "subid"; private @Mock INetworkStatsService mService; private @Mock INetworkStatsSession mStatsSession; @@ -69,7 +70,6 @@ public class NetworkStatsManagerTest { @Test public void testQueryDetails() throws RemoteException { - final String subscriberId = "subid"; final long startTime = 1; final long endTime = 100; final int uid1 = 10001; @@ -113,7 +113,7 @@ public class NetworkStatsManagerTest { .then((InvocationOnMock inv) -> { NetworkTemplate template = inv.getArgument(0); assertEquals(MATCH_MOBILE_ALL, template.getMatchRule()); - assertEquals(subscriberId, template.getSubscriberId()); + assertEquals(TEST_SUBSCRIBER_ID, template.getSubscriberId()); return history1; }); @@ -124,13 +124,13 @@ public class NetworkStatsManagerTest { .then((InvocationOnMock inv) -> { NetworkTemplate template = inv.getArgument(0); assertEquals(MATCH_MOBILE_ALL, template.getMatchRule()); - assertEquals(subscriberId, template.getSubscriberId()); + assertEquals(TEST_SUBSCRIBER_ID, template.getSubscriberId()); return history2; }); NetworkStats stats = mManager.queryDetails( - ConnectivityManager.TYPE_MOBILE, subscriberId, startTime, endTime); + ConnectivityManager.TYPE_MOBILE, TEST_SUBSCRIBER_ID, startTime, endTime); NetworkStats.Bucket bucket = new NetworkStats.Bucket(); @@ -166,35 +166,30 @@ public class NetworkStatsManagerTest { assertFalse(stats.hasNextBucket()); } - @Test - public void testQueryDetails_NoSubscriberId() throws RemoteException { + private void runQueryDetailsAndCheckTemplate(int networkType, String subscriberId, + NetworkTemplate expectedTemplate) throws RemoteException { final long startTime = 1; final long endTime = 100; final int uid1 = 10001; final int uid2 = 10002; + reset(mStatsSession); when(mService.openSessionForUsageStats(anyInt(), anyString())).thenReturn(mStatsSession); when(mStatsSession.getRelevantUids()).thenReturn(new int[] { uid1, uid2 }); - - NetworkStats stats = mManager.queryDetails( - ConnectivityManager.TYPE_MOBILE, null, startTime, endTime); - when(mStatsSession.getHistoryIntervalForUid(any(NetworkTemplate.class), anyInt(), anyInt(), anyInt(), anyInt(), anyLong(), anyLong())) .thenReturn(new NetworkStatsHistory(10, 0)); + NetworkStats stats = mManager.queryDetails( + networkType, subscriberId, startTime, endTime); verify(mStatsSession, times(1)).getHistoryIntervalForUid( - argThat((NetworkTemplate t) -> - // No subscriberId: MATCH_MOBILE_WILDCARD template - t.getMatchRule() == NetworkTemplate.MATCH_MOBILE_WILDCARD), + eq(expectedTemplate), eq(uid1), eq(android.net.NetworkStats.SET_ALL), eq(android.net.NetworkStats.TAG_NONE), eq(NetworkStatsHistory.FIELD_ALL), eq(startTime), eq(endTime)); verify(mStatsSession, times(1)).getHistoryIntervalForUid( - argThat((NetworkTemplate t) -> - // No subscriberId: MATCH_MOBILE_WILDCARD template - t.getMatchRule() == NetworkTemplate.MATCH_MOBILE_WILDCARD), + eq(expectedTemplate), eq(uid2), eq(android.net.NetworkStats.SET_ALL), eq(android.net.NetworkStats.TAG_NONE), eq(NetworkStatsHistory.FIELD_ALL), eq(startTime), eq(endTime)); @@ -202,6 +197,25 @@ public class NetworkStatsManagerTest { assertFalse(stats.hasNextBucket()); } + @Test + public void testNetworkTemplateWhenRunningQueryDetails_NoSubscriberId() throws RemoteException { + runQueryDetailsAndCheckTemplate(ConnectivityManager.TYPE_MOBILE, + null /* subscriberId */, NetworkTemplate.buildTemplateMobileWildcard()); + runQueryDetailsAndCheckTemplate(ConnectivityManager.TYPE_WIFI, + "" /* subscriberId */, NetworkTemplate.buildTemplateWifiWildcard()); + runQueryDetailsAndCheckTemplate(ConnectivityManager.TYPE_WIFI, + null /* subscriberId */, NetworkTemplate.buildTemplateWifiWildcard()); + } + + @Test + public void testNetworkTemplateWhenRunningQueryDetails_MergedCarrierWifi() + throws RemoteException { + runQueryDetailsAndCheckTemplate(ConnectivityManager.TYPE_WIFI, + TEST_SUBSCRIBER_ID, + NetworkTemplate.buildTemplateWifi(NetworkTemplate.WIFI_NETWORKID_ALL, + TEST_SUBSCRIBER_ID)); + } + private void assertBucketMatches(Entry expected, NetworkStats.Bucket actual) { assertEquals(expected.uid, actual.getUid()); assertEquals(expected.rxBytes, actual.getRxBytes());