diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java index 4dd8ce9c8b..0765c86776 100644 --- a/core/java/android/net/NetworkCapabilities.java +++ b/core/java/android/net/NetworkCapabilities.java @@ -423,8 +423,10 @@ public final class NetworkCapabilities implements Parcelable { */ 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 48861bde77..dbc78612c3 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.anIntArray; 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; @@ -46,6 +51,135 @@ import junit.framework.TestCase; // TODO: instead of comparing textpb to textpb, parse textpb and compare proto to proto. 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( @@ -86,7 +220,6 @@ public class IpConnectivityEventBuilderTest extends TestCase { public void testDhcpClientEventSerialization() { ConnectivityMetricsEvent ev = describeIpEvent( aType(DhcpClientEvent.class), - aString("wlan0"), aString("SomeState"), anInt(192)); @@ -100,7 +233,7 @@ public class IpConnectivityEventBuilderTest extends TestCase { " transports: 0", " dhcp_event <", " duration_ms: 192", - " if_name: \"wlan0\"", + " if_name: \"\"", " state_transition: \"SomeState\"", " >", ">", @@ -113,7 +246,6 @@ public class IpConnectivityEventBuilderTest extends TestCase { public void testDhcpErrorEventSerialization() { ConnectivityMetricsEvent ev = describeIpEvent( aType(DhcpErrorEvent.class), - aString("wlan0"), anInt(DhcpErrorEvent.L4_NOT_UDP)); String want = joinLines( @@ -126,7 +258,7 @@ public class IpConnectivityEventBuilderTest extends TestCase { " transports: 0", " dhcp_event <", " duration_ms: 0", - " if_name: \"wlan0\"", + " if_name: \"\"", " error_code: 50397184", " >", ">", @@ -191,7 +323,6 @@ public class IpConnectivityEventBuilderTest extends TestCase { public void testIpManagerEventSerialization() { ConnectivityMetricsEvent ev = describeIpEvent( aType(IpManagerEvent.class), - aString("wlan0"), anInt(IpManagerEvent.PROVISIONING_OK), aLong(5678)); @@ -205,7 +336,7 @@ public class IpConnectivityEventBuilderTest extends TestCase { " transports: 0", " ip_provisioning_event <", " event_type: 1", - " if_name: \"wlan0\"", + " if_name: \"\"", " latency_ms: 5678", " >", ">", @@ -218,7 +349,6 @@ public class IpConnectivityEventBuilderTest extends TestCase { public void testIpReachabilityEventSerialization() { ConnectivityMetricsEvent ev = describeIpEvent( aType(IpReachabilityEvent.class), - aString("wlan0"), anInt(IpReachabilityEvent.NUD_FAILED)); String want = joinLines( @@ -231,7 +361,7 @@ public class IpConnectivityEventBuilderTest extends TestCase { " 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 785e1ce20a..50c92b3804 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 @@ import org.mockito.MockitoAnnotations; 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 @@ public class IpConnectivityMetricsTest extends TestCase { 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 @@ public class IpConnectivityMetricsTest extends TestCase { ">", "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 @@ public class IpConnectivityMetricsTest extends TestCase { ">", "events <", " if_name: \"\"", - " link_layer: 0", + " link_layer: 4", " network_id: 0", " time_ms: 600", " transports: 0", @@ -259,7 +263,7 @@ public class IpConnectivityMetricsTest extends TestCase { ">", "events <", " if_name: \"\"", - " link_layer: 0", + " link_layer: 4", " network_id: 0", " time_ms: 700", " transports: 0",