Merge "[NETD-TC#7] Move getIfaceNames() and getIfaceList() to libnetdutils."
diff --git a/staticlibs/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkLinkMessageTest.java b/staticlibs/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkLinkMessageTest.java
index 5d446b8..9db63db 100644
--- a/staticlibs/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkLinkMessageTest.java
+++ b/staticlibs/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkLinkMessageTest.java
@@ -47,7 +47,7 @@
private static final String RTM_NEWLINK_HEX =
"64000000100000000000000000000000" // struct nlmsghr
+ "000001001E0000000210000000000000" // struct ifinfo
- + "0A000300776C616E30000000" // IFLA_IFNAME
+ + "0A000300776C616E30000000" // IFLA_IFNAME(wlan0)
+ "08000D00B80B0000" // IFLA_PROTINFO
+ "0500100002000000" // IFLA_OPERSTATE
+ "0500110001000000" // IFLA_LINKMODE
@@ -88,12 +88,47 @@
assertTrue(linkMsg.getInterfaceName().equals("wlan0"));
}
+ /**
+ * Example:
+ * # adb shell ip tunnel add トン0 mode sit local any remote 8.8.8.8
+ * # adb shell ip link show | grep トン
+ * 33: トン0@NONE: <POINTOPOINT,NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group
+ * default qlen 1000
+ *
+ * IFLA_IFNAME attribute: \x0c\x00\x03\x00\xe3\x83\x88\xe3\x83\xb3\x30\x00
+ * length: 0x000c
+ * type: 0x0003
+ * value: \xe3\x83\x88\xe3\x83\xb3\x30\x00
+ * ト (\xe3\x83\x88)
+ * ン (\xe3\x83\xb3)
+ * 0 (\x30)
+ * null terminated (\x00)
+ */
+ private static final String RTM_NEWLINK_UTF8_HEX =
+ "34000000100000000000000000000000" // struct nlmsghr
+ + "000001001E0000000210000000000000" // struct ifinfo
+ + "08000400DC050000" // IFLA_MTU
+ + "0A00010092C3E3C9374E0000" // IFLA_ADDRESS
+ + "0C000300E38388E383B33000"; // IFLA_IFNAME(トン0)
+
+ @Test
+ public void testParseRtmNewLink_utf8Ifname() {
+ final ByteBuffer byteBuffer = toByteBuffer(RTM_NEWLINK_UTF8_HEX);
+ byteBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
+ final NetlinkMessage msg = NetlinkMessage.parse(byteBuffer, NETLINK_ROUTE);
+ assertNotNull(msg);
+ assertTrue(msg instanceof RtNetlinkLinkMessage);
+ final RtNetlinkLinkMessage linkMsg = (RtNetlinkLinkMessage) msg;
+
+ assertTrue(linkMsg.getInterfaceName().equals("トン0"));
+ }
+
private static final String RTM_NEWLINK_PACK_HEX =
"34000000100000000000000000000000" // struct nlmsghr
+ "000001001E0000000210000000000000" // struct ifinfo
+ "08000400DC050000" // IFLA_MTU
+ "0A00010092C3E3C9374E0000" // IFLA_ADDRESS
- + "0A000300776C616E30000000"; // IFLA_IFNAME
+ + "0A000300776C616E30000000"; // IFLA_IFNAME(wlan0)
@Test
public void testPackRtmNewLink() {
@@ -117,7 +152,7 @@
+ "0500100002000000" // IFLA_OPERSTATE
+ "0800010092C3E3C9" // IFLA_ADDRESS(truncated)
+ "0500110001000000" // IFLA_LINKMODE
- + "0A000300776C616E30000000" // IFLA_IFNAME
+ + "0A000300776C616E30000000" // IFLA_IFNAME(wlan0)
+ "08000400DC050000"; // IFLA_MTU
@Test
diff --git a/staticlibs/testutils/devicetests/com/android/testutils/TestableNetworkStatsProvider.kt b/staticlibs/testutils/devicetests/com/android/testutils/TestableNetworkStatsProvider.kt
index be5c9b2..4a7b351 100644
--- a/staticlibs/testutils/devicetests/com/android/testutils/TestableNetworkStatsProvider.kt
+++ b/staticlibs/testutils/devicetests/com/android/testutils/TestableNetworkStatsProvider.kt
@@ -17,6 +17,7 @@
package com.android.testutils
import android.net.netstats.provider.NetworkStatsProvider
+import android.util.Log
import com.android.net.module.util.ArrayTrackRecord
import kotlin.test.assertEquals
import kotlin.test.assertTrue
@@ -43,23 +44,28 @@
data class OnSetAlert(val quotaBytes: Long) : CallbackType()
}
+ private val TAG = this::class.simpleName
val history = ArrayTrackRecord<CallbackType>().newReadHead()
// See ReadHead#mark
val mark get() = history.mark
override fun onRequestStatsUpdate(token: Int) {
+ Log.d(TAG, "onRequestStatsUpdate $token")
history.add(CallbackType.OnRequestStatsUpdate(token))
}
override fun onSetWarningAndLimit(iface: String, warningBytes: Long, limitBytes: Long) {
+ Log.d(TAG, "onSetWarningAndLimit $iface $warningBytes $limitBytes")
history.add(CallbackType.OnSetWarningAndLimit(iface, warningBytes, limitBytes))
}
override fun onSetLimit(iface: String, quotaBytes: Long) {
+ Log.d(TAG, "onSetLimit $iface $quotaBytes")
history.add(CallbackType.OnSetLimit(iface, quotaBytes))
}
override fun onSetAlert(quotaBytes: Long) {
+ Log.d(TAG, "onSetAlert $quotaBytes")
history.add(CallbackType.OnSetAlert(quotaBytes))
}