Merge "Refactoring and mocking to make sure unit test doesn't call the real service"

This commit is contained in:
Nazanin Bakhshi
2021-04-20 15:44:00 +00:00
committed by Gerrit Code Review

View File

@@ -67,6 +67,7 @@ import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.reset; import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@@ -88,8 +89,8 @@ import android.net.NetworkStateSnapshot;
import android.net.NetworkStats; import android.net.NetworkStats;
import android.net.NetworkStatsHistory; import android.net.NetworkStatsHistory;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.net.UnderlyingNetworkInfo;
import android.net.TelephonyNetworkSpecifier; import android.net.TelephonyNetworkSpecifier;
import android.net.UnderlyingNetworkInfo;
import android.net.netstats.provider.INetworkStatsProviderCallback; import android.net.netstats.provider.INetworkStatsProviderCallback;
import android.os.ConditionVariable; import android.os.ConditionVariable;
import android.os.Handler; import android.os.Handler;
@@ -165,9 +166,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
private long mElapsedRealtime; private long mElapsedRealtime;
private BroadcastInterceptingContext mServiceContext;
private File mStatsDir; private File mStatsDir;
private MockContext mServiceContext;
private @Mock TelephonyManager mTelephonyManager;
private @Mock INetworkManagementService mNetManager; private @Mock INetworkManagementService mNetManager;
private @Mock NetworkStatsFactory mStatsFactory; private @Mock NetworkStatsFactory mStatsFactory;
private @Mock NetworkStatsSettings mSettings; private @Mock NetworkStatsSettings mSettings;
@@ -183,19 +184,32 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
private ContentObserver mContentObserver; private ContentObserver mContentObserver;
private Handler mHandler; private Handler mHandler;
private class MockContext extends BroadcastInterceptingContext {
private final Context mBaseContext;
MockContext(Context base) {
super(base);
mBaseContext = base;
}
@Override
public Object getSystemService(String name) {
if (Context.TELEPHONY_SERVICE.equals(name)) return mTelephonyManager;
return mBaseContext.getSystemService(name);
}
}
private final Clock mClock = new SimpleClock(ZoneOffset.UTC) { private final Clock mClock = new SimpleClock(ZoneOffset.UTC) {
@Override @Override
public long millis() { public long millis() {
return currentTimeMillis(); return currentTimeMillis();
} }
}; };
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
final Context context = InstrumentationRegistry.getContext(); final Context context = InstrumentationRegistry.getContext();
mServiceContext = new MockContext(context);
mServiceContext = new BroadcastInterceptingContext(context);
mStatsDir = context.getFilesDir(); mStatsDir = context.getFilesDir();
if (mStatsDir.exists()) { if (mStatsDir.exists()) {
IoUtils.deleteContents(mStatsDir); IoUtils.deleteContents(mStatsDir);
@@ -217,7 +231,6 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
expectDefaultSettings(); expectDefaultSettings();
expectNetworkStatsUidDetail(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats());
expectSystemReady(); expectSystemReady();
mService.systemReady(); mService.systemReady();
// Verify that system ready fetches realtime stats // Verify that system ready fetches realtime stats
verify(mStatsFactory).readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL); verify(mStatsFactory).readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL);
@@ -228,6 +241,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
verify(mNetworkStatsSubscriptionsMonitor).start(); verify(mNetworkStatsSubscriptionsMonitor).start();
reset(mNetworkStatsSubscriptionsMonitor); reset(mNetworkStatsSubscriptionsMonitor);
doReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS).when(mTelephonyManager)
.checkCarrierPrivilegesForPackageAnyPhone(anyString());
mSession = mService.openSession(); mSession = mService.openSession();
assertNotNull("openSession() failed", mSession); assertNotNull("openSession() failed", mSession);