aboutsummaryrefslogtreecommitdiff
path: root/tests/telephonytests/src/com/android/internal/telephony/metrics/ImsStatsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/telephonytests/src/com/android/internal/telephony/metrics/ImsStatsTest.java')
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/metrics/ImsStatsTest.java414
1 files changed, 370 insertions, 44 deletions
diff --git a/tests/telephonytests/src/com/android/internal/telephony/metrics/ImsStatsTest.java b/tests/telephonytests/src/com/android/internal/telephony/metrics/ImsStatsTest.java
index 504782bb46..df8bd85d0c 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/metrics/ImsStatsTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/metrics/ImsStatsTest.java
@@ -23,6 +23,7 @@ import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPAB
import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT;
import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO;
import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE;
+import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM;
import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN;
import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_LTE;
import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_NR;
@@ -40,6 +41,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.TelephonyManager;
import android.telephony.ims.ImsReasonInfo;
+import android.telephony.ims.ImsRegistrationAttributes;
import android.telephony.ims.ProvisioningManager;
import android.telephony.ims.feature.MmTelFeature.MmTelCapabilities;
import android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability;
@@ -67,6 +69,13 @@ public class ImsStatsTest extends TelephonyTest {
private static final int CARRIER1_ID = 1;
private static final int CARRIER2_ID = 1187;
+ private ImsRegistrationAttributes mWwanAttributes =
+ new ImsRegistrationAttributes.Builder(REGISTRATION_TECH_LTE).build();
+ private ImsRegistrationAttributes mIwlanAttributes =
+ new ImsRegistrationAttributes.Builder(REGISTRATION_TECH_IWLAN).build();
+ private ImsRegistrationAttributes mCrossSimAttributes =
+ new ImsRegistrationAttributes.Builder(REGISTRATION_TECH_CROSS_SIM).build();
+
@MmTelCapability
private static final int CAPABILITY_TYPE_ALL =
MmTelCapabilities.CAPABILITY_TYPE_VOICE
@@ -164,7 +173,7 @@ public class ImsStatsTest extends TelephonyTest {
CAPABILITY_TYPE_SMS,
REGISTRATION_TECH_LTE,
ProvisioningManager.PROVISIONING_VALUE_ENABLED);
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.onImsCapabilitiesChanged(
REGISTRATION_TECH_LTE, new MmTelCapabilities(CAPABILITY_TYPE_ALL));
@@ -211,7 +220,7 @@ public class ImsStatsTest extends TelephonyTest {
CAPABILITY_TYPE_SMS,
REGISTRATION_TECH_LTE,
ProvisioningManager.PROVISIONING_VALUE_ENABLED);
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.onImsCapabilitiesChanged(
REGISTRATION_TECH_LTE, new MmTelCapabilities(CAPABILITY_TYPE_VOICE));
@@ -258,7 +267,7 @@ public class ImsStatsTest extends TelephonyTest {
CAPABILITY_TYPE_UT,
REGISTRATION_TECH_LTE,
ProvisioningManager.PROVISIONING_VALUE_ENABLED);
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WLAN);
+ mImsStats.onImsRegistered(mIwlanAttributes);
mImsStats.onImsCapabilitiesChanged(
REGISTRATION_TECH_IWLAN, new MmTelCapabilities(CAPABILITY_TYPE_VOICE));
@@ -287,6 +296,35 @@ public class ImsStatsTest extends TelephonyTest {
@Test
@SmallTest
+ public void conclude_registeredVoiceOnly_crossSimCalling() throws Exception {
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_VOICE,
+ REGISTRATION_TECH_CROSS_SIM,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onImsRegistered(mCrossSimAttributes);
+ mImsStats.onImsCapabilitiesChanged(
+ REGISTRATION_TECH_CROSS_SIM, new MmTelCapabilities(CAPABILITY_TYPE_VOICE));
+
+ mImsStats.incTimeMillis(2000L);
+ mImsStats.conclude();
+
+ // Duration should be counted
+ ArgumentCaptor<ImsRegistrationStats> captor =
+ ArgumentCaptor.forClass(ImsRegistrationStats.class);
+ verify(mPersistAtomsStorage).addImsRegistrationStats(captor.capture());
+ ImsRegistrationStats stats = captor.getValue();
+ assertEquals(CARRIER1_ID, stats.carrierId);
+ assertEquals(0, stats.simSlotIndex);
+ assertEquals(TelephonyManager.NETWORK_TYPE_IWLAN, stats.rat);
+ assertEquals(true, stats.isIwlanCrossSim);
+ assertEquals(2000L, stats.registeredMillis);
+ assertEquals(2000L, stats.voiceCapableMillis);
+ assertEquals(2000L, stats.voiceAvailableMillis);
+ verifyNoMoreInteractions(mPersistAtomsStorage);
+ }
+
+ @Test
+ @SmallTest
public void conclude_notRegistered() throws Exception {
// IMS over LTE
mImsStats.onSetFeatureResponse(
@@ -308,12 +346,190 @@ public class ImsStatsTest extends TelephonyTest {
mImsStats.onImsCapabilitiesChanged(
REGISTRATION_TECH_LTE, new MmTelCapabilities(CAPABILITY_TYPE_ALL));
+ mImsStats.onImsUnregistered(
+ new ImsReasonInfo(ImsReasonInfo.CODE_REGISTRATION_ERROR, 999, "Timeout"));
+
mImsStats.incTimeMillis(2000L);
mImsStats.conclude();
- // No atom should be generated
+ ArgumentCaptor<ImsRegistrationTermination> terminationCaptor =
+ ArgumentCaptor.forClass(ImsRegistrationTermination.class);
+ verify(mPersistAtomsStorage).addImsRegistrationTermination(terminationCaptor.capture());
+ ImsRegistrationTermination termination = terminationCaptor.getValue();
+ assertEquals(CARRIER1_ID, termination.carrierId);
+ assertFalse(termination.isMultiSim);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, termination.ratAtEnd);
+ assertTrue(termination.setupFailed);
+ assertEquals(ImsReasonInfo.CODE_REGISTRATION_ERROR, termination.reasonCode);
+ assertEquals(999, termination.extraCode);
+ assertEquals("Timeout", termination.extraMessage);
+
+ // Registering duration should be counted
+ ArgumentCaptor<ImsRegistrationStats> statsCaptor =
+ ArgumentCaptor.forClass(ImsRegistrationStats.class);
+ verify(mPersistAtomsStorage).addImsRegistrationStats(statsCaptor.capture());
+ ImsRegistrationStats stats = statsCaptor.getValue();
+ assertEquals(CARRIER1_ID, stats.carrierId);
+ assertEquals(0, stats.simSlotIndex);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, stats.rat);
+ assertEquals(2000L, stats.unregisteredMillis);
+ verifyNoMoreInteractions(mPersistAtomsStorage);
+ }
+
+ @Test
+ @SmallTest
+ public void conclude_registering() throws Exception {
+ // IMS over LTE
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_VOICE,
+ REGISTRATION_TECH_LTE,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_VIDEO,
+ REGISTRATION_TECH_LTE,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_UT,
+ REGISTRATION_TECH_LTE,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_SMS,
+ REGISTRATION_TECH_LTE,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onImsCapabilitiesChanged(
+ REGISTRATION_TECH_LTE, new MmTelCapabilities(CAPABILITY_TYPE_ALL));
+
+ mImsStats.onImsRegistering(TRANSPORT_TYPE_WLAN);
+
+ mImsStats.incTimeMillis(2000L);
+ mImsStats.conclude();
+
+ // Registering duration should be counted
ArgumentCaptor<ImsRegistrationStats> captor =
ArgumentCaptor.forClass(ImsRegistrationStats.class);
+ verify(mPersistAtomsStorage).addImsRegistrationStats(captor.capture());
+ ImsRegistrationStats stats = captor.getValue();
+ assertEquals(CARRIER1_ID, stats.carrierId);
+ assertEquals(0, stats.simSlotIndex);
+ assertEquals(TelephonyManager.NETWORK_TYPE_IWLAN, stats.rat);
+ assertEquals(2000L, stats.registeringMillis);
+ verifyNoMoreInteractions(mPersistAtomsStorage);
+ }
+
+ @Test
+ @SmallTest
+ public void conclude_serviceStateChanged_afterRatUnknown() throws Exception {
+ // IMS over LTE
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_VOICE,
+ REGISTRATION_TECH_LTE,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_VIDEO,
+ REGISTRATION_TECH_LTE,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_UT,
+ REGISTRATION_TECH_LTE,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_SMS,
+ REGISTRATION_TECH_LTE,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onImsCapabilitiesChanged(
+ REGISTRATION_TECH_LTE, new MmTelCapabilities(CAPABILITY_TYPE_ALL));
+
+ mImsStats.onImsUnregistered(
+ new ImsReasonInfo(ImsReasonInfo.CODE_REGISTRATION_ERROR, 999, "Timeout"));
+
+ doReturn(TelephonyManager.NETWORK_TYPE_UNKNOWN)
+ .when(mServiceState)
+ .getDataNetworkType();
+ mImsStats.onServiceStateChanged(mServiceState);
+
+ mImsStats.incTimeMillis(2000L);
+
+ doReturn(TelephonyManager.NETWORK_TYPE_LTE)
+ .when(mServiceState)
+ .getDataNetworkType();
+ mImsStats.onServiceStateChanged(mServiceState);
+ mImsStats.conclude();
+
+ // Atom with termination info should be generated
+ ArgumentCaptor<ImsRegistrationTermination> terminationCaptor =
+ ArgumentCaptor.forClass(ImsRegistrationTermination.class);
+ verify(mPersistAtomsStorage).addImsRegistrationTermination(terminationCaptor.capture());
+ ImsRegistrationTermination termination = terminationCaptor.getValue();
+ assertEquals(CARRIER1_ID, termination.carrierId);
+ assertFalse(termination.isMultiSim);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, termination.ratAtEnd);
+ assertTrue(termination.setupFailed);
+ assertEquals(ImsReasonInfo.CODE_REGISTRATION_ERROR, termination.reasonCode);
+ assertEquals(999, termination.extraCode);
+ assertEquals("Timeout", termination.extraMessage);
+ verifyNoMoreInteractions(mPersistAtomsStorage);
+ }
+
+ @Test
+ @SmallTest
+ public void conclude_serviceStateChanged_afterRatLte() throws Exception {
+ // IMS over LTE
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_VOICE,
+ REGISTRATION_TECH_LTE,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_VIDEO,
+ REGISTRATION_TECH_LTE,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_UT,
+ REGISTRATION_TECH_LTE,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onSetFeatureResponse(
+ CAPABILITY_TYPE_SMS,
+ REGISTRATION_TECH_LTE,
+ ProvisioningManager.PROVISIONING_VALUE_ENABLED);
+ mImsStats.onImsCapabilitiesChanged(
+ REGISTRATION_TECH_LTE, new MmTelCapabilities(CAPABILITY_TYPE_ALL));
+
+ mImsStats.onImsUnregistered(
+ new ImsReasonInfo(ImsReasonInfo.CODE_REGISTRATION_ERROR, 999, "Timeout"));
+
+ doReturn(TelephonyManager.NETWORK_TYPE_LTE)
+ .when(mServiceState)
+ .getDataNetworkType();
+ mImsStats.onServiceStateChanged(mServiceState);
+
+ mImsStats.incTimeMillis(2000L);
+
+ doReturn(TelephonyManager.NETWORK_TYPE_UNKNOWN)
+ .when(mServiceState)
+ .getDataNetworkType();
+ mImsStats.onServiceStateChanged(mServiceState);
+ mImsStats.conclude();
+
+ // Atom with termination info and durations should be generated
+ ArgumentCaptor<ImsRegistrationTermination> terminationCaptor =
+ ArgumentCaptor.forClass(ImsRegistrationTermination.class);
+ verify(mPersistAtomsStorage).addImsRegistrationTermination(terminationCaptor.capture());
+ ImsRegistrationTermination termination = terminationCaptor.getValue();
+ assertEquals(CARRIER1_ID, termination.carrierId);
+ assertFalse(termination.isMultiSim);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, termination.ratAtEnd);
+ assertTrue(termination.setupFailed);
+ assertEquals(ImsReasonInfo.CODE_REGISTRATION_ERROR, termination.reasonCode);
+ assertEquals(999, termination.extraCode);
+ assertEquals("Timeout", termination.extraMessage);
+
+ ArgumentCaptor<ImsRegistrationStats> statsCaptor =
+ ArgumentCaptor.forClass(ImsRegistrationStats.class);
+ verify(mPersistAtomsStorage).addImsRegistrationStats(statsCaptor.capture());
+ ImsRegistrationStats stats = statsCaptor.getValue();
+ assertEquals(CARRIER1_ID, stats.carrierId);
+ assertEquals(0, stats.simSlotIndex);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, stats.rat);
+ assertEquals(2000L, stats.unregisteredMillis);
verifyNoMoreInteractions(mPersistAtomsStorage);
}
@@ -324,7 +540,7 @@ public class ImsStatsTest extends TelephonyTest {
CAPABILITY_TYPE_VOICE,
REGISTRATION_TECH_LTE,
ProvisioningManager.PROVISIONING_VALUE_ENABLED);
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.incTimeMillis(2000L);
mImsStats.onImsCapabilitiesChanged(
@@ -359,7 +575,7 @@ public class ImsStatsTest extends TelephonyTest {
CAPABILITY_TYPE_VOICE,
REGISTRATION_TECH_LTE,
ProvisioningManager.PROVISIONING_VALUE_ENABLED);
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.onImsCapabilitiesChanged(
REGISTRATION_TECH_LTE, new MmTelCapabilities(CAPABILITY_TYPE_VOICE));
@@ -398,7 +614,7 @@ public class ImsStatsTest extends TelephonyTest {
CAPABILITY_TYPE_SMS,
REGISTRATION_TECH_LTE,
ProvisioningManager.PROVISIONING_VALUE_ENABLED);
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.onImsCapabilitiesChanged(
REGISTRATION_TECH_LTE, new MmTelCapabilities(CAPABILITY_TYPE_SMS));
@@ -437,7 +653,7 @@ public class ImsStatsTest extends TelephonyTest {
CAPABILITY_TYPE_VOICE,
REGISTRATION_TECH_LTE,
ProvisioningManager.PROVISIONING_VALUE_ENABLED);
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.incTimeMillis(2000L);
mImsStats.onSetFeatureResponse(
@@ -468,11 +684,11 @@ public class ImsStatsTest extends TelephonyTest {
@Test
@SmallTest
public void onImsRegistered_differentTech() throws Exception {
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.incTimeMillis(2000L);
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WLAN);
+ mImsStats.onImsRegistered(mIwlanAttributes);
mImsStats.incTimeMillis(2000L);
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
// At this point, the first 2 registrations should have their durations counted
ArgumentCaptor<ImsRegistrationStats> captor =
@@ -510,6 +726,62 @@ public class ImsStatsTest extends TelephonyTest {
@Test
@SmallTest
+ public void onImsRegistered_afterImsRegistering() throws Exception {
+ mImsStats.onImsRegistering(TRANSPORT_TYPE_WWAN);
+ mImsStats.incTimeMillis(2000L);
+ mImsStats.onImsRegistered(mWwanAttributes);
+
+ // Registering duration should be counted
+ ArgumentCaptor<ImsRegistrationStats> captor =
+ ArgumentCaptor.forClass(ImsRegistrationStats.class);
+ verify(mPersistAtomsStorage).addImsRegistrationStats(captor.capture());
+ ImsRegistrationStats stats = captor.getValue();
+ assertEquals(CARRIER1_ID, stats.carrierId);
+ assertEquals(0, stats.simSlotIndex);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, stats.rat);
+ assertEquals(0L, stats.registeredMillis);
+ assertEquals(2000L, stats.registeringMillis);
+ }
+
+ @Test
+ @SmallTest
+ public void onImsRegistering_afterImsUnregistered() throws Exception {
+ doReturn(TelephonyManager.NETWORK_TYPE_LTE)
+ .when(mServiceState)
+ .getDataNetworkType();
+ mImsStats.onServiceStateChanged(mServiceState);
+
+ mImsStats.onImsUnregistered(
+ new ImsReasonInfo(ImsReasonInfo.CODE_REGISTRATION_ERROR, 999, "Timeout"));
+ mImsStats.incTimeMillis(2000L);
+ mImsStats.onImsRegistering(TRANSPORT_TYPE_WWAN);
+
+ // Atom with termination info should be generated
+ ArgumentCaptor<ImsRegistrationTermination> terminationCaptor =
+ ArgumentCaptor.forClass(ImsRegistrationTermination.class);
+ verify(mPersistAtomsStorage).addImsRegistrationTermination(terminationCaptor.capture());
+ ImsRegistrationTermination termination = terminationCaptor.getValue();
+ assertEquals(CARRIER1_ID, termination.carrierId);
+ assertFalse(termination.isMultiSim);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, termination.ratAtEnd);
+ assertTrue(termination.setupFailed);
+ assertEquals(ImsReasonInfo.CODE_REGISTRATION_ERROR, termination.reasonCode);
+ assertEquals(999, termination.extraCode);
+ assertEquals("Timeout", termination.extraMessage);
+
+ ArgumentCaptor<ImsRegistrationStats> statsCaptor =
+ ArgumentCaptor.forClass(ImsRegistrationStats.class);
+ verify(mPersistAtomsStorage).addImsRegistrationStats(statsCaptor.capture());
+ ImsRegistrationStats stats = statsCaptor.getValue();
+ assertEquals(CARRIER1_ID, stats.carrierId);
+ assertEquals(0, stats.simSlotIndex);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, stats.rat);
+ assertEquals(2000L, stats.unregisteredMillis);
+ verifyNoMoreInteractions(mPersistAtomsStorage);
+ }
+
+ @Test
+ @SmallTest
public void onImsUnregistered_setupFailure() throws Exception {
mImsStats.onImsUnregistered(
new ImsReasonInfo(ImsReasonInfo.CODE_REGISTRATION_ERROR, 999, "Timeout"));
@@ -521,7 +793,7 @@ public class ImsStatsTest extends TelephonyTest {
ImsRegistrationTermination termination = captor.getValue();
assertEquals(CARRIER1_ID, termination.carrierId);
assertFalse(termination.isMultiSim);
- assertEquals(TelephonyManager.NETWORK_TYPE_UNKNOWN, termination.ratAtEnd);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, termination.ratAtEnd);
assertTrue(termination.setupFailed);
assertEquals(ImsReasonInfo.CODE_REGISTRATION_ERROR, termination.reasonCode);
assertEquals(999, termination.extraCode);
@@ -532,16 +804,26 @@ public class ImsStatsTest extends TelephonyTest {
@Test
@SmallTest
public void onImsUnregistered_setupFailureWithProgress() throws Exception {
- mImsStats.onImsRegistering(REGISTRATION_TECH_LTE);
+ mImsStats.onImsRegistering(TRANSPORT_TYPE_WWAN);
mImsStats.incTimeMillis(2000L);
mImsStats.onImsUnregistered(
new ImsReasonInfo(ImsReasonInfo.CODE_REGISTRATION_ERROR, 999, "Timeout"));
- // Atom with termination info should be generated
- ArgumentCaptor<ImsRegistrationTermination> captor =
+ // Atom with termination info and durations should be generated
+ ArgumentCaptor<ImsRegistrationStats> statsCaptor =
+ ArgumentCaptor.forClass(ImsRegistrationStats.class);
+ verify(mPersistAtomsStorage).addImsRegistrationStats(statsCaptor.capture());
+ ImsRegistrationStats stats = statsCaptor.getValue();
+ assertEquals(CARRIER1_ID, stats.carrierId);
+ assertEquals(0, stats.simSlotIndex);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, stats.rat);
+ assertEquals(0L, stats.registeredMillis);
+ assertEquals(2000L, stats.registeringMillis);
+
+ ArgumentCaptor<ImsRegistrationTermination> terminationCaptor =
ArgumentCaptor.forClass(ImsRegistrationTermination.class);
- verify(mPersistAtomsStorage).addImsRegistrationTermination(captor.capture());
- ImsRegistrationTermination termination = captor.getValue();
+ verify(mPersistAtomsStorage).addImsRegistrationTermination(terminationCaptor.capture());
+ ImsRegistrationTermination termination = terminationCaptor.getValue();
assertEquals(CARRIER1_ID, termination.carrierId);
assertFalse(termination.isMultiSim);
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, termination.ratAtEnd);
@@ -555,7 +837,7 @@ public class ImsStatsTest extends TelephonyTest {
@Test
@SmallTest
public void onImsUnregistered_afterRegistered() throws Exception {
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.incTimeMillis(2000L);
mImsStats.onImsUnregistered(
new ImsReasonInfo(ImsReasonInfo.CODE_REGISTRATION_ERROR, 999, "Timeout"));
@@ -604,7 +886,7 @@ public class ImsStatsTest extends TelephonyTest {
ImsRegistrationTermination termination = captor.getValue();
assertEquals(CARRIER1_ID, termination.carrierId);
assertFalse(termination.isMultiSim);
- assertEquals(TelephonyManager.NETWORK_TYPE_UNKNOWN, termination.ratAtEnd);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, termination.ratAtEnd);
assertTrue(termination.setupFailed);
assertEquals(ImsReasonInfo.CODE_REGISTRATION_ERROR, termination.reasonCode);
assertEquals(0, termination.extraCode);
@@ -630,7 +912,7 @@ public class ImsStatsTest extends TelephonyTest {
ImsRegistrationTermination termination = captor.getValue();
assertEquals(CARRIER1_ID, termination.carrierId);
assertFalse(termination.isMultiSim);
- assertEquals(TelephonyManager.NETWORK_TYPE_UNKNOWN, termination.ratAtEnd);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, termination.ratAtEnd);
assertTrue(termination.setupFailed);
assertEquals(ImsReasonInfo.CODE_REGISTRATION_ERROR, termination.reasonCode);
assertEquals(0, termination.extraCode);
@@ -757,9 +1039,7 @@ public class ImsStatsTest extends TelephonyTest {
}
}
- @Test
- @SmallTest
- public void onImsUnregistered_multiSim() throws Exception {
+ void secondSimMockSetup() {
doReturn(mSecondImsPhone).when(mSecondPhone).getImsPhone();
doReturn(mSecondPhone).when(mSecondImsPhone).getDefaultPhone();
doReturn(1).when(mSecondPhone).getPhoneId();
@@ -776,8 +1056,14 @@ public class ImsStatsTest extends TelephonyTest {
// Reusing service state tracker from phone 0 for simplicity
doReturn(mSST).when(mSecondPhone).getServiceStateTracker();
doReturn(mSST).when(mSecondImsPhone).getServiceStateTracker();
+ }
+
+ @Test
+ @SmallTest
+ public void onImsUnregistered_multiSim() throws Exception {
+ secondSimMockSetup();
mImsStats = new TestableImsStats(mSecondImsPhone);
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.incTimeMillis(2000L);
mImsStats.onImsUnregistered(
new ImsReasonInfo(ImsReasonInfo.CODE_REGISTRATION_ERROR, 999, "Timeout"));
@@ -815,6 +1101,42 @@ public class ImsStatsTest extends TelephonyTest {
@Test
@SmallTest
+ public void onImsUnregistered_crossSim() throws Exception {
+ secondSimMockSetup();
+ mImsStats = new TestableImsStats(mSecondImsPhone);
+ mImsStats.onImsRegistered(mCrossSimAttributes);
+ mImsStats.incTimeMillis(2000L);
+ mImsStats.onImsUnregistered(
+ new ImsReasonInfo(ImsReasonInfo.CODE_REGISTRATION_ERROR, 999, "Timeout"));
+
+ // Atom with termination info and durations should be generated
+ ArgumentCaptor<ImsRegistrationStats> statsCaptor =
+ ArgumentCaptor.forClass(ImsRegistrationStats.class);
+ verify(mPersistAtomsStorage).addImsRegistrationStats(statsCaptor.capture());
+ ImsRegistrationStats stats = statsCaptor.getValue();
+ assertEquals(CARRIER2_ID, stats.carrierId);
+ assertEquals(1, stats.simSlotIndex);
+ assertEquals(TelephonyManager.NETWORK_TYPE_IWLAN, stats.rat);
+ assertEquals(true, stats.isIwlanCrossSim);
+ assertEquals(2000L, stats.registeredMillis);
+
+ ArgumentCaptor<ImsRegistrationTermination> terminationCaptor =
+ ArgumentCaptor.forClass(ImsRegistrationTermination.class);
+ verify(mPersistAtomsStorage).addImsRegistrationTermination(terminationCaptor.capture());
+ ImsRegistrationTermination termination = terminationCaptor.getValue();
+ assertEquals(CARRIER2_ID, termination.carrierId);
+ assertTrue(termination.isMultiSim);
+ assertEquals(TelephonyManager.NETWORK_TYPE_IWLAN, termination.ratAtEnd);
+ assertEquals(true, termination.isIwlanCrossSim);
+ assertFalse(termination.setupFailed);
+ assertEquals(ImsReasonInfo.CODE_REGISTRATION_ERROR, termination.reasonCode);
+ assertEquals(999, termination.extraCode);
+ assertEquals("Timeout", termination.extraMessage);
+ verifyNoMoreInteractions(mPersistAtomsStorage);
+ }
+
+ @Test
+ @SmallTest
public void getImsVoiceRadioTech_noRegistration() throws Exception {
// Do nothing
@@ -824,7 +1146,7 @@ public class ImsStatsTest extends TelephonyTest {
@Test
@SmallTest
public void getImsVoiceRadioTech_noVoiceRegistration() throws Exception {
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.onImsCapabilitiesChanged(
REGISTRATION_TECH_LTE, new MmTelCapabilities(CAPABILITY_TYPE_SMS));
@@ -834,7 +1156,7 @@ public class ImsStatsTest extends TelephonyTest {
@Test
@SmallTest
public void getImsVoiceRadioTech_cellularRegistration() throws Exception {
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.onImsCapabilitiesChanged(
REGISTRATION_TECH_LTE, new MmTelCapabilities(CAPABILITY_TYPE_VOICE));
@@ -844,7 +1166,7 @@ public class ImsStatsTest extends TelephonyTest {
@Test
@SmallTest
public void getImsVoiceRadioTech_wifiRegistration() throws Exception {
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WLAN);
+ mImsStats.onImsRegistered(mIwlanAttributes);
mImsStats.onImsCapabilitiesChanged(
REGISTRATION_TECH_IWLAN, new MmTelCapabilities(CAPABILITY_TYPE_VOICE));
@@ -853,8 +1175,18 @@ public class ImsStatsTest extends TelephonyTest {
@Test
@SmallTest
+ public void getImsVoiceRadioTech_crossSimRegistration() throws Exception {
+ mImsStats.onImsRegistered(mCrossSimAttributes);
+ mImsStats.onImsCapabilitiesChanged(
+ REGISTRATION_TECH_CROSS_SIM, new MmTelCapabilities(CAPABILITY_TYPE_VOICE));
+
+ assertEquals(TelephonyManager.NETWORK_TYPE_IWLAN, mImsStats.getImsVoiceRadioTech());
+ }
+
+ @Test
+ @SmallTest
public void getImsVoiceRadioTech_unregistered() throws Exception {
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.onImsCapabilitiesChanged(
REGISTRATION_TECH_LTE, new MmTelCapabilities(CAPABILITY_TYPE_VOICE));
mImsStats.onImsUnregistered(
@@ -873,17 +1205,14 @@ public class ImsStatsTest extends TelephonyTest {
@Test
@SmallTest
public void getImsVoiceRadioTech_serviceStateChanged() throws Exception {
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.onImsCapabilitiesChanged(
REGISTRATION_TECH_LTE, new MmTelCapabilities(CAPABILITY_TYPE_VOICE));
- doReturn(
- new NetworkRegistrationInfo.Builder()
- .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_NR)
- .setRegistrationState(
- NetworkRegistrationInfo.REGISTRATION_STATE_HOME)
- .build())
+
+ doReturn(TelephonyManager.NETWORK_TYPE_NR)
.when(mServiceState)
- .getNetworkRegistrationInfo(DOMAIN_PS, TRANSPORT_TYPE_WWAN);
+ .getDataNetworkType();
+
mImsStats.onServiceStateChanged(mServiceState);
assertEquals(TelephonyManager.NETWORK_TYPE_NR, mImsStats.getImsVoiceRadioTech());
}
@@ -891,17 +1220,14 @@ public class ImsStatsTest extends TelephonyTest {
@Test
@SmallTest
public void getImsVoiceRadioTech_serviceStateChanged_wlan() throws Exception {
- mImsStats.onImsRegistered(TRANSPORT_TYPE_WWAN);
+ mImsStats.onImsRegistered(mWwanAttributes);
mImsStats.onImsCapabilitiesChanged(
REGISTRATION_TECH_IWLAN, new MmTelCapabilities(CAPABILITY_TYPE_VOICE));
- doReturn(
- new NetworkRegistrationInfo.Builder()
- .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_NR)
- .setRegistrationState(
- NetworkRegistrationInfo.REGISTRATION_STATE_HOME)
- .build())
+
+ doReturn(TelephonyManager.NETWORK_TYPE_IWLAN)
.when(mServiceState)
- .getNetworkRegistrationInfo(DOMAIN_PS, TRANSPORT_TYPE_WWAN);
+ .getDataNetworkType();
+
mImsStats.onServiceStateChanged(mServiceState);
assertEquals(TelephonyManager.NETWORK_TYPE_IWLAN, mImsStats.getImsVoiceRadioTech());
}