diff options
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.java | 259 |
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(); |