diff options
author | Tochau Hoang <tochau.hoang@panasonic.aero> | 2015-06-23 13:32:40 -0700 |
---|---|---|
committer | Tochau Hoang <tochaupac@gmail.com> | 2015-07-08 17:44:14 +0000 |
commit | 3601fe27f70b9be8a8d32051dd2b5759234e8b75 (patch) | |
tree | 3ef1ff62a90c367631d5f1d3e8c35af9fbdf16bc /luni | |
parent | 6da6b0e4a410cb3bbbbcf56cba742ba881ca1b47 (diff) | |
download | libcore-3601fe27f70b9be8a8d32051dd2b5759234e8b75.zip libcore-3601fe27f70b9be8a8d32051dd2b5759234e8b75.tar.gz libcore-3601fe27f70b9be8a8d32051dd2b5759234e8b75.tar.bz2 |
Add testInterfaceProperties() . Move Ethernet verification out of testLoopback().
Add testInterfaceProperties(): verify if each interface can be retrieved
using getByName(). Use type properties of these interfaces to determine
if they are Ethernet. Perform address tests on all active Ethernet interfaces.
Move Ethernet verification out of testLoopback into testInterfaceProperties.
Change-Id: I1641f2995f4ceb858eda38d1ba6137382b2c7ba3
Signed-off-by: Tochau Hoang <tochau.hoang@panasonic.aero>
Diffstat (limited to 'luni')
-rw-r--r-- | luni/src/test/java/libcore/java/net/NetworkInterfaceTest.java | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/luni/src/test/java/libcore/java/net/NetworkInterfaceTest.java b/luni/src/test/java/libcore/java/net/NetworkInterfaceTest.java index b7c4bc6..116eb3f 100644 --- a/luni/src/test/java/libcore/java/net/NetworkInterfaceTest.java +++ b/luni/src/test/java/libcore/java/net/NetworkInterfaceTest.java @@ -22,14 +22,18 @@ import java.net.Inet6Address; import java.net.InetAddress; import java.net.InterfaceAddress; import java.net.NetworkInterface; +import java.net.SocketException; +import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; +import libcore.io.IoUtils; public class NetworkInterfaceTest extends TestCase { // http://code.google.com/p/android/issues/detail?id=13784 + private final static int ARPHRD_ETHER = 1; // from if_arp.h public void testIPv6() throws Exception { NetworkInterface lo = NetworkInterface.getByName("lo"); Set<InetAddress> actual = new HashSet<InetAddress>(Collections.list(lo.getInetAddresses())); @@ -70,24 +74,31 @@ public class NetworkInterfaceTest extends TestCase { assertEquals(1, ifAddresses.size()); } + public void testInterfaceProperties() throws Exception { + for (NetworkInterface nif : Collections.list(NetworkInterface.getNetworkInterfaces())) { + assertEquals(nif, NetworkInterface.getByName(nif.getName())); + // Skip interfaces that are inactive + if (nif.isUp() == false) { + continue; + } + // Ethernet + if (isEthernet(nif.getName())) { + assertEquals(6, nif.getHardwareAddress().length); + for (InterfaceAddress ia : nif.getInterfaceAddresses()) { + if (ia.getAddress() instanceof Inet4Address) { + assertNotNull(ia.getBroadcast()); + } + } + } + } + } + public void testLoopback() throws Exception { - // We know lo shouldn't have a hardware address or an IPv4 broadcast address. NetworkInterface lo = NetworkInterface.getByName("lo"); assertNull(lo.getHardwareAddress()); for (InterfaceAddress ia : lo.getInterfaceAddresses()) { assertNull(ia.getBroadcast()); } - - // But eth0, if it exists, should... - NetworkInterface eth0 = NetworkInterface.getByName("eth0"); - if (eth0 != null) { - assertEquals(6, eth0.getHardwareAddress().length); - for (InterfaceAddress ia : eth0.getInterfaceAddresses()) { - if (ia.getAddress() instanceof Inet4Address) { - assertNotNull(ia.getBroadcast()); - } - } - } } public void testDumpAll() throws Exception { @@ -130,4 +141,14 @@ public class NetworkInterfaceTest extends TestCase { allIndexes.add(nif.getIndex()); } } + + // Returns true if interface by name ifName is Ethernet + private boolean isEthernet(String ifName) throws Exception { + String s = IoUtils.readFileAsString("/sys/class/net/" + ifName + "/type").trim(); + if (s.startsWith("0x")) { + return (Integer.parseInt(s.substring(2), 16) == ARPHRD_ETHER); + } else { + return (Integer.parseInt(s) == ARPHRD_ETHER); + } + } } |