[SM10] Adopt helper class to monitor RAT type change per sub

Test: atest NetworkStatsServiceTest
Bug: 146415925
Change-Id: I45c3aa9046b316c8cd0943543d620a22e4afefd1
Merged-In: I45c3aa9046b316c8cd0943543d620a22e4afefd1
(cherry picked from commit 219faff07bdc58c14fe58fc525e86383db1f8167)
This commit is contained in:
junyulai
2020-03-04 12:58:00 +08:00
committed by Junyu Lai
parent 008a54b355
commit c6081f9c50

View File

@@ -60,14 +60,13 @@ import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt; 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.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.AlarmManager; import android.app.AlarmManager;
import android.app.usage.NetworkStatsManager; import android.app.usage.NetworkStatsManager;
import android.content.Context; import android.content.Context;
@@ -95,8 +94,6 @@ import android.os.Message;
import android.os.Messenger; import android.os.Messenger;
import android.os.PowerManager; import android.os.PowerManager;
import android.os.SimpleClock; import android.os.SimpleClock;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import androidx.test.InstrumentationRegistry; import androidx.test.InstrumentationRegistry;
@@ -126,6 +123,7 @@ import java.io.File;
import java.time.Clock; import java.time.Clock;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.Executor;
/** /**
* Tests for {@link NetworkStatsService}. * Tests for {@link NetworkStatsService}.
@@ -168,14 +166,13 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
private @Mock NetworkStatsSettings mSettings; private @Mock NetworkStatsSettings mSettings;
private @Mock IBinder mBinder; private @Mock IBinder mBinder;
private @Mock AlarmManager mAlarmManager; private @Mock AlarmManager mAlarmManager;
private @Mock TelephonyManager mTelephonyManager; @Mock
private NetworkStatsSubscriptionsMonitor mNetworkStatsSubscriptionsMonitor;
private HandlerThread mHandlerThread; private HandlerThread mHandlerThread;
private NetworkStatsService mService; private NetworkStatsService mService;
private INetworkStatsSession mSession; private INetworkStatsSession mSession;
private INetworkManagementEventObserver mNetworkObserver; private INetworkManagementEventObserver mNetworkObserver;
@Nullable
private PhoneStateListener mPhoneStateListener;
private final Clock mClock = new SimpleClock(ZoneOffset.UTC) { private final Clock mClock = new SimpleClock(ZoneOffset.UTC) {
@Override @Override
@@ -203,8 +200,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
mHandlerThread = new HandlerThread("HandlerThread"); mHandlerThread = new HandlerThread("HandlerThread");
final NetworkStatsService.Dependencies deps = makeDependencies(); final NetworkStatsService.Dependencies deps = makeDependencies();
mService = new NetworkStatsService(mServiceContext, mNetManager, mAlarmManager, wakeLock, mService = new NetworkStatsService(mServiceContext, mNetManager, mAlarmManager, wakeLock,
mClock, mTelephonyManager, mSettings, mClock, mSettings, mStatsFactory, new NetworkStatsObservers(), mStatsDir,
mStatsFactory, new NetworkStatsObservers(), mStatsDir, getBaseDir(mStatsDir), deps); getBaseDir(mStatsDir), deps);
mElapsedRealtime = 0L; mElapsedRealtime = 0L;
@@ -224,12 +221,6 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
ArgumentCaptor.forClass(INetworkManagementEventObserver.class); ArgumentCaptor.forClass(INetworkManagementEventObserver.class);
verify(mNetManager).registerObserver(networkObserver.capture()); verify(mNetManager).registerObserver(networkObserver.capture());
mNetworkObserver = networkObserver.getValue(); mNetworkObserver = networkObserver.getValue();
// Capture the phone state listener that created by service.
final ArgumentCaptor<PhoneStateListener> phoneStateListenerCaptor =
ArgumentCaptor.forClass(PhoneStateListener.class);
verify(mTelephonyManager).listen(phoneStateListenerCaptor.capture(), anyInt());
mPhoneStateListener = phoneStateListenerCaptor.getValue();
} }
@NonNull @NonNull
@@ -239,6 +230,14 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
public HandlerThread makeHandlerThread() { public HandlerThread makeHandlerThread() {
return mHandlerThread; return mHandlerThread;
} }
@Override
public NetworkStatsSubscriptionsMonitor makeSubscriptionsMonitor(
@NonNull Context context, @NonNull Executor executor,
@NonNull NetworkStatsService service) {
return mNetworkStatsSubscriptionsMonitor;
}
}; };
} }
@@ -678,10 +677,9 @@ 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) {
final ServiceState mockSs = mock(ServiceState.class); when(mNetworkStatsSubscriptionsMonitor.getRatTypeForSubscriberId(anyString()))
when(mockSs.getDataNetworkType()).thenReturn(ratType); .thenReturn(ratType);
mPhoneStateListener.onServiceStateChanged(mockSs); mService.handleOnCollapsedRatTypeChanged();
HandlerUtilsKt.waitForIdle(mHandlerThread, WAIT_TIMEOUT); HandlerUtilsKt.waitForIdle(mHandlerThread, WAIT_TIMEOUT);
} }