Merge "Add unit test when querying TYPE_WIFI + null/empty/non-null subscriberId"

This commit is contained in:
Treehugger Robot
2021-06-15 06:46:49 +00:00
committed by Gerrit Code Review

View File

@@ -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());