Merge "[SP01] Add NetworkStats to system API"
This commit is contained in:
@@ -4458,6 +4458,33 @@ package android.net {
|
||||
field public static final String PERMISSION_MAINLINE_NETWORK_STACK = "android.permission.MAINLINE_NETWORK_STACK";
|
||||
}
|
||||
|
||||
public final class NetworkStats implements android.os.Parcelable {
|
||||
ctor public NetworkStats(long, int);
|
||||
method @NonNull public android.net.NetworkStats add(@NonNull android.net.NetworkStats);
|
||||
method @NonNull public android.net.NetworkStats addValues(@NonNull android.net.NetworkStats.Entry);
|
||||
method public int describeContents();
|
||||
method @NonNull public android.net.NetworkStats subtract(@NonNull android.net.NetworkStats);
|
||||
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkStats> CREATOR;
|
||||
field public static final int DEFAULT_NETWORK_NO = 0; // 0x0
|
||||
field public static final int DEFAULT_NETWORK_YES = 1; // 0x1
|
||||
field @Nullable public static final String IFACE_ALL;
|
||||
field public static final String IFACE_VT = "vt_data0";
|
||||
field public static final int METERED_NO = 0; // 0x0
|
||||
field public static final int METERED_YES = 1; // 0x1
|
||||
field public static final int ROAMING_NO = 0; // 0x0
|
||||
field public static final int ROAMING_YES = 1; // 0x1
|
||||
field public static final int SET_DEFAULT = 0; // 0x0
|
||||
field public static final int SET_FOREGROUND = 1; // 0x1
|
||||
field public static final int TAG_NONE = 0; // 0x0
|
||||
field public static final int UID_ALL = -1; // 0xffffffff
|
||||
field public static final int UID_TETHERING = -5; // 0xfffffffb
|
||||
}
|
||||
|
||||
public static class NetworkStats.Entry {
|
||||
ctor public NetworkStats.Entry(@Nullable String, int, int, int, int, int, int, long, long, long, long, long);
|
||||
}
|
||||
|
||||
public final class RouteInfo implements android.os.Parcelable {
|
||||
ctor public RouteInfo(@Nullable android.net.IpPrefix, @Nullable java.net.InetAddress, @Nullable String, int);
|
||||
method public int getType();
|
||||
|
||||
@@ -19,6 +19,9 @@ package android.net;
|
||||
import static android.os.Process.CLAT_UID;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.SystemApi;
|
||||
import android.compat.annotation.UnsupportedAppUsage;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
@@ -48,59 +51,104 @@ import java.util.function.Predicate;
|
||||
* @hide
|
||||
*/
|
||||
// @NotThreadSafe
|
||||
public class NetworkStats implements Parcelable {
|
||||
@SystemApi
|
||||
public final class NetworkStats implements Parcelable {
|
||||
private static final String TAG = "NetworkStats";
|
||||
|
||||
/** {@link #iface} value when interface details unavailable. */
|
||||
public static final String IFACE_ALL = null;
|
||||
@SuppressLint("CompileTimeConstant")
|
||||
@Nullable public static final String IFACE_ALL = null;
|
||||
/**
|
||||
* Virtual network interface for video telephony. This is for VT data usage counting
|
||||
* purpose.
|
||||
*/
|
||||
public static final String IFACE_VT = "vt_data0";
|
||||
|
||||
/** {@link #uid} value when UID details unavailable. */
|
||||
public static final int UID_ALL = -1;
|
||||
/** {@link #tag} value matching any tag. */
|
||||
/** Special UID value for data usage by tethering. */
|
||||
public static final int UID_TETHERING = -5;
|
||||
|
||||
/**
|
||||
* {@link #tag} value matching any tag.
|
||||
* @hide
|
||||
*/
|
||||
// TODO: Rename TAG_ALL to TAG_ANY.
|
||||
public static final int TAG_ALL = -1;
|
||||
/** {@link #set} value for all sets combined, not including debug sets. */
|
||||
/**
|
||||
* {@link #set} value for all sets combined, not including debug sets.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SET_ALL = -1;
|
||||
/** {@link #set} value where background data is accounted. */
|
||||
public static final int SET_DEFAULT = 0;
|
||||
/** {@link #set} value where foreground data is accounted. */
|
||||
public static final int SET_FOREGROUND = 1;
|
||||
/** All {@link #set} value greater than SET_DEBUG_START are debug {@link #set} values. */
|
||||
/**
|
||||
* All {@link #set} value greater than SET_DEBUG_START are debug {@link #set} values.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SET_DEBUG_START = 1000;
|
||||
/** Debug {@link #set} value when the VPN stats are moved in. */
|
||||
/**
|
||||
* Debug {@link #set} value when the VPN stats are moved in.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SET_DBG_VPN_IN = 1001;
|
||||
/** Debug {@link #set} value when the VPN stats are moved out of a vpn UID. */
|
||||
/**
|
||||
* Debug {@link #set} value when the VPN stats are moved out of a vpn UID.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SET_DBG_VPN_OUT = 1002;
|
||||
|
||||
/** Include all interfaces when filtering */
|
||||
public static final String[] INTERFACES_ALL = null;
|
||||
/**
|
||||
* Include all interfaces when filtering
|
||||
* @hide
|
||||
*/
|
||||
public @Nullable static final String[] INTERFACES_ALL = null;
|
||||
|
||||
/** {@link #tag} value for total data across all tags. */
|
||||
// TODO: Rename TAG_NONE to TAG_ALL.
|
||||
public static final int TAG_NONE = 0;
|
||||
|
||||
/** {@link #metered} value to account for all metered states. */
|
||||
/**
|
||||
* {@link #metered} value to account for all metered states.
|
||||
* @hide
|
||||
*/
|
||||
public static final int METERED_ALL = -1;
|
||||
/** {@link #metered} value where native, unmetered data is accounted. */
|
||||
public static final int METERED_NO = 0;
|
||||
/** {@link #metered} value where metered data is accounted. */
|
||||
public static final int METERED_YES = 1;
|
||||
|
||||
/** {@link #roaming} value to account for all roaming states. */
|
||||
/**
|
||||
* {@link #roaming} value to account for all roaming states.
|
||||
* @hide
|
||||
*/
|
||||
public static final int ROAMING_ALL = -1;
|
||||
/** {@link #roaming} value where native, non-roaming data is accounted. */
|
||||
public static final int ROAMING_NO = 0;
|
||||
/** {@link #roaming} value where roaming data is accounted. */
|
||||
public static final int ROAMING_YES = 1;
|
||||
|
||||
/** {@link #onDefaultNetwork} value to account for all default network states. */
|
||||
/**
|
||||
* {@link #onDefaultNetwork} value to account for all default network states.
|
||||
* @hide
|
||||
*/
|
||||
public static final int DEFAULT_NETWORK_ALL = -1;
|
||||
/** {@link #onDefaultNetwork} value to account for usage while not the default network. */
|
||||
public static final int DEFAULT_NETWORK_NO = 0;
|
||||
/** {@link #onDefaultNetwork} value to account for usage while the default network. */
|
||||
public static final int DEFAULT_NETWORK_YES = 1;
|
||||
|
||||
/** Denotes a request for stats at the interface level. */
|
||||
/**
|
||||
* Denotes a request for stats at the interface level.
|
||||
* @hide
|
||||
*/
|
||||
public static final int STATS_PER_IFACE = 0;
|
||||
/** Denotes a request for stats at the interface and UID level. */
|
||||
/**
|
||||
* Denotes a request for stats at the interface and UID level.
|
||||
* @hide
|
||||
*/
|
||||
public static final int STATS_PER_UID = 1;
|
||||
|
||||
private static final String CLATD_INTERFACE_PREFIX = "v4-";
|
||||
@@ -144,60 +192,78 @@ public class NetworkStats implements Parcelable {
|
||||
@UnsupportedAppUsage
|
||||
private long[] operations;
|
||||
|
||||
/** @hide */
|
||||
@SystemApi
|
||||
public static class Entry {
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public String iface;
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public int uid;
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public int set;
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public int tag;
|
||||
/**
|
||||
* Note that this is only populated w/ the default value when read from /proc or written
|
||||
* to disk. We merge in the correct value when reporting this value to clients of
|
||||
* getSummary().
|
||||
* @hide
|
||||
*/
|
||||
public int metered;
|
||||
/**
|
||||
* Note that this is only populated w/ the default value when read from /proc or written
|
||||
* to disk. We merge in the correct value when reporting this value to clients of
|
||||
* getSummary().
|
||||
* @hide
|
||||
*/
|
||||
public int roaming;
|
||||
/**
|
||||
* Note that this is only populated w/ the default value when read from /proc or written
|
||||
* to disk. We merge in the correct value when reporting this value to clients of
|
||||
* getSummary().
|
||||
* @hide
|
||||
*/
|
||||
public int defaultNetwork;
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public long rxBytes;
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public long rxPackets;
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public long txBytes;
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public long txPackets;
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public long operations;
|
||||
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public Entry() {
|
||||
this(IFACE_ALL, UID_ALL, SET_DEFAULT, TAG_NONE, 0L, 0L, 0L, 0L, 0L);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public Entry(long rxBytes, long rxPackets, long txBytes, long txPackets, long operations) {
|
||||
this(IFACE_ALL, UID_ALL, SET_DEFAULT, TAG_NONE, rxBytes, rxPackets, txBytes, txPackets,
|
||||
operations);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public Entry(String iface, int uid, int set, int tag, long rxBytes, long rxPackets,
|
||||
long txBytes, long txPackets, long operations) {
|
||||
this(iface, uid, set, tag, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO,
|
||||
rxBytes, rxPackets, txBytes, txPackets, operations);
|
||||
}
|
||||
|
||||
public Entry(String iface, int uid, int set, int tag, int metered, int roaming,
|
||||
public Entry(@Nullable String iface, int uid, int set, int tag, int metered, int roaming,
|
||||
int defaultNetwork, long rxBytes, long rxPackets, long txBytes, long txPackets,
|
||||
long operations) {
|
||||
this.iface = iface;
|
||||
@@ -214,15 +280,18 @@ public class NetworkStats implements Parcelable {
|
||||
this.operations = operations;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public boolean isNegative() {
|
||||
return rxBytes < 0 || rxPackets < 0 || txBytes < 0 || txPackets < 0 || operations < 0;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public boolean isEmpty() {
|
||||
return rxBytes == 0 && rxPackets == 0 && txBytes == 0 && txPackets == 0
|
||||
&& operations == 0;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void add(Entry another) {
|
||||
this.rxBytes += another.rxBytes;
|
||||
this.rxPackets += another.rxPackets;
|
||||
@@ -249,6 +318,7 @@ public class NetworkStats implements Parcelable {
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o instanceof Entry) {
|
||||
@@ -262,13 +332,13 @@ public class NetworkStats implements Parcelable {
|
||||
return false;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(uid, set, tag, metered, roaming, defaultNetwork, iface);
|
||||
}
|
||||
}
|
||||
|
||||
@UnsupportedAppUsage
|
||||
public NetworkStats(long elapsedRealtime, int initialSize) {
|
||||
this.elapsedRealtime = elapsedRealtime;
|
||||
this.size = 0;
|
||||
@@ -292,6 +362,7 @@ public class NetworkStats implements Parcelable {
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public NetworkStats(Parcel parcel) {
|
||||
elapsedRealtime = parcel.readLong();
|
||||
@@ -312,7 +383,7 @@ public class NetworkStats implements Parcelable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
public void writeToParcel(@NonNull Parcel dest, int flags) {
|
||||
dest.writeLong(elapsedRealtime);
|
||||
dest.writeInt(size);
|
||||
dest.writeInt(capacity);
|
||||
@@ -330,19 +401,23 @@ public class NetworkStats implements Parcelable {
|
||||
dest.writeLongArray(operations);
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@Override
|
||||
public NetworkStats clone() {
|
||||
final NetworkStats clone = new NetworkStats(elapsedRealtime, size);
|
||||
NetworkStats.Entry entry = null;
|
||||
for (int i = 0; i < size; i++) {
|
||||
entry = getValues(i, entry);
|
||||
clone.addValues(entry);
|
||||
clone.addEntry(entry);
|
||||
}
|
||||
return clone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear all data stored in this object.
|
||||
* @hide
|
||||
*/
|
||||
public void clear() {
|
||||
this.capacity = 0;
|
||||
@@ -360,25 +435,28 @@ public class NetworkStats implements Parcelable {
|
||||
this.operations = EmptyArray.LONG;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@VisibleForTesting
|
||||
public NetworkStats addIfaceValues(
|
||||
String iface, long rxBytes, long rxPackets, long txBytes, long txPackets) {
|
||||
return addValues(
|
||||
return addEntry(
|
||||
iface, UID_ALL, SET_DEFAULT, TAG_NONE, rxBytes, rxPackets, txBytes, txPackets, 0L);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@VisibleForTesting
|
||||
public NetworkStats addValues(String iface, int uid, int set, int tag, long rxBytes,
|
||||
public NetworkStats addEntry(String iface, int uid, int set, int tag, long rxBytes,
|
||||
long rxPackets, long txBytes, long txPackets, long operations) {
|
||||
return addValues(new Entry(
|
||||
return addEntry(new Entry(
|
||||
iface, uid, set, tag, rxBytes, rxPackets, txBytes, txPackets, operations));
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@VisibleForTesting
|
||||
public NetworkStats addValues(String iface, int uid, int set, int tag, int metered, int roaming,
|
||||
public NetworkStats addEntry(String iface, int uid, int set, int tag, int metered, int roaming,
|
||||
int defaultNetwork, long rxBytes, long rxPackets, long txBytes, long txPackets,
|
||||
long operations) {
|
||||
return addValues(new Entry(
|
||||
return addEntry(new Entry(
|
||||
iface, uid, set, tag, metered, roaming, defaultNetwork, rxBytes, rxPackets,
|
||||
txBytes, txPackets, operations));
|
||||
}
|
||||
@@ -386,8 +464,9 @@ public class NetworkStats implements Parcelable {
|
||||
/**
|
||||
* Add new stats entry, copying from given {@link Entry}. The {@link Entry}
|
||||
* object can be recycled across multiple calls.
|
||||
* @hide
|
||||
*/
|
||||
public NetworkStats addValues(Entry entry) {
|
||||
public NetworkStats addEntry(Entry entry) {
|
||||
if (size >= capacity) {
|
||||
final int newLength = Math.max(size, 10) * 3 / 2;
|
||||
iface = Arrays.copyOf(iface, newLength);
|
||||
@@ -428,6 +507,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Return specific stats entry.
|
||||
* @hide
|
||||
*/
|
||||
@UnsupportedAppUsage
|
||||
public Entry getValues(int i, Entry recycle) {
|
||||
@@ -467,10 +547,12 @@ public class NetworkStats implements Parcelable {
|
||||
operations[dest] = operations[src];
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public long getElapsedRealtime() {
|
||||
return elapsedRealtime;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void setElapsedRealtime(long time) {
|
||||
elapsedRealtime = time;
|
||||
}
|
||||
@@ -478,21 +560,25 @@ public class NetworkStats implements Parcelable {
|
||||
/**
|
||||
* Return age of this {@link NetworkStats} object with respect to
|
||||
* {@link SystemClock#elapsedRealtime()}.
|
||||
* @hide
|
||||
*/
|
||||
public long getElapsedRealtimeAge() {
|
||||
return SystemClock.elapsedRealtime() - elapsedRealtime;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public int size() {
|
||||
return size;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@VisibleForTesting
|
||||
public int internalSize() {
|
||||
return capacity;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@Deprecated
|
||||
public NetworkStats combineValues(String iface, int uid, int tag, long rxBytes, long rxPackets,
|
||||
long txBytes, long txPackets, long operations) {
|
||||
@@ -501,6 +587,7 @@ public class NetworkStats implements Parcelable {
|
||||
txPackets, operations);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public NetworkStats combineValues(String iface, int uid, int set, int tag,
|
||||
long rxBytes, long rxPackets, long txBytes, long txPackets, long operations) {
|
||||
return combineValues(new Entry(
|
||||
@@ -509,16 +596,20 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Combine given values with an existing row, or create a new row if
|
||||
* {@link #findIndex(String, int, int, int, int)} is unable to find match. Can
|
||||
* also be used to subtract values from existing rows.
|
||||
* {@link #findIndex(String, int, int, int, int, int, int)} is unable to find match. Can
|
||||
* also be used to subtract values from existing rows. This method mutates the referencing
|
||||
* {@link NetworkStats} object.
|
||||
*
|
||||
* @param entry the {@link Entry} to combine.
|
||||
* @return a reference to this mutated {@link NetworkStats} object.
|
||||
* @hide
|
||||
*/
|
||||
@UnsupportedAppUsage
|
||||
public NetworkStats combineValues(Entry entry) {
|
||||
public @NonNull NetworkStats combineValues(@NonNull Entry entry) {
|
||||
final int i = findIndex(entry.iface, entry.uid, entry.set, entry.tag, entry.metered,
|
||||
entry.roaming, entry.defaultNetwork);
|
||||
if (i == -1) {
|
||||
// only create new entry when positive contribution
|
||||
addValues(entry);
|
||||
addEntry(entry);
|
||||
} else {
|
||||
rxBytes[i] += entry.rxBytes;
|
||||
rxPackets[i] += entry.rxPackets;
|
||||
@@ -530,10 +621,33 @@ public class NetworkStats implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Combine all values from another {@link NetworkStats} into this object.
|
||||
* Add given values with an existing row, or create a new row if
|
||||
* {@link #findIndex(String, int, int, int, int, int, int)} is unable to find match. Can
|
||||
* also be used to subtract values from existing rows.
|
||||
*
|
||||
* @param entry the {@link Entry} to add.
|
||||
* @return a new constructed {@link NetworkStats} object that contains the result.
|
||||
*/
|
||||
@UnsupportedAppUsage
|
||||
public void combineAllValues(NetworkStats another) {
|
||||
public @NonNull NetworkStats addValues(@NonNull Entry entry) {
|
||||
return this.clone().combineValues(entry);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the given {@link NetworkStats} objects.
|
||||
*
|
||||
* @return the sum of two objects.
|
||||
*/
|
||||
public @NonNull NetworkStats add(@NonNull NetworkStats another) {
|
||||
final NetworkStats ret = this.clone();
|
||||
ret.combineAllValues(another);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Combine all values from another {@link NetworkStats} into this object.
|
||||
* @hide
|
||||
*/
|
||||
public void combineAllValues(@NonNull NetworkStats another) {
|
||||
NetworkStats.Entry entry = null;
|
||||
for (int i = 0; i < another.size; i++) {
|
||||
entry = another.getValues(i, entry);
|
||||
@@ -543,6 +657,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Find first stats index that matches the requested parameters.
|
||||
* @hide
|
||||
*/
|
||||
public int findIndex(String iface, int uid, int set, int tag, int metered, int roaming,
|
||||
int defaultNetwork) {
|
||||
@@ -560,6 +675,7 @@ public class NetworkStats implements Parcelable {
|
||||
/**
|
||||
* Find first stats index that matches the requested parameters, starting
|
||||
* search around the hinted index as an optimization.
|
||||
* @hide
|
||||
*/
|
||||
@VisibleForTesting
|
||||
public int findIndexHinted(String iface, int uid, int set, int tag, int metered, int roaming,
|
||||
@@ -589,6 +705,7 @@ public class NetworkStats implements Parcelable {
|
||||
* Splice in {@link #operations} from the given {@link NetworkStats} based
|
||||
* on matching {@link #uid} and {@link #tag} rows. Ignores {@link #iface},
|
||||
* since operation counts are at data layer.
|
||||
* @hide
|
||||
*/
|
||||
public void spliceOperationsFrom(NetworkStats stats) {
|
||||
for (int i = 0; i < size; i++) {
|
||||
@@ -604,6 +721,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Return list of unique interfaces known by this data structure.
|
||||
* @hide
|
||||
*/
|
||||
public String[] getUniqueIfaces() {
|
||||
final HashSet<String> ifaces = new HashSet<String>();
|
||||
@@ -617,6 +735,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Return list of unique UIDs known by this data structure.
|
||||
* @hide
|
||||
*/
|
||||
@UnsupportedAppUsage
|
||||
public int[] getUniqueUids() {
|
||||
@@ -636,6 +755,7 @@ public class NetworkStats implements Parcelable {
|
||||
/**
|
||||
* Return total bytes represented by this snapshot object, usually used when
|
||||
* checking if a {@link #subtract(NetworkStats)} delta passes a threshold.
|
||||
* @hide
|
||||
*/
|
||||
@UnsupportedAppUsage
|
||||
public long getTotalBytes() {
|
||||
@@ -645,6 +765,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Return total of all fields represented by this snapshot object.
|
||||
* @hide
|
||||
*/
|
||||
@UnsupportedAppUsage
|
||||
public Entry getTotal(Entry recycle) {
|
||||
@@ -654,6 +775,7 @@ public class NetworkStats implements Parcelable {
|
||||
/**
|
||||
* Return total of all fields represented by this snapshot object matching
|
||||
* the requested {@link #uid}.
|
||||
* @hide
|
||||
*/
|
||||
@UnsupportedAppUsage
|
||||
public Entry getTotal(Entry recycle, int limitUid) {
|
||||
@@ -663,11 +785,13 @@ public class NetworkStats implements Parcelable {
|
||||
/**
|
||||
* Return total of all fields represented by this snapshot object matching
|
||||
* the requested {@link #iface}.
|
||||
* @hide
|
||||
*/
|
||||
public Entry getTotal(Entry recycle, HashSet<String> limitIface) {
|
||||
return getTotal(recycle, limitIface, UID_ALL, false);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
public Entry getTotalIncludingTags(Entry recycle) {
|
||||
return getTotal(recycle, null, UID_ALL, true);
|
||||
@@ -717,6 +841,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Fast path for battery stats.
|
||||
* @hide
|
||||
*/
|
||||
public long getTotalPackets() {
|
||||
long total = 0;
|
||||
@@ -729,9 +854,12 @@ public class NetworkStats implements Parcelable {
|
||||
/**
|
||||
* Subtract the given {@link NetworkStats}, effectively leaving the delta
|
||||
* between two snapshots in time. Assumes that statistics rows collect over
|
||||
* time, and that none of them have disappeared.
|
||||
* time, and that none of them have disappeared. This method does not mutate
|
||||
* the referencing object.
|
||||
*
|
||||
* @return the delta between two objects.
|
||||
*/
|
||||
public NetworkStats subtract(NetworkStats right) {
|
||||
public @NonNull NetworkStats subtract(@NonNull NetworkStats right) {
|
||||
return subtract(this, right, null, null);
|
||||
}
|
||||
|
||||
@@ -742,6 +870,7 @@ public class NetworkStats implements Parcelable {
|
||||
* <p>
|
||||
* If counters have rolled backwards, they are clamped to {@code 0} and
|
||||
* reported to the given {@link NonMonotonicObserver}.
|
||||
* @hide
|
||||
*/
|
||||
public static <C> NetworkStats subtract(NetworkStats left, NetworkStats right,
|
||||
NonMonotonicObserver<C> observer, C cookie) {
|
||||
@@ -759,6 +888,7 @@ public class NetworkStats implements Parcelable {
|
||||
* If <var>recycle</var> is supplied, this NetworkStats object will be
|
||||
* reused (and returned) as the result if it is large enough to contain
|
||||
* the data.
|
||||
* @hide
|
||||
*/
|
||||
public static <C> NetworkStats subtract(NetworkStats left, NetworkStats right,
|
||||
NonMonotonicObserver<C> observer, C cookie, NetworkStats recycle) {
|
||||
@@ -817,7 +947,7 @@ public class NetworkStats implements Parcelable {
|
||||
entry.operations = Math.max(entry.operations, 0);
|
||||
}
|
||||
|
||||
result.addValues(entry);
|
||||
result.addEntry(entry);
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -847,6 +977,7 @@ public class NetworkStats implements Parcelable {
|
||||
* @param stackedTraffic Stats with traffic stacked on top of our ifaces. Will also be mutated.
|
||||
* @param stackedIfaces Mapping ipv6if -> ipv4if interface where traffic is counted on both.
|
||||
* @param useBpfStats True if eBPF is in use.
|
||||
* @hide
|
||||
*/
|
||||
public static void apply464xlatAdjustments(NetworkStats baseTraffic,
|
||||
NetworkStats stackedTraffic, Map<String, String> stackedIfaces, boolean useBpfStats) {
|
||||
@@ -899,6 +1030,7 @@ public class NetworkStats implements Parcelable {
|
||||
* {@link #apply464xlatAdjustments(NetworkStats, NetworkStats, Map)} with {@code this} as
|
||||
* base and stacked traffic.
|
||||
* @param stackedIfaces Mapping ipv6if -> ipv4if interface where traffic is counted on both.
|
||||
* @hide
|
||||
*/
|
||||
public void apply464xlatAdjustments(Map<String, String> stackedIfaces, boolean useBpfStats) {
|
||||
apply464xlatAdjustments(this, this, stackedIfaces, useBpfStats);
|
||||
@@ -907,6 +1039,7 @@ public class NetworkStats implements Parcelable {
|
||||
/**
|
||||
* Return total statistics grouped by {@link #iface}; doesn't mutate the
|
||||
* original structure.
|
||||
* @hide
|
||||
*/
|
||||
public NetworkStats groupedByIface() {
|
||||
final NetworkStats stats = new NetworkStats(elapsedRealtime, 10);
|
||||
@@ -938,6 +1071,7 @@ public class NetworkStats implements Parcelable {
|
||||
/**
|
||||
* Return total statistics grouped by {@link #uid}; doesn't mutate the
|
||||
* original structure.
|
||||
* @hide
|
||||
*/
|
||||
public NetworkStats groupedByUid() {
|
||||
final NetworkStats stats = new NetworkStats(elapsedRealtime, 10);
|
||||
@@ -968,6 +1102,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Remove all rows that match one of specified UIDs.
|
||||
* @hide
|
||||
*/
|
||||
public void removeUids(int[] uids) {
|
||||
int nextOutputEntry = 0;
|
||||
@@ -989,6 +1124,7 @@ public class NetworkStats implements Parcelable {
|
||||
* @param limitUid UID to filter for, or {@link #UID_ALL}.
|
||||
* @param limitIfaces Interfaces to filter for, or {@link #INTERFACES_ALL}.
|
||||
* @param limitTag Tag to filter for, or {@link #TAG_ALL}.
|
||||
* @hide
|
||||
*/
|
||||
public void filter(int limitUid, String[] limitIfaces, int limitTag) {
|
||||
if (limitUid == UID_ALL && limitTag == TAG_ALL && limitIfaces == INTERFACES_ALL) {
|
||||
@@ -1004,6 +1140,7 @@ public class NetworkStats implements Parcelable {
|
||||
* Only keep entries with {@link #set} value less than {@link #SET_DEBUG_START}.
|
||||
*
|
||||
* <p>This mutates the original structure in place.
|
||||
* @hide
|
||||
*/
|
||||
public void filterDebugEntries() {
|
||||
filter(e -> e.set < SET_DEBUG_START);
|
||||
@@ -1024,6 +1161,7 @@ public class NetworkStats implements Parcelable {
|
||||
size = nextOutputEntry;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void dump(String prefix, PrintWriter pw) {
|
||||
pw.print(prefix);
|
||||
pw.print("NetworkStats: elapsedRealtime="); pw.println(elapsedRealtime);
|
||||
@@ -1047,6 +1185,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Return text description of {@link #set} value.
|
||||
* @hide
|
||||
*/
|
||||
public static String setToString(int set) {
|
||||
switch (set) {
|
||||
@@ -1067,6 +1206,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Return text description of {@link #set} value.
|
||||
* @hide
|
||||
*/
|
||||
public static String setToCheckinString(int set) {
|
||||
switch (set) {
|
||||
@@ -1087,6 +1227,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* @return true if the querySet matches the dataSet.
|
||||
* @hide
|
||||
*/
|
||||
public static boolean setMatches(int querySet, int dataSet) {
|
||||
if (querySet == dataSet) {
|
||||
@@ -1098,6 +1239,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Return text description of {@link #tag} value.
|
||||
* @hide
|
||||
*/
|
||||
public static String tagToString(int tag) {
|
||||
return "0x" + Integer.toHexString(tag);
|
||||
@@ -1105,6 +1247,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Return text description of {@link #metered} value.
|
||||
* @hide
|
||||
*/
|
||||
public static String meteredToString(int metered) {
|
||||
switch (metered) {
|
||||
@@ -1121,6 +1264,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Return text description of {@link #roaming} value.
|
||||
* @hide
|
||||
*/
|
||||
public static String roamingToString(int roaming) {
|
||||
switch (roaming) {
|
||||
@@ -1137,6 +1281,7 @@ public class NetworkStats implements Parcelable {
|
||||
|
||||
/**
|
||||
* Return text description of {@link #defaultNetwork} value.
|
||||
* @hide
|
||||
*/
|
||||
public static String defaultNetworkToString(int defaultNetwork) {
|
||||
switch (defaultNetwork) {
|
||||
@@ -1151,6 +1296,7 @@ public class NetworkStats implements Parcelable {
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@Override
|
||||
public String toString() {
|
||||
final CharArrayWriter writer = new CharArrayWriter();
|
||||
@@ -1163,8 +1309,7 @@ public class NetworkStats implements Parcelable {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@UnsupportedAppUsage
|
||||
public static final @android.annotation.NonNull Creator<NetworkStats> CREATOR = new Creator<NetworkStats>() {
|
||||
public static final @NonNull Creator<NetworkStats> CREATOR = new Creator<NetworkStats>() {
|
||||
@Override
|
||||
public NetworkStats createFromParcel(Parcel in) {
|
||||
return new NetworkStats(in);
|
||||
@@ -1176,6 +1321,7 @@ public class NetworkStats implements Parcelable {
|
||||
}
|
||||
};
|
||||
|
||||
/** @hide */
|
||||
public interface NonMonotonicObserver<C> {
|
||||
public void foundNonMonotonic(
|
||||
NetworkStats left, int leftIndex, NetworkStats right, int rightIndex, C cookie);
|
||||
@@ -1195,6 +1341,7 @@ public class NetworkStats implements Parcelable {
|
||||
* @param tunUid uid of the VPN application
|
||||
* @param tunIface iface of the vpn tunnel
|
||||
* @param underlyingIfaces underlying network ifaces used by the VPN application
|
||||
* @hide
|
||||
*/
|
||||
public void migrateTun(int tunUid, @NonNull String tunIface,
|
||||
@NonNull String[] underlyingIfaces) {
|
||||
|
||||
@@ -89,7 +89,7 @@ public class TrafficStats {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final int UID_TETHERING = -5;
|
||||
public static final int UID_TETHERING = NetworkStats.UID_TETHERING;
|
||||
|
||||
/**
|
||||
* Tag values in this range are reserved for the network stack. The network stack is
|
||||
|
||||
@@ -268,7 +268,7 @@ public class BandwidthTest extends InstrumentationTestCase {
|
||||
File snd_stat = new File (root_filepath + "tcp_snd");
|
||||
int tx = BandwidthTestUtil.parseIntValueFromFile(snd_stat);
|
||||
NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), 1);
|
||||
stats.addValues(NetworkStats.IFACE_ALL, uid, NetworkStats.SET_DEFAULT,
|
||||
stats.addEntry(NetworkStats.IFACE_ALL, uid, NetworkStats.SET_DEFAULT,
|
||||
NetworkStats.TAG_NONE, rx, 0, tx, 0, 0);
|
||||
return stats;
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ public class NetworkStatsBenchmark {
|
||||
recycle.txBytes = 150000;
|
||||
recycle.txPackets = 1500;
|
||||
recycle.operations = 0;
|
||||
mNetworkStats.addValues(recycle);
|
||||
mNetworkStats.addEntry(recycle);
|
||||
if (recycle.set == 1) {
|
||||
uid++;
|
||||
}
|
||||
@@ -70,7 +70,7 @@ public class NetworkStatsBenchmark {
|
||||
recycle.txBytes = 180000 * mSize;
|
||||
recycle.txPackets = 1200 * mSize;
|
||||
recycle.operations = 0;
|
||||
mNetworkStats.addValues(recycle);
|
||||
mNetworkStats.addEntry(recycle);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -279,7 +279,7 @@ public class OffloadController {
|
||||
entry.iface = kv.getKey();
|
||||
entry.rxBytes = value.rxBytes;
|
||||
entry.txBytes = value.txBytes;
|
||||
stats.addValues(entry);
|
||||
stats.addEntry(entry);
|
||||
}
|
||||
|
||||
return stats;
|
||||
|
||||
@@ -229,7 +229,7 @@ public class NetworkStatsFactory {
|
||||
entry.txPackets += reader.nextLong();
|
||||
}
|
||||
|
||||
stats.addValues(entry);
|
||||
stats.addEntry(entry);
|
||||
reader.finishLine();
|
||||
}
|
||||
} catch (NullPointerException|NumberFormatException e) {
|
||||
@@ -279,7 +279,7 @@ public class NetworkStatsFactory {
|
||||
entry.txBytes = reader.nextLong();
|
||||
entry.txPackets = reader.nextLong();
|
||||
|
||||
stats.addValues(entry);
|
||||
stats.addEntry(entry);
|
||||
reader.finishLine();
|
||||
}
|
||||
} catch (NullPointerException|NumberFormatException e) {
|
||||
@@ -439,7 +439,7 @@ public class NetworkStatsFactory {
|
||||
if ((limitIfaces == null || ArrayUtils.contains(limitIfaces, entry.iface))
|
||||
&& (limitUid == UID_ALL || limitUid == entry.uid)
|
||||
&& (limitTag == TAG_ALL || limitTag == entry.tag)) {
|
||||
stats.addValues(entry);
|
||||
stats.addEntry(entry);
|
||||
}
|
||||
|
||||
reader.finishLine();
|
||||
|
||||
@@ -27,6 +27,7 @@ import static android.net.ConnectivityManager.isNetworkTypeMobile;
|
||||
import static android.net.NetworkStack.checkNetworkStackPermission;
|
||||
import static android.net.NetworkStats.DEFAULT_NETWORK_ALL;
|
||||
import static android.net.NetworkStats.IFACE_ALL;
|
||||
import static android.net.NetworkStats.IFACE_VT;
|
||||
import static android.net.NetworkStats.INTERFACES_ALL;
|
||||
import static android.net.NetworkStats.METERED_ALL;
|
||||
import static android.net.NetworkStats.ROAMING_ALL;
|
||||
@@ -211,7 +212,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
||||
/**
|
||||
* Virtual network interface for video telephony. This is for VT data usage counting purpose.
|
||||
*/
|
||||
public static final String VT_INTERFACE = "vt_data0";
|
||||
// TODO: Remove this after no one is using it.
|
||||
public static final String VT_INTERFACE = NetworkStats.IFACE_VT;
|
||||
|
||||
/**
|
||||
* Settings that can be changed externally.
|
||||
@@ -712,7 +714,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
||||
final NetworkStatsHistory.Entry entry = history.getValues(start, end, now, null);
|
||||
|
||||
final NetworkStats stats = new NetworkStats(end - start, 1);
|
||||
stats.addValues(new NetworkStats.Entry(IFACE_ALL, UID_ALL, SET_ALL, TAG_NONE,
|
||||
stats.addEntry(new NetworkStats.Entry(IFACE_ALL, UID_ALL, SET_ALL, TAG_NONE,
|
||||
METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, entry.rxBytes, entry.rxPackets,
|
||||
entry.txBytes, entry.txPackets, entry.operations));
|
||||
return stats;
|
||||
@@ -1179,8 +1181,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
||||
ident.getSubType(), ident.getSubscriberId(), ident.getNetworkId(),
|
||||
ident.getRoaming(), true /* metered */,
|
||||
true /* onDefaultNetwork */);
|
||||
findOrCreateNetworkIdentitySet(mActiveIfaces, VT_INTERFACE).add(vtIdent);
|
||||
findOrCreateNetworkIdentitySet(mActiveUidIfaces, VT_INTERFACE).add(vtIdent);
|
||||
findOrCreateNetworkIdentitySet(mActiveIfaces, IFACE_VT).add(vtIdent);
|
||||
findOrCreateNetworkIdentitySet(mActiveUidIfaces, IFACE_VT).add(vtIdent);
|
||||
}
|
||||
|
||||
if (isMobile) {
|
||||
|
||||
@@ -1197,11 +1197,11 @@ public class NetworkPolicyManagerServiceTest {
|
||||
history.recordData(start, end,
|
||||
new NetworkStats.Entry(DataUnit.MEGABYTES.toBytes(1440), 0L, 0L, 0L, 0));
|
||||
stats.clear();
|
||||
stats.addValues(IFACE_ALL, UID_A, SET_ALL, TAG_ALL,
|
||||
stats.addEntry(IFACE_ALL, UID_A, SET_ALL, TAG_ALL,
|
||||
DataUnit.MEGABYTES.toBytes(480), 0, 0, 0, 0);
|
||||
stats.addValues(IFACE_ALL, UID_B, SET_ALL, TAG_ALL,
|
||||
stats.addEntry(IFACE_ALL, UID_B, SET_ALL, TAG_ALL,
|
||||
DataUnit.MEGABYTES.toBytes(480), 0, 0, 0, 0);
|
||||
stats.addValues(IFACE_ALL, UID_C, SET_ALL, TAG_ALL,
|
||||
stats.addEntry(IFACE_ALL, UID_C, SET_ALL, TAG_ALL,
|
||||
DataUnit.MEGABYTES.toBytes(480), 0, 0, 0, 0);
|
||||
|
||||
reset(mNotifManager);
|
||||
@@ -1225,9 +1225,9 @@ public class NetworkPolicyManagerServiceTest {
|
||||
history.recordData(start, end,
|
||||
new NetworkStats.Entry(DataUnit.MEGABYTES.toBytes(1440), 0L, 0L, 0L, 0));
|
||||
stats.clear();
|
||||
stats.addValues(IFACE_ALL, UID_A, SET_ALL, TAG_ALL,
|
||||
stats.addEntry(IFACE_ALL, UID_A, SET_ALL, TAG_ALL,
|
||||
DataUnit.MEGABYTES.toBytes(960), 0, 0, 0, 0);
|
||||
stats.addValues(IFACE_ALL, UID_B, SET_ALL, TAG_ALL,
|
||||
stats.addEntry(IFACE_ALL, UID_B, SET_ALL, TAG_ALL,
|
||||
DataUnit.MEGABYTES.toBytes(480), 0, 0, 0, 0);
|
||||
|
||||
reset(mNotifManager);
|
||||
|
||||
@@ -64,15 +64,15 @@ public class NetworkStatsTest {
|
||||
@Test
|
||||
public void testFindIndex() throws Exception {
|
||||
final NetworkStats stats = new NetworkStats(TEST_START, 5)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 1024L, 8L, 0L, 0L, 10)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 0L, 0L, 1024L, 8L, 11)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 0L, 0L, 1024L, 8L, 11)
|
||||
.addValues(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 1024L, 8L, 1024L, 8L, 12)
|
||||
.addValues(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_YES,
|
||||
.addEntry(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_YES,
|
||||
DEFAULT_NETWORK_YES, 1024L, 8L, 1024L, 8L, 12);
|
||||
|
||||
assertEquals(4, stats.findIndex(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, METERED_YES,
|
||||
@@ -94,21 +94,21 @@ public class NetworkStatsTest {
|
||||
@Test
|
||||
public void testFindIndexHinted() {
|
||||
final NetworkStats stats = new NetworkStats(TEST_START, 3)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 1024L, 8L, 0L, 0L, 10)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 0L, 0L, 1024L, 8L, 11)
|
||||
.addValues(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 1024L, 8L, 1024L, 8L, 12)
|
||||
.addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 1024L, 8L, 0L, 0L, 10)
|
||||
.addValues(TEST_IFACE2, 101, SET_DEFAULT, 0xF00D, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE2, 101, SET_DEFAULT, 0xF00D, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 0L, 0L, 1024L, 8L, 11)
|
||||
.addValues(TEST_IFACE2, 101, SET_DEFAULT, 0xF00D, METERED_YES, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE2, 101, SET_DEFAULT, 0xF00D, METERED_YES, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 0L, 0L, 1024L, 8L, 11)
|
||||
.addValues(TEST_IFACE2, 102, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE2, 102, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 1024L, 8L, 1024L, 8L, 12)
|
||||
.addValues(TEST_IFACE2, 102, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_YES,
|
||||
.addEntry(TEST_IFACE2, 102, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_YES,
|
||||
DEFAULT_NETWORK_NO, 1024L, 8L, 1024L, 8L, 12);
|
||||
|
||||
// verify that we correctly find across regardless of hinting
|
||||
@@ -143,27 +143,27 @@ public class NetworkStatsTest {
|
||||
assertEquals(0, stats.size());
|
||||
assertEquals(4, stats.internalSize());
|
||||
|
||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
stats.addEntry(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 1L, 1L, 2L, 2L, 3);
|
||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
stats.addEntry(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 2L, 2L, 2L, 2L, 4);
|
||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_YES,
|
||||
stats.addEntry(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_YES,
|
||||
DEFAULT_NETWORK_YES, 3L, 3L, 2L, 2L, 5);
|
||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_YES,
|
||||
stats.addEntry(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_YES,
|
||||
DEFAULT_NETWORK_NO, 3L, 3L, 2L, 2L, 5);
|
||||
|
||||
assertEquals(4, stats.size());
|
||||
assertEquals(4, stats.internalSize());
|
||||
|
||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
stats.addEntry(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 4L, 40L, 4L, 40L, 7);
|
||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
stats.addEntry(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 5L, 50L, 4L, 40L, 8);
|
||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
stats.addEntry(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 6L, 60L, 5L, 50L, 10);
|
||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_YES,
|
||||
stats.addEntry(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_YES,
|
||||
DEFAULT_NETWORK_YES, 7L, 70L, 5L, 50L, 11);
|
||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_YES,
|
||||
stats.addEntry(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_YES,
|
||||
DEFAULT_NETWORK_NO, 7L, 70L, 5L, 50L, 11);
|
||||
|
||||
assertEquals(9, stats.size());
|
||||
@@ -193,8 +193,8 @@ public class NetworkStatsTest {
|
||||
public void testCombineExisting() throws Exception {
|
||||
final NetworkStats stats = new NetworkStats(TEST_START, 10);
|
||||
|
||||
stats.addValues(TEST_IFACE, 1001, SET_DEFAULT, TAG_NONE, 512L, 4L, 256L, 2L, 10);
|
||||
stats.addValues(TEST_IFACE, 1001, SET_DEFAULT, 0xff, 128L, 1L, 128L, 1L, 2);
|
||||
stats.addEntry(TEST_IFACE, 1001, SET_DEFAULT, TAG_NONE, 512L, 4L, 256L, 2L, 10);
|
||||
stats.addEntry(TEST_IFACE, 1001, SET_DEFAULT, 0xff, 128L, 1L, 128L, 1L, 2);
|
||||
stats.combineValues(TEST_IFACE, 1001, SET_DEFAULT, TAG_NONE, -128L, -1L,
|
||||
-128L, -1L, -1);
|
||||
|
||||
@@ -215,12 +215,12 @@ public class NetworkStatsTest {
|
||||
@Test
|
||||
public void testSubtractIdenticalData() throws Exception {
|
||||
final NetworkStats before = new NetworkStats(TEST_START, 2)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 11)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 12);
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 11)
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 12);
|
||||
|
||||
final NetworkStats after = new NetworkStats(TEST_START, 2)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 11)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 12);
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 11)
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 12);
|
||||
|
||||
final NetworkStats result = after.subtract(before);
|
||||
|
||||
@@ -234,12 +234,12 @@ public class NetworkStatsTest {
|
||||
@Test
|
||||
public void testSubtractIdenticalRows() throws Exception {
|
||||
final NetworkStats before = new NetworkStats(TEST_START, 2)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 11)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 12);
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 11)
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 12);
|
||||
|
||||
final NetworkStats after = new NetworkStats(TEST_START, 2)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1025L, 9L, 2L, 1L, 15)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 3L, 1L, 1028L, 9L, 20);
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1025L, 9L, 2L, 1L, 15)
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 3L, 1L, 1028L, 9L, 20);
|
||||
|
||||
final NetworkStats result = after.subtract(before);
|
||||
|
||||
@@ -253,13 +253,13 @@ public class NetworkStatsTest {
|
||||
@Test
|
||||
public void testSubtractNewRows() throws Exception {
|
||||
final NetworkStats before = new NetworkStats(TEST_START, 2)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 11)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 12);
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 11)
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 12);
|
||||
|
||||
final NetworkStats after = new NetworkStats(TEST_START, 3)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 11)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 12)
|
||||
.addValues(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 20);
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 11)
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 12)
|
||||
.addEntry(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 20);
|
||||
|
||||
final NetworkStats result = after.subtract(before);
|
||||
|
||||
@@ -275,11 +275,11 @@ public class NetworkStatsTest {
|
||||
@Test
|
||||
public void testSubtractMissingRows() throws Exception {
|
||||
final NetworkStats before = new NetworkStats(TEST_START, 2)
|
||||
.addValues(TEST_IFACE, UID_ALL, SET_DEFAULT, TAG_NONE, 1024L, 0L, 0L, 0L, 0)
|
||||
.addValues(TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, 2048L, 0L, 0L, 0L, 0);
|
||||
.addEntry(TEST_IFACE, UID_ALL, SET_DEFAULT, TAG_NONE, 1024L, 0L, 0L, 0L, 0)
|
||||
.addEntry(TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, 2048L, 0L, 0L, 0L, 0);
|
||||
|
||||
final NetworkStats after = new NetworkStats(TEST_START, 1)
|
||||
.addValues(TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, 2049L, 2L, 3L, 4L, 0);
|
||||
.addEntry(TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, 2049L, 2L, 3L, 4L, 0);
|
||||
|
||||
final NetworkStats result = after.subtract(before);
|
||||
|
||||
@@ -293,40 +293,40 @@ public class NetworkStatsTest {
|
||||
@Test
|
||||
public void testTotalBytes() throws Exception {
|
||||
final NetworkStats iface = new NetworkStats(TEST_START, 2)
|
||||
.addValues(TEST_IFACE, UID_ALL, SET_DEFAULT, TAG_NONE, 128L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, 256L, 0L, 0L, 0L, 0L);
|
||||
.addEntry(TEST_IFACE, UID_ALL, SET_DEFAULT, TAG_NONE, 128L, 0L, 0L, 0L, 0L)
|
||||
.addEntry(TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, 256L, 0L, 0L, 0L, 0L);
|
||||
assertEquals(384L, iface.getTotalBytes());
|
||||
|
||||
final NetworkStats uidSet = new NetworkStats(TEST_START, 3)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 32L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 32L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_FOREGROUND, TAG_NONE, 32L, 0L, 0L, 0L, 0L);
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 32L, 0L, 0L, 0L, 0L)
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 32L, 0L, 0L, 0L, 0L)
|
||||
.addEntry(TEST_IFACE, 101, SET_FOREGROUND, TAG_NONE, 32L, 0L, 0L, 0L, 0L);
|
||||
assertEquals(96L, uidSet.getTotalBytes());
|
||||
|
||||
final NetworkStats uidTag = new NetworkStats(TEST_START, 6)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, 8L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 8L, 0L, 0L, 0L, 0L);
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
||||
.addEntry(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
||||
.addEntry(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, 8L, 0L, 0L, 0L, 0L)
|
||||
.addEntry(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 8L, 0L, 0L, 0L, 0L);
|
||||
assertEquals(64L, uidTag.getTotalBytes());
|
||||
|
||||
final NetworkStats uidMetered = new NetworkStats(TEST_START, 3)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 32L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 32L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 32L, 0L, 0L, 0L, 0L);
|
||||
assertEquals(96L, uidMetered.getTotalBytes());
|
||||
|
||||
final NetworkStats uidRoaming = new NetworkStats(TEST_START, 3)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 32L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 32L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_YES,
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_YES,
|
||||
DEFAULT_NETWORK_YES, 32L, 0L, 0L, 0L, 0L);
|
||||
assertEquals(96L, uidRoaming.getTotalBytes());
|
||||
}
|
||||
@@ -343,11 +343,11 @@ public class NetworkStatsTest {
|
||||
@Test
|
||||
public void testGroupedByIfaceAll() throws Exception {
|
||||
final NetworkStats uidStats = new NetworkStats(TEST_START, 3)
|
||||
.addValues(IFACE_ALL, 100, SET_ALL, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(IFACE_ALL, 100, SET_ALL, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 128L, 8L, 0L, 2L, 20L)
|
||||
.addValues(IFACE_ALL, 101, SET_FOREGROUND, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
.addEntry(IFACE_ALL, 101, SET_FOREGROUND, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 128L, 8L, 0L, 2L, 20L)
|
||||
.addValues(IFACE_ALL, 101, SET_ALL, TAG_NONE, METERED_NO, ROAMING_YES,
|
||||
.addEntry(IFACE_ALL, 101, SET_ALL, TAG_NONE, METERED_NO, ROAMING_YES,
|
||||
DEFAULT_NETWORK_YES, 128L, 8L, 0L, 2L, 20L);
|
||||
final NetworkStats grouped = uidStats.groupedByIface();
|
||||
|
||||
@@ -361,19 +361,19 @@ public class NetworkStatsTest {
|
||||
@Test
|
||||
public void testGroupedByIface() throws Exception {
|
||||
final NetworkStats uidStats = new NetworkStats(TEST_START, 7)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 128L, 8L, 0L, 2L, 20L)
|
||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 512L, 32L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 64L, 4L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 512L, 32L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 128L, 8L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, METERED_YES, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, METERED_YES, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 128L, 8L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_YES,
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_YES,
|
||||
DEFAULT_NETWORK_YES, 128L, 8L, 0L, 0L, 0L);
|
||||
|
||||
final NetworkStats grouped = uidStats.groupedByIface();
|
||||
@@ -390,19 +390,19 @@ public class NetworkStatsTest {
|
||||
@Test
|
||||
public void testAddAllValues() {
|
||||
final NetworkStats first = new NetworkStats(TEST_START, 5)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 32L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 32L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, METERED_YES, ROAMING_YES,
|
||||
.addEntry(TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, METERED_YES, ROAMING_YES,
|
||||
DEFAULT_NETWORK_YES, 32L, 0L, 0L, 0L, 0L);
|
||||
|
||||
final NetworkStats second = new NetworkStats(TEST_START, 2)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 32L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 32L, 0L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, METERED_YES, ROAMING_YES,
|
||||
.addEntry(TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, METERED_YES, ROAMING_YES,
|
||||
DEFAULT_NETWORK_YES, 32L, 0L, 0L, 0L, 0L);
|
||||
|
||||
first.combineAllValues(second);
|
||||
@@ -421,19 +421,19 @@ public class NetworkStatsTest {
|
||||
@Test
|
||||
public void testGetTotal() {
|
||||
final NetworkStats stats = new NetworkStats(TEST_START, 7)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 128L, 8L, 0L, 2L, 20L)
|
||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 512L, 32L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 64L, 4L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 512L,32L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, METERED_YES, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 128L, 8L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 128L, 8L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_YES,
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_YES,
|
||||
DEFAULT_NETWORK_NO, 128L, 8L, 0L, 0L, 0L);
|
||||
|
||||
assertValues(stats.getTotal(null), 1408L, 88L, 0L, 2L, 20L);
|
||||
@@ -459,7 +459,7 @@ public class NetworkStatsTest {
|
||||
assertEquals(0, after.size());
|
||||
|
||||
// Test 1 item stats.
|
||||
before.addValues(TEST_IFACE, 99, SET_DEFAULT, TAG_NONE, 1L, 128L, 0L, 2L, 20L);
|
||||
before.addEntry(TEST_IFACE, 99, SET_DEFAULT, TAG_NONE, 1L, 128L, 0L, 2L, 20L);
|
||||
after = before.clone();
|
||||
after.removeUids(new int[0]);
|
||||
assertEquals(1, after.size());
|
||||
@@ -469,12 +469,12 @@ public class NetworkStatsTest {
|
||||
assertEquals(0, after.size());
|
||||
|
||||
// Append remaining test items.
|
||||
before.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 2L, 64L, 0L, 2L, 20L)
|
||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 4L, 32L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, 8L, 16L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, 16L, 8L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 32L, 4L, 0L, 0L, 0L)
|
||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 64L, 2L, 0L, 0L, 0L);
|
||||
before.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 2L, 64L, 0L, 2L, 20L)
|
||||
.addEntry(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 4L, 32L, 0L, 0L, 0L)
|
||||
.addEntry(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, 8L, 16L, 0L, 0L, 0L)
|
||||
.addEntry(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, 16L, 8L, 0L, 0L, 0L)
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 32L, 4L, 0L, 0L, 0L)
|
||||
.addEntry(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 64L, 2L, 0L, 0L, 0L);
|
||||
assertEquals(7, before.size());
|
||||
|
||||
// Test remove with empty uid list.
|
||||
@@ -505,12 +505,12 @@ public class NetworkStatsTest {
|
||||
@Test
|
||||
public void testClone() throws Exception {
|
||||
final NetworkStats original = new NetworkStats(TEST_START, 5)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 2L, 20L)
|
||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 512L, 32L, 0L, 0L, 0L);
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 2L, 20L)
|
||||
.addEntry(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 512L, 32L, 0L, 0L, 0L);
|
||||
|
||||
// make clone and mutate original
|
||||
final NetworkStats clone = original.clone();
|
||||
original.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 0L, 0L);
|
||||
original.addEntry(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 0L, 0L);
|
||||
|
||||
assertEquals(3, original.size());
|
||||
assertEquals(2, clone.size());
|
||||
@@ -523,8 +523,8 @@ public class NetworkStatsTest {
|
||||
public void testAddWhenEmpty() throws Exception {
|
||||
final NetworkStats red = new NetworkStats(TEST_START, -1);
|
||||
final NetworkStats blue = new NetworkStats(TEST_START, 5)
|
||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 2L, 20L)
|
||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 512L, 32L, 0L, 0L, 0L);
|
||||
.addEntry(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 2L, 20L)
|
||||
.addEntry(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 512L, 32L, 0L, 0L, 0L);
|
||||
|
||||
// We're mostly checking that we don't crash
|
||||
red.combineAllValues(blue);
|
||||
@@ -537,39 +537,39 @@ public class NetworkStatsTest {
|
||||
final String underlyingIface = "wlan0";
|
||||
final int testTag1 = 8888;
|
||||
NetworkStats delta = new NetworkStats(TEST_START, 17)
|
||||
.addValues(tunIface, 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 39605L, 46L, 12259L, 55L, 0L)
|
||||
.addValues(tunIface, 10100, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 0L, 0L, 0L, 0L, 0L)
|
||||
.addValues(tunIface, 10120, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 72667L, 197L, 43909L, 241L, 0L)
|
||||
.addValues(tunIface, 10120, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 9297L, 17L, 4128L, 21L, 0L)
|
||||
// VPN package also uses some traffic through unprotected network.
|
||||
.addValues(tunIface, tunUid, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 4983L, 10L, 1801L, 12L, 0L)
|
||||
.addValues(tunIface, tunUid, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 0L, 0L, 0L, 0L, 0L)
|
||||
// Tag entries
|
||||
.addValues(tunIface, 10120, SET_DEFAULT, testTag1, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 21691L, 41L, 13820L, 51L, 0L)
|
||||
.addValues(tunIface, 10120, SET_FOREGROUND, testTag1, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 1281L, 2L, 665L, 2L, 0L)
|
||||
// Irrelevant entries
|
||||
.addValues(TEST_IFACE, 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 1685L, 5L, 2070L, 6L, 0L)
|
||||
// Underlying Iface entries
|
||||
.addValues(underlyingIface, 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 5178L, 8L, 2139L, 11L, 0L)
|
||||
.addValues(underlyingIface, 10100, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 0L, 0L, 0L, 0L, 0L)
|
||||
.addValues(underlyingIface, tunUid, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 149873L, 287L, 59217L /* smaller than sum(tun0) */,
|
||||
299L /* smaller than sum(tun0) */, 0L)
|
||||
.addValues(underlyingIface, tunUid, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 0L, 0L, 0L, 0L, 0L);
|
||||
.addEntry(tunIface, 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 39605L, 46L, 12259L, 55L, 0L)
|
||||
.addEntry(tunIface, 10100, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 0L, 0L, 0L, 0L, 0L)
|
||||
.addEntry(tunIface, 10120, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 72667L, 197L, 43909L, 241L, 0L)
|
||||
.addEntry(tunIface, 10120, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 9297L, 17L, 4128L, 21L, 0L)
|
||||
// VPN package also uses some traffic through unprotected network.
|
||||
.addEntry(tunIface, tunUid, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 4983L, 10L, 1801L, 12L, 0L)
|
||||
.addEntry(tunIface, tunUid, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 0L, 0L, 0L, 0L, 0L)
|
||||
// Tag entries
|
||||
.addEntry(tunIface, 10120, SET_DEFAULT, testTag1, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 21691L, 41L, 13820L, 51L, 0L)
|
||||
.addEntry(tunIface, 10120, SET_FOREGROUND, testTag1, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 1281L, 2L, 665L, 2L, 0L)
|
||||
// Irrelevant entries
|
||||
.addEntry(TEST_IFACE, 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 1685L, 5L, 2070L, 6L, 0L)
|
||||
// Underlying Iface entries
|
||||
.addEntry(underlyingIface, 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 5178L, 8L, 2139L, 11L, 0L)
|
||||
.addEntry(underlyingIface, 10100, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 0L, 0L, 0L, 0L, 0L)
|
||||
.addEntry(underlyingIface, tunUid, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 149873L, 287L, 59217L /* smaller than sum(tun0) */,
|
||||
299L /* smaller than sum(tun0) */, 0L)
|
||||
.addEntry(underlyingIface, tunUid, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 0L, 0L, 0L, 0L, 0L);
|
||||
|
||||
delta.migrateTun(tunUid, tunIface, new String[] {underlyingIface});
|
||||
delta.migrateTun(tunUid, tunIface, new String[]{underlyingIface});
|
||||
assertEquals(20, delta.size());
|
||||
|
||||
// tunIface and TEST_IFACE entries are not changed.
|
||||
@@ -634,21 +634,21 @@ public class NetworkStatsTest {
|
||||
final String tunIface = "tun0";
|
||||
final String underlyingIface = "wlan0";
|
||||
NetworkStats delta = new NetworkStats(TEST_START, 9)
|
||||
// 2 different apps sent/receive data via tun0.
|
||||
.addValues(tunIface, 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L)
|
||||
.addValues(tunIface, 20100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 500L, 2L, 200L, 5L, 0L)
|
||||
// VPN package resends data through the tunnel (with exaggerated overhead)
|
||||
.addValues(tunIface, tunUid, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 240000, 100L, 120000L, 60L, 0L)
|
||||
// 1 app already has some traffic on the underlying interface, the other doesn't yet
|
||||
.addValues(underlyingIface, 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 1000L, 10L, 2000L, 20L, 0L)
|
||||
// Traffic through the underlying interface via the vpn app.
|
||||
// This test should redistribute this data correctly.
|
||||
.addValues(underlyingIface, tunUid, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 75500L, 37L, 130000L, 70L, 0L);
|
||||
// 2 different apps sent/receive data via tun0.
|
||||
.addEntry(tunIface, 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L)
|
||||
.addEntry(tunIface, 20100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 500L, 2L, 200L, 5L, 0L)
|
||||
// VPN package resends data through the tunnel (with exaggerated overhead)
|
||||
.addEntry(tunIface, tunUid, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 240000, 100L, 120000L, 60L, 0L)
|
||||
// 1 app already has some traffic on the underlying interface, the other doesn't yet
|
||||
.addEntry(underlyingIface, 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 1000L, 10L, 2000L, 20L, 0L)
|
||||
// Traffic through the underlying interface via the vpn app.
|
||||
// This test should redistribute this data correctly.
|
||||
.addEntry(underlyingIface, tunUid, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 75500L, 37L, 130000L, 70L, 0L);
|
||||
|
||||
delta.migrateTun(tunUid, tunIface, new String[]{underlyingIface});
|
||||
assertEquals(9, delta.size());
|
||||
@@ -697,9 +697,9 @@ public class NetworkStatsTest {
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats stats = new NetworkStats(TEST_START, 3)
|
||||
.addValues(entry1)
|
||||
.addValues(entry2)
|
||||
.addValues(entry3);
|
||||
.addEntry(entry1)
|
||||
.addEntry(entry2)
|
||||
.addEntry(entry3);
|
||||
|
||||
stats.filter(UID_ALL, INTERFACES_ALL, TAG_ALL);
|
||||
assertEquals(3, stats.size());
|
||||
@@ -724,9 +724,9 @@ public class NetworkStatsTest {
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats stats = new NetworkStats(TEST_START, 3)
|
||||
.addValues(entry1)
|
||||
.addValues(entry2)
|
||||
.addValues(entry3);
|
||||
.addEntry(entry1)
|
||||
.addEntry(entry2)
|
||||
.addEntry(entry3);
|
||||
|
||||
stats.filter(testUid, INTERFACES_ALL, TAG_ALL);
|
||||
assertEquals(2, stats.size());
|
||||
@@ -755,10 +755,10 @@ public class NetworkStatsTest {
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats stats = new NetworkStats(TEST_START, 4)
|
||||
.addValues(entry1)
|
||||
.addValues(entry2)
|
||||
.addValues(entry3)
|
||||
.addValues(entry4);
|
||||
.addEntry(entry1)
|
||||
.addEntry(entry2)
|
||||
.addEntry(entry3)
|
||||
.addEntry(entry4);
|
||||
|
||||
stats.filter(UID_ALL, new String[] { testIf1, testIf2 }, TAG_ALL);
|
||||
assertEquals(3, stats.size());
|
||||
@@ -778,8 +778,8 @@ public class NetworkStatsTest {
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats stats = new NetworkStats(TEST_START, 3)
|
||||
.addValues(entry1)
|
||||
.addValues(entry2);
|
||||
.addEntry(entry1)
|
||||
.addEntry(entry2);
|
||||
|
||||
stats.filter(UID_ALL, new String[] { }, TAG_ALL);
|
||||
assertEquals(0, stats.size());
|
||||
@@ -802,9 +802,9 @@ public class NetworkStatsTest {
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats stats = new NetworkStats(TEST_START, 3)
|
||||
.addValues(entry1)
|
||||
.addValues(entry2)
|
||||
.addValues(entry3);
|
||||
.addEntry(entry1)
|
||||
.addEntry(entry2)
|
||||
.addEntry(entry3);
|
||||
|
||||
stats.filter(UID_ALL, INTERFACES_ALL, testTag);
|
||||
assertEquals(2, stats.size());
|
||||
@@ -831,10 +831,10 @@ public class NetworkStatsTest {
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats stats = new NetworkStats(TEST_START, 4)
|
||||
.addValues(entry1)
|
||||
.addValues(entry2)
|
||||
.addValues(entry3)
|
||||
.addValues(entry4);
|
||||
.addEntry(entry1)
|
||||
.addEntry(entry2)
|
||||
.addEntry(entry3)
|
||||
.addEntry(entry4);
|
||||
|
||||
stats.filterDebugEntries();
|
||||
|
||||
@@ -891,14 +891,14 @@ public class NetworkStatsTest {
|
||||
0 /* operations */);
|
||||
|
||||
final NetworkStats statsXt = new NetworkStats(TEST_START, 3)
|
||||
.addValues(appEntry)
|
||||
.addValues(xtRootUidEntry)
|
||||
.addValues(otherEntry);
|
||||
.addEntry(appEntry)
|
||||
.addEntry(xtRootUidEntry)
|
||||
.addEntry(otherEntry);
|
||||
|
||||
final NetworkStats statsEbpf = new NetworkStats(TEST_START, 3)
|
||||
.addValues(appEntry)
|
||||
.addValues(ebpfRootUidEntry)
|
||||
.addValues(otherEntry);
|
||||
.addEntry(appEntry)
|
||||
.addEntry(ebpfRootUidEntry)
|
||||
.addEntry(otherEntry);
|
||||
|
||||
statsXt.apply464xlatAdjustments(stackedIface, false);
|
||||
statsEbpf.apply464xlatAdjustments(stackedIface, true);
|
||||
@@ -945,8 +945,8 @@ public class NetworkStatsTest {
|
||||
0 /* operations */);
|
||||
|
||||
NetworkStats stats = new NetworkStats(TEST_START, 2)
|
||||
.addValues(firstEntry)
|
||||
.addValues(secondEntry);
|
||||
.addEntry(firstEntry)
|
||||
.addEntry(secondEntry);
|
||||
|
||||
// Empty map: no adjustment
|
||||
stats.apply464xlatAdjustments(new ArrayMap<>(), false);
|
||||
|
||||
@@ -326,14 +326,14 @@ public class NetworkStatsObserversTest {
|
||||
// Baseline
|
||||
NetworkStats xtSnapshot = null;
|
||||
NetworkStats uidSnapshot = new NetworkStats(TEST_START, 2 /* initialSize */)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, BASE_BYTES, 2L, BASE_BYTES, 2L, 0L);
|
||||
mStatsObservers.updateStats(
|
||||
xtSnapshot, uidSnapshot, mActiveIfaces, mActiveUidIfaces, TEST_START);
|
||||
|
||||
// Delta
|
||||
uidSnapshot = new NetworkStats(TEST_START + 2 * MINUTE_IN_MILLIS, 2 /* initialSize */)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, BASE_BYTES + THRESHOLD_BYTES, 2L,
|
||||
BASE_BYTES + THRESHOLD_BYTES, 2L, 0L);
|
||||
mStatsObservers.updateStats(
|
||||
@@ -359,14 +359,14 @@ public class NetworkStatsObserversTest {
|
||||
// Baseline
|
||||
NetworkStats xtSnapshot = null;
|
||||
NetworkStats uidSnapshot = new NetworkStats(TEST_START, 2 /* initialSize */)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, BASE_BYTES, 2L, BASE_BYTES, 2L, 0L);
|
||||
mStatsObservers.updateStats(
|
||||
xtSnapshot, uidSnapshot, mActiveIfaces, mActiveUidIfaces, TEST_START);
|
||||
|
||||
// Delta
|
||||
uidSnapshot = new NetworkStats(TEST_START + 2 * MINUTE_IN_MILLIS, 2 /* initialSize */)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, BASE_BYTES + THRESHOLD_BYTES, 2L,
|
||||
BASE_BYTES + THRESHOLD_BYTES, 2L, 0L);
|
||||
mStatsObservers.updateStats(
|
||||
@@ -391,14 +391,14 @@ public class NetworkStatsObserversTest {
|
||||
// Baseline
|
||||
NetworkStats xtSnapshot = null;
|
||||
NetworkStats uidSnapshot = new NetworkStats(TEST_START, 2 /* initialSize */)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, BASE_BYTES, 2L, BASE_BYTES, 2L, 0L);
|
||||
mStatsObservers.updateStats(
|
||||
xtSnapshot, uidSnapshot, mActiveIfaces, mActiveUidIfaces, TEST_START);
|
||||
|
||||
// Delta
|
||||
uidSnapshot = new NetworkStats(TEST_START + 2 * MINUTE_IN_MILLIS, 2 /* initialSize */)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, BASE_BYTES + THRESHOLD_BYTES, 2L,
|
||||
BASE_BYTES + THRESHOLD_BYTES, 2L, 0L);
|
||||
mStatsObservers.updateStats(
|
||||
@@ -424,14 +424,14 @@ public class NetworkStatsObserversTest {
|
||||
// Baseline
|
||||
NetworkStats xtSnapshot = null;
|
||||
NetworkStats uidSnapshot = new NetworkStats(TEST_START, 2 /* initialSize */)
|
||||
.addValues(TEST_IFACE, UID_ANOTHER_USER, SET_DEFAULT, TAG_NONE, METERED_NO,
|
||||
.addEntry(TEST_IFACE, UID_ANOTHER_USER, SET_DEFAULT, TAG_NONE, METERED_NO,
|
||||
ROAMING_NO, DEFAULT_NETWORK_YES, BASE_BYTES, 2L, BASE_BYTES, 2L, 0L);
|
||||
mStatsObservers.updateStats(
|
||||
xtSnapshot, uidSnapshot, mActiveIfaces, mActiveUidIfaces, TEST_START);
|
||||
|
||||
// Delta
|
||||
uidSnapshot = new NetworkStats(TEST_START + 2 * MINUTE_IN_MILLIS, 2 /* initialSize */)
|
||||
.addValues(TEST_IFACE, UID_ANOTHER_USER, SET_DEFAULT, TAG_NONE, METERED_NO,
|
||||
.addEntry(TEST_IFACE, UID_ANOTHER_USER, SET_DEFAULT, TAG_NONE, METERED_NO,
|
||||
ROAMING_NO, DEFAULT_NETWORK_NO, BASE_BYTES + THRESHOLD_BYTES, 2L,
|
||||
BASE_BYTES + THRESHOLD_BYTES, 2L, 0L);
|
||||
mStatsObservers.updateStats(
|
||||
|
||||
@@ -298,11 +298,11 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectNetworkStatsSummary(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addIfaceValues(TEST_IFACE, 1024L, 8L, 2048L, 16L));
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 2)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 512L, 4L, 256L, 2L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xFAAD, 256L, 2L, 128L, 1L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_FOREGROUND, TAG_NONE, 512L, 4L, 256L, 2L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_FOREGROUND, 0xFAAD, 256L, 2L, 128L, 1L, 0L)
|
||||
.addValues(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 128L, 1L, 128L, 1L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 512L, 4L, 256L, 2L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xFAAD, 256L, 2L, 128L, 1L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_FOREGROUND, TAG_NONE, 512L, 4L, 256L, 2L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_FOREGROUND, 0xFAAD, 256L, 2L, 128L, 1L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 128L, 1L, 128L, 1L, 0L));
|
||||
mService.setUidForeground(UID_RED, false);
|
||||
mService.incrementOperationCount(UID_RED, 0xFAAD, 4);
|
||||
mService.setUidForeground(UID_RED, true);
|
||||
@@ -407,9 +407,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectNetworkStatsSummary(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addIfaceValues(TEST_IFACE, 2048L, 16L, 512L, 4L));
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 3)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1536L, 12L, 512L, 4L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L)
|
||||
.addValues(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 512L, 4L, 0L, 0L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1536L, 12L, 512L, 4L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 512L, 4L, 0L, 0L, 0L));
|
||||
mService.incrementOperationCount(UID_RED, 0xF00D, 10);
|
||||
|
||||
forcePollAndWaitForIdle();
|
||||
@@ -429,9 +429,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectNetworkStatsSummary(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addIfaceValues(TEST_IFACE, 2048L, 16L, 512L, 4L));
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 3)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1536L, 12L, 512L, 4L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L)
|
||||
.addValues(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 512L, 4L, 0L, 0L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1536L, 12L, 512L, 4L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 512L, 4L, 0L, 0L, 0L));
|
||||
|
||||
mService.forceUpdateIfaces(NETWORKS_MOBILE, states, getActiveIface(states), new VpnInfo[0]);
|
||||
forcePollAndWaitForIdle();
|
||||
@@ -443,10 +443,10 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectNetworkStatsSummary(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addIfaceValues(TEST_IFACE, 2176L, 17L, 1536L, 12L));
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1536L, 12L, 512L, 4L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L)
|
||||
.addValues(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 640L, 5L, 1024L, 8L, 0L)
|
||||
.addValues(TEST_IFACE, UID_BLUE, SET_DEFAULT, 0xFAAD, 128L, 1L, 1024L, 8L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1536L, 12L, 512L, 4L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 640L, 5L, 1024L, 8L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_BLUE, SET_DEFAULT, 0xFAAD, 128L, 1L, 1024L, 8L, 0L));
|
||||
mService.incrementOperationCount(UID_BLUE, 0xFAAD, 10);
|
||||
|
||||
forcePollAndWaitForIdle();
|
||||
@@ -480,10 +480,10 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectNetworkStatsSummary(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addIfaceValues(TEST_IFACE, 4128L, 258L, 544L, 34L));
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 16L, 1L, 16L, 1L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xFAAD, 16L, 1L, 16L, 1L, 0L)
|
||||
.addValues(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 4096L, 258L, 512L, 32L, 0L)
|
||||
.addValues(TEST_IFACE, UID_GREEN, SET_DEFAULT, TAG_NONE, 16L, 1L, 16L, 1L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 16L, 1L, 16L, 1L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xFAAD, 16L, 1L, 16L, 1L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 4096L, 258L, 512L, 32L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_GREEN, SET_DEFAULT, TAG_NONE, 16L, 1L, 16L, 1L, 0L));
|
||||
mService.incrementOperationCount(UID_RED, 0xFAAD, 10);
|
||||
|
||||
forcePollAndWaitForIdle();
|
||||
@@ -501,10 +501,10 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectNetworkStatsSummary(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addIfaceValues(TEST_IFACE, 4128L, 258L, 544L, 34L));
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 16L, 1L, 16L, 1L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xFAAD, 16L, 1L, 16L, 1L, 0L)
|
||||
.addValues(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 4096L, 258L, 512L, 32L, 0L)
|
||||
.addValues(TEST_IFACE, UID_GREEN, SET_DEFAULT, TAG_NONE, 16L, 1L, 16L, 1L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 16L, 1L, 16L, 1L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xFAAD, 16L, 1L, 16L, 1L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 4096L, 258L, 512L, 32L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_GREEN, SET_DEFAULT, TAG_NONE, 16L, 1L, 16L, 1L, 0L));
|
||||
final Intent intent = new Intent(ACTION_UID_REMOVED);
|
||||
intent.putExtra(EXTRA_UID, UID_BLUE);
|
||||
mServiceContext.sendBroadcast(intent);
|
||||
@@ -536,8 +536,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectDefaultSettings();
|
||||
expectNetworkStatsSummary(buildEmptyStats());
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L));
|
||||
mService.incrementOperationCount(UID_RED, 0xF00D, 5);
|
||||
|
||||
forcePollAndWaitForIdle();
|
||||
@@ -552,8 +552,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
states = new NetworkState[] {buildMobile4gState(TEST_IFACE2)};
|
||||
expectNetworkStatsSummary(buildEmptyStats());
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L));
|
||||
|
||||
mService.forceUpdateIfaces(NETWORKS_MOBILE, states, getActiveIface(states), new VpnInfo[0]);
|
||||
forcePollAndWaitForIdle();
|
||||
@@ -564,10 +564,10 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectDefaultSettings();
|
||||
expectNetworkStatsSummary(buildEmptyStats());
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L)
|
||||
.addValues(TEST_IFACE2, UID_RED, SET_DEFAULT, TAG_NONE, 512L, 4L, 256L, 2L, 0L)
|
||||
.addValues(TEST_IFACE2, UID_RED, SET_DEFAULT, 0xFAAD, 512L, 4L, 256L, 2L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 512L, 4L, 512L, 4L, 0L)
|
||||
.addEntry(TEST_IFACE2, UID_RED, SET_DEFAULT, TAG_NONE, 512L, 4L, 256L, 2L, 0L)
|
||||
.addEntry(TEST_IFACE2, UID_RED, SET_DEFAULT, 0xFAAD, 512L, 4L, 256L, 2L, 0L));
|
||||
mService.incrementOperationCount(UID_RED, 0xFAAD, 5);
|
||||
|
||||
forcePollAndWaitForIdle();
|
||||
@@ -591,9 +591,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectDefaultSettings();
|
||||
expectNetworkStatsSummary(buildEmptyStats());
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 50L, 5L, 50L, 5L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 10L, 1L, 10L, 1L, 0L)
|
||||
.addValues(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 1024L, 8L, 512L, 4L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 50L, 5L, 50L, 5L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 10L, 1L, 10L, 1L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 1024L, 8L, 512L, 4L, 0L));
|
||||
mService.incrementOperationCount(UID_RED, 0xF00D, 1);
|
||||
|
||||
forcePollAndWaitForIdle();
|
||||
@@ -608,9 +608,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectDefaultSettings();
|
||||
expectNetworkStatsSummary(buildEmptyStats());
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 50L, 5L, 50L, 5L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 10L, 1L, 10L, 1L, 0L)
|
||||
.addValues(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 2048L, 16L, 1024L, 8L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 50L, 5L, 50L, 5L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 10L, 1L, 10L, 1L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 2048L, 16L, 1024L, 8L, 0L));
|
||||
forcePollAndWaitForIdle();
|
||||
|
||||
// first verify entire history present
|
||||
@@ -654,9 +654,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectDefaultSettings();
|
||||
expectNetworkStatsSummary(buildEmptyStats());
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 3)
|
||||
.addValues(entry1)
|
||||
.addValues(entry2)
|
||||
.addValues(entry3));
|
||||
.addEntry(entry1)
|
||||
.addEntry(entry2)
|
||||
.addEntry(entry3));
|
||||
mService.incrementOperationCount(UID_RED, 0xF00D, 1);
|
||||
|
||||
NetworkStats stats = mService.getDetailedUidStats(INTERFACES_ALL);
|
||||
@@ -704,11 +704,11 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
.thenReturn(augmentedIfaceFilter);
|
||||
when(mStatsFactory.readNetworkStatsDetail(eq(UID_ALL), any(), eq(TAG_ALL)))
|
||||
.thenReturn(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(uidStats));
|
||||
.addEntry(uidStats));
|
||||
when(mNetManager.getNetworkStatsTethering(STATS_PER_UID))
|
||||
.thenReturn(new NetworkStats(getElapsedRealtime(), 2)
|
||||
.addValues(tetheredStats1)
|
||||
.addValues(tetheredStats2));
|
||||
.addEntry(tetheredStats1)
|
||||
.addEntry(tetheredStats2));
|
||||
|
||||
NetworkStats stats = mService.getDetailedUidStats(ifaceFilter);
|
||||
|
||||
@@ -745,8 +745,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectDefaultSettings();
|
||||
expectNetworkStatsSummary(buildEmptyStats());
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 128L, 2L, 128L, 2L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 64L, 1L, 64L, 1L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 128L, 2L, 128L, 2L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 64L, 1L, 64L, 1L, 0L));
|
||||
mService.incrementOperationCount(UID_RED, 0xF00D, 1);
|
||||
|
||||
forcePollAndWaitForIdle();
|
||||
@@ -760,10 +760,10 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
expectDefaultSettings();
|
||||
expectNetworkStatsSummary(buildEmptyStats());
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 128L, 2L, 128L, 2L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 64L, 1L, 64L, 1L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_FOREGROUND, TAG_NONE, 32L, 2L, 32L, 2L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_FOREGROUND, 0xFAAD, 1L, 1L, 1L, 1L, 0L));
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 128L, 2L, 128L, 2L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 64L, 1L, 64L, 1L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_FOREGROUND, TAG_NONE, 32L, 2L, 32L, 2L, 0L)
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_FOREGROUND, 0xFAAD, 1L, 1L, 1L, 1L, 0L));
|
||||
mService.setUidForeground(UID_RED, true);
|
||||
mService.incrementOperationCount(UID_RED, 0xFAAD, 1);
|
||||
|
||||
@@ -804,9 +804,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
// and DEFAULT_NETWORK_YES, because these three properties aren't tracked at that layer.
|
||||
// We layer them on top by inspecting the iface properties.
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 128L, 2L, 128L, 2L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, METERED_NO, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 64L, 1L, 64L, 1L, 0L));
|
||||
mService.incrementOperationCount(UID_RED, 0xF00D, 1);
|
||||
|
||||
@@ -843,9 +843,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
// ROAMING_NO, because metered and roaming isn't tracked at that layer. We layer it
|
||||
// on top by inspecting the iface properties.
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_ALL, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_ALL, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 128L, 2L, 128L, 2L, 0L)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, METERED_ALL, ROAMING_NO,
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, METERED_ALL, ROAMING_NO,
|
||||
DEFAULT_NETWORK_YES, 64L, 1L, 64L, 1L, 0L));
|
||||
forcePollAndWaitForIdle();
|
||||
|
||||
@@ -885,10 +885,10 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
|
||||
// Traffic for UID_RED.
|
||||
final NetworkStats uidStats = new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 128L, 2L, 128L, 2L, 0L);
|
||||
.addEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 128L, 2L, 128L, 2L, 0L);
|
||||
// All tethering traffic, both hardware and software.
|
||||
final NetworkStats tetherStats = new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addValues(TEST_IFACE, UID_TETHERING, SET_DEFAULT, TAG_NONE, 1920L, 14L, 384L, 2L,
|
||||
.addEntry(TEST_IFACE, UID_TETHERING, SET_DEFAULT, TAG_NONE, 1920L, 14L, 384L, 2L,
|
||||
0L);
|
||||
|
||||
expectNetworkStatsSummary(ifaceStats, tetherStatsHardware);
|
||||
|
||||
Reference in New Issue
Block a user