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)
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 0000000..21be351
--- /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<InetAddress> 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());
+ }
+}