183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti/* 283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * Copyright (C) 2014 The Android Open Source Project 383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * 483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * Licensed under the Apache License, Version 2.0 (the "License"); 583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * you may not use this file except in compliance with the License. 683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * You may obtain a copy of the License at 783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * 883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * http://www.apache.org/licenses/LICENSE-2.0 983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * 1083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * Unless required by applicable law or agreed to in writing, software 1183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * distributed under the License is distributed on an "AS IS" BASIS, 1283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * See the License for the specific language governing permissions and 1483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti * limitations under the License. 1583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti */ 1683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 1783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colittipackage android.net; 1883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 1983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colittiimport android.net.IpPrefix; 2083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colittiimport android.net.LinkAddress; 2183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colittiimport android.net.RouteInfo; 2283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colittiimport android.net.StaticIpConfiguration; 2383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colittiimport android.os.Parcel; 2483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 2583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colittiimport java.net.InetAddress; 2683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colittiimport java.util.HashSet; 2783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 2883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colittiimport junit.framework.TestCase; 2983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colittiimport android.test.suitebuilder.annotation.SmallTest; 3083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 3183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colittiimport static org.junit.Assert.*; 3283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 3383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 3483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colittipublic class StaticIpConfigurationTest extends TestCase { 3583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 3683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private static final String ADDRSTR = "192.0.2.2/25"; 3783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private static final LinkAddress ADDR = new LinkAddress(ADDRSTR); 3883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private static final InetAddress GATEWAY = IpAddress("192.0.2.1"); 3983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private static final InetAddress OFFLINKGATEWAY = IpAddress("192.0.2.129"); 4083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private static final InetAddress DNS1 = IpAddress("8.8.8.8"); 4183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private static final InetAddress DNS2 = IpAddress("8.8.4.4"); 4283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private static final InetAddress DNS3 = IpAddress("4.2.2.2"); 4383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private static final String IFACE = "eth0"; 4483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 4583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private static InetAddress IpAddress(String addr) { 4683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti return InetAddress.parseNumericAddress(addr); 4783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 4883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 4983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private void checkEmpty(StaticIpConfiguration s) { 5083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertNull(s.ipAddress); 5183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertNull(s.gateway); 5283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertNull(s.domains); 5383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(0, s.dnsServers.size()); 5483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 5583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 5683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private boolean isEqual(StaticIpConfiguration s1, StaticIpConfiguration s2) { 5783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti return s1.equals(s2); 5883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 5983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 6083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private void assertEquals(StaticIpConfiguration s1, StaticIpConfiguration s2) { 6183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertTrue(isEqual(s1, s2)); 6283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 6383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 6483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private void assertNotEquals(StaticIpConfiguration s1, StaticIpConfiguration s2) { 6583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertFalse(isEqual(s1, s2)); 6683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 6783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 6883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private StaticIpConfiguration makeTestObject() { 6983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti StaticIpConfiguration s = new StaticIpConfiguration(); 7083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.ipAddress = ADDR; 7183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.gateway = GATEWAY; 7283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.dnsServers.add(DNS1); 7383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.dnsServers.add(DNS2); 7483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.dnsServers.add(DNS3); 7583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.domains = "google.com"; 7683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti return s; 7783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 7883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 7983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti @SmallTest 8083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti public void testConstructor() { 8183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti StaticIpConfiguration s = new StaticIpConfiguration(); 8283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti checkEmpty(s); 8383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 8483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 8583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti @SmallTest 8683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti public void testCopyAndClear() { 8783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti StaticIpConfiguration empty = new StaticIpConfiguration((StaticIpConfiguration) null); 8883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti checkEmpty(empty); 8983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 9083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti StaticIpConfiguration s1 = makeTestObject(); 9183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti StaticIpConfiguration s2 = new StaticIpConfiguration(s1); 9283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(s1, s2); 9383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s2.clear(); 9483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(empty, s2); 9583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 9683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 9783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti @SmallTest 9883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti public void testHashCodeAndEquals() { 9983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti HashSet<Integer> hashCodes = new HashSet(); 10083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti hashCodes.add(0); 10183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 10283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti StaticIpConfiguration s = new StaticIpConfiguration(); 10383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti // Check that this hash code is nonzero and different from all the ones seen so far. 10483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertTrue(hashCodes.add(s.hashCode())); 10583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 10683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.ipAddress = ADDR; 10783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertTrue(hashCodes.add(s.hashCode())); 10883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 10983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.gateway = GATEWAY; 11083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertTrue(hashCodes.add(s.hashCode())); 11183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 11283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.dnsServers.add(DNS1); 11383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertTrue(hashCodes.add(s.hashCode())); 11483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 11583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.dnsServers.add(DNS2); 11683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertTrue(hashCodes.add(s.hashCode())); 11783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 11883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.dnsServers.add(DNS3); 11983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertTrue(hashCodes.add(s.hashCode())); 12083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 12183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.domains = "example.com"; 12283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertTrue(hashCodes.add(s.hashCode())); 12383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 12483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertFalse(s.equals(null)); 12583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(s, s); 12683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 12783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti StaticIpConfiguration s2 = new StaticIpConfiguration(s); 12883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(s, s2); 12983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 13083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.ipAddress = new LinkAddress(DNS1, 32); 13183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertNotEquals(s, s2); 13283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 13383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s2 = new StaticIpConfiguration(s); 13483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.domains = "foo"; 13583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertNotEquals(s, s2); 13683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 13783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s2 = new StaticIpConfiguration(s); 13883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.gateway = DNS2; 13983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertNotEquals(s, s2); 14083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 14183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s2 = new StaticIpConfiguration(s); 14283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.dnsServers.add(DNS3); 14383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertNotEquals(s, s2); 14483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 14583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 14683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti @SmallTest 14783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti public void testToLinkProperties() { 14883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti LinkProperties expected = new LinkProperties(); 14983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.setInterfaceName(IFACE); 15083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 15183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti StaticIpConfiguration s = new StaticIpConfiguration(); 15283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(expected, s.toLinkProperties(IFACE)); 15383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 15483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti final RouteInfo connectedRoute = new RouteInfo(new IpPrefix(ADDRSTR), null, IFACE); 15583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.ipAddress = ADDR; 15683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.addLinkAddress(ADDR); 15783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.addRoute(connectedRoute); 15883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(expected, s.toLinkProperties(IFACE)); 15983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 16083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.gateway = GATEWAY; 16183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti RouteInfo defaultRoute = new RouteInfo(new IpPrefix("0.0.0.0/0"), GATEWAY, IFACE); 16283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.addRoute(defaultRoute); 16383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(expected, s.toLinkProperties(IFACE)); 16483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 16583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.gateway = OFFLINKGATEWAY; 16683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.removeRoute(defaultRoute); 16783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti defaultRoute = new RouteInfo(new IpPrefix("0.0.0.0/0"), OFFLINKGATEWAY, IFACE); 16883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.addRoute(defaultRoute); 16983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 17083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti RouteInfo gatewayRoute = new RouteInfo(new IpPrefix("192.0.2.129/32"), null, IFACE); 17183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.addRoute(gatewayRoute); 17283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(expected, s.toLinkProperties(IFACE)); 17383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 17483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.dnsServers.add(DNS1); 17583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.addDnsServer(DNS1); 17683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(expected, s.toLinkProperties(IFACE)); 17783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 17883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.dnsServers.add(DNS2); 17983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.dnsServers.add(DNS3); 18083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.addDnsServer(DNS2); 18183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.addDnsServer(DNS3); 18283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(expected, s.toLinkProperties(IFACE)); 18383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 18483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.domains = "google.com"; 18583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.setDomains("google.com"); 18683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(expected, s.toLinkProperties(IFACE)); 18783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 18883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.gateway = null; 18983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.removeRoute(defaultRoute); 19083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.removeRoute(gatewayRoute); 19183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(expected, s.toLinkProperties(IFACE)); 19283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 19383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti // Without knowing the IP address, we don't have a directly-connected route, so we can't 19483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti // tell if the gateway is off-link or not and we don't add a host route. This isn't a real 19583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti // configuration, but we should at least not crash. 19683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.gateway = OFFLINKGATEWAY; 19783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.ipAddress = null; 19883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.removeLinkAddress(ADDR); 19983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.removeRoute(connectedRoute); 20083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti expected.addRoute(defaultRoute); 20183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(expected, s.toLinkProperties(IFACE)); 20283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 20383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 20483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti private StaticIpConfiguration passThroughParcel(StaticIpConfiguration s) { 20583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti Parcel p = Parcel.obtain(); 20683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti StaticIpConfiguration s2 = null; 20783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti try { 20883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s.writeToParcel(p, 0); 20983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti p.setDataPosition(0); 21083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti s2 = StaticIpConfiguration.CREATOR.createFromParcel(p); 21183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } finally { 21283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti p.recycle(); 21383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 21483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertNotNull(s2); 21583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti return s2; 21683faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 21783faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 21883faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti @SmallTest 21983faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti public void testParceling() { 22083faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti StaticIpConfiguration s = makeTestObject(); 22183faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti StaticIpConfiguration s2 = passThroughParcel(s); 22283faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti assertEquals(s, s2); 22383faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti } 22483faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti} 22583faf72f846c183960ba7ac035073ff3767a13e8Lorenzo Colitti 226