[MS54.1] Move NetworkStats to updatable sources
This CL builds NetworkStats related code with the connectivity module instead of platform. This includes: 1. Add netstats.proto to the module. 2. Add lib dependencies for all callers. 3. Include several source files in platform and add jarjar rule to it. Modify callers accordingly. Test: TH Bug: 197717846 Change-Id: I244693aebe1782d9e67502638ff8145c51462e1e
This commit is contained in:
committed by
Remi NGUYEN VAN
parent
2b01633f81
commit
0bac7dddd7
@@ -158,7 +158,6 @@ filegroup {
|
|||||||
name: "framework-connectivity-tiramisu-sources",
|
name: "framework-connectivity-tiramisu-sources",
|
||||||
srcs: [
|
srcs: [
|
||||||
":framework-connectivity-ethernet-sources",
|
":framework-connectivity-ethernet-sources",
|
||||||
":framework-connectivity-netstats-sources",
|
|
||||||
],
|
],
|
||||||
visibility: ["//frameworks/base"],
|
visibility: ["//frameworks/base"],
|
||||||
}
|
}
|
||||||
@@ -167,6 +166,7 @@ filegroup {
|
|||||||
name: "framework-connectivity-tiramisu-updatable-sources",
|
name: "framework-connectivity-tiramisu-updatable-sources",
|
||||||
srcs: [
|
srcs: [
|
||||||
":framework-connectivity-ipsec-sources",
|
":framework-connectivity-ipsec-sources",
|
||||||
|
":framework-connectivity-netstats-sources",
|
||||||
":framework-connectivity-nsd-sources",
|
":framework-connectivity-nsd-sources",
|
||||||
":framework-connectivity-tiramisu-internal-sources",
|
":framework-connectivity-tiramisu-internal-sources",
|
||||||
],
|
],
|
||||||
@@ -202,7 +202,5 @@ cc_library_shared {
|
|||||||
stl: "none",
|
stl: "none",
|
||||||
apex_available: [
|
apex_available: [
|
||||||
"com.android.tethering",
|
"com.android.tethering",
|
||||||
// TODO: remove when ConnectivityT moves to APEX.
|
|
||||||
"//apex_available:platform",
|
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,14 +184,14 @@ public class NetworkIdentity {
|
|||||||
public void dumpDebug(ProtoOutputStream proto, long tag) {
|
public void dumpDebug(ProtoOutputStream proto, long tag) {
|
||||||
final long start = proto.start(tag);
|
final long start = proto.start(tag);
|
||||||
|
|
||||||
proto.write(NetworkIdentityProto.TYPE, mType);
|
proto.write(NetworkIdentityProto.TYPE_FIELD_NUMBER, mType);
|
||||||
|
|
||||||
// TODO: dump mRatType as well.
|
// TODO: dump mRatType as well.
|
||||||
|
|
||||||
proto.write(NetworkIdentityProto.ROAMING, mRoaming);
|
proto.write(NetworkIdentityProto.ROAMING_FIELD_NUMBER, mRoaming);
|
||||||
proto.write(NetworkIdentityProto.METERED, mMetered);
|
proto.write(NetworkIdentityProto.METERED_FIELD_NUMBER, mMetered);
|
||||||
proto.write(NetworkIdentityProto.DEFAULT_NETWORK, mDefaultNetwork);
|
proto.write(NetworkIdentityProto.DEFAULT_NETWORK_FIELD_NUMBER, mDefaultNetwork);
|
||||||
proto.write(NetworkIdentityProto.OEM_MANAGED_NETWORK, mOemManaged);
|
proto.write(NetworkIdentityProto.OEM_MANAGED_NETWORK_FIELD_NUMBER, mOemManaged);
|
||||||
|
|
||||||
proto.end(start);
|
proto.end(start);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ public class NetworkIdentitySet extends HashSet<NetworkIdentity> {
|
|||||||
final long start = proto.start(tag);
|
final long start = proto.start(tag);
|
||||||
|
|
||||||
for (NetworkIdentity ident : this) {
|
for (NetworkIdentity ident : this) {
|
||||||
ident.dumpDebug(proto, NetworkIdentitySetProto.IDENTITIES);
|
ident.dumpDebug(proto, NetworkIdentitySetProto.IDENTITIES_FIELD_NUMBER);
|
||||||
}
|
}
|
||||||
|
|
||||||
proto.end(start);
|
proto.end(start);
|
||||||
|
|||||||
@@ -732,19 +732,19 @@ public class NetworkStatsCollection implements FileRotator.Reader, FileRotator.W
|
|||||||
final long start = proto.start(tag);
|
final long start = proto.start(tag);
|
||||||
|
|
||||||
for (Key key : getSortedKeys()) {
|
for (Key key : getSortedKeys()) {
|
||||||
final long startStats = proto.start(NetworkStatsCollectionProto.STATS);
|
final long startStats = proto.start(NetworkStatsCollectionProto.STATS_FIELD_NUMBER);
|
||||||
|
|
||||||
// Key
|
// Key
|
||||||
final long startKey = proto.start(NetworkStatsCollectionStatsProto.KEY);
|
final long startKey = proto.start(NetworkStatsCollectionStatsProto.KEY_FIELD_NUMBER);
|
||||||
key.ident.dumpDebug(proto, NetworkStatsCollectionKeyProto.IDENTITY);
|
key.ident.dumpDebug(proto, NetworkStatsCollectionKeyProto.IDENTITY_FIELD_NUMBER);
|
||||||
proto.write(NetworkStatsCollectionKeyProto.UID, key.uid);
|
proto.write(NetworkStatsCollectionKeyProto.UID_FIELD_NUMBER, key.uid);
|
||||||
proto.write(NetworkStatsCollectionKeyProto.SET, key.set);
|
proto.write(NetworkStatsCollectionKeyProto.SET_FIELD_NUMBER, key.set);
|
||||||
proto.write(NetworkStatsCollectionKeyProto.TAG, key.tag);
|
proto.write(NetworkStatsCollectionKeyProto.TAG_FIELD_NUMBER, key.tag);
|
||||||
proto.end(startKey);
|
proto.end(startKey);
|
||||||
|
|
||||||
// Value
|
// Value
|
||||||
final NetworkStatsHistory history = mStats.get(key);
|
final NetworkStatsHistory history = mStats.get(key);
|
||||||
history.dumpDebug(proto, NetworkStatsCollectionStatsProto.HISTORY);
|
history.dumpDebug(proto, NetworkStatsCollectionStatsProto.HISTORY_FIELD_NUMBER);
|
||||||
proto.end(startStats);
|
proto.end(startStats);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -915,17 +915,18 @@ public final class NetworkStatsHistory implements Parcelable {
|
|||||||
public void dumpDebug(ProtoOutputStream proto, long tag) {
|
public void dumpDebug(ProtoOutputStream proto, long tag) {
|
||||||
final long start = proto.start(tag);
|
final long start = proto.start(tag);
|
||||||
|
|
||||||
proto.write(NetworkStatsHistoryProto.BUCKET_DURATION_MS, bucketDuration);
|
proto.write(NetworkStatsHistoryProto.BUCKET_DURATION_MS_FIELD_NUMBER, bucketDuration);
|
||||||
|
|
||||||
for (int i = 0; i < bucketCount; i++) {
|
for (int i = 0; i < bucketCount; i++) {
|
||||||
final long startBucket = proto.start(NetworkStatsHistoryProto.BUCKETS);
|
final long startBucket = proto.start(NetworkStatsHistoryProto.BUCKETS_FIELD_NUMBER);
|
||||||
|
|
||||||
proto.write(NetworkStatsHistoryBucketProto.BUCKET_START_MS, bucketStart[i]);
|
proto.write(NetworkStatsHistoryBucketProto.BUCKET_START_MS_FIELD_NUMBER,
|
||||||
dumpDebug(proto, NetworkStatsHistoryBucketProto.RX_BYTES, rxBytes, i);
|
bucketStart[i]);
|
||||||
dumpDebug(proto, NetworkStatsHistoryBucketProto.RX_PACKETS, rxPackets, i);
|
dumpDebug(proto, NetworkStatsHistoryBucketProto.RX_BYTES_FIELD_NUMBER, rxBytes, i);
|
||||||
dumpDebug(proto, NetworkStatsHistoryBucketProto.TX_BYTES, txBytes, i);
|
dumpDebug(proto, NetworkStatsHistoryBucketProto.RX_PACKETS_FIELD_NUMBER, rxPackets, i);
|
||||||
dumpDebug(proto, NetworkStatsHistoryBucketProto.TX_PACKETS, txPackets, i);
|
dumpDebug(proto, NetworkStatsHistoryBucketProto.TX_BYTES_FIELD_NUMBER, txBytes, i);
|
||||||
dumpDebug(proto, NetworkStatsHistoryBucketProto.OPERATIONS, operations, i);
|
dumpDebug(proto, NetworkStatsHistoryBucketProto.TX_PACKETS_FIELD_NUMBER, txPackets, i);
|
||||||
|
dumpDebug(proto, NetworkStatsHistoryBucketProto.OPERATIONS_FIELD_NUMBER, operations, i);
|
||||||
|
|
||||||
proto.end(startBucket);
|
proto.end(startBucket);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,7 +88,6 @@ filegroup {
|
|||||||
name: "services.connectivity-tiramisu-sources",
|
name: "services.connectivity-tiramisu-sources",
|
||||||
srcs: [
|
srcs: [
|
||||||
":services.connectivity-ethernet-sources",
|
":services.connectivity-ethernet-sources",
|
||||||
":services.connectivity-netstats-sources",
|
|
||||||
],
|
],
|
||||||
path: "src",
|
path: "src",
|
||||||
visibility: ["//frameworks/base/services/core"],
|
visibility: ["//frameworks/base/services/core"],
|
||||||
@@ -98,6 +97,7 @@ filegroup {
|
|||||||
name: "services.connectivity-tiramisu-updatable-sources",
|
name: "services.connectivity-tiramisu-updatable-sources",
|
||||||
srcs: [
|
srcs: [
|
||||||
":services.connectivity-ipsec-sources",
|
":services.connectivity-ipsec-sources",
|
||||||
|
":services.connectivity-netstats-sources",
|
||||||
":services.connectivity-nsd-sources",
|
":services.connectivity-nsd-sources",
|
||||||
],
|
],
|
||||||
path: "src",
|
path: "src",
|
||||||
|
|||||||
@@ -471,9 +471,11 @@ public class NetworkStatsRecorder {
|
|||||||
public void dumpDebugLocked(ProtoOutputStream proto, long tag) {
|
public void dumpDebugLocked(ProtoOutputStream proto, long tag) {
|
||||||
final long start = proto.start(tag);
|
final long start = proto.start(tag);
|
||||||
if (mPending != null) {
|
if (mPending != null) {
|
||||||
proto.write(NetworkStatsRecorderProto.PENDING_TOTAL_BYTES, mPending.getTotalBytes());
|
proto.write(NetworkStatsRecorderProto.PENDING_TOTAL_BYTES_FIELD_NUMBER,
|
||||||
|
mPending.getTotalBytes());
|
||||||
}
|
}
|
||||||
getOrLoadCompleteLocked().dumpDebug(proto, NetworkStatsRecorderProto.COMPLETE_HISTORY);
|
getOrLoadCompleteLocked().dumpDebug(proto,
|
||||||
|
NetworkStatsRecorderProto.COMPLETE_HISTORY_FIELD_NUMBER);
|
||||||
proto.end(start);
|
proto.end(start);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ import static com.android.net.module.util.NetworkStatsUtils.LIMIT_GLOBAL_ALERT;
|
|||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
|
import android.annotation.TargetApi;
|
||||||
import android.app.AlarmManager;
|
import android.app.AlarmManager;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.app.usage.NetworkStatsManager;
|
import android.app.usage.NetworkStatsManager;
|
||||||
@@ -102,6 +103,7 @@ import android.net.netstats.provider.INetworkStatsProvider;
|
|||||||
import android.net.netstats.provider.INetworkStatsProviderCallback;
|
import android.net.netstats.provider.INetworkStatsProviderCallback;
|
||||||
import android.net.netstats.provider.NetworkStatsProvider;
|
import android.net.netstats.provider.NetworkStatsProvider;
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.DropBoxManager;
|
import android.os.DropBoxManager;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
@@ -169,6 +171,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
* Collect and persist detailed network statistics, and provide this data to
|
* Collect and persist detailed network statistics, and provide this data to
|
||||||
* other system services.
|
* other system services.
|
||||||
*/
|
*/
|
||||||
|
@TargetApi(Build.VERSION_CODES.TIRAMISU)
|
||||||
public class NetworkStatsService extends INetworkStatsService.Stub {
|
public class NetworkStatsService extends INetworkStatsService.Stub {
|
||||||
static final String TAG = "NetworkStats";
|
static final String TAG = "NetworkStats";
|
||||||
static final boolean LOGD = Log.isLoggable(TAG, Log.DEBUG);
|
static final boolean LOGD = Log.isLoggable(TAG, Log.DEBUG);
|
||||||
@@ -2004,12 +2007,15 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
|
|
||||||
// TODO Right now it writes all history. Should it limit to the "since-boot" log?
|
// TODO Right now it writes all history. Should it limit to the "since-boot" log?
|
||||||
|
|
||||||
dumpInterfaces(proto, NetworkStatsServiceDumpProto.ACTIVE_INTERFACES, mActiveIfaces);
|
dumpInterfaces(proto, NetworkStatsServiceDumpProto.ACTIVE_INTERFACES_FIELD_NUMBER,
|
||||||
dumpInterfaces(proto, NetworkStatsServiceDumpProto.ACTIVE_UID_INTERFACES, mActiveUidIfaces);
|
mActiveIfaces);
|
||||||
mDevRecorder.dumpDebugLocked(proto, NetworkStatsServiceDumpProto.DEV_STATS);
|
dumpInterfaces(proto, NetworkStatsServiceDumpProto.ACTIVE_UID_INTERFACES_FIELD_NUMBER,
|
||||||
mXtRecorder.dumpDebugLocked(proto, NetworkStatsServiceDumpProto.XT_STATS);
|
mActiveUidIfaces);
|
||||||
mUidRecorder.dumpDebugLocked(proto, NetworkStatsServiceDumpProto.UID_STATS);
|
mDevRecorder.dumpDebugLocked(proto, NetworkStatsServiceDumpProto.DEV_STATS_FIELD_NUMBER);
|
||||||
mUidTagRecorder.dumpDebugLocked(proto, NetworkStatsServiceDumpProto.UID_TAG_STATS);
|
mXtRecorder.dumpDebugLocked(proto, NetworkStatsServiceDumpProto.XT_STATS_FIELD_NUMBER);
|
||||||
|
mUidRecorder.dumpDebugLocked(proto, NetworkStatsServiceDumpProto.UID_STATS_FIELD_NUMBER);
|
||||||
|
mUidTagRecorder.dumpDebugLocked(proto,
|
||||||
|
NetworkStatsServiceDumpProto.UID_TAG_STATS_FIELD_NUMBER);
|
||||||
|
|
||||||
proto.flush();
|
proto.flush();
|
||||||
}
|
}
|
||||||
@@ -2019,8 +2025,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
for (int i = 0; i < ifaces.size(); i++) {
|
for (int i = 0; i < ifaces.size(); i++) {
|
||||||
final long start = proto.start(tag);
|
final long start = proto.start(tag);
|
||||||
|
|
||||||
proto.write(NetworkInterfaceProto.INTERFACE, ifaces.keyAt(i));
|
proto.write(NetworkInterfaceProto.INTERFACE_FIELD_NUMBER, ifaces.keyAt(i));
|
||||||
ifaces.valueAt(i).dumpDebug(proto, NetworkInterfaceProto.IDENTITIES);
|
ifaces.valueAt(i).dumpDebug(proto, NetworkInterfaceProto.IDENTITIES_FIELD_NUMBER);
|
||||||
|
|
||||||
proto.end(start);
|
proto.end(start);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,9 @@ import static android.telephony.TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NS
|
|||||||
import static android.telephony.TelephonyManager.NETWORK_TYPE_LTE;
|
import static android.telephony.TelephonyManager.NETWORK_TYPE_LTE;
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
|
import android.annotation.TargetApi;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.os.Build;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyCallback;
|
import android.telephony.TelephonyCallback;
|
||||||
import android.telephony.TelephonyDisplayInfo;
|
import android.telephony.TelephonyDisplayInfo;
|
||||||
@@ -43,6 +45,7 @@ import java.util.concurrent.Executor;
|
|||||||
/**
|
/**
|
||||||
* Helper class that watches for events that are triggered per subscription.
|
* Helper class that watches for events that are triggered per subscription.
|
||||||
*/
|
*/
|
||||||
|
@TargetApi(Build.VERSION_CODES.TIRAMISU)
|
||||||
public class NetworkStatsSubscriptionsMonitor extends
|
public class NetworkStatsSubscriptionsMonitor extends
|
||||||
SubscriptionManager.OnSubscriptionsChangedListener {
|
SubscriptionManager.OnSubscriptionsChangedListener {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user