Migrate NetworkStatsServiceTest from when().thenReturn() to doReturn().when()
This will address flakiness issues arising from the use of
when() in multithread context.
Fix: 243658074
Test: atest com.android.server.net.NetworkStatsServiceTest#testDataMigration_differentFromFallback \
--rerun-until-failure 1000
Change-Id: I047050ef14cb60658098ff7803c6773907a92919
This commit is contained in:
@@ -85,7 +85,6 @@ import static org.mockito.Mockito.never;
|
|||||||
import static org.mockito.Mockito.reset;
|
import static org.mockito.Mockito.reset;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.app.AlarmManager;
|
import android.app.AlarmManager;
|
||||||
@@ -336,9 +335,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
|
|
||||||
final Context context = InstrumentationRegistry.getContext();
|
final Context context = InstrumentationRegistry.getContext();
|
||||||
mServiceContext = new MockContext(context);
|
mServiceContext = new MockContext(context);
|
||||||
when(mLocationPermissionChecker.checkCallersLocationPermission(
|
doReturn(true).when(mLocationPermissionChecker).checkCallersLocationPermission(
|
||||||
any(), any(), anyInt(), anyBoolean(), any())).thenReturn(true);
|
any(), any(), anyInt(), anyBoolean(), any());
|
||||||
when(sWifiInfo.getNetworkKey()).thenReturn(TEST_WIFI_NETWORK_KEY);
|
doReturn(TEST_WIFI_NETWORK_KEY).when(sWifiInfo).getNetworkKey();
|
||||||
mStatsDir = TestIoUtils.createTemporaryDirectory(getClass().getSimpleName());
|
mStatsDir = TestIoUtils.createTemporaryDirectory(getClass().getSimpleName());
|
||||||
mLegacyStatsDir = TestIoUtils.createTemporaryDirectory(
|
mLegacyStatsDir = TestIoUtils.createTemporaryDirectory(
|
||||||
getClass().getSimpleName() + "-legacy");
|
getClass().getSimpleName() + "-legacy");
|
||||||
@@ -1070,8 +1069,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
|
|
||||||
// TODO: support per IMSI state
|
// TODO: support per IMSI state
|
||||||
private void setMobileRatTypeAndWaitForIdle(int ratType) {
|
private void setMobileRatTypeAndWaitForIdle(int ratType) {
|
||||||
when(mNetworkStatsSubscriptionsMonitor.getRatTypeForSubscriberId(anyString()))
|
doReturn(ratType).when(mNetworkStatsSubscriptionsMonitor)
|
||||||
.thenReturn(ratType);
|
.getRatTypeForSubscriberId(anyString());
|
||||||
mService.handleOnCollapsedRatTypeChanged();
|
mService.handleOnCollapsedRatTypeChanged();
|
||||||
HandlerUtils.waitForIdle(mHandlerThread, WAIT_TIMEOUT);
|
HandlerUtils.waitForIdle(mHandlerThread, WAIT_TIMEOUT);
|
||||||
}
|
}
|
||||||
@@ -1478,8 +1477,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
mUsageCallback.expectOnThresholdReached(request);
|
mUsageCallback.expectOnThresholdReached(request);
|
||||||
|
|
||||||
// Allow binder to disconnect
|
// Allow binder to disconnect
|
||||||
when(mUsageCallbackBinder.unlinkToDeath(any(IBinder.DeathRecipient.class), anyInt()))
|
doReturn(true).when(mUsageCallbackBinder)
|
||||||
.thenReturn(true);
|
.unlinkToDeath(any(IBinder.DeathRecipient.class), anyInt());
|
||||||
|
|
||||||
// Unregister request
|
// Unregister request
|
||||||
mService.unregisterUsageRequest(request);
|
mService.unregisterUsageRequest(request);
|
||||||
@@ -1661,7 +1660,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setCombineSubtypeEnabled(boolean enable) {
|
private void setCombineSubtypeEnabled(boolean enable) {
|
||||||
when(mSettings.getCombineSubtypeEnabled()).thenReturn(enable);
|
doReturn(enable).when(mSettings).getCombineSubtypeEnabled();
|
||||||
mHandler.post(() -> mContentObserver.onChange(false, Settings.Global
|
mHandler.post(() -> mContentObserver.onChange(false, Settings.Global
|
||||||
.getUriFor(Settings.Global.NETSTATS_COMBINE_SUBTYPE_ENABLED)));
|
.getUriFor(Settings.Global.NETSTATS_COMBINE_SUBTYPE_ENABLED)));
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
@@ -1821,8 +1820,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testEnforceTemplateLocationPermission() throws Exception {
|
public void testEnforceTemplateLocationPermission() throws Exception {
|
||||||
when(mLocationPermissionChecker.checkCallersLocationPermission(
|
doReturn(false).when(mLocationPermissionChecker)
|
||||||
any(), any(), anyInt(), anyBoolean(), any())).thenReturn(false);
|
.checkCallersLocationPermission(any(), any(), anyInt(), anyBoolean(), any());
|
||||||
initWifiStats(buildWifiState(true, TEST_IFACE, IMSI_1));
|
initWifiStats(buildWifiState(true, TEST_IFACE, IMSI_1));
|
||||||
assertThrows(SecurityException.class, () ->
|
assertThrows(SecurityException.class, () ->
|
||||||
assertNetworkTotal(sTemplateWifi, 0L, 0L, 0L, 0L, 0));
|
assertNetworkTotal(sTemplateWifi, 0L, 0L, 0L, 0L, 0));
|
||||||
@@ -1830,8 +1829,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
assertNetworkTotal(sTemplateCarrierWifi1, 0L, 0L, 0L, 0L, 0);
|
assertNetworkTotal(sTemplateCarrierWifi1, 0L, 0L, 0L, 0L, 0);
|
||||||
assertNetworkTotal(sTemplateImsi1, 0L, 0L, 0L, 0L, 0);
|
assertNetworkTotal(sTemplateImsi1, 0L, 0L, 0L, 0L, 0);
|
||||||
|
|
||||||
when(mLocationPermissionChecker.checkCallersLocationPermission(
|
doReturn(true).when(mLocationPermissionChecker)
|
||||||
any(), any(), anyInt(), anyBoolean(), any())).thenReturn(true);
|
.checkCallersLocationPermission(any(), any(), anyInt(), anyBoolean(), any());
|
||||||
assertNetworkTotal(sTemplateCarrierWifi1, 0L, 0L, 0L, 0L, 0);
|
assertNetworkTotal(sTemplateCarrierWifi1, 0L, 0L, 0L, 0L, 0);
|
||||||
assertNetworkTotal(sTemplateWifi, 0L, 0L, 0L, 0L, 0);
|
assertNetworkTotal(sTemplateWifi, 0L, 0L, 0L, 0L, 0);
|
||||||
assertNetworkTotal(sTemplateImsi1, 0L, 0L, 0L, 0L, 0);
|
assertNetworkTotal(sTemplateImsi1, 0L, 0L, 0L, 0L, 0);
|
||||||
@@ -2106,11 +2105,11 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void mockNetworkStatsSummaryDev(NetworkStats summary) throws Exception {
|
private void mockNetworkStatsSummaryDev(NetworkStats summary) throws Exception {
|
||||||
when(mStatsFactory.readNetworkStatsSummaryDev()).thenReturn(summary);
|
doReturn(summary).when(mStatsFactory).readNetworkStatsSummaryDev();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void mockNetworkStatsSummaryXt(NetworkStats summary) throws Exception {
|
private void mockNetworkStatsSummaryXt(NetworkStats summary) throws Exception {
|
||||||
when(mStatsFactory.readNetworkStatsSummaryXt()).thenReturn(summary);
|
doReturn(summary).when(mStatsFactory).readNetworkStatsSummaryXt();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void mockNetworkStatsUidDetail(NetworkStats detail) throws Exception {
|
private void mockNetworkStatsUidDetail(NetworkStats detail) throws Exception {
|
||||||
@@ -2120,11 +2119,11 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
|
|
||||||
private void mockNetworkStatsUidDetail(NetworkStats detail,
|
private void mockNetworkStatsUidDetail(NetworkStats detail,
|
||||||
TetherStatsParcel[] tetherStatsParcels) throws Exception {
|
TetherStatsParcel[] tetherStatsParcels) throws Exception {
|
||||||
when(mStatsFactory.readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL))
|
doReturn(detail).when(mStatsFactory)
|
||||||
.thenReturn(detail);
|
.readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL);
|
||||||
|
|
||||||
// also include tethering details, since they are folded into UID
|
// also include tethering details, since they are folded into UID
|
||||||
when(mNetd.tetherGetStats()).thenReturn(tetherStatsParcels);
|
doReturn(tetherStatsParcels).when(mNetd).tetherGetStats();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void mockDefaultSettings() throws Exception {
|
private void mockDefaultSettings() throws Exception {
|
||||||
@@ -2132,22 +2131,22 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void mockSettings(long bucketDuration, long deleteAge) throws Exception {
|
private void mockSettings(long bucketDuration, long deleteAge) throws Exception {
|
||||||
when(mSettings.getPollInterval()).thenReturn(HOUR_IN_MILLIS);
|
doReturn(HOUR_IN_MILLIS).when(mSettings).getPollInterval();
|
||||||
when(mSettings.getPollDelay()).thenReturn(0L);
|
doReturn(0L).when(mSettings).getPollDelay();
|
||||||
when(mSettings.getSampleEnabled()).thenReturn(true);
|
doReturn(true).when(mSettings).getSampleEnabled();
|
||||||
when(mSettings.getCombineSubtypeEnabled()).thenReturn(false);
|
doReturn(false).when(mSettings).getCombineSubtypeEnabled();
|
||||||
|
|
||||||
final Config config = new Config(bucketDuration, deleteAge, deleteAge);
|
final Config config = new Config(bucketDuration, deleteAge, deleteAge);
|
||||||
when(mSettings.getDevConfig()).thenReturn(config);
|
doReturn(config).when(mSettings).getDevConfig();
|
||||||
when(mSettings.getXtConfig()).thenReturn(config);
|
doReturn(config).when(mSettings).getXtConfig();
|
||||||
when(mSettings.getUidConfig()).thenReturn(config);
|
doReturn(config).when(mSettings).getUidConfig();
|
||||||
when(mSettings.getUidTagConfig()).thenReturn(config);
|
doReturn(config).when(mSettings).getUidTagConfig();
|
||||||
|
|
||||||
when(mSettings.getGlobalAlertBytes(anyLong())).thenReturn(MB_IN_BYTES);
|
doReturn(MB_IN_BYTES).when(mSettings).getGlobalAlertBytes(anyLong());
|
||||||
when(mSettings.getDevPersistBytes(anyLong())).thenReturn(MB_IN_BYTES);
|
doReturn(MB_IN_BYTES).when(mSettings).getDevPersistBytes(anyLong());
|
||||||
when(mSettings.getXtPersistBytes(anyLong())).thenReturn(MB_IN_BYTES);
|
doReturn(MB_IN_BYTES).when(mSettings).getXtPersistBytes(anyLong());
|
||||||
when(mSettings.getUidPersistBytes(anyLong())).thenReturn(MB_IN_BYTES);
|
doReturn(MB_IN_BYTES).when(mSettings).getUidPersistBytes(anyLong());
|
||||||
when(mSettings.getUidTagPersistBytes(anyLong())).thenReturn(MB_IN_BYTES);
|
doReturn(MB_IN_BYTES).when(mSettings).getUidTagPersistBytes(anyLong());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertStatsFilesExist(boolean exist) {
|
private void assertStatsFilesExist(boolean exist) {
|
||||||
|
|||||||
Reference in New Issue
Block a user