Loading proto/src/persist_atoms.proto +22 −2 Original line number Diff line number Diff line Loading @@ -89,10 +89,10 @@ message PersistAtoms { optional string build_fingerprint = 21; /* Summary of received network requests. */ repeated NetworkRequests network_requests = 22; repeated NetworkRequests network_requests = 22 [deprecated = true]; /* Timestamp of last network_requests pull. */ optional int64 network_requests_pull_timestamp_millis = 23; optional int64 network_requests_pull_timestamp_millis = 23 [deprecated = true]; /* RCS single registrtions feature tag information. */ repeated ImsRegistrationFeatureTagStats ims_registration_feature_tag_stats = 24; Loading Loading @@ -171,6 +171,12 @@ message PersistAtoms { /* Timestamp of last gba_event pull. */ optional int64 gba_event_pull_timestamp_millis = 49; /* Summary of received network requests. */ repeated NetworkRequestsV2 network_requests_v2 = 50; /* Timestamp of last network_requests_v2 pull. */ optional int64 network_requests_v2_pull_timestamp_millis = 51; } // The canonical versions of the following enums live in: Loading Loading @@ -347,12 +353,26 @@ message ImsRegistrationStats { optional int64 last_used_millis = 10001; } // deprecated - please use NetworkRequestsV2 instead message NetworkRequests { optional int32 carrier_id = 1; optional int32 enterprise_request_count = 2; optional int32 enterprise_release_count = 3; } message NetworkRequestsV2 { enum NetworkCapability { UNKNOWN = 0; PRIORITIZE_LATENCY = 1; PRIORITIZE_BANDWIDTH = 2; CBS = 3; ENTERPRISE = 4; } optional int32 carrier_id = 1; optional NetworkCapability capability = 2; optional int32 request_count = 3; } message ImsRegistrationFeatureTagStats { optional int32 carrier_id = 1; optional int32 slot_id = 2; Loading src/java/com/android/internal/telephony/data/TelephonyNetworkFactory.java +0 −4 Original line number Diff line number Diff line Loading @@ -268,8 +268,6 @@ public class TelephonyNetworkFactory extends NetworkFactory { } private void releaseNetworkInternal(TelephonyNetworkRequest networkRequest) { NetworkRequestsStats.addNetworkRelease(networkRequest.getNativeNetworkRequest(), mSubscriptionId); mPhone.getDataNetworkController().removeNetworkRequest(networkRequest); } Loading @@ -277,8 +275,6 @@ public class TelephonyNetworkFactory extends NetworkFactory { private void releaseNetworkInternal(TelephonyNetworkRequest networkRequest, @ReleaseNetworkType int releaseType, int transport) { NetworkRequestsStats.addNetworkRelease(networkRequest.getNativeNetworkRequest(), mSubscriptionId); if (mPhone.isUsingNewDataStack()) { mPhone.getDataNetworkController().removeNetworkRequest(networkRequest); } else { Loading src/java/com/android/internal/telephony/metrics/MetricsCollector.java +12 −12 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ import static com.android.internal.telephony.TelephonyStatsLog.SIP_MESSAGE_RESPO import static com.android.internal.telephony.TelephonyStatsLog.SIP_TRANSPORT_FEATURE_TAG_STATS; import static com.android.internal.telephony.TelephonyStatsLog.SIP_TRANSPORT_SESSION; import static com.android.internal.telephony.TelephonyStatsLog.SUPPORTED_RADIO_ACCESS_FAMILY; import static com.android.internal.telephony.TelephonyStatsLog.TELEPHONY_NETWORK_REQUESTS; import static com.android.internal.telephony.TelephonyStatsLog.TELEPHONY_NETWORK_REQUESTS_V2; import static com.android.internal.telephony.TelephonyStatsLog.UCE_EVENT_STATS; import static com.android.internal.telephony.TelephonyStatsLog.VOICE_CALL_RAT_USAGE; import static com.android.internal.telephony.TelephonyStatsLog.VOICE_CALL_SESSION; Loading @@ -69,7 +69,7 @@ import com.android.internal.telephony.nano.PersistAtomsProto.ImsRegistrationServ import com.android.internal.telephony.nano.PersistAtomsProto.ImsRegistrationStats; import com.android.internal.telephony.nano.PersistAtomsProto.ImsRegistrationTermination; import com.android.internal.telephony.nano.PersistAtomsProto.IncomingSms; import com.android.internal.telephony.nano.PersistAtomsProto.NetworkRequests; import com.android.internal.telephony.nano.PersistAtomsProto.NetworkRequestsV2; import com.android.internal.telephony.nano.PersistAtomsProto.OutgoingSms; import com.android.internal.telephony.nano.PersistAtomsProto.PresenceNotifyEvent; import com.android.internal.telephony.nano.PersistAtomsProto.RcsAcsProvisioningStats; Loading Loading @@ -157,7 +157,7 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { registerAtom(DATA_CALL_SESSION, POLICY_PULL_DAILY); registerAtom(IMS_REGISTRATION_STATS, POLICY_PULL_DAILY); registerAtom(IMS_REGISTRATION_TERMINATION, POLICY_PULL_DAILY); registerAtom(TELEPHONY_NETWORK_REQUESTS, POLICY_PULL_DAILY); registerAtom(TELEPHONY_NETWORK_REQUESTS_V2, POLICY_PULL_DAILY); registerAtom(IMS_REGISTRATION_FEATURE_TAG_STATS, POLICY_PULL_DAILY); registerAtom(RCS_CLIENT_PROVISIONING_STATS, POLICY_PULL_DAILY); registerAtom(RCS_ACS_PROVISIONING_STATS, POLICY_PULL_DAILY); Loading Loading @@ -215,8 +215,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { return pullImsRegistrationStats(data); case IMS_REGISTRATION_TERMINATION: return pullImsRegistrationTermination(data); case TELEPHONY_NETWORK_REQUESTS: return pullTelephonyNetworkRequests(data); case TELEPHONY_NETWORK_REQUESTS_V2: return pullTelephonyNetworkRequestsV2(data); case IMS_REGISTRATION_FEATURE_TAG_STATS: return pullImsRegistrationFeatureTagStats(data); case RCS_CLIENT_PROVISIONING_STATS: Loading Loading @@ -459,14 +459,14 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { } } private int pullTelephonyNetworkRequests(List<StatsEvent> data) { NetworkRequests[] persistAtoms = mStorage.getNetworkRequests(MIN_COOLDOWN_MILLIS); private int pullTelephonyNetworkRequestsV2(List<StatsEvent> data) { NetworkRequestsV2[] persistAtoms = mStorage.getNetworkRequestsV2(MIN_COOLDOWN_MILLIS); if (persistAtoms != null) { Arrays.stream(persistAtoms) .forEach(persistAtom -> data.add(buildStatsEvent(persistAtom))); return StatsManager.PULL_SUCCESS; } else { Rlog.w(TAG, "TELEPHONY_NETWORK_REQUESTS pull too frequent, skipping"); Rlog.w(TAG, "TELEPHONY_NETWORK_REQUESTS_V2 pull too frequent, skipping"); return StatsManager.PULL_SKIP; } } Loading Loading @@ -850,12 +850,12 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { termination.count); } private static StatsEvent buildStatsEvent(NetworkRequests networkRequests) { private static StatsEvent buildStatsEvent(NetworkRequestsV2 networkRequests) { return TelephonyStatsLog.buildStatsEvent( TELEPHONY_NETWORK_REQUESTS, TELEPHONY_NETWORK_REQUESTS_V2, networkRequests.carrierId, networkRequests.enterpriseRequestCount, networkRequests.enterpriseReleaseCount); networkRequests.capability, networkRequests.requestCount); } private static StatsEvent buildStatsEvent(ImsRegistrationFeatureTagStats stats) { Loading src/java/com/android/internal/telephony/metrics/NetworkRequestsStats.java +23 −20 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ import android.telephony.TelephonyManager; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneFactory; import com.android.internal.telephony.nano.PersistAtomsProto.NetworkRequests; import com.android.internal.telephony.nano.PersistAtomsProto.NetworkRequestsV2; /** Metrics for the network requests. */ Loading @@ -32,30 +32,33 @@ public class NetworkRequestsStats { /** Generate metrics when network request occurs. */ public static void addNetworkRequest(NetworkRequest networkRequest, int subId) { if (!networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)) { // Currently only handle enterprise return; PersistAtomsStorage storage = PhoneFactory.getMetricsCollector().getAtomsStorage(); NetworkRequestsV2 networkRequestsTemplate = new NetworkRequestsV2(); networkRequestsTemplate.carrierId = getCarrierId(subId); networkRequestsTemplate.requestCount = 1; if (networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)) { networkRequestsTemplate.capability = NetworkRequestsV2.NetworkCapability.PRIORITIZE_LATENCY; storage.addNetworkRequestsV2(networkRequestsTemplate); } NetworkRequests networkRequests = new NetworkRequests(); networkRequests.carrierId = getCarrierId(subId); networkRequests.enterpriseRequestCount = 1; PersistAtomsStorage storage = PhoneFactory.getMetricsCollector().getAtomsStorage(); storage.addNetworkRequests(networkRequests); if (networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH)) { networkRequestsTemplate.capability = NetworkRequestsV2.NetworkCapability.PRIORITIZE_BANDWIDTH; storage.addNetworkRequestsV2(networkRequestsTemplate); } /** Generate metrics when network release occurs. */ public static void addNetworkRelease(NetworkRequest networkRequest, int subId) { if (!networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)) { // Currently only handle enterprise return; if (networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_CBS)) { networkRequestsTemplate.capability = NetworkRequestsV2.NetworkCapability.CBS; storage.addNetworkRequestsV2(networkRequestsTemplate); } NetworkRequests networkRequests = new NetworkRequests(); networkRequests.carrierId = getCarrierId(subId); networkRequests.enterpriseReleaseCount = 1; PersistAtomsStorage storage = PhoneFactory.getMetricsCollector().getAtomsStorage(); storage.addNetworkRequests(networkRequests); if (networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)) { networkRequestsTemplate.capability = NetworkRequestsV2.NetworkCapability.ENTERPRISE; storage.addNetworkRequestsV2(networkRequestsTemplate); } } /** Returns the carrier ID of the given subscription id. */ Loading src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java +27 −22 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ import com.android.internal.telephony.nano.PersistAtomsProto.ImsRegistrationServ import com.android.internal.telephony.nano.PersistAtomsProto.ImsRegistrationStats; import com.android.internal.telephony.nano.PersistAtomsProto.ImsRegistrationTermination; import com.android.internal.telephony.nano.PersistAtomsProto.IncomingSms; import com.android.internal.telephony.nano.PersistAtomsProto.NetworkRequests; import com.android.internal.telephony.nano.PersistAtomsProto.NetworkRequestsV2; import com.android.internal.telephony.nano.PersistAtomsProto.OutgoingSms; import com.android.internal.telephony.nano.PersistAtomsProto.PersistAtoms; import com.android.internal.telephony.nano.PersistAtomsProto.PresenceNotifyEvent; Loading Loading @@ -412,16 +412,19 @@ public class PersistAtomsStorage { } } /** Adds a new {@link NetworkRequests} to the storage. */ public synchronized void addNetworkRequests(NetworkRequests networkRequests) { NetworkRequests existingMetrics = find(networkRequests); /** Adds a new {@link NetworkRequestsV2} to the storage. */ public synchronized void addNetworkRequestsV2(NetworkRequestsV2 networkRequests) { NetworkRequestsV2 existingMetrics = find(networkRequests); if (existingMetrics != null) { existingMetrics.enterpriseRequestCount += networkRequests.enterpriseRequestCount; existingMetrics.enterpriseReleaseCount += networkRequests.enterpriseReleaseCount; existingMetrics.requestCount += networkRequests.requestCount; } else { int newLength = mAtoms.networkRequests.length + 1; mAtoms.networkRequests = Arrays.copyOf(mAtoms.networkRequests, newLength); mAtoms.networkRequests[newLength - 1] = networkRequests; NetworkRequestsV2 newMetrics = new NetworkRequestsV2(); newMetrics.capability = networkRequests.capability; newMetrics.carrierId = networkRequests.carrierId; newMetrics.requestCount = networkRequests.requestCount; int newLength = mAtoms.networkRequestsV2.length + 1; mAtoms.networkRequestsV2 = Arrays.copyOf(mAtoms.networkRequestsV2, newLength); mAtoms.networkRequestsV2[newLength - 1] = newMetrics; } saveAtomsToFile(SAVE_TO_FILE_DELAY_FOR_UPDATE_MILLIS); } Loading Loading @@ -774,11 +777,11 @@ public class PersistAtomsStorage { * minIntervalMillis} ago, otherwise returns {@code null}. */ @Nullable public synchronized NetworkRequests[] getNetworkRequests(long minIntervalMillis) { if (getWallTimeMillis() - mAtoms.networkRequestsPullTimestampMillis > minIntervalMillis) { mAtoms.networkRequestsPullTimestampMillis = getWallTimeMillis(); NetworkRequests[] previousNetworkRequests = mAtoms.networkRequests; mAtoms.networkRequests = new NetworkRequests[0]; public synchronized NetworkRequestsV2[] getNetworkRequestsV2(long minIntervalMillis) { if (getWallTimeMillis() - mAtoms.networkRequestsV2PullTimestampMillis > minIntervalMillis) { mAtoms.networkRequestsV2PullTimestampMillis = getWallTimeMillis(); NetworkRequestsV2[] previousNetworkRequests = mAtoms.networkRequestsV2; mAtoms.networkRequestsV2 = new NetworkRequestsV2[0]; saveAtomsToFile(SAVE_TO_FILE_DELAY_FOR_GET_MILLIS); return previousNetworkRequests; } else { Loading Loading @@ -1091,7 +1094,8 @@ public class PersistAtomsStorage { atoms.imsRegistrationTermination, ImsRegistrationTermination.class, mMaxNumImsRegistrationTerminations); atoms.networkRequests = sanitizeAtoms(atoms.networkRequests, NetworkRequests.class); atoms.networkRequestsV2 = sanitizeAtoms(atoms.networkRequestsV2, NetworkRequestsV2.class); atoms.imsRegistrationFeatureTagStats = sanitizeAtoms( atoms.imsRegistrationFeatureTagStats, Loading Loading @@ -1177,8 +1181,8 @@ public class PersistAtomsStorage { sanitizeTimestamp(atoms.imsRegistrationStatsPullTimestampMillis); atoms.imsRegistrationTerminationPullTimestampMillis = sanitizeTimestamp(atoms.imsRegistrationTerminationPullTimestampMillis); atoms.networkRequestsPullTimestampMillis = sanitizeTimestamp(atoms.networkRequestsPullTimestampMillis); atoms.networkRequestsV2PullTimestampMillis = sanitizeTimestamp(atoms.networkRequestsV2PullTimestampMillis); atoms.imsRegistrationFeatureTagStatsPullTimestampMillis = sanitizeTimestamp(atoms.imsRegistrationFeatureTagStatsPullTimestampMillis); atoms.rcsClientProvisioningStatsPullTimestampMillis = Loading Loading @@ -1329,12 +1333,12 @@ public class PersistAtomsStorage { } /** * Returns the network requests event that has the same carrier id as the given one, * or {@code null} if it does not exist. * Returns the network requests event that has the same carrier id and capability as the given * one, or {@code null} if it does not exist. */ private @Nullable NetworkRequests find(NetworkRequests key) { for (NetworkRequests item : mAtoms.networkRequests) { if (item.carrierId == key.carrierId) { private @Nullable NetworkRequestsV2 find(NetworkRequestsV2 key) { for (NetworkRequestsV2 item : mAtoms.networkRequestsV2) { if (item.carrierId == key.carrierId && item.capability == key.capability) { return item; } } Loading Loading @@ -1686,6 +1690,7 @@ public class PersistAtomsStorage { atoms.imsRegistrationStatsPullTimestampMillis = currentTime; atoms.imsRegistrationTerminationPullTimestampMillis = currentTime; atoms.networkRequestsPullTimestampMillis = currentTime; atoms.networkRequestsV2PullTimestampMillis = currentTime; atoms.imsRegistrationFeatureTagStatsPullTimestampMillis = currentTime; atoms.rcsClientProvisioningStatsPullTimestampMillis = currentTime; atoms.rcsAcsProvisioningStatsPullTimestampMillis = currentTime; Loading Loading
proto/src/persist_atoms.proto +22 −2 Original line number Diff line number Diff line Loading @@ -89,10 +89,10 @@ message PersistAtoms { optional string build_fingerprint = 21; /* Summary of received network requests. */ repeated NetworkRequests network_requests = 22; repeated NetworkRequests network_requests = 22 [deprecated = true]; /* Timestamp of last network_requests pull. */ optional int64 network_requests_pull_timestamp_millis = 23; optional int64 network_requests_pull_timestamp_millis = 23 [deprecated = true]; /* RCS single registrtions feature tag information. */ repeated ImsRegistrationFeatureTagStats ims_registration_feature_tag_stats = 24; Loading Loading @@ -171,6 +171,12 @@ message PersistAtoms { /* Timestamp of last gba_event pull. */ optional int64 gba_event_pull_timestamp_millis = 49; /* Summary of received network requests. */ repeated NetworkRequestsV2 network_requests_v2 = 50; /* Timestamp of last network_requests_v2 pull. */ optional int64 network_requests_v2_pull_timestamp_millis = 51; } // The canonical versions of the following enums live in: Loading Loading @@ -347,12 +353,26 @@ message ImsRegistrationStats { optional int64 last_used_millis = 10001; } // deprecated - please use NetworkRequestsV2 instead message NetworkRequests { optional int32 carrier_id = 1; optional int32 enterprise_request_count = 2; optional int32 enterprise_release_count = 3; } message NetworkRequestsV2 { enum NetworkCapability { UNKNOWN = 0; PRIORITIZE_LATENCY = 1; PRIORITIZE_BANDWIDTH = 2; CBS = 3; ENTERPRISE = 4; } optional int32 carrier_id = 1; optional NetworkCapability capability = 2; optional int32 request_count = 3; } message ImsRegistrationFeatureTagStats { optional int32 carrier_id = 1; optional int32 slot_id = 2; Loading
src/java/com/android/internal/telephony/data/TelephonyNetworkFactory.java +0 −4 Original line number Diff line number Diff line Loading @@ -268,8 +268,6 @@ public class TelephonyNetworkFactory extends NetworkFactory { } private void releaseNetworkInternal(TelephonyNetworkRequest networkRequest) { NetworkRequestsStats.addNetworkRelease(networkRequest.getNativeNetworkRequest(), mSubscriptionId); mPhone.getDataNetworkController().removeNetworkRequest(networkRequest); } Loading @@ -277,8 +275,6 @@ public class TelephonyNetworkFactory extends NetworkFactory { private void releaseNetworkInternal(TelephonyNetworkRequest networkRequest, @ReleaseNetworkType int releaseType, int transport) { NetworkRequestsStats.addNetworkRelease(networkRequest.getNativeNetworkRequest(), mSubscriptionId); if (mPhone.isUsingNewDataStack()) { mPhone.getDataNetworkController().removeNetworkRequest(networkRequest); } else { Loading
src/java/com/android/internal/telephony/metrics/MetricsCollector.java +12 −12 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ import static com.android.internal.telephony.TelephonyStatsLog.SIP_MESSAGE_RESPO import static com.android.internal.telephony.TelephonyStatsLog.SIP_TRANSPORT_FEATURE_TAG_STATS; import static com.android.internal.telephony.TelephonyStatsLog.SIP_TRANSPORT_SESSION; import static com.android.internal.telephony.TelephonyStatsLog.SUPPORTED_RADIO_ACCESS_FAMILY; import static com.android.internal.telephony.TelephonyStatsLog.TELEPHONY_NETWORK_REQUESTS; import static com.android.internal.telephony.TelephonyStatsLog.TELEPHONY_NETWORK_REQUESTS_V2; import static com.android.internal.telephony.TelephonyStatsLog.UCE_EVENT_STATS; import static com.android.internal.telephony.TelephonyStatsLog.VOICE_CALL_RAT_USAGE; import static com.android.internal.telephony.TelephonyStatsLog.VOICE_CALL_SESSION; Loading @@ -69,7 +69,7 @@ import com.android.internal.telephony.nano.PersistAtomsProto.ImsRegistrationServ import com.android.internal.telephony.nano.PersistAtomsProto.ImsRegistrationStats; import com.android.internal.telephony.nano.PersistAtomsProto.ImsRegistrationTermination; import com.android.internal.telephony.nano.PersistAtomsProto.IncomingSms; import com.android.internal.telephony.nano.PersistAtomsProto.NetworkRequests; import com.android.internal.telephony.nano.PersistAtomsProto.NetworkRequestsV2; import com.android.internal.telephony.nano.PersistAtomsProto.OutgoingSms; import com.android.internal.telephony.nano.PersistAtomsProto.PresenceNotifyEvent; import com.android.internal.telephony.nano.PersistAtomsProto.RcsAcsProvisioningStats; Loading Loading @@ -157,7 +157,7 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { registerAtom(DATA_CALL_SESSION, POLICY_PULL_DAILY); registerAtom(IMS_REGISTRATION_STATS, POLICY_PULL_DAILY); registerAtom(IMS_REGISTRATION_TERMINATION, POLICY_PULL_DAILY); registerAtom(TELEPHONY_NETWORK_REQUESTS, POLICY_PULL_DAILY); registerAtom(TELEPHONY_NETWORK_REQUESTS_V2, POLICY_PULL_DAILY); registerAtom(IMS_REGISTRATION_FEATURE_TAG_STATS, POLICY_PULL_DAILY); registerAtom(RCS_CLIENT_PROVISIONING_STATS, POLICY_PULL_DAILY); registerAtom(RCS_ACS_PROVISIONING_STATS, POLICY_PULL_DAILY); Loading Loading @@ -215,8 +215,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { return pullImsRegistrationStats(data); case IMS_REGISTRATION_TERMINATION: return pullImsRegistrationTermination(data); case TELEPHONY_NETWORK_REQUESTS: return pullTelephonyNetworkRequests(data); case TELEPHONY_NETWORK_REQUESTS_V2: return pullTelephonyNetworkRequestsV2(data); case IMS_REGISTRATION_FEATURE_TAG_STATS: return pullImsRegistrationFeatureTagStats(data); case RCS_CLIENT_PROVISIONING_STATS: Loading Loading @@ -459,14 +459,14 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { } } private int pullTelephonyNetworkRequests(List<StatsEvent> data) { NetworkRequests[] persistAtoms = mStorage.getNetworkRequests(MIN_COOLDOWN_MILLIS); private int pullTelephonyNetworkRequestsV2(List<StatsEvent> data) { NetworkRequestsV2[] persistAtoms = mStorage.getNetworkRequestsV2(MIN_COOLDOWN_MILLIS); if (persistAtoms != null) { Arrays.stream(persistAtoms) .forEach(persistAtom -> data.add(buildStatsEvent(persistAtom))); return StatsManager.PULL_SUCCESS; } else { Rlog.w(TAG, "TELEPHONY_NETWORK_REQUESTS pull too frequent, skipping"); Rlog.w(TAG, "TELEPHONY_NETWORK_REQUESTS_V2 pull too frequent, skipping"); return StatsManager.PULL_SKIP; } } Loading Loading @@ -850,12 +850,12 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { termination.count); } private static StatsEvent buildStatsEvent(NetworkRequests networkRequests) { private static StatsEvent buildStatsEvent(NetworkRequestsV2 networkRequests) { return TelephonyStatsLog.buildStatsEvent( TELEPHONY_NETWORK_REQUESTS, TELEPHONY_NETWORK_REQUESTS_V2, networkRequests.carrierId, networkRequests.enterpriseRequestCount, networkRequests.enterpriseReleaseCount); networkRequests.capability, networkRequests.requestCount); } private static StatsEvent buildStatsEvent(ImsRegistrationFeatureTagStats stats) { Loading
src/java/com/android/internal/telephony/metrics/NetworkRequestsStats.java +23 −20 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ import android.telephony.TelephonyManager; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneFactory; import com.android.internal.telephony.nano.PersistAtomsProto.NetworkRequests; import com.android.internal.telephony.nano.PersistAtomsProto.NetworkRequestsV2; /** Metrics for the network requests. */ Loading @@ -32,30 +32,33 @@ public class NetworkRequestsStats { /** Generate metrics when network request occurs. */ public static void addNetworkRequest(NetworkRequest networkRequest, int subId) { if (!networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)) { // Currently only handle enterprise return; PersistAtomsStorage storage = PhoneFactory.getMetricsCollector().getAtomsStorage(); NetworkRequestsV2 networkRequestsTemplate = new NetworkRequestsV2(); networkRequestsTemplate.carrierId = getCarrierId(subId); networkRequestsTemplate.requestCount = 1; if (networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)) { networkRequestsTemplate.capability = NetworkRequestsV2.NetworkCapability.PRIORITIZE_LATENCY; storage.addNetworkRequestsV2(networkRequestsTemplate); } NetworkRequests networkRequests = new NetworkRequests(); networkRequests.carrierId = getCarrierId(subId); networkRequests.enterpriseRequestCount = 1; PersistAtomsStorage storage = PhoneFactory.getMetricsCollector().getAtomsStorage(); storage.addNetworkRequests(networkRequests); if (networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH)) { networkRequestsTemplate.capability = NetworkRequestsV2.NetworkCapability.PRIORITIZE_BANDWIDTH; storage.addNetworkRequestsV2(networkRequestsTemplate); } /** Generate metrics when network release occurs. */ public static void addNetworkRelease(NetworkRequest networkRequest, int subId) { if (!networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)) { // Currently only handle enterprise return; if (networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_CBS)) { networkRequestsTemplate.capability = NetworkRequestsV2.NetworkCapability.CBS; storage.addNetworkRequestsV2(networkRequestsTemplate); } NetworkRequests networkRequests = new NetworkRequests(); networkRequests.carrierId = getCarrierId(subId); networkRequests.enterpriseReleaseCount = 1; PersistAtomsStorage storage = PhoneFactory.getMetricsCollector().getAtomsStorage(); storage.addNetworkRequests(networkRequests); if (networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)) { networkRequestsTemplate.capability = NetworkRequestsV2.NetworkCapability.ENTERPRISE; storage.addNetworkRequestsV2(networkRequestsTemplate); } } /** Returns the carrier ID of the given subscription id. */ Loading
src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java +27 −22 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ import com.android.internal.telephony.nano.PersistAtomsProto.ImsRegistrationServ import com.android.internal.telephony.nano.PersistAtomsProto.ImsRegistrationStats; import com.android.internal.telephony.nano.PersistAtomsProto.ImsRegistrationTermination; import com.android.internal.telephony.nano.PersistAtomsProto.IncomingSms; import com.android.internal.telephony.nano.PersistAtomsProto.NetworkRequests; import com.android.internal.telephony.nano.PersistAtomsProto.NetworkRequestsV2; import com.android.internal.telephony.nano.PersistAtomsProto.OutgoingSms; import com.android.internal.telephony.nano.PersistAtomsProto.PersistAtoms; import com.android.internal.telephony.nano.PersistAtomsProto.PresenceNotifyEvent; Loading Loading @@ -412,16 +412,19 @@ public class PersistAtomsStorage { } } /** Adds a new {@link NetworkRequests} to the storage. */ public synchronized void addNetworkRequests(NetworkRequests networkRequests) { NetworkRequests existingMetrics = find(networkRequests); /** Adds a new {@link NetworkRequestsV2} to the storage. */ public synchronized void addNetworkRequestsV2(NetworkRequestsV2 networkRequests) { NetworkRequestsV2 existingMetrics = find(networkRequests); if (existingMetrics != null) { existingMetrics.enterpriseRequestCount += networkRequests.enterpriseRequestCount; existingMetrics.enterpriseReleaseCount += networkRequests.enterpriseReleaseCount; existingMetrics.requestCount += networkRequests.requestCount; } else { int newLength = mAtoms.networkRequests.length + 1; mAtoms.networkRequests = Arrays.copyOf(mAtoms.networkRequests, newLength); mAtoms.networkRequests[newLength - 1] = networkRequests; NetworkRequestsV2 newMetrics = new NetworkRequestsV2(); newMetrics.capability = networkRequests.capability; newMetrics.carrierId = networkRequests.carrierId; newMetrics.requestCount = networkRequests.requestCount; int newLength = mAtoms.networkRequestsV2.length + 1; mAtoms.networkRequestsV2 = Arrays.copyOf(mAtoms.networkRequestsV2, newLength); mAtoms.networkRequestsV2[newLength - 1] = newMetrics; } saveAtomsToFile(SAVE_TO_FILE_DELAY_FOR_UPDATE_MILLIS); } Loading Loading @@ -774,11 +777,11 @@ public class PersistAtomsStorage { * minIntervalMillis} ago, otherwise returns {@code null}. */ @Nullable public synchronized NetworkRequests[] getNetworkRequests(long minIntervalMillis) { if (getWallTimeMillis() - mAtoms.networkRequestsPullTimestampMillis > minIntervalMillis) { mAtoms.networkRequestsPullTimestampMillis = getWallTimeMillis(); NetworkRequests[] previousNetworkRequests = mAtoms.networkRequests; mAtoms.networkRequests = new NetworkRequests[0]; public synchronized NetworkRequestsV2[] getNetworkRequestsV2(long minIntervalMillis) { if (getWallTimeMillis() - mAtoms.networkRequestsV2PullTimestampMillis > minIntervalMillis) { mAtoms.networkRequestsV2PullTimestampMillis = getWallTimeMillis(); NetworkRequestsV2[] previousNetworkRequests = mAtoms.networkRequestsV2; mAtoms.networkRequestsV2 = new NetworkRequestsV2[0]; saveAtomsToFile(SAVE_TO_FILE_DELAY_FOR_GET_MILLIS); return previousNetworkRequests; } else { Loading Loading @@ -1091,7 +1094,8 @@ public class PersistAtomsStorage { atoms.imsRegistrationTermination, ImsRegistrationTermination.class, mMaxNumImsRegistrationTerminations); atoms.networkRequests = sanitizeAtoms(atoms.networkRequests, NetworkRequests.class); atoms.networkRequestsV2 = sanitizeAtoms(atoms.networkRequestsV2, NetworkRequestsV2.class); atoms.imsRegistrationFeatureTagStats = sanitizeAtoms( atoms.imsRegistrationFeatureTagStats, Loading Loading @@ -1177,8 +1181,8 @@ public class PersistAtomsStorage { sanitizeTimestamp(atoms.imsRegistrationStatsPullTimestampMillis); atoms.imsRegistrationTerminationPullTimestampMillis = sanitizeTimestamp(atoms.imsRegistrationTerminationPullTimestampMillis); atoms.networkRequestsPullTimestampMillis = sanitizeTimestamp(atoms.networkRequestsPullTimestampMillis); atoms.networkRequestsV2PullTimestampMillis = sanitizeTimestamp(atoms.networkRequestsV2PullTimestampMillis); atoms.imsRegistrationFeatureTagStatsPullTimestampMillis = sanitizeTimestamp(atoms.imsRegistrationFeatureTagStatsPullTimestampMillis); atoms.rcsClientProvisioningStatsPullTimestampMillis = Loading Loading @@ -1329,12 +1333,12 @@ public class PersistAtomsStorage { } /** * Returns the network requests event that has the same carrier id as the given one, * or {@code null} if it does not exist. * Returns the network requests event that has the same carrier id and capability as the given * one, or {@code null} if it does not exist. */ private @Nullable NetworkRequests find(NetworkRequests key) { for (NetworkRequests item : mAtoms.networkRequests) { if (item.carrierId == key.carrierId) { private @Nullable NetworkRequestsV2 find(NetworkRequestsV2 key) { for (NetworkRequestsV2 item : mAtoms.networkRequestsV2) { if (item.carrierId == key.carrierId && item.capability == key.capability) { return item; } } Loading Loading @@ -1686,6 +1690,7 @@ public class PersistAtomsStorage { atoms.imsRegistrationStatsPullTimestampMillis = currentTime; atoms.imsRegistrationTerminationPullTimestampMillis = currentTime; atoms.networkRequestsPullTimestampMillis = currentTime; atoms.networkRequestsV2PullTimestampMillis = currentTime; atoms.imsRegistrationFeatureTagStatsPullTimestampMillis = currentTime; atoms.rcsClientProvisioningStatsPullTimestampMillis = currentTime; atoms.rcsAcsProvisioningStatsPullTimestampMillis = currentTime; Loading