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
diff --git a/core/java/android/net/metrics/IpManagerEvent.java b/core/java/android/net/metrics/IpManagerEvent.java
index 5bbcbf1..fcc7608 100644
--- a/core/java/android/net/metrics/IpManagerEvent.java
+++ b/core/java/android/net/metrics/IpManagerEvent.java
@@ -19,27 +19,39 @@
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
+import android.util.SparseArray;
+
+import com.android.internal.util.MessageUtils;
/**
* {@hide}
*/
@SystemApi
public final class IpManagerEvent extends IpConnectivityEvent implements Parcelable {
+
+ public static final int PROVISIONING_OK = 1;
+ public static final int PROVISIONING_FAIL = 2;
+ public static final int COMPLETE_LIFECYCLE = 3;
+
public final String ifName;
+ public final int eventType;
public final long durationMs;
- private IpManagerEvent(String ifName, long duration) {
+ private IpManagerEvent(String ifName, int eventType, long duration) {
this.ifName = ifName;
+ this.eventType = eventType;
this.durationMs = duration;
}
private IpManagerEvent(Parcel in) {
this.ifName = in.readString();
+ this.eventType = in.readInt();
this.durationMs = in.readLong();
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(ifName);
+ out.writeInt(eventType);
out.writeLong(durationMs);
}
@@ -59,6 +71,17 @@
};
public static void logEvent(int eventType, String ifName, long durationMs) {
- logEvent(eventType, new IpManagerEvent(ifName, durationMs));
+ logEvent(IPCE_IPMGR_BASE, new IpManagerEvent(ifName, eventType, durationMs));
+ }
+
+ @Override
+ public String toString() {
+ return String.format("IpManagerEvent(%s, %s, %dms)",
+ ifName, Decoder.constants.get(eventType), durationMs);
+ }
+
+ final static class Decoder {
+ static final SparseArray<String> constants = MessageUtils.findMessageNames(
+ new Class[]{IpManagerEvent.class}, new String[]{"PROVISIONING_", "COMPLETE_"});
}
};