summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/NetworkManagementService.java
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2011-08-25 17:48:52 -0700
committerJeff Sharkey <jsharkey@android.com>2011-08-26 14:19:54 -0700
commit47eb102b40cd1324d89816a7fb0fecd14fd7a408 (patch)
tree5387692119eb36fa75f73d17fa014a6528e3a0a4 /services/java/com/android/server/NetworkManagementService.java
parented191e1fae0f860323f6ed76ea982287c42ec83e (diff)
downloadframeworks_base-47eb102b40cd1324d89816a7fb0fecd14fd7a408.zip
frameworks_base-47eb102b40cd1324d89816a7fb0fecd14fd7a408.tar.gz
frameworks_base-47eb102b40cd1324d89816a7fb0fecd14fd7a408.tar.bz2
Always splice historical data stats, debug info.
When reading network counters, always splice in xt_qtaguid values to avoid counting backwards. Test to verify. Remove verbose logging around global alerts, and add dumpsys debug info for NMS and MDST. Also fix subtle bug around stats persisting and dumping. Bug: 5212893, 5211028 Change-Id: I783e5286637a67ee2dd2b09878198711a926d0cb
Diffstat (limited to 'services/java/com/android/server/NetworkManagementService.java')
-rw-r--r--services/java/com/android/server/NetworkManagementService.java41
1 files changed, 28 insertions, 13 deletions
diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java
index e72d09f..85d8cece 100644
--- a/services/java/com/android/server/NetworkManagementService.java
+++ b/services/java/com/android/server/NetworkManagementService.java
@@ -16,6 +16,7 @@
package com.android.server;
+import static android.Manifest.permission.DUMP;
import static android.Manifest.permission.MANAGE_NETWORK_POLICY;
import static android.net.NetworkStats.IFACE_ALL;
import static android.net.NetworkStats.SET_DEFAULT;
@@ -51,10 +52,12 @@ import com.google.android.collect.Sets;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
+import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.io.PrintWriter;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.util.ArrayList;
@@ -288,7 +291,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub
for (INetworkManagementEventObserver obs : mObservers) {
try {
obs.limitReached(limitName, iface);
- Slog.d(TAG, "Observer notified limit reached for " + limitName + " " + iface);
} catch (Exception ex) {
Slog.w(TAG, "Observer notifier failed", ex);
}
@@ -1031,7 +1033,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub
final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), 6);
final NetworkStats.Entry entry = new NetworkStats.Entry();
- final HashSet<String> activeIfaces = Sets.newHashSet();
final ArrayList<String> values = Lists.newArrayList();
BufferedReader reader = null;
@@ -1057,7 +1058,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub
entry.txBytes = Long.parseLong(values.get(9));
entry.txPackets = Long.parseLong(values.get(10));
- activeIfaces.add(entry.iface);
stats.addValues(entry);
} catch (NumberFormatException e) {
Slog.w(TAG, "problem parsing stats row '" + line + "': " + e);
@@ -1073,14 +1073,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub
IoUtils.closeQuietly(reader);
}
- if (DBG) Slog.d(TAG, "recorded active stats from " + activeIfaces);
-
- // splice in stats from any disabled ifaces
+ // splice in historical stats not reflected in mStatsIface
if (mBandwidthControlEnabled) {
- final HashSet<String> xtIfaces = Sets.newHashSet(fileListWithoutNull(mStatsXtIface));
- xtIfaces.removeAll(activeIfaces);
-
- for (String iface : xtIfaces) {
+ for (String iface : fileListWithoutNull(mStatsXtIface)) {
final File ifacePath = new File(mStatsXtIface, iface);
entry.iface = iface;
@@ -1092,10 +1087,8 @@ public class NetworkManagementService extends INetworkManagementService.Stub
entry.txBytes = readSingleLongFromFile(new File(ifacePath, "tx_bytes"));
entry.txPackets = readSingleLongFromFile(new File(ifacePath, "tx_packets"));
- stats.addValues(entry);
+ stats.combineValues(entry);
}
-
- if (DBG) Slog.d(TAG, "recorded stale stats from " + xtIfaces);
}
return stats;
@@ -1583,4 +1576,26 @@ public class NetworkManagementService extends INetworkManagementService.Stub
mConnector.monitor();
}
}
+
+ @Override
+ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ mContext.enforceCallingOrSelfPermission(DUMP, TAG);
+
+ pw.print("Bandwidth control enabled: "); pw.println(mBandwidthControlEnabled);
+
+ synchronized (mQuotaLock) {
+ pw.print("Active quota ifaces: "); pw.println(mActiveQuotaIfaces.toString());
+ pw.print("Active alert ifaces: "); pw.println(mActiveAlertIfaces.toString());
+ }
+
+ synchronized (mUidRejectOnQuota) {
+ pw.print("UID reject on quota ifaces: [");
+ final int size = mUidRejectOnQuota.size();
+ for (int i = 0; i < size; i++) {
+ pw.print(mUidRejectOnQuota.keyAt(i));
+ if (i < size - 1) pw.print(",");
+ }
+ pw.println("]");
+ }
+ }
}