Merge changes I8bfabcb1,I563a6a31

* changes:
  Connectivity metrics: change how interface names are logged
  Connectivity metrics: serialize networkId, transports, ifname
This commit is contained in:
TreeHugger Robot
2017-03-21 02:59:16 +00:00
committed by Android (Google) Code Review
3 changed files with 161 additions and 25 deletions

View File

@@ -423,8 +423,10 @@ public final class NetworkCapabilities implements Parcelable {
*/ */
public static final int TRANSPORT_WIFI_AWARE = 5; public static final int TRANSPORT_WIFI_AWARE = 5;
private static final int MIN_TRANSPORT = TRANSPORT_CELLULAR; /** @hide */
private static final int MAX_TRANSPORT = TRANSPORT_WIFI_AWARE; 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. * Adds the given transport type to this {@code NetworkCapability} instance.

View File

@@ -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.b;
import static com.android.server.connectivity.MetricsTestUtil.describeIpEvent; 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.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.ConnectivityMetricsEvent;
import android.net.metrics.ApfProgramEvent; 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. // TODO: instead of comparing textpb to textpb, parse textpb and compare proto to proto.
public class IpConnectivityEventBuilderTest extends TestCase { 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 @SmallTest
public void testDefaultNetworkEventSerialization() { public void testDefaultNetworkEventSerialization() {
ConnectivityMetricsEvent ev = describeIpEvent( ConnectivityMetricsEvent ev = describeIpEvent(
@@ -86,7 +220,6 @@ public class IpConnectivityEventBuilderTest extends TestCase {
public void testDhcpClientEventSerialization() { public void testDhcpClientEventSerialization() {
ConnectivityMetricsEvent ev = describeIpEvent( ConnectivityMetricsEvent ev = describeIpEvent(
aType(DhcpClientEvent.class), aType(DhcpClientEvent.class),
aString("wlan0"),
aString("SomeState"), aString("SomeState"),
anInt(192)); anInt(192));
@@ -100,7 +233,7 @@ public class IpConnectivityEventBuilderTest extends TestCase {
" transports: 0", " transports: 0",
" dhcp_event <", " dhcp_event <",
" duration_ms: 192", " duration_ms: 192",
" if_name: \"wlan0\"", " if_name: \"\"",
" state_transition: \"SomeState\"", " state_transition: \"SomeState\"",
" >", " >",
">", ">",
@@ -113,7 +246,6 @@ public class IpConnectivityEventBuilderTest extends TestCase {
public void testDhcpErrorEventSerialization() { public void testDhcpErrorEventSerialization() {
ConnectivityMetricsEvent ev = describeIpEvent( ConnectivityMetricsEvent ev = describeIpEvent(
aType(DhcpErrorEvent.class), aType(DhcpErrorEvent.class),
aString("wlan0"),
anInt(DhcpErrorEvent.L4_NOT_UDP)); anInt(DhcpErrorEvent.L4_NOT_UDP));
String want = joinLines( String want = joinLines(
@@ -126,7 +258,7 @@ public class IpConnectivityEventBuilderTest extends TestCase {
" transports: 0", " transports: 0",
" dhcp_event <", " dhcp_event <",
" duration_ms: 0", " duration_ms: 0",
" if_name: \"wlan0\"", " if_name: \"\"",
" error_code: 50397184", " error_code: 50397184",
" >", " >",
">", ">",
@@ -191,7 +323,6 @@ public class IpConnectivityEventBuilderTest extends TestCase {
public void testIpManagerEventSerialization() { public void testIpManagerEventSerialization() {
ConnectivityMetricsEvent ev = describeIpEvent( ConnectivityMetricsEvent ev = describeIpEvent(
aType(IpManagerEvent.class), aType(IpManagerEvent.class),
aString("wlan0"),
anInt(IpManagerEvent.PROVISIONING_OK), anInt(IpManagerEvent.PROVISIONING_OK),
aLong(5678)); aLong(5678));
@@ -205,7 +336,7 @@ public class IpConnectivityEventBuilderTest extends TestCase {
" transports: 0", " transports: 0",
" ip_provisioning_event <", " ip_provisioning_event <",
" event_type: 1", " event_type: 1",
" if_name: \"wlan0\"", " if_name: \"\"",
" latency_ms: 5678", " latency_ms: 5678",
" >", " >",
">", ">",
@@ -218,7 +349,6 @@ public class IpConnectivityEventBuilderTest extends TestCase {
public void testIpReachabilityEventSerialization() { public void testIpReachabilityEventSerialization() {
ConnectivityMetricsEvent ev = describeIpEvent( ConnectivityMetricsEvent ev = describeIpEvent(
aType(IpReachabilityEvent.class), aType(IpReachabilityEvent.class),
aString("wlan0"),
anInt(IpReachabilityEvent.NUD_FAILED)); anInt(IpReachabilityEvent.NUD_FAILED));
String want = joinLines( String want = joinLines(
@@ -231,7 +361,7 @@ public class IpConnectivityEventBuilderTest extends TestCase {
" transports: 0", " transports: 0",
" ip_reachability_event <", " ip_reachability_event <",
" event_type: 512", " event_type: 512",
" if_name: \"wlan0\"", " if_name: \"\"",
" >", " >",
">", ">",
"version: 2"); "version: 2");

View File

@@ -48,7 +48,7 @@ import org.mockito.MockitoAnnotations;
public class IpConnectivityMetricsTest extends TestCase { public class IpConnectivityMetricsTest extends TestCase {
static final IpReachabilityEvent FAKE_EV = static final IpReachabilityEvent FAKE_EV =
new IpReachabilityEvent("wlan0", IpReachabilityEvent.NUD_FAILED); new IpReachabilityEvent(IpReachabilityEvent.NUD_FAILED);
@Mock Context mCtx; @Mock Context mCtx;
@Mock IIpConnectivityMetrics mMockService; @Mock IIpConnectivityMetrics mMockService;
@@ -154,47 +154,51 @@ public class IpConnectivityMetricsTest extends TestCase {
apfStats.programUpdatesAllowingMulticast = 3; apfStats.programUpdatesAllowingMulticast = 3;
apfStats.maxProgramSize = 2048; apfStats.maxProgramSize = 2048;
Parcelable[] events = { Parcelable[] events = {
new IpReachabilityEvent("wlan0", IpReachabilityEvent.NUD_FAILED), new IpReachabilityEvent(IpReachabilityEvent.NUD_FAILED),
new DhcpClientEvent("wlan0", "SomeState", 192), new DhcpClientEvent("SomeState", 192),
new DefaultNetworkEvent(102, new int[]{1,2,3}, 101, true, false), 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), new ValidationProbeEvent(120, 40730, ValidationProbeEvent.PROBE_HTTP, 204),
apfStats, apfStats,
new RaEvent(2000, 400, 300, -1, 1000, -1) new RaEvent(2000, 400, 300, -1, 1000, -1)
}; };
for (int i = 0; i < events.length; i++) { 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( String want = joinLines(
"dropped_events: 0", "dropped_events: 0",
"events <", "events <",
" if_name: \"\"", " if_name: \"\"",
" link_layer: 0", " link_layer: 4",
" network_id: 0", " network_id: 0",
" time_ms: 100", " time_ms: 100",
" transports: 0", " transports: 0",
" ip_reachability_event <", " ip_reachability_event <",
" event_type: 512", " event_type: 512",
" if_name: \"wlan0\"", " if_name: \"\"",
" >", " >",
">", ">",
"events <", "events <",
" if_name: \"\"", " if_name: \"\"",
" link_layer: 0", " link_layer: 4",
" network_id: 0", " network_id: 0",
" time_ms: 200", " time_ms: 200",
" transports: 0", " transports: 0",
" dhcp_event <", " dhcp_event <",
" duration_ms: 192", " duration_ms: 192",
" if_name: \"wlan0\"", " if_name: \"\"",
" state_transition: \"SomeState\"", " state_transition: \"SomeState\"",
" >", " >",
">", ">",
"events <", "events <",
" if_name: \"\"", " if_name: \"\"",
" link_layer: 0", " link_layer: 4",
" network_id: 0", " network_id: 0",
" time_ms: 300", " time_ms: 300",
" transports: 0", " transports: 0",
@@ -213,19 +217,19 @@ public class IpConnectivityMetricsTest extends TestCase {
">", ">",
"events <", "events <",
" if_name: \"\"", " if_name: \"\"",
" link_layer: 0", " link_layer: 4",
" network_id: 0", " network_id: 0",
" time_ms: 400", " time_ms: 400",
" transports: 0", " transports: 0",
" ip_provisioning_event <", " ip_provisioning_event <",
" event_type: 1", " event_type: 1",
" if_name: \"wlan0\"", " if_name: \"\"",
" latency_ms: 5678", " latency_ms: 5678",
" >", " >",
">", ">",
"events <", "events <",
" if_name: \"\"", " if_name: \"\"",
" link_layer: 0", " link_layer: 4",
" network_id: 0", " network_id: 0",
" time_ms: 500", " time_ms: 500",
" transports: 0", " transports: 0",
@@ -240,7 +244,7 @@ public class IpConnectivityMetricsTest extends TestCase {
">", ">",
"events <", "events <",
" if_name: \"\"", " if_name: \"\"",
" link_layer: 0", " link_layer: 4",
" network_id: 0", " network_id: 0",
" time_ms: 600", " time_ms: 600",
" transports: 0", " transports: 0",
@@ -259,7 +263,7 @@ public class IpConnectivityMetricsTest extends TestCase {
">", ">",
"events <", "events <",
" if_name: \"\"", " if_name: \"\"",
" link_layer: 0", " link_layer: 4",
" network_id: 0", " network_id: 0",
" time_ms: 700", " time_ms: 700",
" transports: 0", " transports: 0",