From e51bf9e2a4fcf6adabd8c40f940993e3c2fc7c4a Mon Sep 17 00:00:00 2001 From: Hugo Benichi Date: Mon, 25 Apr 2016 17:16:35 +0900 Subject: [PATCH] Better ConnectivityMetricsEvent printing This patch adds more information printing for IpConnectivity event classes in android.net.metrics. example: ConnectivityMetricsEvent(14:36:35.799, 0, 1026): DhcpClientEvent(wlan0, DhcpRequestingState) ConnectivityMetricsEvent(14:36:35.805, 0, 1026): DhcpClientEvent(wlan0, DhcpHaveAddressState) ConnectivityMetricsEvent(14:36:35.809, 0, 4096): IpManagerEvent(wlan0, PROVISIONING_OK, 155ms) ConnectivityMetricsEvent(14:36:35.810, 0, 1026): DhcpClientEvent(wlan0, DhcpBoundState) ConnectivityMetricsEvent(14:36:35.871, 0, 2048): NetworkEvent(101, NETWORK_CONNECTED, 0ms) ConnectivityMetricsEvent(14:36:35.874, 0, 2051): ValidationProbeEvent(101, PROBE_HTTP:599, 3ms) ConnectivityMetricsEvent(14:36:35.874, 0, 2048): NetworkEvent(101, NETWORK_VALIDATION_FAILED, 0ms) ConnectivityMetricsEvent(14:36:35.928, 0, 3072): DefaultNetworkEvent(0 -> 101, [WIFI], IPv4: false, IPv6: false) ConnectivityMetricsEvent(14:36:37.008, 0, 2051): ValidationProbeEvent(101, PROBE_HTTP:204, 134ms) ConnectivityMetricsEvent(14:36:37.008, 0, 2050): NetworkEvent(101, NETWORK_VALIDATED, 1137ms) Also fixes a couple of event logging issues: - do no record spurious receive DhcpErrorEvent when a network goes down. - add an eventType field to IpManagerEvent instead of using the loggger component tag. Bug: 28204408 Change-Id: Ia6f4ccfd7a0c63a5ccec18825f226c0b5781217b --- .../java/android/net/NetworkCapabilities.java | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java index 6418614594..6243f46701 100644 --- a/core/java/android/net/NetworkCapabilities.java +++ b/core/java/android/net/NetworkCapabilities.java @@ -809,17 +809,7 @@ public final class NetworkCapabilities implements Parcelable { @Override public String toString() { int[] types = getTransportTypes(); - String transports = (types.length > 0 ? " Transports: " : ""); - for (int i = 0; i < types.length;) { - switch (types[i]) { - case TRANSPORT_CELLULAR: transports += "CELLULAR"; break; - case TRANSPORT_WIFI: transports += "WIFI"; break; - case TRANSPORT_BLUETOOTH: transports += "BLUETOOTH"; break; - case TRANSPORT_ETHERNET: transports += "ETHERNET"; break; - case TRANSPORT_VPN: transports += "VPN"; break; - } - if (++i < types.length) transports += "|"; - } + String transports = (types.length > 0) ? " Transports: " + transportNamesOf(types) : ""; types = getCapabilities(); String capabilities = (types.length > 0 ? " Capabilities: " : ""); @@ -859,4 +849,22 @@ public final class NetworkCapabilities implements Parcelable { return "[" + transports + capabilities + upBand + dnBand + specifier + signalStrength + "]"; } + + /** + * @hide + */ + public static String transportNamesOf(int[] types) { + String transports = ""; + for (int i = 0; i < types.length;) { + switch (types[i]) { + case TRANSPORT_CELLULAR: transports += "CELLULAR"; break; + case TRANSPORT_WIFI: transports += "WIFI"; break; + case TRANSPORT_BLUETOOTH: transports += "BLUETOOTH"; break; + case TRANSPORT_ETHERNET: transports += "ETHERNET"; break; + case TRANSPORT_VPN: transports += "VPN"; break; + } + if (++i < types.length) transports += "|"; + } + return transports; + } }