aboutsummaryrefslogtreecommitdiff
path: root/tests/telephonytests/src/com/android/internal/telephony/metrics/ServiceStateStatsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/telephonytests/src/com/android/internal/telephony/metrics/ServiceStateStatsTest.java')
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/metrics/ServiceStateStatsTest.java259
1 files changed, 257 insertions, 2 deletions
diff --git a/tests/telephonytests/src/com/android/internal/telephony/metrics/ServiceStateStatsTest.java b/tests/telephonytests/src/com/android/internal/telephony/metrics/ServiceStateStatsTest.java
index 7b66a52e40..f186f987f2 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/metrics/ServiceStateStatsTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/metrics/ServiceStateStatsTest.java
@@ -30,6 +30,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
@@ -152,6 +153,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
verifyNoMoreInteractions(mPersistAtomsStorage);
}
@@ -324,6 +326,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = captor.getAllValues().get(1);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.dataRat);
@@ -336,6 +339,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
verifyNoMoreInteractions(mPersistAtomsStorage);
}
@@ -373,6 +377,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = captor.getAllValues().get(1);
assertEquals(TelephonyManager.NETWORK_TYPE_IWLAN, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_UNKNOWN, state.dataRat);
@@ -385,6 +390,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(200L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
verifyNoMoreInteractions(mPersistAtomsStorage);
}
@@ -416,6 +422,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = captor.getAllValues().get(1);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.dataRat);
@@ -457,6 +464,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
verifyNoMoreInteractions(mPersistAtomsStorage);
}
@@ -495,6 +503,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = serviceStateCaptor.getAllValues().get(1);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.dataRat);
@@ -507,6 +516,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
CellularDataServiceSwitch serviceSwitch = serviceSwitchCaptor.getAllValues().get(0);
assertEquals(TelephonyManager.NETWORK_TYPE_UNKNOWN, serviceSwitch.ratFrom);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, serviceSwitch.ratTo);
@@ -548,6 +558,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(CARRIER1_ID, state.carrierId);
assertEquals(100L, state.totalTimeMillis);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = captor.getAllValues().get(1);
assertEquals(TelephonyManager.NETWORK_TYPE_IWLAN, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.dataRat);
@@ -559,6 +570,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(CARRIER1_ID, state.carrierId);
assertEquals(100L, state.totalTimeMillis);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
verifyNoMoreInteractions(mPersistAtomsStorage);
}
@@ -588,6 +600,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(0L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
verifyNoMoreInteractions(mPersistAtomsStorage);
}
@@ -629,6 +642,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = captor.getAllValues().get(1);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.dataRat);
@@ -641,6 +655,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(200L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = captor.getAllValues().get(2);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.dataRat);
@@ -653,6 +668,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(400L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = captor.getAllValues().get(3);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.dataRat);
@@ -665,6 +681,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(800L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
verifyNoMoreInteractions(mPersistAtomsStorage);
}
@@ -710,6 +727,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = captor.getAllValues().get(1);
assertEquals(TelephonyManager.NETWORK_TYPE_UNKNOWN, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_UNKNOWN, state.dataRat);
@@ -722,6 +740,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(5000L, state.totalTimeMillis);
assertEquals(true, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = captor.getAllValues().get(2);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.dataRat);
@@ -734,6 +753,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(200L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
verifyNoMoreInteractions(mPersistAtomsStorage);
}
@@ -750,11 +770,31 @@ public class ServiceStateStatsTest extends TelephonyTest {
mockWwanPsRat(TelephonyManager.NETWORK_TYPE_UMTS);
mockWwanCsRat(TelephonyManager.NETWORK_TYPE_UMTS);
doReturn(TelephonyManager.NETWORK_TYPE_UNKNOWN).when(mImsStats).getImsVoiceRadioTech();
- doReturn(ServiceState.ROAMING_TYPE_INTERNATIONAL).when(mServiceState).getVoiceRoamingType();
+ NetworkRegistrationInfo voiceNri = new NetworkRegistrationInfo.Builder()
+ .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS)
+ // This sets mNetworkRegistrationState
+ .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING)
+ .build();
+ voiceNri.setRoamingType(ServiceState.ROAMING_TYPE_INTERNATIONAL);
+ doReturn(voiceNri)
+ .when(mServiceState)
+ .getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_CS,
+ AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
mServiceStateStats.onServiceStateChanged(mServiceState);
mServiceStateStats.incTimeMillis(200L);
// Voice and data roaming
- doReturn(ServiceState.ROAMING_TYPE_INTERNATIONAL).when(mServiceState).getDataRoamingType();
+ NetworkRegistrationInfo dataNri = new NetworkRegistrationInfo.Builder()
+ .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS)
+ // This sets mNetworkRegistrationState
+ .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING)
+ .build();
+ dataNri.setRoamingType(ServiceState.ROAMING_TYPE_INTERNATIONAL);
+ doReturn(dataNri)
+ .when(mServiceState)
+ .getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS,
+ AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
mServiceStateStats.onServiceStateChanged(mServiceState);
mServiceStateStats.incTimeMillis(400L);
@@ -779,6 +819,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = serviceStateCaptor.getAllValues().get(1);
assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, state.dataRat);
@@ -791,6 +832,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(200L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = serviceStateCaptor.getAllValues().get(2);
assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, state.dataRat);
@@ -803,6 +845,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(400L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
CellularDataServiceSwitch serviceSwitch = serviceSwitchCaptor.getAllValues().get(0);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, serviceSwitch.ratFrom);
assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, serviceSwitch.ratTo);
@@ -817,6 +860,76 @@ public class ServiceStateStatsTest extends TelephonyTest {
@Test
@SmallTest
+ public void onServiceStateChanged_roamingWithOverride() throws Exception {
+ // Using default service state for LTE
+
+ mServiceStateStats.onServiceStateChanged(mServiceState);
+ mServiceStateStats.incTimeMillis(100L);
+ // Voice roaming
+ doReturn(TelephonyManager.NETWORK_TYPE_UMTS).when(mServiceState).getVoiceNetworkType();
+ doReturn(TelephonyManager.NETWORK_TYPE_UMTS).when(mServiceState).getDataNetworkType();
+ NetworkRegistrationInfo roamingNri = new NetworkRegistrationInfo.Builder()
+ .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS)
+ // This sets mNetworkRegistrationState
+ .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING)
+ .build();
+ roamingNri.setRoamingType(ServiceState.ROAMING_TYPE_NOT_ROAMING);
+ doReturn(roamingNri).when(mServiceState)
+ .getNetworkRegistrationInfo(
+ anyInt(), eq(AccessNetworkConstants.TRANSPORT_TYPE_WWAN));
+ doReturn(TelephonyManager.NETWORK_TYPE_UNKNOWN).when(mImsStats).getImsVoiceRadioTech();
+ mServiceStateStats.onServiceStateChanged(mServiceState);
+ mServiceStateStats.incTimeMillis(400L);
+
+ // There should be 2 service states and 1 data service switch (LTE to UMTS)
+ mServiceStateStats.conclude();
+ ArgumentCaptor<CellularServiceState> serviceStateCaptor =
+ ArgumentCaptor.forClass(CellularServiceState.class);
+ ArgumentCaptor<CellularDataServiceSwitch> serviceSwitchCaptor =
+ ArgumentCaptor.forClass(CellularDataServiceSwitch.class);
+ verify(mPersistAtomsStorage, times(2))
+ .addCellularServiceStateAndCellularDataServiceSwitch(
+ serviceStateCaptor.capture(), serviceSwitchCaptor.capture());
+ CellularServiceState state = serviceStateCaptor.getAllValues().get(0);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.voiceRat);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.dataRat);
+ assertEquals(ServiceState.ROAMING_TYPE_NOT_ROAMING, state.voiceRoamingType);
+ assertEquals(ServiceState.ROAMING_TYPE_NOT_ROAMING, state.dataRoamingType);
+ assertFalse(state.isEndc);
+ assertEquals(0, state.simSlotIndex);
+ assertFalse(state.isMultiSim);
+ assertEquals(CARRIER1_ID, state.carrierId);
+ assertEquals(100L, state.totalTimeMillis);
+ assertEquals(false, state.isEmergencyOnly);
+ assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
+ state = serviceStateCaptor.getAllValues().get(1);
+ assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, state.voiceRat);
+ assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, state.dataRat);
+ // Atom should show roaming, despite type being unknown
+ assertEquals(ServiceState.ROAMING_TYPE_UNKNOWN, state.voiceRoamingType);
+ assertEquals(ServiceState.ROAMING_TYPE_UNKNOWN, state.dataRoamingType);
+ assertFalse(state.isEndc);
+ assertEquals(0, state.simSlotIndex);
+ assertFalse(state.isMultiSim);
+ assertEquals(CARRIER1_ID, state.carrierId);
+ assertEquals(400L, state.totalTimeMillis);
+ assertEquals(false, state.isEmergencyOnly);
+ assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
+ CellularDataServiceSwitch serviceSwitch = serviceSwitchCaptor.getAllValues().get(0);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, serviceSwitch.ratFrom);
+ assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, serviceSwitch.ratTo);
+ assertEquals(0, serviceSwitch.simSlotIndex);
+ assertFalse(serviceSwitch.isMultiSim);
+ assertEquals(CARRIER1_ID, serviceSwitch.carrierId);
+ assertEquals(1, serviceSwitch.switchCount);
+ assertNull(serviceSwitchCaptor.getAllValues().get(1)); // produced by conclude()
+ verifyNoMoreInteractions(mPersistAtomsStorage);
+ }
+
+ @Test
+ @SmallTest
public void onServiceStateChanged_dualSim() throws Exception {
// Using default service state for LTE
// Only difference between the 2 slots is slot index
@@ -860,6 +973,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = serviceStateCaptor.getAllValues().get(1);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.dataRat);
@@ -872,6 +986,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = serviceStateCaptor.getAllValues().get(2);
assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, state.dataRat);
@@ -884,6 +999,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(200L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = serviceStateCaptor.getAllValues().get(3);
assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, state.dataRat);
@@ -896,6 +1012,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(200L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
CellularDataServiceSwitch serviceSwitch = serviceSwitchCaptor.getAllValues().get(0);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, serviceSwitch.ratFrom);
assertEquals(TelephonyManager.NETWORK_TYPE_UMTS, serviceSwitch.ratTo);
@@ -957,6 +1074,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(100L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
state = captor.getAllValues().get(1);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.voiceRat);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, state.dataRat);
@@ -969,6 +1087,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
assertEquals(200L, state.totalTimeMillis);
assertEquals(false, state.isEmergencyOnly);
assertEquals(true, state.isInternetPdnUp);
+ assertEquals(true, state.isDataEnabled);
verifyNoMoreInteractions(mPersistAtomsStorage);
}
@@ -1036,6 +1155,141 @@ public class ServiceStateStatsTest extends TelephonyTest {
verifyNoMoreInteractions(mPersistAtomsStorage);
}
+ @Test
+ @SmallTest
+ public void isNetworkRoaming_nullServiceState() throws Exception {
+ boolean result = ServiceStateStats.isNetworkRoaming(null);
+
+ assertEquals(false, result);
+ }
+
+ @Test
+ @SmallTest
+ public void isNetworkRoaming_notRoaming() throws Exception {
+ NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
+ .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS)
+ // This sets mNetworkRegistrationState
+ .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME)
+ .build();
+ nri.setRoamingType(ServiceState.ROAMING_TYPE_NOT_ROAMING);
+ doReturn(nri).when(mServiceState).getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ doReturn(nri).when(mServiceState).getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+
+ boolean result = ServiceStateStats.isNetworkRoaming(mServiceState);
+ boolean resultCs = ServiceStateStats.isNetworkRoaming(
+ mServiceState, NetworkRegistrationInfo.DOMAIN_CS);
+ boolean resultPs = ServiceStateStats.isNetworkRoaming(
+ mServiceState, NetworkRegistrationInfo.DOMAIN_PS);
+
+ assertEquals(false, result);
+ assertEquals(false, resultCs);
+ assertEquals(false, resultPs);
+ }
+
+ @Test
+ @SmallTest
+ public void isNetworkRoaming_csRoaming() throws Exception {
+ NetworkRegistrationInfo roamingNri = new NetworkRegistrationInfo.Builder()
+ .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS)
+ // This sets mNetworkRegistrationState
+ .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING)
+ .build();
+ roamingNri.setRoamingType(ServiceState.ROAMING_TYPE_NOT_ROAMING);
+ doReturn(roamingNri).when(mServiceState).getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+
+ boolean result = ServiceStateStats.isNetworkRoaming(mServiceState);
+ boolean resultCs = ServiceStateStats.isNetworkRoaming(
+ mServiceState, NetworkRegistrationInfo.DOMAIN_CS);
+ boolean resultPs = ServiceStateStats.isNetworkRoaming(
+ mServiceState, NetworkRegistrationInfo.DOMAIN_PS);
+
+ assertEquals(true, result);
+ assertEquals(true, resultCs);
+ assertEquals(false, resultPs);
+ }
+
+ @Test
+ @SmallTest
+ public void isNetworkRoaming_psRoaming() throws Exception {
+ NetworkRegistrationInfo roamingNri = new NetworkRegistrationInfo.Builder()
+ .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS)
+ // This sets mNetworkRegistrationState
+ .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING)
+ .build();
+ roamingNri.setRoamingType(ServiceState.ROAMING_TYPE_NOT_ROAMING);
+ doReturn(roamingNri).when(mServiceState).getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+
+ boolean result = ServiceStateStats.isNetworkRoaming(mServiceState);
+ boolean resultCs = ServiceStateStats.isNetworkRoaming(
+ mServiceState, NetworkRegistrationInfo.DOMAIN_CS);
+ boolean resultPs = ServiceStateStats.isNetworkRoaming(
+ mServiceState, NetworkRegistrationInfo.DOMAIN_PS);
+
+ assertEquals(true, result);
+ assertEquals(false, resultCs);
+ assertEquals(true, resultPs);
+ }
+
+ @Test
+ @SmallTest
+ public void isNetworkRoaming_bothRoaming() throws Exception {
+ NetworkRegistrationInfo roamingNri = new NetworkRegistrationInfo.Builder()
+ .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS)
+ // This sets mNetworkRegistrationState
+ .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING)
+ .build();
+ roamingNri.setRoamingType(ServiceState.ROAMING_TYPE_NOT_ROAMING);
+ doReturn(roamingNri).when(mServiceState).getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ doReturn(roamingNri).when(mServiceState).getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+
+ boolean result = ServiceStateStats.isNetworkRoaming(mServiceState);
+ boolean resultCs = ServiceStateStats.isNetworkRoaming(
+ mServiceState, NetworkRegistrationInfo.DOMAIN_CS);
+ boolean resultPs = ServiceStateStats.isNetworkRoaming(
+ mServiceState, NetworkRegistrationInfo.DOMAIN_PS);
+
+ assertEquals(true, result);
+ assertEquals(true, resultCs);
+ assertEquals(true, resultPs);
+ }
+
+ @Test
+ @SmallTest
+ public void onVoiceServiceStateOverrideChanged_voiceCallingCapabilityChange() {
+ // Using default service state for LTE
+ mServiceStateStats.onServiceStateChanged(mServiceState);
+ mServiceStateStats.incTimeMillis(100L);
+ // Voice Calling registered
+ mServiceStateStats.onVoiceServiceStateOverrideChanged(true);
+ mServiceStateStats.incTimeMillis(100L);
+ // Voice Calling unregistered
+ mServiceStateStats.onVoiceServiceStateOverrideChanged(false);
+ mServiceStateStats.incTimeMillis(100L);
+ // Voice Calling unregistered again. Same state should not generate a new atom
+ mServiceStateStats.onVoiceServiceStateOverrideChanged(false);
+ mServiceStateStats.incTimeMillis(100L);
+
+ // There should be 3 service state updates
+ mServiceStateStats.conclude();
+ ArgumentCaptor<CellularServiceState> captor =
+ ArgumentCaptor.forClass(CellularServiceState.class);
+ verify(mPersistAtomsStorage, times(3))
+ .addCellularServiceStateAndCellularDataServiceSwitch(captor.capture(), eq(null));
+ CellularServiceState state = captor.getAllValues().get(0);
+ assertEquals(false, state.overrideVoiceService);
+ state = captor.getAllValues().get(1);
+ assertEquals(true, state.overrideVoiceService);
+ state = captor.getAllValues().get(2);
+ assertEquals(false, state.overrideVoiceService);
+ verifyNoMoreInteractions(mPersistAtomsStorage);
+ }
+
private void mockWwanPsRat(@NetworkType int rat) {
mockWwanRat(
NetworkRegistrationInfo.DOMAIN_PS,
@@ -1088,6 +1342,7 @@ public class ServiceStateStatsTest extends TelephonyTest {
doReturn(1).when(mSecondPhone).getPhoneId();
doReturn(1).when(mUiccController).getSlotIdFromPhoneId(1);
doReturn(carrierId).when(mSecondPhone).getCarrierId();
+ doReturn(mDataSettingsManager).when(mSecondPhone).getDataSettingsManager();
doReturn(true).when(mPhysicalSlot1).isActive();
doReturn(CardState.CARDSTATE_PRESENT).when(mPhysicalSlot1).getCardState();