diff options
| -rw-r--r-- | core/java/android/net/metrics/DefaultNetworkEvent.java | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/connectivity/DefaultNetworkMetrics.java | 14 |
2 files changed, 12 insertions, 4 deletions
diff --git a/core/java/android/net/metrics/DefaultNetworkEvent.java b/core/java/android/net/metrics/DefaultNetworkEvent.java index 8ff8e4f38d6d..6f383b4d515b 100644 --- a/core/java/android/net/metrics/DefaultNetworkEvent.java +++ b/core/java/android/net/metrics/DefaultNetworkEvent.java @@ -74,7 +74,7 @@ public class DefaultNetworkEvent { j.add("final_score=" + finalScore); } j.add(String.format("duration=%.0fs", durationMs / 1000.0)); - j.add(String.format("validation=%4.1f%%", (validatedMs * 100.0) / durationMs)); + j.add(String.format("validation=%04.1f%%", (validatedMs * 100.0) / durationMs)); return j.toString(); } diff --git a/services/core/java/com/android/server/connectivity/DefaultNetworkMetrics.java b/services/core/java/com/android/server/connectivity/DefaultNetworkMetrics.java index 28c358582dbe..bd2e96ed4ef2 100644 --- a/services/core/java/com/android/server/connectivity/DefaultNetworkMetrics.java +++ b/services/core/java/com/android/server/connectivity/DefaultNetworkMetrics.java @@ -51,6 +51,7 @@ public class DefaultNetworkMetrics { // Information about the current status of the default network. @GuardedBy("this") private DefaultNetworkEvent mCurrentDefaultNetwork; + // True if the current default network has been validated. @GuardedBy("this") private boolean mIsCurrentlyValid; @GuardedBy("this") @@ -71,6 +72,8 @@ public class DefaultNetworkMetrics { printEvent(localTimeMs, pw, ev); } mCurrentDefaultNetwork.updateDuration(timeMs); + // When printing default network events for bug reports, update validation time + // and refresh the last validation timestmap for future validation time updates. if (mIsCurrentlyValid) { updateValidationTime(timeMs); mLastValidationTimeMs = timeMs; @@ -92,11 +95,13 @@ public class DefaultNetworkMetrics { } public synchronized void logDefaultNetworkValidity(long timeMs, boolean isValid) { + // Transition from valid to invalid: update validity duration since last update if (!isValid && mIsCurrentlyValid) { mIsCurrentlyValid = false; updateValidationTime(timeMs); } + // Transition from invalid to valid: simply mark the validation timestamp. if (isValid && !mIsCurrentlyValid) { mIsCurrentlyValid = true; mLastValidationTimeMs = timeMs; @@ -114,6 +119,9 @@ public class DefaultNetworkMetrics { } private void logCurrentDefaultNetwork(long timeMs, NetworkAgentInfo oldNai) { + if (mIsCurrentlyValid) { + updateValidationTime(timeMs); + } DefaultNetworkEvent ev = mCurrentDefaultNetwork; ev.updateDuration(timeMs); ev.previousTransports = mLastTransports; @@ -122,7 +130,6 @@ public class DefaultNetworkMetrics { // The system acquired a new default network. fillLinkInfo(ev, oldNai); ev.finalScore = oldNai.getCurrentScore(); - ev.validatedMs = ev.durationMs; } // Only change transport of the previous default network if the event currently logged // corresponds to an existing default network, and not to the absence of a default network. @@ -143,9 +150,10 @@ public class DefaultNetworkMetrics { fillLinkInfo(ev, newNai); ev.initialScore = newNai.getCurrentScore(); if (newNai.lastValidated) { - mIsCurrentlyValid = true; - mLastValidationTimeMs = timeMs; + logDefaultNetworkValidity(timeMs, true); } + } else { + mIsCurrentlyValid = false; } mCurrentDefaultNetwork = ev; } |