From 768315232018eb96fa225cc3858fbc1404b01bfa Mon Sep 17 00:00:00 2001 From: Automerger Merge Worker Date: Fri, 13 Mar 2020 07:13:45 +0000 Subject: [PATCH] Add IpConfigurationTest for new @SystemApi Add new cts for @SystemApi in IpConfiguration. Bug: 139268426 Bug: 135998869 Test: atest android.net.cts.IpConfigurationTest Change-Id: I942791abbdccc10d0e2a0018339a2ee4f74c7645 Merged-In: I942791abbdccc10d0e2a0018339a2ee4f74c7645 (cherry picked from aosp/1171795) --- .../android/net/cts/IpConfigurationTest.java | 151 ++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 tests/cts/net/src/android/net/cts/IpConfigurationTest.java diff --git a/tests/cts/net/src/android/net/cts/IpConfigurationTest.java b/tests/cts/net/src/android/net/cts/IpConfigurationTest.java new file mode 100644 index 0000000000..21be35142d --- /dev/null +++ b/tests/cts/net/src/android/net/cts/IpConfigurationTest.java @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.net.cts; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import android.net.IpConfiguration; +import android.net.LinkAddress; +import android.net.ProxyInfo; +import android.net.StaticIpConfiguration; + +import androidx.test.runner.AndroidJUnit4; + +import libcore.net.InetAddressUtils; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.net.InetAddress; +import java.util.ArrayList; + +@RunWith(AndroidJUnit4.class) +public final class IpConfigurationTest { + private static final int TYPE_IPASSIGNMENT_STATIC = 0; + private static final int TYPE_IPASSIGNMENT_DHCP = 1; + + private static final int TYPE_PROXY_SETTINGS_NONE = 0; + private static final int TYPE_PROXY_SETTINGS_STATIC = 1; + private static final int TYPE_PROXY_SETTINGS_PAC = 2; + + private static final LinkAddress LINKADDR = new LinkAddress("192.0.2.2/25"); + private static final InetAddress GATEWAY = InetAddressUtils.parseNumericAddress("192.0.2.1"); + private static final InetAddress DNS1 = InetAddressUtils.parseNumericAddress("8.8.8.8"); + private static final InetAddress DNS2 = InetAddressUtils.parseNumericAddress("8.8.4.4"); + private static final String DOMAINS = "example.com"; + + private static final ArrayList dnsServers = new ArrayList<>(); + + private StaticIpConfiguration mStaticIpConfig; + private ProxyInfo mProxy; + + @Before + public void setUp() { + dnsServers.add(DNS1); + dnsServers.add(DNS2); + mStaticIpConfig = new StaticIpConfiguration.Builder() + .setIpAddress(LINKADDR) + .setGateway(GATEWAY) + .setDnsServers(dnsServers) + .setDomains(DOMAINS) + .build(); + + mProxy = ProxyInfo.buildDirectProxy("test", 8888); + } + + @Test + public void testConstructor() { + IpConfiguration ipConfig = new IpConfiguration(); + checkEmpty(ipConfig); + assertIpConfigurationEqual(ipConfig, new IpConfiguration()); + assertIpConfigurationEqual(ipConfig, new IpConfiguration(ipConfig)); + + ipConfig = createIpConfiguration(TYPE_IPASSIGNMENT_STATIC, + TYPE_PROXY_SETTINGS_PAC); + assertIpConfigurationEqual(ipConfig, new IpConfiguration(ipConfig)); + + ipConfig = createIpConfiguration(TYPE_IPASSIGNMENT_STATIC, + TYPE_PROXY_SETTINGS_STATIC); + assertIpConfigurationEqual(ipConfig, new IpConfiguration(ipConfig)); + + ipConfig = createIpConfiguration(TYPE_IPASSIGNMENT_DHCP, + TYPE_PROXY_SETTINGS_PAC); + assertIpConfigurationEqual(ipConfig, new IpConfiguration(ipConfig)); + + ipConfig = createIpConfiguration(TYPE_IPASSIGNMENT_DHCP, + TYPE_PROXY_SETTINGS_STATIC); + assertIpConfigurationEqual(ipConfig, new IpConfiguration(ipConfig)); + + ipConfig = createIpConfiguration(TYPE_IPASSIGNMENT_DHCP, + TYPE_PROXY_SETTINGS_NONE); + assertIpConfigurationEqual(ipConfig, new IpConfiguration(ipConfig)); + } + + private void checkEmpty(IpConfiguration config) { + assertEquals(IpConfiguration.IpAssignment.UNASSIGNED, + config.getIpAssignment().UNASSIGNED); + assertEquals(IpConfiguration.ProxySettings.UNASSIGNED, + config.getProxySettings().UNASSIGNED); + assertNull(config.getStaticIpConfiguration()); + assertNull(config.getHttpProxy()); + } + + private IpConfiguration createIpConfiguration(int ipAssignmentType, + int proxySettingType) { + + final IpConfiguration ipConfig = new IpConfiguration(); + + switch (ipAssignmentType) { + case TYPE_IPASSIGNMENT_STATIC: + ipConfig.setIpAssignment(IpConfiguration.IpAssignment.STATIC); + break; + case TYPE_IPASSIGNMENT_DHCP: + ipConfig.setIpAssignment(IpConfiguration.IpAssignment.DHCP); + break; + default: + throw new IllegalArgumentException("Unknown ip assignment type."); + } + + switch (proxySettingType) { + case TYPE_PROXY_SETTINGS_NONE: + ipConfig.setProxySettings(IpConfiguration.ProxySettings.NONE); + break; + case TYPE_PROXY_SETTINGS_STATIC: + ipConfig.setProxySettings(IpConfiguration.ProxySettings.STATIC); + break; + case TYPE_PROXY_SETTINGS_PAC: + ipConfig.setProxySettings(IpConfiguration.ProxySettings.PAC); + break; + default: + throw new IllegalArgumentException("Unknown proxy setting type."); + } + + ipConfig.setStaticIpConfiguration(mStaticIpConfig); + ipConfig.setHttpProxy(mProxy); + + return ipConfig; + } + + private void assertIpConfigurationEqual(IpConfiguration source, IpConfiguration target) { + assertEquals(source.getIpAssignment(), target.getIpAssignment()); + assertEquals(source.getProxySettings(), target.getProxySettings()); + assertEquals(source.getHttpProxy(), target.getHttpProxy()); + assertEquals(source.getStaticIpConfiguration(), target.getStaticIpConfiguration()); + } +}