1 /* 2 * Copyright (C) 2018 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 17 package android.net.dhcp; 18 19 import static android.net.InetAddresses.parseNumericAddress; 20 21 import static org.junit.Assert.assertEquals; 22 import static org.junit.Assert.assertFalse; 23 import static org.junit.Assert.assertTrue; 24 25 import android.net.LinkAddress; 26 27 import androidx.test.filters.SmallTest; 28 import androidx.test.runner.AndroidJUnit4; 29 30 import org.junit.Before; 31 import org.junit.Test; 32 import org.junit.runner.RunWith; 33 34 import java.net.Inet4Address; 35 import java.util.Arrays; 36 import java.util.HashSet; 37 import java.util.Set; 38 import java.util.stream.Collectors; 39 import java.util.stream.IntStream; 40 41 @RunWith(AndroidJUnit4.class) 42 @SmallTest 43 public class DhcpServingParamsParcelExtTest { 44 private static final Inet4Address TEST_ADDRESS = inet4Addr("192.168.0.123"); 45 private static final Inet4Address TEST_CLIENT_ADDRESS = inet4Addr("192.168.0.42"); 46 private static final int TEST_ADDRESS_PARCELED = 0xc0a8007b; 47 private static final int TEST_CLIENT_ADDRESS_PARCELED = 0xc0a8002a; 48 private static final int TEST_PREFIX_LENGTH = 17; 49 private static final int TEST_LEASE_TIME_SECS = 120; 50 private static final int TEST_MTU = 1000; 51 private static final Set<Inet4Address> TEST_ADDRESS_SET = 52 new HashSet<Inet4Address>(Arrays.asList( 53 new Inet4Address[] {inet4Addr("192.168.1.123"), inet4Addr("192.168.1.124")})); 54 private static final Set<Integer> TEST_ADDRESS_SET_PARCELED = 55 new HashSet<Integer>(Arrays.asList(new Integer[] {0xc0a8017b, 0xc0a8017c})); 56 57 private DhcpServingParamsParcelExt mParcel; 58 59 @Before setUp()60 public void setUp() { 61 mParcel = new DhcpServingParamsParcelExt(); 62 } 63 64 @Test testSetServerAddr()65 public void testSetServerAddr() { 66 mParcel.setServerAddr(new LinkAddress(TEST_ADDRESS, TEST_PREFIX_LENGTH)); 67 68 assertEquals(TEST_ADDRESS_PARCELED, mParcel.serverAddr); 69 assertEquals(TEST_PREFIX_LENGTH, mParcel.serverAddrPrefixLength); 70 } 71 72 @Test testSetDefaultRouters()73 public void testSetDefaultRouters() { 74 mParcel.setDefaultRouters(TEST_ADDRESS_SET); 75 assertEquals(TEST_ADDRESS_SET_PARCELED, asSet(mParcel.defaultRouters)); 76 } 77 78 @Test testSetDnsServers()79 public void testSetDnsServers() { 80 mParcel.setDnsServers(TEST_ADDRESS_SET); 81 assertEquals(TEST_ADDRESS_SET_PARCELED, asSet(mParcel.dnsServers)); 82 } 83 84 @Test testSetExcludedAddrs()85 public void testSetExcludedAddrs() { 86 mParcel.setExcludedAddrs(TEST_ADDRESS_SET); 87 assertEquals(TEST_ADDRESS_SET_PARCELED, asSet(mParcel.excludedAddrs)); 88 } 89 90 @Test testSetDhcpLeaseTimeSecs()91 public void testSetDhcpLeaseTimeSecs() { 92 mParcel.setDhcpLeaseTimeSecs(TEST_LEASE_TIME_SECS); 93 assertEquals(TEST_LEASE_TIME_SECS, mParcel.dhcpLeaseTimeSecs); 94 } 95 96 @Test testSetLinkMtu()97 public void testSetLinkMtu() { 98 mParcel.setLinkMtu(TEST_MTU); 99 assertEquals(TEST_MTU, mParcel.linkMtu); 100 } 101 102 @Test testSetMetered()103 public void testSetMetered() { 104 mParcel.setMetered(true); 105 assertTrue(mParcel.metered); 106 mParcel.setMetered(false); 107 assertFalse(mParcel.metered); 108 } 109 110 @Test testSetClientAddr()111 public void testSetClientAddr() { 112 mParcel.setSingleClientAddr(TEST_CLIENT_ADDRESS); 113 assertEquals(TEST_CLIENT_ADDRESS_PARCELED, mParcel.singleClientAddr); 114 } 115 inet4Addr(String addr)116 private static Inet4Address inet4Addr(String addr) { 117 return (Inet4Address) parseNumericAddress(addr); 118 } 119 asSet(int[] ints)120 private static Set<Integer> asSet(int[] ints) { 121 return IntStream.of(ints).boxed().collect(Collectors.toSet()); 122 } 123 } 124