Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 52cb2e15 authored by Nazanin's avatar Nazanin
Browse files

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

Bug: 180938364
Test: utest
Change-Id: Ic6a5a84c1d985fa02f8cf52c8c2ff144669b30c1
parent d746cc81
Loading
Loading
Loading
Loading
+23 −7
Original line number Original line Diff line number Diff line
@@ -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);