1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* Licensed to the Apache Software Foundation (ASF) under one or more 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.net; 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.NetworkInterface; 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Enumeration; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Please note that this case can only be passed on Linux with the user is 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 'root'. 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class UnixNetworkInterfaceTest extends TestCase { 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Enumeration<NetworkInterface> netifs = null; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean valid = false; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#isUp() 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isUp() throws Exception { 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String name = netif.getName(); 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean up = netif.isUp(); 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Down network interface will bring side effect on the 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // platform. So chooses the already-down interface to up it. 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!up && valid) { 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String cmd = "ifconfig " + name + " up"; 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Process proc = Runtime.getRuntime().exec(cmd); 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + " up should be " + !up, !up, netif.isUp()); 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cmd = "ifconfig " + name + " down"; 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc = Runtime.getRuntime().exec(cmd); 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + " up should be " + up, up, netif.isUp()); 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#supportsMulticast() 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_supportsMulticast() throws Exception { 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String name = netif.getName(); 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean multicast = netif.supportsMulticast(); 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (valid) { 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String cmd = multicast ? "ifconfig " + name + " -multicast" 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes : "ifconfig " + name + " multicast"; 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Process proc = Runtime.getRuntime().exec(cmd); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + " multicast should be " + !multicast, 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes !multicast, netif.supportsMulticast()); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cmd = multicast ? "ifconfig " + name + " multicast" 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes : "ifconfig " + name + " -multicast"; 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc = Runtime.getRuntime().exec(cmd); 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + " multicast should be " + multicast, 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes multicast, netif.supportsMulticast()); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getHardwareAddress() 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getHardwareAddress() throws Exception { 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String name = netif.getName(); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] hardAddr = netif.getHardwareAddress(); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hardAddr != null && valid) { 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String hardwareAddress = toHardwareAddress(hardAddr); 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String newHardwareAddr = "0:11:25:1B:BD:FF"; 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String cmd = "ifconfig " + name + " hw ether " 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + newHardwareAddr; 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Process proc = Runtime.getRuntime().exec(cmd); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + "'s hardware address should be" 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + newHardwareAddr, newHardwareAddr, 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes toHardwareAddress(netif.getHardwareAddress())); 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cmd = "ifconfig " + name + " hw ether " + hardwareAddress; 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc = Runtime.getRuntime().exec(cmd); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + "'s hardware address should be" 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + hardwareAddress, hardwareAddress, 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes toHardwareAddress(netif.getHardwareAddress())); 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getMTU() 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getMTU() throws Exception { 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String name = netif.getName(); 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int mtu = netif.getMTU(); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (valid) { 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String cmd = "ifconfig " + name + " mtu 1000"; 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Process proc = Runtime.getRuntime().exec(cmd); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + " MTU should be 1000", 1000, netif.getMTU()); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cmd = "ifconfig " + name + " mtu " + mtu; 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc = Runtime.getRuntime().exec(cmd); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + " MTU should be " + mtu, mtu, netif 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getMTU()); 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getSubInterfaces() 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getSubInterfaces() throws Exception { 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration<NetworkInterface> subInterfaces1 = netif 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSubInterfaces(); 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration<NetworkInterface> subInterfaces2 = netif 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSubInterfaces(); 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (subInterfaces1.hasMoreElements() 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && subInterfaces2.hasMoreElements() && valid) { 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface sub1 = subInterfaces1.nextElement(); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface sub2 = subInterfaces2.nextElement(); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(sub1, sub2); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(netif, sub1.getParent()); 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getParent() 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getParent() { 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration<NetworkInterface> subInterfaces = netif 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSubInterfaces(); 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean contains = false; 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean hasSubInterfaces = false; 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (subInterfaces.hasMoreElements() && valid) { 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hasSubInterfaces = true; 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface sub = subInterfaces.nextElement(); 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface parent1 = sub.getParent(); 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface parent2 = sub.getParent(); 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(parent1, parent2); 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (netif.equals(parent1)) { 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes contains = true; 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(hasSubInterfaces, contains); 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#isVirtual() 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isVirtual() { 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean virtual = netif.getParent() != null; 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(netif.getName() + " isVirtual() is" + !virtual, 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes virtual, netif.isVirtual()); 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration<NetworkInterface> subInterfaces = netif 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSubInterfaces(); 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (subInterfaces.hasMoreElements()) { 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(subInterfaces.nextElement().isVirtual()); 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception { 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.setUp(); 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes netifs = NetworkInterface.getNetworkInterfaces(); 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes valid = (netifs != null) 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && System.getProperty("user.name").equals("root"); 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() throws Exception { 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes netifs = null; 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes valid = false; 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.tearDown(); 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static String toHardwareAddress(byte[] hardAddr) { 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes StringBuilder builder = new StringBuilder(); 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (byte b : hardAddr) { 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes builder.append(Integer.toHexString(b >= 0 ? b : b + 256) 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .toUpperCase()); 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hardAddr[hardAddr.length - 1] != b) { 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes builder.append(":"); 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return builder.toString(); 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 241