summaryrefslogtreecommitdiff
path: root/core/java/android/net
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 /core/java/android/net
parented191e1fae0f860323f6ed76ea982287c42ec83e (diff)
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 'core/java/android/net')
-rw-r--r--core/java/android/net/MobileDataStateTracker.java20
-rw-r--r--core/java/android/net/NetworkStats.java8
-rw-r--r--core/java/android/net/NetworkStatsHistory.java12
3 files changed, 29 insertions, 11 deletions
diff --git a/core/java/android/net/MobileDataStateTracker.java b/core/java/android/net/MobileDataStateTracker.java
index 5929cfb63a05..88abf1ad782b 100644
--- a/core/java/android/net/MobileDataStateTracker.java
+++ b/core/java/android/net/MobileDataStateTracker.java
@@ -43,6 +43,9 @@ import com.android.internal.telephony.Phone;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.util.AsyncChannel;
+import java.io.CharArrayWriter;
+import java.io.PrintWriter;
+
/**
* Track the state of mobile data connectivity. This is done by
* receiving broadcast intents from the Phone process whenever
@@ -69,6 +72,11 @@ public class MobileDataStateTracker implements NetworkStateTracker {
private boolean mPrivateDnsRouteSet = false;
private boolean mDefaultRouteSet = false;
+ // NOTE: these are only kept for debugging output; actual values are
+ // maintained in DataConnectionTracker.
+ protected boolean mUserDataEnabled = true;
+ protected boolean mPolicyDataEnabled = true;
+
private Handler mHandler;
private AsyncChannel mDataConnectionTrackerAc;
private Messenger mMessenger;
@@ -458,6 +466,7 @@ public class MobileDataStateTracker implements NetworkStateTracker {
final AsyncChannel channel = mDataConnectionTrackerAc;
if (channel != null) {
channel.sendMessage(CMD_SET_USER_DATA_ENABLE, enabled ? ENABLED : DISABLED);
+ mUserDataEnabled = enabled;
}
if (VDBG) log("setUserDataEnable: X enabled=" + enabled);
}
@@ -468,6 +477,7 @@ public class MobileDataStateTracker implements NetworkStateTracker {
final AsyncChannel channel = mDataConnectionTrackerAc;
if (channel != null) {
channel.sendMessage(CMD_SET_POLICY_DATA_ENABLE, enabled ? ENABLED : DISABLED);
+ mPolicyDataEnabled = enabled;
}
}
@@ -492,10 +502,12 @@ public class MobileDataStateTracker implements NetworkStateTracker {
@Override
public String toString() {
- StringBuffer sb = new StringBuffer("Mobile data state: ");
-
- sb.append(mMobileDataState);
- return sb.toString();
+ final CharArrayWriter writer = new CharArrayWriter();
+ final PrintWriter pw = new PrintWriter(writer);
+ pw.print("Mobile data state: "); pw.println(mMobileDataState);
+ pw.print("Data enabled: user="); pw.print(mUserDataEnabled);
+ pw.print(", policy="); pw.println(mPolicyDataEnabled);
+ return writer.toString();
}
/**
diff --git a/core/java/android/net/NetworkStats.java b/core/java/android/net/NetworkStats.java
index 5b883a0741d6..e5f32735b00a 100644
--- a/core/java/android/net/NetworkStats.java
+++ b/core/java/android/net/NetworkStats.java
@@ -19,6 +19,7 @@ package android.net;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemClock;
+import android.util.Log;
import android.util.SparseBooleanArray;
import com.android.internal.util.Objects;
@@ -38,6 +39,8 @@ import java.util.HashSet;
* @hide
*/
public class NetworkStats implements Parcelable {
+ private static final String TAG = "NetworkStats";
+
/** {@link #iface} value when interface details unavailable. */
public static final String IFACE_ALL = null;
/** {@link #uid} value when UID details unavailable. */
@@ -397,7 +400,10 @@ public class NetworkStats implements Parcelable {
if (enforceMonotonic
&& (entry.rxBytes < 0 || entry.rxPackets < 0 || entry.txBytes < 0
|| entry.txPackets < 0 || entry.operations < 0)) {
- throw new IllegalArgumentException("found non-monotonic values");
+ Log.v(TAG, "lhs=" + this);
+ Log.v(TAG, "rhs=" + value);
+ throw new IllegalArgumentException(
+ "found non-monotonic values at lhs[" + i + "] - rhs[" + j + "]");
}
if (clampNegative) {
entry.rxBytes = Math.max(0, entry.rxBytes);
diff --git a/core/java/android/net/NetworkStatsHistory.java b/core/java/android/net/NetworkStatsHistory.java
index b19949e39d5b..d07d8990d716 100644
--- a/core/java/android/net/NetworkStatsHistory.java
+++ b/core/java/android/net/NetworkStatsHistory.java
@@ -482,12 +482,12 @@ public class NetworkStatsHistory implements Parcelable {
for (int i = start; i < bucketCount; i++) {
pw.print(prefix);
pw.print(" bucketStart="); pw.print(bucketStart[i]);
- if (activeTime != null) pw.print(" activeTime="); pw.print(activeTime[i]);
- if (rxBytes != null) pw.print(" rxBytes="); pw.print(rxBytes[i]);
- if (rxPackets != null) pw.print(" rxPackets="); pw.print(rxPackets[i]);
- if (txBytes != null) pw.print(" txBytes="); pw.print(txBytes[i]);
- if (txPackets != null) pw.print(" txPackets="); pw.print(txPackets[i]);
- if (operations != null) pw.print(" operations="); pw.print(operations[i]);
+ if (activeTime != null) { pw.print(" activeTime="); pw.print(activeTime[i]); }
+ if (rxBytes != null) { pw.print(" rxBytes="); pw.print(rxBytes[i]); }
+ if (rxPackets != null) { pw.print(" rxPackets="); pw.print(rxPackets[i]); }
+ if (txBytes != null) { pw.print(" txBytes="); pw.print(txBytes[i]); }
+ if (txPackets != null) { pw.print(" txPackets="); pw.print(txPackets[i]); }
+ if (operations != null) { pw.print(" operations="); pw.print(operations[i]); }
pw.println();
}
}