Loading proto/src/persist_atoms.proto +2 −1 Original line number Diff line number Diff line Loading @@ -421,6 +421,7 @@ message ImsRegistrationTermination { } message ImsRegistrationStats { reserved 16; optional int32 carrier_id = 1; optional int32 sim_slot_index = 2; optional int32 rat = 3; Loading @@ -437,7 +438,7 @@ message ImsRegistrationStats { optional int64 registering_millis = 13; optional int64 unregistered_millis = 14; optional bool is_iwlan_cross_sim = 15; optional int64 registered_times = 16; optional int32 registered_times = 17; // Internal use only optional int64 last_used_millis = 10001; Loading src/java/com/android/internal/telephony/metrics/MetricsCollector.java +1 −1 Original line number Diff line number Diff line Loading @@ -1125,7 +1125,7 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { roundAndConvertMillisToSeconds(stats.registeringMillis), roundAndConvertMillisToSeconds(stats.unregisteredMillis), stats.isIwlanCrossSim, roundAndConvertMillisToSeconds(stats.registeredTimes)); stats.registeredTimes); } private static StatsEvent buildStatsEvent(ImsRegistrationTermination termination) { Loading src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java +0 −2 Original line number Diff line number Diff line Loading @@ -2291,8 +2291,6 @@ public class PersistAtomsStorage { normalizeDurationTo24H(stats[i].registeringMillis, intervalMillis); stats[i].unregisteredMillis = normalizeDurationTo24H(stats[i].unregisteredMillis, intervalMillis); stats[i].registeredTimes = normalizeDurationTo24H(stats[i].registeredTimes, intervalMillis); } return stats; } Loading tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java +116 −10 Original line number Diff line number Diff line Loading @@ -160,6 +160,8 @@ public class PersistAtomsStorageTest extends TelephonyTest { private CellularServiceState[] mServiceStates; // IMS registrations for slot 0 and 1 private ImsRegistrationStats mImsRegStatsUnregisteredLte0; private ImsRegistrationStats mImsRegStatsRegisteringLte0; private ImsRegistrationStats mImsRegistrationStatsLte0; private ImsRegistrationStats mImsRegistrationStatsWifi0; private ImsRegistrationStats mImsRegistrationStatsLte1; Loading Loading @@ -504,6 +506,42 @@ public class PersistAtomsStorageTest extends TelephonyTest { mServiceState5Proto }; // IMS over LTE on slot 0, unregistered for 5 seconds at the registered state mImsRegStatsUnregisteredLte0 = new ImsRegistrationStats(); mImsRegStatsUnregisteredLte0.carrierId = CARRIER1_ID; mImsRegStatsUnregisteredLte0.simSlotIndex = 0; mImsRegStatsUnregisteredLte0.rat = TelephonyManager.NETWORK_TYPE_LTE; mImsRegStatsUnregisteredLte0.registeredMillis = 0; mImsRegStatsUnregisteredLte0.voiceCapableMillis = 5000L; mImsRegStatsUnregisteredLte0.voiceAvailableMillis = 5000L; mImsRegStatsUnregisteredLte0.smsCapableMillis = 5000L; mImsRegStatsUnregisteredLte0.smsAvailableMillis = 5000L; mImsRegStatsUnregisteredLte0.videoCapableMillis = 5000L; mImsRegStatsUnregisteredLte0.videoAvailableMillis = 5000L; mImsRegStatsUnregisteredLte0.utCapableMillis = 5000L; mImsRegStatsUnregisteredLte0.utAvailableMillis = 5000L; mImsRegStatsUnregisteredLte0.registeringMillis = 0; mImsRegStatsUnregisteredLte0.unregisteredMillis = 5000L; mImsRegStatsUnregisteredLte0.registeredTimes = 0; // IMS over LTE on slot 0, registering for 5 seconds at the registered state mImsRegStatsRegisteringLte0 = new ImsRegistrationStats(); mImsRegStatsRegisteringLte0.carrierId = CARRIER1_ID; mImsRegStatsRegisteringLte0.simSlotIndex = 0; mImsRegStatsRegisteringLte0.rat = TelephonyManager.NETWORK_TYPE_LTE; mImsRegStatsRegisteringLte0.registeredMillis = 0; mImsRegStatsRegisteringLte0.voiceCapableMillis = 5000L; mImsRegStatsRegisteringLte0.voiceAvailableMillis = 5000L; mImsRegStatsRegisteringLte0.smsCapableMillis = 5000L; mImsRegStatsRegisteringLte0.smsAvailableMillis = 5000L; mImsRegStatsRegisteringLte0.videoCapableMillis = 5000L; mImsRegStatsRegisteringLte0.videoAvailableMillis = 5000L; mImsRegStatsRegisteringLte0.utCapableMillis = 5000L; mImsRegStatsRegisteringLte0.utAvailableMillis = 5000L; mImsRegStatsRegisteringLte0.registeringMillis = 5000L; mImsRegStatsRegisteringLte0.unregisteredMillis = 0; mImsRegStatsRegisteringLte0.registeredTimes = 1; // IMS over LTE on slot 0, registered for 5 seconds mImsRegistrationStatsLte0 = new ImsRegistrationStats(); mImsRegistrationStatsLte0.carrierId = CARRIER1_ID; Loading @@ -518,6 +556,9 @@ public class PersistAtomsStorageTest extends TelephonyTest { mImsRegistrationStatsLte0.videoAvailableMillis = 5000L; mImsRegistrationStatsLte0.utCapableMillis = 5000L; mImsRegistrationStatsLte0.utAvailableMillis = 5000L; mImsRegistrationStatsLte0.registeringMillis = 0; mImsRegistrationStatsLte0.unregisteredMillis = 0; mImsRegistrationStatsLte0.registeredTimes = 0; // IMS over WiFi on slot 0, registered for 10 seconds (voice only) mImsRegistrationStatsWifi0 = new ImsRegistrationStats(); Loading @@ -542,6 +583,9 @@ public class PersistAtomsStorageTest extends TelephonyTest { mImsRegistrationStatsLte1.videoAvailableMillis = 20000L; mImsRegistrationStatsLte1.utCapableMillis = 20000L; mImsRegistrationStatsLte1.utAvailableMillis = 20000L; mImsRegistrationStatsLte1.registeringMillis = 0; mImsRegistrationStatsLte1.unregisteredMillis = 0; mImsRegistrationStatsLte1.registeredTimes = 0; // IMS terminations on LTE mImsRegistrationTerminationLte = new ImsRegistrationTermination(); Loading @@ -567,8 +611,13 @@ public class PersistAtomsStorageTest extends TelephonyTest { mImsRegistrationStats = new ImsRegistrationStats[] { mImsRegistrationStatsLte0, mImsRegistrationStatsWifi0, mImsRegistrationStatsLte1 mImsRegStatsUnregisteredLte0, mImsRegStatsRegisteringLte0, mImsRegistrationStatsLte0, mImsRegistrationStatsWifi0, mImsRegistrationStatsLte1 }; mImsRegistrationTerminations = new ImsRegistrationTermination[] { mImsRegistrationTerminationLte, mImsRegistrationTerminationWifi Loading Loading @@ -1144,6 +1193,8 @@ public class PersistAtomsStorageTest extends TelephonyTest { mServiceState5Proto = null; mServiceSwitches = null; mServiceStates = null; mImsRegStatsUnregisteredLte0 = null; mImsRegStatsRegisteringLte0 = null; mImsRegistrationStatsLte0 = null; mImsRegistrationStatsWifi0 = null; mImsRegistrationStatsLte1 = null; Loading Loading @@ -1753,7 +1804,7 @@ public class PersistAtomsStorageTest extends TelephonyTest { mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegistrationStatsLte0)); mPersistAtomsStorage.incTimeMillis(DAY_IN_MILLIS); // Service state and service switch should be added successfully // mImsRegistrationStatsLte0 should be added successfully verifyCurrentStateSavedToFileOnce(); ImsRegistrationStats[] regStats = mPersistAtomsStorage.getImsRegistrationStats(0L); assertProtoArrayEquals(new ImsRegistrationStats[] {mImsRegistrationStatsLte0}, regStats); Loading @@ -1769,7 +1820,7 @@ public class PersistAtomsStorageTest extends TelephonyTest { mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegistrationStatsWifi0)); mPersistAtomsStorage.incTimeMillis(DAY_IN_MILLIS); // Service state and service switch should be added successfully // mImsRegistrationStatsLte0 and mImsRegistrationStatsWifi0 should be added successfully verifyCurrentStateSavedToFileOnce(); ImsRegistrationStats[] regStats = mPersistAtomsStorage.getImsRegistrationStats(0L); assertProtoArrayEqualsIgnoringOrder( Loading @@ -1777,20 +1828,36 @@ public class PersistAtomsStorageTest extends TelephonyTest { regStats); } @Test @SmallTest public void addImsRegistrationStats_withExistingRegisteringEntries() throws Exception { createEmptyTestFile(); mPersistAtomsStorage = new TestablePersistAtomsStorage(mContext); mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegStatsRegisteringLte0)); mPersistAtomsStorage.incTimeMillis(DAY_IN_MILLIS); // mImsRegStatsRegisteringLte0's info should be added successfully verifyCurrentStateSavedToFileOnce(); ImsRegistrationStats[] regStats = mPersistAtomsStorage.getImsRegistrationStats(0L); assertProtoArrayEqualsIgnoringOrder( new ImsRegistrationStats[] {mImsRegStatsRegisteringLte0}, regStats); } @Test @SmallTest public void addImsRegistrationStats_updateExistingEntries() throws Exception { createTestFile(START_TIME_MILLIS); ImsRegistrationStats newImsRegistrationStatsLte0 = copyOf(mImsRegistrationStatsLte0); ImsRegistrationStats newImsRegistrationStatsLte0 = copyOf(mImsRegStatsUnregisteredLte0); mPersistAtomsStorage = new TestablePersistAtomsStorage(mContext); mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegistrationStatsLte0)); mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegStatsUnregisteredLte0)); mPersistAtomsStorage.incTimeMillis(DAY_IN_MILLIS); // mImsRegistrationStatsLte0's durations should be doubled // mImsRegStatsUnregisteredLte0's durations should be doubled verifyCurrentStateSavedToFileOnce(); ImsRegistrationStats[] serviceStates = mPersistAtomsStorage.getImsRegistrationStats(0L); newImsRegistrationStatsLte0.registeredMillis *= 2; ImsRegistrationStats[] regStats = mPersistAtomsStorage.getImsRegistrationStats(0L); newImsRegistrationStatsLte0.unregisteredMillis *= 2; newImsRegistrationStatsLte0.voiceCapableMillis *= 2; newImsRegistrationStatsLte0.voiceAvailableMillis *= 2; newImsRegistrationStatsLte0.smsCapableMillis *= 2; Loading @@ -1802,10 +1869,12 @@ public class PersistAtomsStorageTest extends TelephonyTest { assertProtoArrayEqualsIgnoringOrder( new ImsRegistrationStats[] { newImsRegistrationStatsLte0, mImsRegStatsRegisteringLte0, mImsRegistrationStatsLte0, mImsRegistrationStatsWifi0, mImsRegistrationStatsLte1 }, serviceStates); regStats); } @Test Loading @@ -1832,6 +1901,39 @@ public class PersistAtomsStorageTest extends TelephonyTest { expectedRegistrationStats.toArray(new ImsRegistrationStats[0]), stats); } @Test @SmallTest public void addImsRegistrationStats_withExistingDurationEntries() throws Exception { createEmptyTestFile(); ImsRegistrationStats newImsRegStatsLte0 = copyOf(mImsRegistrationStatsLte0); mPersistAtomsStorage = new TestablePersistAtomsStorage(mContext); mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegStatsUnregisteredLte0)); mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegStatsRegisteringLte0)); mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegistrationStatsLte0)); mPersistAtomsStorage.incTimeMillis(DAY_IN_MILLIS); // UnregisteredMillis, registeringMillis and registeredTimes should be added successfully // capable and available durations should be tripled verifyCurrentStateSavedToFileOnce(); ImsRegistrationStats[] regStats = mPersistAtomsStorage.getImsRegistrationStats(0L); newImsRegStatsLte0.unregisteredMillis += newImsRegStatsLte0.registeredMillis; newImsRegStatsLte0.registeringMillis += newImsRegStatsLte0.registeredMillis; newImsRegStatsLte0.registeredTimes += 1; newImsRegStatsLte0.voiceCapableMillis *= 3; newImsRegStatsLte0.voiceAvailableMillis *= 3; newImsRegStatsLte0.smsCapableMillis *= 3; newImsRegStatsLte0.smsAvailableMillis *= 3; newImsRegStatsLte0.videoCapableMillis *= 3; newImsRegStatsLte0.videoAvailableMillis *= 3; newImsRegStatsLte0.utCapableMillis *= 3; newImsRegStatsLte0.utAvailableMillis *= 3; assertProtoArrayEqualsIgnoringOrder( new ImsRegistrationStats[] { newImsRegStatsLte0 }, regStats); } @Test @SmallTest public void addImsRegistrationTermination_emptyProto() throws Exception { Loading Loading @@ -1943,7 +2045,11 @@ public class PersistAtomsStorageTest extends TelephonyTest { // pull timestamp should be updated and saved assertProtoArrayEqualsIgnoringOrder( new ImsRegistrationStats[] { mImsRegistrationStatsLte0, mImsRegistrationStatsWifi0, mImsRegistrationStatsLte1 mImsRegStatsUnregisteredLte0, mImsRegStatsRegisteringLte0, mImsRegistrationStatsLte0, mImsRegistrationStatsWifi0, mImsRegistrationStatsLte1 }, stats1); assertProtoArrayEquals(new ImsRegistrationStats[0], stats2); Loading Loading
proto/src/persist_atoms.proto +2 −1 Original line number Diff line number Diff line Loading @@ -421,6 +421,7 @@ message ImsRegistrationTermination { } message ImsRegistrationStats { reserved 16; optional int32 carrier_id = 1; optional int32 sim_slot_index = 2; optional int32 rat = 3; Loading @@ -437,7 +438,7 @@ message ImsRegistrationStats { optional int64 registering_millis = 13; optional int64 unregistered_millis = 14; optional bool is_iwlan_cross_sim = 15; optional int64 registered_times = 16; optional int32 registered_times = 17; // Internal use only optional int64 last_used_millis = 10001; Loading
src/java/com/android/internal/telephony/metrics/MetricsCollector.java +1 −1 Original line number Diff line number Diff line Loading @@ -1125,7 +1125,7 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { roundAndConvertMillisToSeconds(stats.registeringMillis), roundAndConvertMillisToSeconds(stats.unregisteredMillis), stats.isIwlanCrossSim, roundAndConvertMillisToSeconds(stats.registeredTimes)); stats.registeredTimes); } private static StatsEvent buildStatsEvent(ImsRegistrationTermination termination) { Loading
src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java +0 −2 Original line number Diff line number Diff line Loading @@ -2291,8 +2291,6 @@ public class PersistAtomsStorage { normalizeDurationTo24H(stats[i].registeringMillis, intervalMillis); stats[i].unregisteredMillis = normalizeDurationTo24H(stats[i].unregisteredMillis, intervalMillis); stats[i].registeredTimes = normalizeDurationTo24H(stats[i].registeredTimes, intervalMillis); } return stats; } Loading
tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java +116 −10 Original line number Diff line number Diff line Loading @@ -160,6 +160,8 @@ public class PersistAtomsStorageTest extends TelephonyTest { private CellularServiceState[] mServiceStates; // IMS registrations for slot 0 and 1 private ImsRegistrationStats mImsRegStatsUnregisteredLte0; private ImsRegistrationStats mImsRegStatsRegisteringLte0; private ImsRegistrationStats mImsRegistrationStatsLte0; private ImsRegistrationStats mImsRegistrationStatsWifi0; private ImsRegistrationStats mImsRegistrationStatsLte1; Loading Loading @@ -504,6 +506,42 @@ public class PersistAtomsStorageTest extends TelephonyTest { mServiceState5Proto }; // IMS over LTE on slot 0, unregistered for 5 seconds at the registered state mImsRegStatsUnregisteredLte0 = new ImsRegistrationStats(); mImsRegStatsUnregisteredLte0.carrierId = CARRIER1_ID; mImsRegStatsUnregisteredLte0.simSlotIndex = 0; mImsRegStatsUnregisteredLte0.rat = TelephonyManager.NETWORK_TYPE_LTE; mImsRegStatsUnregisteredLte0.registeredMillis = 0; mImsRegStatsUnregisteredLte0.voiceCapableMillis = 5000L; mImsRegStatsUnregisteredLte0.voiceAvailableMillis = 5000L; mImsRegStatsUnregisteredLte0.smsCapableMillis = 5000L; mImsRegStatsUnregisteredLte0.smsAvailableMillis = 5000L; mImsRegStatsUnregisteredLte0.videoCapableMillis = 5000L; mImsRegStatsUnregisteredLte0.videoAvailableMillis = 5000L; mImsRegStatsUnregisteredLte0.utCapableMillis = 5000L; mImsRegStatsUnregisteredLte0.utAvailableMillis = 5000L; mImsRegStatsUnregisteredLte0.registeringMillis = 0; mImsRegStatsUnregisteredLte0.unregisteredMillis = 5000L; mImsRegStatsUnregisteredLte0.registeredTimes = 0; // IMS over LTE on slot 0, registering for 5 seconds at the registered state mImsRegStatsRegisteringLte0 = new ImsRegistrationStats(); mImsRegStatsRegisteringLte0.carrierId = CARRIER1_ID; mImsRegStatsRegisteringLte0.simSlotIndex = 0; mImsRegStatsRegisteringLte0.rat = TelephonyManager.NETWORK_TYPE_LTE; mImsRegStatsRegisteringLte0.registeredMillis = 0; mImsRegStatsRegisteringLte0.voiceCapableMillis = 5000L; mImsRegStatsRegisteringLte0.voiceAvailableMillis = 5000L; mImsRegStatsRegisteringLte0.smsCapableMillis = 5000L; mImsRegStatsRegisteringLte0.smsAvailableMillis = 5000L; mImsRegStatsRegisteringLte0.videoCapableMillis = 5000L; mImsRegStatsRegisteringLte0.videoAvailableMillis = 5000L; mImsRegStatsRegisteringLte0.utCapableMillis = 5000L; mImsRegStatsRegisteringLte0.utAvailableMillis = 5000L; mImsRegStatsRegisteringLte0.registeringMillis = 5000L; mImsRegStatsRegisteringLte0.unregisteredMillis = 0; mImsRegStatsRegisteringLte0.registeredTimes = 1; // IMS over LTE on slot 0, registered for 5 seconds mImsRegistrationStatsLte0 = new ImsRegistrationStats(); mImsRegistrationStatsLte0.carrierId = CARRIER1_ID; Loading @@ -518,6 +556,9 @@ public class PersistAtomsStorageTest extends TelephonyTest { mImsRegistrationStatsLte0.videoAvailableMillis = 5000L; mImsRegistrationStatsLte0.utCapableMillis = 5000L; mImsRegistrationStatsLte0.utAvailableMillis = 5000L; mImsRegistrationStatsLte0.registeringMillis = 0; mImsRegistrationStatsLte0.unregisteredMillis = 0; mImsRegistrationStatsLte0.registeredTimes = 0; // IMS over WiFi on slot 0, registered for 10 seconds (voice only) mImsRegistrationStatsWifi0 = new ImsRegistrationStats(); Loading @@ -542,6 +583,9 @@ public class PersistAtomsStorageTest extends TelephonyTest { mImsRegistrationStatsLte1.videoAvailableMillis = 20000L; mImsRegistrationStatsLte1.utCapableMillis = 20000L; mImsRegistrationStatsLte1.utAvailableMillis = 20000L; mImsRegistrationStatsLte1.registeringMillis = 0; mImsRegistrationStatsLte1.unregisteredMillis = 0; mImsRegistrationStatsLte1.registeredTimes = 0; // IMS terminations on LTE mImsRegistrationTerminationLte = new ImsRegistrationTermination(); Loading @@ -567,8 +611,13 @@ public class PersistAtomsStorageTest extends TelephonyTest { mImsRegistrationStats = new ImsRegistrationStats[] { mImsRegistrationStatsLte0, mImsRegistrationStatsWifi0, mImsRegistrationStatsLte1 mImsRegStatsUnregisteredLte0, mImsRegStatsRegisteringLte0, mImsRegistrationStatsLte0, mImsRegistrationStatsWifi0, mImsRegistrationStatsLte1 }; mImsRegistrationTerminations = new ImsRegistrationTermination[] { mImsRegistrationTerminationLte, mImsRegistrationTerminationWifi Loading Loading @@ -1144,6 +1193,8 @@ public class PersistAtomsStorageTest extends TelephonyTest { mServiceState5Proto = null; mServiceSwitches = null; mServiceStates = null; mImsRegStatsUnregisteredLte0 = null; mImsRegStatsRegisteringLte0 = null; mImsRegistrationStatsLte0 = null; mImsRegistrationStatsWifi0 = null; mImsRegistrationStatsLte1 = null; Loading Loading @@ -1753,7 +1804,7 @@ public class PersistAtomsStorageTest extends TelephonyTest { mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegistrationStatsLte0)); mPersistAtomsStorage.incTimeMillis(DAY_IN_MILLIS); // Service state and service switch should be added successfully // mImsRegistrationStatsLte0 should be added successfully verifyCurrentStateSavedToFileOnce(); ImsRegistrationStats[] regStats = mPersistAtomsStorage.getImsRegistrationStats(0L); assertProtoArrayEquals(new ImsRegistrationStats[] {mImsRegistrationStatsLte0}, regStats); Loading @@ -1769,7 +1820,7 @@ public class PersistAtomsStorageTest extends TelephonyTest { mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegistrationStatsWifi0)); mPersistAtomsStorage.incTimeMillis(DAY_IN_MILLIS); // Service state and service switch should be added successfully // mImsRegistrationStatsLte0 and mImsRegistrationStatsWifi0 should be added successfully verifyCurrentStateSavedToFileOnce(); ImsRegistrationStats[] regStats = mPersistAtomsStorage.getImsRegistrationStats(0L); assertProtoArrayEqualsIgnoringOrder( Loading @@ -1777,20 +1828,36 @@ public class PersistAtomsStorageTest extends TelephonyTest { regStats); } @Test @SmallTest public void addImsRegistrationStats_withExistingRegisteringEntries() throws Exception { createEmptyTestFile(); mPersistAtomsStorage = new TestablePersistAtomsStorage(mContext); mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegStatsRegisteringLte0)); mPersistAtomsStorage.incTimeMillis(DAY_IN_MILLIS); // mImsRegStatsRegisteringLte0's info should be added successfully verifyCurrentStateSavedToFileOnce(); ImsRegistrationStats[] regStats = mPersistAtomsStorage.getImsRegistrationStats(0L); assertProtoArrayEqualsIgnoringOrder( new ImsRegistrationStats[] {mImsRegStatsRegisteringLte0}, regStats); } @Test @SmallTest public void addImsRegistrationStats_updateExistingEntries() throws Exception { createTestFile(START_TIME_MILLIS); ImsRegistrationStats newImsRegistrationStatsLte0 = copyOf(mImsRegistrationStatsLte0); ImsRegistrationStats newImsRegistrationStatsLte0 = copyOf(mImsRegStatsUnregisteredLte0); mPersistAtomsStorage = new TestablePersistAtomsStorage(mContext); mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegistrationStatsLte0)); mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegStatsUnregisteredLte0)); mPersistAtomsStorage.incTimeMillis(DAY_IN_MILLIS); // mImsRegistrationStatsLte0's durations should be doubled // mImsRegStatsUnregisteredLte0's durations should be doubled verifyCurrentStateSavedToFileOnce(); ImsRegistrationStats[] serviceStates = mPersistAtomsStorage.getImsRegistrationStats(0L); newImsRegistrationStatsLte0.registeredMillis *= 2; ImsRegistrationStats[] regStats = mPersistAtomsStorage.getImsRegistrationStats(0L); newImsRegistrationStatsLte0.unregisteredMillis *= 2; newImsRegistrationStatsLte0.voiceCapableMillis *= 2; newImsRegistrationStatsLte0.voiceAvailableMillis *= 2; newImsRegistrationStatsLte0.smsCapableMillis *= 2; Loading @@ -1802,10 +1869,12 @@ public class PersistAtomsStorageTest extends TelephonyTest { assertProtoArrayEqualsIgnoringOrder( new ImsRegistrationStats[] { newImsRegistrationStatsLte0, mImsRegStatsRegisteringLte0, mImsRegistrationStatsLte0, mImsRegistrationStatsWifi0, mImsRegistrationStatsLte1 }, serviceStates); regStats); } @Test Loading @@ -1832,6 +1901,39 @@ public class PersistAtomsStorageTest extends TelephonyTest { expectedRegistrationStats.toArray(new ImsRegistrationStats[0]), stats); } @Test @SmallTest public void addImsRegistrationStats_withExistingDurationEntries() throws Exception { createEmptyTestFile(); ImsRegistrationStats newImsRegStatsLte0 = copyOf(mImsRegistrationStatsLte0); mPersistAtomsStorage = new TestablePersistAtomsStorage(mContext); mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegStatsUnregisteredLte0)); mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegStatsRegisteringLte0)); mPersistAtomsStorage.addImsRegistrationStats(copyOf(mImsRegistrationStatsLte0)); mPersistAtomsStorage.incTimeMillis(DAY_IN_MILLIS); // UnregisteredMillis, registeringMillis and registeredTimes should be added successfully // capable and available durations should be tripled verifyCurrentStateSavedToFileOnce(); ImsRegistrationStats[] regStats = mPersistAtomsStorage.getImsRegistrationStats(0L); newImsRegStatsLte0.unregisteredMillis += newImsRegStatsLte0.registeredMillis; newImsRegStatsLte0.registeringMillis += newImsRegStatsLte0.registeredMillis; newImsRegStatsLte0.registeredTimes += 1; newImsRegStatsLte0.voiceCapableMillis *= 3; newImsRegStatsLte0.voiceAvailableMillis *= 3; newImsRegStatsLte0.smsCapableMillis *= 3; newImsRegStatsLte0.smsAvailableMillis *= 3; newImsRegStatsLte0.videoCapableMillis *= 3; newImsRegStatsLte0.videoAvailableMillis *= 3; newImsRegStatsLte0.utCapableMillis *= 3; newImsRegStatsLte0.utAvailableMillis *= 3; assertProtoArrayEqualsIgnoringOrder( new ImsRegistrationStats[] { newImsRegStatsLte0 }, regStats); } @Test @SmallTest public void addImsRegistrationTermination_emptyProto() throws Exception { Loading Loading @@ -1943,7 +2045,11 @@ public class PersistAtomsStorageTest extends TelephonyTest { // pull timestamp should be updated and saved assertProtoArrayEqualsIgnoringOrder( new ImsRegistrationStats[] { mImsRegistrationStatsLte0, mImsRegistrationStatsWifi0, mImsRegistrationStatsLte1 mImsRegStatsUnregisteredLte0, mImsRegStatsRegisteringLte0, mImsRegistrationStatsLte0, mImsRegistrationStatsWifi0, mImsRegistrationStatsLte1 }, stats1); assertProtoArrayEquals(new ImsRegistrationStats[0], stats2); Loading