14e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang/* 24e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * Copyright (C) 2010 The Android Open Source Project 34e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * 44e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * Licensed under the Apache License, Version 2.0 (the "License"); 54e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * you may not use this file except in compliance with the License. 64e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * You may obtain a copy of the License at 74e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * 84e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * http://www.apache.org/licenses/LICENSE-2.0 94e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * 104e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * Unless required by applicable law or agreed to in writing, software 114e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * distributed under the License is distributed on an "AS IS" BASIS, 124e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * See the License for the specific language governing permissions and 144e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang * limitations under the License. 154e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang */ 164e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 174e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wangpackage android.net; 184e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 194e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wangimport android.net.LinkProperties; 20aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwaltimport android.net.RouteInfo; 214e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wangimport android.test.suitebuilder.annotation.SmallTest; 224e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wangimport junit.framework.TestCase; 234e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 244e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wangimport java.net.InetAddress; 254e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 264e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wangpublic class LinkPropertiesTest extends TestCase { 274e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang private static String ADDRV4 = "75.208.6.1"; 284e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang private static String ADDRV6 = "2001:0db8:85a3:0000:0000:8a2e:0370:7334"; 294e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang private static String DNS1 = "75.208.7.1"; 304e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang private static String DNS2 = "69.78.7.1"; 314e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang private static String GATEWAY1 = "75.208.8.1"; 324e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang private static String GATEWAY2 = "69.78.8.1"; 334e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang private static String NAME = "qmi0"; 344e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 354e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang @SmallTest 364e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang public void testEqualsNull() { 374e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang LinkProperties source = new LinkProperties(); 384e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang LinkProperties target = new LinkProperties(); 394e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 404e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertFalse(source == target); 414e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertTrue(source.equals(target)); 424e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertTrue(source.hashCode() == target.hashCode()); 434e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang } 444e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 454e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang @SmallTest 464e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang public void testEqualsSameOrder() { 474e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang try { 484e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang LinkProperties source = new LinkProperties(); 494e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.setInterfaceName(NAME); 504e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // set 2 link addresses 514e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.addLinkAddress(new LinkAddress( 524e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV4), 32)); 534e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.addLinkAddress(new LinkAddress( 544e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV6), 128)); 554e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // set 2 dnses 564e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.addDns(NetworkUtils.numericToInetAddress(DNS1)); 574e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.addDns(NetworkUtils.numericToInetAddress(DNS2)); 584e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // set 2 gateways 59aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt source.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 60aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt source.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 614e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 624e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang LinkProperties target = new LinkProperties(); 634e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 644e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // All fields are same 654e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.setInterfaceName(NAME); 664e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 674e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV4), 32)); 684e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 694e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV6), 128)); 704e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addDns(NetworkUtils.numericToInetAddress(DNS1)); 714e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addDns(NetworkUtils.numericToInetAddress(DNS2)); 72aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 73aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 744e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 754e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertTrue(source.equals(target)); 764e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertTrue(source.hashCode() == target.hashCode()); 774e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 784e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.clear(); 794e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // change Interface Name 804e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.setInterfaceName("qmi1"); 814e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 824e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV4), 32)); 834e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 844e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV6), 128)); 854e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addDns(NetworkUtils.numericToInetAddress(DNS1)); 864e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addDns(NetworkUtils.numericToInetAddress(DNS2)); 87aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 88aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 894e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertFalse(source.equals(target)); 904e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 914e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.clear(); 924e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.setInterfaceName(NAME); 934e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // change link addresses 944e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 954e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress("75.208.6.2"), 32)); 964e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 974e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV6), 128)); 984e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addDns(NetworkUtils.numericToInetAddress(DNS1)); 994e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addDns(NetworkUtils.numericToInetAddress(DNS2)); 100aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 101aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 1024e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertFalse(source.equals(target)); 1034e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 1044e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.clear(); 1054e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.setInterfaceName(NAME); 1064e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 1074e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV4), 32)); 1084e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 1094e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV6), 128)); 1104e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // change dnses 1114e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addDns(NetworkUtils.numericToInetAddress("75.208.7.2")); 1124e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addDns(NetworkUtils.numericToInetAddress(DNS2)); 113aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 114aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 1154e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertFalse(source.equals(target)); 1164e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 1174e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.clear(); 1184e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.setInterfaceName(NAME); 1194e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 1204e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV4), 32)); 1214e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 1224e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV6), 128)); 1234e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addDns(NetworkUtils.numericToInetAddress(DNS1)); 1244e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addDns(NetworkUtils.numericToInetAddress(DNS2)); 1254e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // change gateway 126aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress("75.208.8.2"))); 127aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 1284e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertFalse(source.equals(target)); 1294e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 1304e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang } catch (Exception e) { 1314e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang throw new RuntimeException(e.toString()); 1324e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang //fail(); 1334e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang } 1344e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang } 1354e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 1364e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang @SmallTest 1374e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang public void testEqualsDifferentOrder() { 1384e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang try { 1394e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang LinkProperties source = new LinkProperties(); 1404e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.setInterfaceName(NAME); 1414e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // set 2 link addresses 1424e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.addLinkAddress(new LinkAddress( 1434e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV4), 32)); 1444e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.addLinkAddress(new LinkAddress( 1454e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV6), 128)); 1464e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // set 2 dnses 1474e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.addDns(NetworkUtils.numericToInetAddress(DNS1)); 1484e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.addDns(NetworkUtils.numericToInetAddress(DNS2)); 1494e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // set 2 gateways 150aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt source.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 151aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt source.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 1524e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 1534e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang LinkProperties target = new LinkProperties(); 1544e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // Exchange order 1554e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.setInterfaceName(NAME); 1564e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 1574e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV6), 128)); 1584e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 1594e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV4), 32)); 1604e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addDns(NetworkUtils.numericToInetAddress(DNS2)); 1614e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addDns(NetworkUtils.numericToInetAddress(DNS1)); 162aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 163aa70f101e08098ed9cb190abe2d7f952561026b8Robert Greenwalt target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 1644e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 1654e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertTrue(source.equals(target)); 1664e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertTrue(source.hashCode() == target.hashCode()); 1674e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang } catch (Exception e) { 1684e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang fail(); 1694e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang } 1704e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang } 1714e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 1724e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang @SmallTest 1734e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang public void testEqualsDuplicated() { 1744e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang try { 1754e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang LinkProperties source = new LinkProperties(); 1764e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // set 3 link addresses, eg, [A, A, B] 1774e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.addLinkAddress(new LinkAddress( 1784e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV4), 32)); 1794e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.addLinkAddress(new LinkAddress( 1804e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV4), 32)); 1814e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang source.addLinkAddress(new LinkAddress( 1824e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV6), 128)); 1834e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 1844e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang LinkProperties target = new LinkProperties(); 1854e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang // set 3 link addresses, eg, [A, B, B] 1864e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 1874e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV4), 32)); 1884e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 1894e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV6), 128)); 1904e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang target.addLinkAddress(new LinkAddress( 1914e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang NetworkUtils.numericToInetAddress(ADDRV6), 128)); 1924e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 1934e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertTrue(source.equals(target)); 1944e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang assertTrue(source.hashCode() == target.hashCode()); 1954e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang } catch (Exception e) { 1964e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang fail(); 1974e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang } 1984e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang } 1994e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang 2004e900091c4da26eb1c9f0d232ee0e50f4522cc69John Wang} 201