1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.net; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.InetAddress; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.InterfaceAddress; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.NetworkInterface; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.SocketException; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ArrayList; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Enumeration; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.List; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class NetworkInterfaceTest extends junit.framework.TestCase { 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // private member variables used for tests 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration<NetworkInterface> theInterfaces = null; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean atLeastOneInterface = false; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean atLeastTwoInterfaces = false; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private NetworkInterface networkInterface1 = null; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private NetworkInterface sameAsNetworkInterface1 = null; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private NetworkInterface networkInterface2 = null; 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getName() 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getName() { 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastOneInterface) { 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull("validate that non null name is returned", 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1.getName()); 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("validate that non-zero length name is generated", 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1.getName().equals("")); 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastTwoInterfaces) { 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse( 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Validate strings are different for different interfaces", 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1.getName().equals( 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface2.getName())); 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getInetAddresses() 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getInetAddresses() throws Exception { 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastOneInterface) { 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration theAddresses = networkInterface1.getInetAddresses(); 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (theAddresses.hasMoreElements()) { 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress theAddress = (InetAddress) theAddresses 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement(); 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull("validate that address is not null", theAddress); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastTwoInterfaces) { 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration theAddresses = networkInterface2.getInetAddresses(); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (theAddresses.hasMoreElements()) { 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress theAddress = (InetAddress) theAddresses 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement(); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull("validate that address is not null", theAddress); 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create the list of ok and not ok addresses to return 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastOneInterface) { 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ArrayList okAddresses = new ArrayList(); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration addresses = networkInterface1.getInetAddresses(); 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int index = 0; 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ArrayList notOkAddresses = new ArrayList(); 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (addresses.hasMoreElements()) { 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress theAddress = (InetAddress) addresses.nextElement(); 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes okAddresses.add(theAddress); 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes index++; 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // do the same for network interface 2 if it exists 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastTwoInterfaces) { 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addresses = networkInterface2.getInetAddresses(); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes index = 0; 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (addresses.hasMoreElements()) { 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress theAddress = (InetAddress) addresses 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement(); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes okAddresses.add(theAddress); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes index++; 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // validate not ok addresses are not returned 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < notOkAddresses.size(); i++) { 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration reducedAddresses = networkInterface1 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInetAddresses(); 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (reducedAddresses.hasMoreElements()) { 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress nextAddress = (InetAddress) reducedAddresses 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement(); 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "validate that address without permission is not returned", 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes !nextAddress.equals(notOkAddresses.get(i))); 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastTwoInterfaces) { 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes reducedAddresses = networkInterface2.getInetAddresses(); 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (reducedAddresses.hasMoreElements()) { 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress nextAddress = (InetAddress) reducedAddresses 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement(); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "validate that address without permission is not returned", 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes !nextAddress.equals(notOkAddresses.get(i))); 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // validate that ok addresses are returned 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < okAddresses.size(); i++) { 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean addressReturned = false; 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration reducedAddresses = networkInterface1 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInetAddresses(); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (reducedAddresses.hasMoreElements()) { 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress nextAddress = (InetAddress) reducedAddresses 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement(); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (nextAddress.equals(okAddresses.get(i))) { 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addressReturned = true; 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastTwoInterfaces) { 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes reducedAddresses = networkInterface2.getInetAddresses(); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (reducedAddresses.hasMoreElements()) { 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress nextAddress = (InetAddress) reducedAddresses 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement(); 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (nextAddress.equals(okAddresses.get(i))) { 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addressReturned = true; 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("validate that address with permission is returned", 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addressReturned); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // validate that we can get the interface by specifying the address. 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This is to be compatible 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < notOkAddresses.size(); i++) { 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull( 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "validate we cannot get the NetworkInterface with an address for which we have no privs", 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getByInetAddress((InetAddress) notOkAddresses 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .get(i))); 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // validate that we can get the network interface for the good 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // addresses 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < okAddresses.size(); i++) { 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull( 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "validate we cannot get the NetworkInterface with an address fro which we have no privs", 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getByInetAddress((InetAddress) okAddresses 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .get(i))); 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getDisplayName() 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getDisplayName() { 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastOneInterface) { 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull("validate that non null display name is returned", 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1.getDisplayName()); 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse( 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "validate that non-zero length display name is generated", 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1.getDisplayName().equals("")); 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastTwoInterfaces) { 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse( 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Validate strings are different for different interfaces", 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1.getDisplayName().equals( 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface2.getDisplayName())); 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getByName(java.lang.String) 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getByNameLjava_lang_String() throws Exception { 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("validate null handled ok", 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface.getByName(null)); 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("getByName did not throw NullPointerException for null argument"); 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 206fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes } 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("validate handled ok if we ask for name not associated with any interface", 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface.getByName("8not a name4")); 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // for each address in an interface validate that we get the right 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // interface for that name 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastOneInterface) { 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String theName = networkInterface1.getName(); 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (theName != null) { 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "validate that Interface can be obtained with its name", 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1, NetworkInterface.getByName(theName)); 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // validate that we get the right interface with the second interface as 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // well (ie we just don't always get the first interface 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastTwoInterfaces) { 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String theName = networkInterface2.getName(); 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (theName != null) { 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "validate that Interface can be obtained with its name", 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface2, NetworkInterface.getByName(theName)); 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getByInetAddress(java.net.InetAddress) 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getByInetAddressLjava_net_InetAddress() throws Exception { 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte addressBytes[] = new byte[4]; 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addressBytes[0] = 0; 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addressBytes[1] = 0; 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addressBytes[2] = 0; 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addressBytes[3] = 0; 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("validate null handled ok", 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface.getByInetAddress(null)); 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should not get here if getByInetAddress throws " 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "NullPointerException if null passed in"); 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("validate handled ok if we ask for address not associated with any interface", 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface.getByInetAddress(InetAddress 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getByAddress(addressBytes))); 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // for each address in an interface validate that we get the right 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // interface for that address 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastOneInterface) { 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration addresses = networkInterface1.getInetAddresses(); 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (addresses.hasMoreElements()) { 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress theAddress = (InetAddress) addresses.nextElement(); 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "validate that Interface can be obtained with any one of its addresses", 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1, NetworkInterface 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getByInetAddress(theAddress)); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // validate that we get the right interface with the second interface as 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // well (ie we just don't always get the first interface 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastTwoInterfaces) { 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration addresses = networkInterface2.getInetAddresses(); 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (addresses.hasMoreElements()) { 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress theAddress = (InetAddress) addresses.nextElement(); 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "validate that Interface can be obtained with any one of its addresses", 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface2, NetworkInterface 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getByInetAddress(theAddress)); 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getNetworkInterfaces() 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getNetworkInterfaces() throws Exception { 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // really this is tested by all of the other calls but just make sure we 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // can call it and get a list of interfaces if they exist 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration theInterfaces = NetworkInterface.getNetworkInterfaces(); 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#equals(java.lang.Object) 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_equalsLjava_lang_Object() { 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method boolean 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.net.SocketPermission.equals(java.lang.Object) 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastOneInterface) { 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("If objects are the same true is returned", 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sameAsNetworkInterface1, networkInterface1); 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull("Validate Null handled ok", networkInterface1); 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastTwoInterfaces) { 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("If objects are different false is returned", 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1.equals(networkInterface2)); 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#hashCode() 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hashCode() { 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastOneInterface) { 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "validate that hash codes are the same for two calls on the same object", 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1.hashCode() == networkInterface1 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .hashCode()); 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "validate that hash codes are the same for two objects for which equals is true", 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1.hashCode() == sameAsNetworkInterface1 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .hashCode()); 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#toString() 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_toString() { 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastOneInterface) { 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull("validate that non null string is generated", 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1.toString()); 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("validate that non-zero length string is generated", 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1.toString().equals("")); 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastTwoInterfaces) { 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse( 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Validate strings are different for different interfaces", 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1.toString().equals( 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface2.toString())); 344fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 349fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getInterfaceAddresses() 351fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getInterfaceAddresses() throws SocketException { 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (theInterfaces != null) { 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (theInterfaces.hasMoreElements()) { 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = theInterfaces.nextElement(); 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(netif.getName() 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + " getInterfaceAddresses should contain no element", 0, 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes netif.getInterfaceAddresses().size()); 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 362fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes theInterfaces = NetworkInterface.getNetworkInterfaces(); 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (theInterfaces.hasMoreElements()) { 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = theInterfaces.nextElement(); 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List<InterfaceAddress> interfaceAddrs = netif.getInterfaceAddresses(); 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(interfaceAddrs instanceof ArrayList); 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (InterfaceAddress addr : interfaceAddrs) { 369fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes assertNotNull(addr); 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 371fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List<InterfaceAddress> interfaceAddrs2 = netif.getInterfaceAddresses(); 373fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes // RI fails on this since it cannot tolerate null broadcast address. 374fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes assertEquals(interfaceAddrs, interfaceAddrs2); 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 377fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes } 378fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#isLoopback() 381fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 384fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes public void test_isLoopback() throws SocketException { 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (theInterfaces != null) { 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (theInterfaces.hasMoreElements()) { 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = theInterfaces.nextElement(); 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean loopback = false; 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration<InetAddress> addrs = netif.getInetAddresses(); 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while(addrs != null && addrs.hasMoreElements()){ 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if(addrs.nextElement().isLoopbackAddress()){ 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes loopback = true; 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(loopback, netif.isLoopback()); 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 400fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getHardwareAddress() 403fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getHardwareAddress() throws SocketException { 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (theInterfaces != null) { 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (theInterfaces.hasMoreElements()) { 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = theInterfaces.nextElement(); 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] hwAddr = netif.getHardwareAddress(); 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (netif.isLoopback()) { 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(hwAddr == null || hwAddr.length == 0); 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(hwAddr.length >= 0); 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 419fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 421fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.NetworkInterface#getHardwareAddress() 423fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 426fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes public void test_getMTU() throws SocketException { 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (theInterfaces != null) { 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (theInterfaces.hasMoreElements()) { 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface netif = theInterfaces.nextElement(); 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(netif.getName() + "has non-positive MTU", netif.getMTU() >= 0); 431fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes } 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 434fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws SocketException { 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration theInterfaces = null; 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes theInterfaces = NetworkInterface.getNetworkInterfaces(); 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Exception occurred getting network interfaces : " + e); 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 443fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Set up NetworkInterface instance members. Note that because the call 445fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes // to NetworkInterface.getNetworkInterfaces() returns *all* of the 446fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes // interfaces on the test machine it is possible that one or more of 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // them will not currently be bound to an InetAddress. e.g. a laptop 448fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes // running connected by a wire to the local network may also have a 449fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes // wireless interface that is not active and so has no InetAddress 450fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes // bound to it. For these tests only work with NetworkInterface objects 451fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes // that are bound to an InetAddress. 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ((theInterfaces != null) && (theInterfaces.hasMoreElements())) { 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while ((theInterfaces.hasMoreElements()) 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && (atLeastOneInterface == false)) { 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface theInterface = (NetworkInterface) theInterfaces 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement(); 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (theInterface.getInetAddresses().hasMoreElements()) { 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Ensure that the current NetworkInterface has at least 459fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes // one InetAddress bound to it. 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration addrs = theInterface.getInetAddresses(); 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ((addrs != null) && (addrs.hasMoreElements())) { 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes atLeastOneInterface = true; 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface1 = theInterface; 464fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes }// end if 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while ((theInterfaces.hasMoreElements()) 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && (atLeastTwoInterfaces == false)) { 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NetworkInterface theInterface = (NetworkInterface) theInterfaces 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement(); 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (theInterface.getInetAddresses().hasMoreElements()) { 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Ensure that the current NetworkInterface has at least 474fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes // one InetAddress bound to it. 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration addrs = theInterface.getInetAddresses(); 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ((addrs != null) && (addrs.hasMoreElements())) { 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes atLeastTwoInterfaces = true; 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes networkInterface2 = theInterface; 479fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes }// end if 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 483fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes // Only set sameAsNetworkInterface1 if we succeeded in finding 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // at least one good NetworkInterface 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (atLeastOneInterface) { 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration addresses = networkInterface1.getInetAddresses(); 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (addresses.hasMoreElements()) { 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (addresses.hasMoreElements()) { 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sameAsNetworkInterface1 = NetworkInterface 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getByInetAddress((InetAddress) addresses 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement()); 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SocketException e) { 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("SocketException occurred : " + e); 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }// end if atLeastOneInterface 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes theInterfaces = NetworkInterface.getNetworkInterfaces(); 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 503