1/* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.net; 18 19import android.net.LinkProperties; 20import android.net.RouteInfo; 21import android.test.suitebuilder.annotation.SmallTest; 22import junit.framework.TestCase; 23 24import java.net.InetAddress; 25 26public class LinkPropertiesTest extends TestCase { 27 private static String ADDRV4 = "75.208.6.1"; 28 private static String ADDRV6 = "2001:0db8:85a3:0000:0000:8a2e:0370:7334"; 29 private static String DNS1 = "75.208.7.1"; 30 private static String DNS2 = "69.78.7.1"; 31 private static String GATEWAY1 = "75.208.8.1"; 32 private static String GATEWAY2 = "69.78.8.1"; 33 private static String NAME = "qmi0"; 34 35 @SmallTest 36 public void testEqualsNull() { 37 LinkProperties source = new LinkProperties(); 38 LinkProperties target = new LinkProperties(); 39 40 assertFalse(source == target); 41 assertTrue(source.equals(target)); 42 assertTrue(source.hashCode() == target.hashCode()); 43 } 44 45 @SmallTest 46 public void testEqualsSameOrder() { 47 try { 48 LinkProperties source = new LinkProperties(); 49 source.setInterfaceName(NAME); 50 // set 2 link addresses 51 source.addLinkAddress(new LinkAddress( 52 NetworkUtils.numericToInetAddress(ADDRV4), 32)); 53 source.addLinkAddress(new LinkAddress( 54 NetworkUtils.numericToInetAddress(ADDRV6), 128)); 55 // set 2 dnses 56 source.addDns(NetworkUtils.numericToInetAddress(DNS1)); 57 source.addDns(NetworkUtils.numericToInetAddress(DNS2)); 58 // set 2 gateways 59 source.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 60 source.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 61 62 LinkProperties target = new LinkProperties(); 63 64 // All fields are same 65 target.setInterfaceName(NAME); 66 target.addLinkAddress(new LinkAddress( 67 NetworkUtils.numericToInetAddress(ADDRV4), 32)); 68 target.addLinkAddress(new LinkAddress( 69 NetworkUtils.numericToInetAddress(ADDRV6), 128)); 70 target.addDns(NetworkUtils.numericToInetAddress(DNS1)); 71 target.addDns(NetworkUtils.numericToInetAddress(DNS2)); 72 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 73 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 74 75 assertTrue(source.equals(target)); 76 assertTrue(source.hashCode() == target.hashCode()); 77 78 target.clear(); 79 // change Interface Name 80 target.setInterfaceName("qmi1"); 81 target.addLinkAddress(new LinkAddress( 82 NetworkUtils.numericToInetAddress(ADDRV4), 32)); 83 target.addLinkAddress(new LinkAddress( 84 NetworkUtils.numericToInetAddress(ADDRV6), 128)); 85 target.addDns(NetworkUtils.numericToInetAddress(DNS1)); 86 target.addDns(NetworkUtils.numericToInetAddress(DNS2)); 87 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 88 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 89 assertFalse(source.equals(target)); 90 91 target.clear(); 92 target.setInterfaceName(NAME); 93 // change link addresses 94 target.addLinkAddress(new LinkAddress( 95 NetworkUtils.numericToInetAddress("75.208.6.2"), 32)); 96 target.addLinkAddress(new LinkAddress( 97 NetworkUtils.numericToInetAddress(ADDRV6), 128)); 98 target.addDns(NetworkUtils.numericToInetAddress(DNS1)); 99 target.addDns(NetworkUtils.numericToInetAddress(DNS2)); 100 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 101 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 102 assertFalse(source.equals(target)); 103 104 target.clear(); 105 target.setInterfaceName(NAME); 106 target.addLinkAddress(new LinkAddress( 107 NetworkUtils.numericToInetAddress(ADDRV4), 32)); 108 target.addLinkAddress(new LinkAddress( 109 NetworkUtils.numericToInetAddress(ADDRV6), 128)); 110 // change dnses 111 target.addDns(NetworkUtils.numericToInetAddress("75.208.7.2")); 112 target.addDns(NetworkUtils.numericToInetAddress(DNS2)); 113 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 114 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 115 assertFalse(source.equals(target)); 116 117 target.clear(); 118 target.setInterfaceName(NAME); 119 target.addLinkAddress(new LinkAddress( 120 NetworkUtils.numericToInetAddress(ADDRV4), 32)); 121 target.addLinkAddress(new LinkAddress( 122 NetworkUtils.numericToInetAddress(ADDRV6), 128)); 123 target.addDns(NetworkUtils.numericToInetAddress(DNS1)); 124 target.addDns(NetworkUtils.numericToInetAddress(DNS2)); 125 // change gateway 126 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress("75.208.8.2"))); 127 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 128 assertFalse(source.equals(target)); 129 130 } catch (Exception e) { 131 throw new RuntimeException(e.toString()); 132 //fail(); 133 } 134 } 135 136 @SmallTest 137 public void testEqualsDifferentOrder() { 138 try { 139 LinkProperties source = new LinkProperties(); 140 source.setInterfaceName(NAME); 141 // set 2 link addresses 142 source.addLinkAddress(new LinkAddress( 143 NetworkUtils.numericToInetAddress(ADDRV4), 32)); 144 source.addLinkAddress(new LinkAddress( 145 NetworkUtils.numericToInetAddress(ADDRV6), 128)); 146 // set 2 dnses 147 source.addDns(NetworkUtils.numericToInetAddress(DNS1)); 148 source.addDns(NetworkUtils.numericToInetAddress(DNS2)); 149 // set 2 gateways 150 source.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 151 source.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 152 153 LinkProperties target = new LinkProperties(); 154 // Exchange order 155 target.setInterfaceName(NAME); 156 target.addLinkAddress(new LinkAddress( 157 NetworkUtils.numericToInetAddress(ADDRV6), 128)); 158 target.addLinkAddress(new LinkAddress( 159 NetworkUtils.numericToInetAddress(ADDRV4), 32)); 160 target.addDns(NetworkUtils.numericToInetAddress(DNS2)); 161 target.addDns(NetworkUtils.numericToInetAddress(DNS1)); 162 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2))); 163 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1))); 164 165 assertTrue(source.equals(target)); 166 assertTrue(source.hashCode() == target.hashCode()); 167 } catch (Exception e) { 168 fail(); 169 } 170 } 171 172 @SmallTest 173 public void testEqualsDuplicated() { 174 try { 175 LinkProperties source = new LinkProperties(); 176 // set 3 link addresses, eg, [A, A, B] 177 source.addLinkAddress(new LinkAddress( 178 NetworkUtils.numericToInetAddress(ADDRV4), 32)); 179 source.addLinkAddress(new LinkAddress( 180 NetworkUtils.numericToInetAddress(ADDRV4), 32)); 181 source.addLinkAddress(new LinkAddress( 182 NetworkUtils.numericToInetAddress(ADDRV6), 128)); 183 184 LinkProperties target = new LinkProperties(); 185 // set 3 link addresses, eg, [A, B, B] 186 target.addLinkAddress(new LinkAddress( 187 NetworkUtils.numericToInetAddress(ADDRV4), 32)); 188 target.addLinkAddress(new LinkAddress( 189 NetworkUtils.numericToInetAddress(ADDRV6), 128)); 190 target.addLinkAddress(new LinkAddress( 191 NetworkUtils.numericToInetAddress(ADDRV6), 128)); 192 193 assertTrue(source.equals(target)); 194 assertTrue(source.hashCode() == target.hashCode()); 195 } catch (Exception e) { 196 fail(); 197 } 198 } 199 200} 201