summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2011-06-02 17:38:22 -0700
committerJeff Sharkey <jsharkey@android.com>2011-06-07 23:54:28 -0700
commit19862bf5d058b6ab0c2979e7a5e0297dae6b170b (patch)
tree9a7c9f07a90ebfac513267b7af45708c14eb1ff2 /services
parent61ee0bbb5b87fb5c4c3dc219868d52743def3d2b (diff)
downloadframeworks_base-19862bf5d058b6ab0c2979e7a5e0297dae6b170b.zip
frameworks_base-19862bf5d058b6ab0c2979e7a5e0297dae6b170b.tar.gz
frameworks_base-19862bf5d058b6ab0c2979e7a5e0297dae6b170b.tar.bz2
Compute range-based usage in NetworkStatsHistory.
When given a start/end range, interpolate between buckets to return the total network usage. Used to summarize detailed UID stats. Method to combine NetworkStatsHistory regardless of bucket size. Used to combine all histories matching a template. Added tests for both methods. Change-Id: Ia463910c0ecf7cf08dcf97c658ad99742bd6b882
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/net/NetworkStatsService.java19
1 files changed, 16 insertions, 3 deletions
diff --git a/services/java/com/android/server/net/NetworkStatsService.java b/services/java/com/android/server/net/NetworkStatsService.java
index 967e491..3892de8 100644
--- a/services/java/com/android/server/net/NetworkStatsService.java
+++ b/services/java/com/android/server/net/NetworkStatsService.java
@@ -210,7 +210,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
for (InterfaceIdentity ident : mSummaryStats.keySet()) {
final NetworkStatsHistory history = mSummaryStats.get(ident);
if (ident.matchesTemplate(networkTemplate, subscriberId)) {
- // TODO: combine all matching history data into a single history
+ combined.recordEntireHistory(history);
}
}
return combined;
@@ -231,8 +231,21 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
// TODO: create relaxed permission for reading stats
mContext.enforceCallingOrSelfPermission(UPDATE_DEVICE_STATS, TAG);
- // TODO: total UID-granularity usage between time range
- return null;
+ // TODO: apply networktemplate once granular uid stats are stored.
+
+ synchronized (mStatsLock) {
+ final int size = mDetailStats.size();
+ final NetworkStats.Builder stats = new NetworkStats.Builder(end - start, size);
+
+ final long[] total = new long[2];
+ for (int i = 0; i < size; i++) {
+ final int uid = mDetailStats.keyAt(i);
+ final NetworkStatsHistory history = mDetailStats.valueAt(i);
+ history.getTotalData(start, end, total);
+ stats.addEntry(IFACE_ALL, uid, total[0], total[1]);
+ }
+ return stats.build();
+ }
}
/**