Merge changes I8bfabcb1,I563a6a31
* changes:
Connectivity metrics: change how interface names are logged
Connectivity metrics: serialize networkId, transports, ifname
diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java
index 4dd8ce9..0765c86 100644
--- a/core/java/android/net/NetworkCapabilities.java
+++ b/core/java/android/net/NetworkCapabilities.java
@@ -423,8 +423,10 @@
*/
public static final int TRANSPORT_WIFI_AWARE = 5;
- private static final int MIN_TRANSPORT = TRANSPORT_CELLULAR;
- private static final int MAX_TRANSPORT = TRANSPORT_WIFI_AWARE;
+ /** @hide */
+ public static final int MIN_TRANSPORT = TRANSPORT_CELLULAR;
+ /** @hide */
+ public static final int MAX_TRANSPORT = TRANSPORT_WIFI_AWARE;
/**
* Adds the given transport type to this {@code NetworkCapability} instance.
diff --git a/tests/net/java/com/android/server/connectivity/IpConnectivityEventBuilderTest.java b/tests/net/java/com/android/server/connectivity/IpConnectivityEventBuilderTest.java
index 48861bd..dbc7861 100644
--- a/tests/net/java/com/android/server/connectivity/IpConnectivityEventBuilderTest.java
+++ b/tests/net/java/com/android/server/connectivity/IpConnectivityEventBuilderTest.java
@@ -26,6 +26,11 @@
import static com.android.server.connectivity.MetricsTestUtil.b;
import static com.android.server.connectivity.MetricsTestUtil.describeIpEvent;
import static com.android.server.connectivity.metrics.nano.IpConnectivityLogClass.IpConnectivityLog;
+import static com.android.server.connectivity.metrics.nano.IpConnectivityLogClass.BLUETOOTH;
+import static com.android.server.connectivity.metrics.nano.IpConnectivityLogClass.CELLULAR;
+import static com.android.server.connectivity.metrics.nano.IpConnectivityLogClass.ETHERNET;
+import static com.android.server.connectivity.metrics.nano.IpConnectivityLogClass.MULTIPLE;
+import static com.android.server.connectivity.metrics.nano.IpConnectivityLogClass.WIFI;
import android.net.ConnectivityMetricsEvent;
import android.net.metrics.ApfProgramEvent;
@@ -47,6 +52,135 @@
public class IpConnectivityEventBuilderTest extends TestCase {
@SmallTest
+ public void testLinkLayerInferrence() {
+ ConnectivityMetricsEvent ev = describeIpEvent(
+ aType(IpReachabilityEvent.class),
+ anInt(IpReachabilityEvent.NUD_FAILED));
+
+ String want = joinLines(
+ "dropped_events: 0",
+ "events <",
+ " if_name: \"\"",
+ " link_layer: 0",
+ " network_id: 0",
+ " time_ms: 1",
+ " transports: 0",
+ " ip_reachability_event <",
+ " event_type: 512",
+ " if_name: \"\"",
+ " >",
+ ">",
+ "version: 2");
+ verifySerialization(want, ev);
+
+ ev.netId = 123;
+ ev.transports = 3; // transports have priority for inferrence of link layer
+ ev.ifname = "wlan0";
+ want = joinLines(
+ "dropped_events: 0",
+ "events <",
+ " if_name: \"\"",
+ String.format(" link_layer: %d", MULTIPLE),
+ " network_id: 123",
+ " time_ms: 1",
+ " transports: 3",
+ " ip_reachability_event <",
+ " event_type: 512",
+ " if_name: \"\"",
+ " >",
+ ">",
+ "version: 2");
+ verifySerialization(want, ev);
+
+ ev.transports = 1;
+ ev.ifname = null;
+ want = joinLines(
+ "dropped_events: 0",
+ "events <",
+ " if_name: \"\"",
+ String.format(" link_layer: %d", CELLULAR),
+ " network_id: 123",
+ " time_ms: 1",
+ " transports: 1",
+ " ip_reachability_event <",
+ " event_type: 512",
+ " if_name: \"\"",
+ " >",
+ ">",
+ "version: 2");
+ verifySerialization(want, ev);
+
+ ev.transports = 0;
+ ev.ifname = "not_inferred";
+ want = joinLines(
+ "dropped_events: 0",
+ "events <",
+ " if_name: \"not_inferred\"",
+ " link_layer: 0",
+ " network_id: 123",
+ " time_ms: 1",
+ " transports: 0",
+ " ip_reachability_event <",
+ " event_type: 512",
+ " if_name: \"\"",
+ " >",
+ ">",
+ "version: 2");
+ verifySerialization(want, ev);
+
+ ev.ifname = "bt-pan";
+ want = joinLines(
+ "dropped_events: 0",
+ "events <",
+ " if_name: \"\"",
+ String.format(" link_layer: %d", BLUETOOTH),
+ " network_id: 123",
+ " time_ms: 1",
+ " transports: 0",
+ " ip_reachability_event <",
+ " event_type: 512",
+ " if_name: \"\"",
+ " >",
+ ">",
+ "version: 2");
+ verifySerialization(want, ev);
+
+ ev.ifname = "rmnet_ipa0";
+ want = joinLines(
+ "dropped_events: 0",
+ "events <",
+ " if_name: \"\"",
+ String.format(" link_layer: %d", CELLULAR),
+ " network_id: 123",
+ " time_ms: 1",
+ " transports: 0",
+ " ip_reachability_event <",
+ " event_type: 512",
+ " if_name: \"\"",
+ " >",
+ ">",
+ "version: 2");
+ verifySerialization(want, ev);
+
+ ev.ifname = "wlan0";
+ want = joinLines(
+ "dropped_events: 0",
+ "events <",
+ " if_name: \"\"",
+ String.format(" link_layer: %d", WIFI),
+ " network_id: 123",
+ " time_ms: 1",
+ " transports: 0",
+ " ip_reachability_event <",
+ " event_type: 512",
+ " if_name: \"\"",
+ " >",
+ ">",
+ "version: 2");
+ verifySerialization(want, ev);
+ }
+
+ @SmallTest
public void testDefaultNetworkEventSerialization() {
ConnectivityMetricsEvent ev = describeIpEvent(
aType(DefaultNetworkEvent.class),
@@ -86,7 +220,6 @@
public void testDhcpClientEventSerialization() {
ConnectivityMetricsEvent ev = describeIpEvent(
aType(DhcpClientEvent.class),
- aString("wlan0"),
aString("SomeState"),
anInt(192));
@@ -100,7 +233,7 @@
" transports: 0",
" dhcp_event <",
" duration_ms: 192",
- " if_name: \"wlan0\"",
+ " if_name: \"\"",
" state_transition: \"SomeState\"",
" >",
">",
@@ -113,7 +246,6 @@
public void testDhcpErrorEventSerialization() {
ConnectivityMetricsEvent ev = describeIpEvent(
aType(DhcpErrorEvent.class),
- aString("wlan0"),
anInt(DhcpErrorEvent.L4_NOT_UDP));
String want = joinLines(
@@ -126,7 +258,7 @@
" transports: 0",
" dhcp_event <",
" duration_ms: 0",
- " if_name: \"wlan0\"",
+ " if_name: \"\"",
" error_code: 50397184",
" >",
">",
@@ -191,7 +323,6 @@
public void testIpManagerEventSerialization() {
ConnectivityMetricsEvent ev = describeIpEvent(
aType(IpManagerEvent.class),
- aString("wlan0"),
anInt(IpManagerEvent.PROVISIONING_OK),
aLong(5678));
@@ -205,7 +336,7 @@
" transports: 0",
" ip_provisioning_event <",
" event_type: 1",
- " if_name: \"wlan0\"",
+ " if_name: \"\"",
" latency_ms: 5678",
" >",
">",
@@ -218,7 +349,6 @@
public void testIpReachabilityEventSerialization() {
ConnectivityMetricsEvent ev = describeIpEvent(
aType(IpReachabilityEvent.class),
- aString("wlan0"),
anInt(IpReachabilityEvent.NUD_FAILED));
String want = joinLines(
@@ -231,7 +361,7 @@
" transports: 0",
" ip_reachability_event <",
" event_type: 512",
- " if_name: \"wlan0\"",
+ " if_name: \"\"",
" >",
">",
"version: 2");
diff --git a/tests/net/java/com/android/server/connectivity/IpConnectivityMetricsTest.java b/tests/net/java/com/android/server/connectivity/IpConnectivityMetricsTest.java
index 785e1ce..50c92b3 100644
--- a/tests/net/java/com/android/server/connectivity/IpConnectivityMetricsTest.java
+++ b/tests/net/java/com/android/server/connectivity/IpConnectivityMetricsTest.java
@@ -48,7 +48,7 @@
public class IpConnectivityMetricsTest extends TestCase {
static final IpReachabilityEvent FAKE_EV =
- new IpReachabilityEvent("wlan0", IpReachabilityEvent.NUD_FAILED);
+ new IpReachabilityEvent(IpReachabilityEvent.NUD_FAILED);
@Mock Context mCtx;
@Mock IIpConnectivityMetrics mMockService;
@@ -154,47 +154,51 @@
apfStats.programUpdatesAllowingMulticast = 3;
apfStats.maxProgramSize = 2048;
Parcelable[] events = {
- new IpReachabilityEvent("wlan0", IpReachabilityEvent.NUD_FAILED),
- new DhcpClientEvent("wlan0", "SomeState", 192),
+ new IpReachabilityEvent(IpReachabilityEvent.NUD_FAILED),
+ new DhcpClientEvent("SomeState", 192),
new DefaultNetworkEvent(102, new int[]{1,2,3}, 101, true, false),
- new IpManagerEvent("wlan0", IpManagerEvent.PROVISIONING_OK, 5678),
+ new IpManagerEvent(IpManagerEvent.PROVISIONING_OK, 5678),
new ValidationProbeEvent(120, 40730, ValidationProbeEvent.PROBE_HTTP, 204),
apfStats,
new RaEvent(2000, 400, 300, -1, 1000, -1)
};
for (int i = 0; i < events.length; i++) {
- logger.log(100 * (i + 1), events[i]);
+ ConnectivityMetricsEvent ev = new ConnectivityMetricsEvent();
+ ev.timestamp = 100 * (i + 1);
+ ev.ifname = "wlan0";
+ ev.data = events[i];
+ logger.log(ev);
}
String want = joinLines(
"dropped_events: 0",
"events <",
" if_name: \"\"",
- " link_layer: 0",
+ " link_layer: 4",
" network_id: 0",
" time_ms: 100",
" transports: 0",
" ip_reachability_event <",
" event_type: 512",
- " if_name: \"wlan0\"",
+ " if_name: \"\"",
" >",
">",
"events <",
" if_name: \"\"",
- " link_layer: 0",
+ " link_layer: 4",
" network_id: 0",
" time_ms: 200",
" transports: 0",
" dhcp_event <",
" duration_ms: 192",
- " if_name: \"wlan0\"",
+ " if_name: \"\"",
" state_transition: \"SomeState\"",
" >",
">",
"events <",
" if_name: \"\"",
- " link_layer: 0",
+ " link_layer: 4",
" network_id: 0",
" time_ms: 300",
" transports: 0",
@@ -213,19 +217,19 @@
">",
"events <",
" if_name: \"\"",
- " link_layer: 0",
+ " link_layer: 4",
" network_id: 0",
" time_ms: 400",
" transports: 0",
" ip_provisioning_event <",
" event_type: 1",
- " if_name: \"wlan0\"",
+ " if_name: \"\"",
" latency_ms: 5678",
" >",
">",
"events <",
" if_name: \"\"",
- " link_layer: 0",
+ " link_layer: 4",
" network_id: 0",
" time_ms: 500",
" transports: 0",
@@ -240,7 +244,7 @@
">",
"events <",
" if_name: \"\"",
- " link_layer: 0",
+ " link_layer: 4",
" network_id: 0",
" time_ms: 600",
" transports: 0",
@@ -259,7 +263,7 @@
">",
"events <",
" if_name: \"\"",
- " link_layer: 0",
+ " link_layer: 4",
" network_id: 0",
" time_ms: 700",
" transports: 0",