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 Hughespublic class UnixNetworkInterfaceTest extends TestCase { 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Enumeration<NetworkInterface> netifs = null; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean valid = false; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#isUp() 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isUp() throws Exception { 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String name = netif.getName(); 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean up = netif.isUp(); 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Down network interface will bring side effect on the 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // platform. So chooses the already-down interface to up it. 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!up && valid) { 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String cmd = "ifconfig " + name + " up"; 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Process proc = Runtime.getRuntime().exec(cmd); 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + " up should be " + !up, !up, netif.isUp()); 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cmd = "ifconfig " + name + " down"; 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc = Runtime.getRuntime().exec(cmd); 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + " up should be " + up, up, netif.isUp()); 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#supportsMulticast() 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_supportsMulticast() throws Exception { 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String name = netif.getName(); 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean multicast = netif.supportsMulticast(); 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (valid) { 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String cmd = multicast ? "ifconfig " + name + " -multicast" 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes : "ifconfig " + name + " multicast"; 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Process proc = Runtime.getRuntime().exec(cmd); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + " multicast should be " + !multicast, 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes !multicast, netif.supportsMulticast()); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cmd = multicast ? "ifconfig " + name + " multicast" 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes : "ifconfig " + name + " -multicast"; 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc = Runtime.getRuntime().exec(cmd); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + " multicast should be " + multicast, 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes multicast, netif.supportsMulticast()); 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getHardwareAddress() 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getHardwareAddress() throws Exception { 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String name = netif.getName(); 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] hardAddr = netif.getHardwareAddress(); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hardAddr != null && valid) { 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String hardwareAddress = toHardwareAddress(hardAddr); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String newHardwareAddr = "0:11:25:1B:BD:FF"; 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String cmd = "ifconfig " + name + " hw ether " 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + newHardwareAddr; 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Process proc = Runtime.getRuntime().exec(cmd); 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + "'s hardware address should be" 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + newHardwareAddr, newHardwareAddr, 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes toHardwareAddress(netif.getHardwareAddress())); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cmd = "ifconfig " + name + " hw ether " + hardwareAddress; 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc = Runtime.getRuntime().exec(cmd); 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + "'s hardware address should be" 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + hardwareAddress, hardwareAddress, 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes toHardwareAddress(netif.getHardwareAddress())); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getMTU() 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getMTU() throws Exception { 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String name = netif.getName(); 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int mtu = netif.getMTU(); 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (valid) { 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String cmd = "ifconfig " + name + " mtu 1000"; 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Process proc = Runtime.getRuntime().exec(cmd); 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + " MTU should be 1000", 1000, netif.getMTU()); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cmd = "ifconfig " + name + " mtu " + mtu; 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc = Runtime.getRuntime().exec(cmd); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proc.waitFor(); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(name + " MTU should be " + mtu, mtu, netif 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getMTU()); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getSubInterfaces() 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getSubInterfaces() throws Exception { 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration<NetworkInterface> subInterfaces1 = netif 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSubInterfaces(); 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration<NetworkInterface> subInterfaces2 = netif 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSubInterfaces(); 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (subInterfaces1.hasMoreElements() 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && subInterfaces2.hasMoreElements() && valid) { 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface sub1 = subInterfaces1.nextElement(); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface sub2 = subInterfaces2.nextElement(); 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(sub1, sub2); 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(netif, sub1.getParent()); 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getParent() 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getParent() { 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration<NetworkInterface> subInterfaces = netif 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSubInterfaces(); 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean contains = false; 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean hasSubInterfaces = false; 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (subInterfaces.hasMoreElements() && valid) { 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hasSubInterfaces = true; 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface sub = subInterfaces.nextElement(); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface parent1 = sub.getParent(); 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface parent2 = sub.getParent(); 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(parent1, parent2); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (netif.equals(parent1)) { 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes contains = true; 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(hasSubInterfaces, contains); 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#isVirtual() 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isVirtual() { 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (netifs.hasMoreElements()) { 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = netifs.nextElement(); 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean virtual = netif.getParent() != null; 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(netif.getName() + " isVirtual() is" + !virtual, 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes virtual, netif.isVirtual()); 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration<NetworkInterface> subInterfaces = netif 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSubInterfaces(); 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (subInterfaces.hasMoreElements()) { 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(subInterfaces.nextElement().isVirtual()); 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception { 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.setUp(); 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes netifs = NetworkInterface.getNetworkInterfaces(); 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes valid = (netifs != null) 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && System.getProperty("user.name").equals("root"); 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() throws Exception { 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes netifs = null; 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes valid = false; 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.tearDown(); 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static String toHardwareAddress(byte[] hardAddr) { 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes StringBuilder builder = new StringBuilder(); 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (byte b : hardAddr) { 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes builder.append(Integer.toHexString(b >= 0 ? b : b + 256) 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .toUpperCase()); 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hardAddr[hardAddr.length - 1] != b) { 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes builder.append(":"); 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return builder.toString(); 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 232