blob: 0a603b8e4b19c391a6143b841c883cc9ce5f1ff2 [file] [log] [blame]
dalyk1fcb7392018-03-05 12:42:22 -05001/*
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
17package com.android.server.connectivity;
18
19import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF;
dalyk1fcb7392018-03-05 12:42:22 -050020import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
Bruce Chen36ad02a2020-04-17 04:28:04 +000021import static android.net.NetworkCapabilities.MAX_TRANSPORT;
22import static android.net.NetworkCapabilities.MIN_TRANSPORT;
chenbruce5d955622020-02-20 14:28:31 +080023import static android.net.NetworkCapabilities.TRANSPORT_VPN;
24import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
Erik Kline19841792018-05-16 16:41:57 +090025import static android.provider.Settings.Global.PRIVATE_DNS_DEFAULT_MODE;
26import static android.provider.Settings.Global.PRIVATE_DNS_MODE;
27import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER;
dalyk1fcb7392018-03-05 12:42:22 -050028
chenbruce5d955622020-02-20 14:28:31 +080029import static com.android.testutils.MiscAssertsKt.assertContainsExactly;
30import static com.android.testutils.MiscAssertsKt.assertContainsStringsExactly;
31import static com.android.testutils.MiscAssertsKt.assertFieldCountEquals;
32
dalyk1fcb7392018-03-05 12:42:22 -050033import static org.junit.Assert.assertEquals;
34import static org.junit.Assert.assertFalse;
Bruce Chen36ad02a2020-04-17 04:28:04 +000035import static org.junit.Assert.assertNotNull;
dalyk1fcb7392018-03-05 12:42:22 -050036import static org.junit.Assert.assertNull;
37import static org.junit.Assert.assertTrue;
chenbruce5d955622020-02-20 14:28:31 +080038import static org.mockito.Mockito.reset;
39import static org.mockito.Mockito.times;
40import static org.mockito.Mockito.verify;
dalyk1fcb7392018-03-05 12:42:22 -050041import static org.mockito.Mockito.when;
42
chenbruce5d955622020-02-20 14:28:31 +080043import android.annotation.NonNull;
dalyk1fcb7392018-03-05 12:42:22 -050044import android.content.Context;
Luke Huang65914772019-03-16 00:31:46 +080045import android.net.IDnsResolver;
Chalard Jeanf0f364f2018-04-11 18:58:52 +090046import android.net.IpPrefix;
47import android.net.LinkAddress;
dalyk1fcb7392018-03-05 12:42:22 -050048import android.net.LinkProperties;
49import android.net.Network;
Bruce Chen36ad02a2020-04-17 04:28:04 +000050import android.net.NetworkCapabilities;
chenbruce5d955622020-02-20 14:28:31 +080051import android.net.ResolverOptionsParcel;
52import android.net.ResolverParamsParcel;
Chalard Jeanf0f364f2018-04-11 18:58:52 +090053import android.net.RouteInfo;
Remi NGUYEN VANe67b0c32018-12-27 16:43:56 +090054import android.net.shared.PrivateDnsConfig;
dalyk1fcb7392018-03-05 12:42:22 -050055import android.provider.Settings;
dalyk1fcb7392018-03-05 12:42:22 -050056import android.test.mock.MockContentResolver;
Bruce Chen36ad02a2020-04-17 04:28:04 +000057import android.util.SparseArray;
dalyk1fcb7392018-03-05 12:42:22 -050058
Brett Chabot1ae2aa62019-03-04 14:14:56 -080059import androidx.test.filters.SmallTest;
60import androidx.test.runner.AndroidJUnit4;
61
Bruce Chen36ad02a2020-04-17 04:28:04 +000062import com.android.internal.util.MessageUtils;
dalyk1fcb7392018-03-05 12:42:22 -050063import com.android.internal.util.test.FakeSettingsProvider;
Remi NGUYEN VANe67b0c32018-12-27 16:43:56 +090064
65import org.junit.Before;
66import org.junit.Test;
67import org.junit.runner.RunWith;
chenbruce5d955622020-02-20 14:28:31 +080068import org.mockito.ArgumentCaptor;
Remi NGUYEN VANe67b0c32018-12-27 16:43:56 +090069import org.mockito.Mock;
70import org.mockito.MockitoAnnotations;
dalyk1fcb7392018-03-05 12:42:22 -050071
72import java.net.InetAddress;
Chalard Jeanf0f364f2018-04-11 18:58:52 +090073import java.util.Arrays;
dalyk1fcb7392018-03-05 12:42:22 -050074
dalyk1fcb7392018-03-05 12:42:22 -050075/**
76 * Tests for {@link DnsManager}.
77 *
78 * Build, install and run with:
79 * runtest frameworks-net -c com.android.server.connectivity.DnsManagerTest
80 */
81@RunWith(AndroidJUnit4.class)
82@SmallTest
83public class DnsManagerTest {
Chalard Jeanf0f364f2018-04-11 18:58:52 +090084 static final String TEST_IFACENAME = "test_wlan0";
dalyk1fcb7392018-03-05 12:42:22 -050085 static final int TEST_NETID = 100;
86 static final int TEST_NETID_ALTERNATE = 101;
87 static final int TEST_NETID_UNTRACKED = 102;
chenbruce5d955622020-02-20 14:28:31 +080088 static final int TEST_DEFAULT_SAMPLE_VALIDITY_SECONDS = 1800;
89 static final int TEST_DEFAULT_SUCCESS_THRESHOLD_PERCENT = 25;
90 static final int TEST_DEFAULT_MIN_SAMPLES = 8;
91 static final int TEST_DEFAULT_MAX_SAMPLES = 64;
92 static final int[] TEST_TRANSPORT_TYPES = {TRANSPORT_WIFI, TRANSPORT_VPN};
dalyk1fcb7392018-03-05 12:42:22 -050093
94 DnsManager mDnsManager;
95 MockContentResolver mContentResolver;
96
97 @Mock Context mCtx;
Luke Huang65914772019-03-16 00:31:46 +080098 @Mock IDnsResolver mMockDnsResolver;
dalyk1fcb7392018-03-05 12:42:22 -050099 @Mock MockableSystemProperties mSystemProperties;
100
chenbruce5d955622020-02-20 14:28:31 +0800101 private void assertResolverOptionsEquals(
102 @NonNull ResolverOptionsParcel actual,
103 @NonNull ResolverOptionsParcel expected) {
104 assertEquals(actual.hosts, expected.hosts);
105 assertEquals(actual.tcMode, expected.tcMode);
106 assertFieldCountEquals(2, ResolverOptionsParcel.class);
107 }
108
109 private void assertResolverParamsEquals(@NonNull ResolverParamsParcel actual,
110 @NonNull ResolverParamsParcel expected) {
111 assertEquals(actual.netId, expected.netId);
112 assertEquals(actual.sampleValiditySeconds, expected.sampleValiditySeconds);
113 assertEquals(actual.successThreshold, expected.successThreshold);
114 assertEquals(actual.minSamples, expected.minSamples);
115 assertEquals(actual.maxSamples, expected.maxSamples);
116 assertEquals(actual.baseTimeoutMsec, expected.baseTimeoutMsec);
117 assertEquals(actual.retryCount, expected.retryCount);
118 assertContainsStringsExactly(actual.servers, expected.servers);
119 assertContainsStringsExactly(actual.domains, expected.domains);
120 assertEquals(actual.tlsName, expected.tlsName);
121 assertContainsStringsExactly(actual.tlsServers, expected.tlsServers);
122 assertContainsStringsExactly(actual.tlsFingerprints, expected.tlsFingerprints);
123 assertEquals(actual.caCertificate, expected.caCertificate);
124 assertEquals(actual.tlsConnectTimeoutMs, expected.tlsConnectTimeoutMs);
125 assertResolverOptionsEquals(actual.resolverOptions, expected.resolverOptions);
126 assertContainsExactly(actual.transportTypes, expected.transportTypes);
127 assertFieldCountEquals(16, ResolverParamsParcel.class);
128 }
129
dalyk1fcb7392018-03-05 12:42:22 -0500130 @Before
131 public void setUp() throws Exception {
132 MockitoAnnotations.initMocks(this);
133 mContentResolver = new MockContentResolver();
134 mContentResolver.addProvider(Settings.AUTHORITY,
135 new FakeSettingsProvider());
136 when(mCtx.getContentResolver()).thenReturn(mContentResolver);
Luke Huang65914772019-03-16 00:31:46 +0800137 mDnsManager = new DnsManager(mCtx, mMockDnsResolver, mSystemProperties);
dalyk1fcb7392018-03-05 12:42:22 -0500138
139 // Clear the private DNS settings
Erik Kline19841792018-05-16 16:41:57 +0900140 Settings.Global.putString(mContentResolver, PRIVATE_DNS_DEFAULT_MODE, "");
141 Settings.Global.putString(mContentResolver, PRIVATE_DNS_MODE, "");
142 Settings.Global.putString(mContentResolver, PRIVATE_DNS_SPECIFIER, "");
dalyk1fcb7392018-03-05 12:42:22 -0500143 }
144
145 @Test
146 public void testTrackedValidationUpdates() throws Exception {
147 mDnsManager.updatePrivateDns(new Network(TEST_NETID),
148 mDnsManager.getPrivateDnsConfig());
149 mDnsManager.updatePrivateDns(new Network(TEST_NETID_ALTERNATE),
150 mDnsManager.getPrivateDnsConfig());
151 LinkProperties lp = new LinkProperties();
Chalard Jeanf0f364f2018-04-11 18:58:52 +0900152 lp.setInterfaceName(TEST_IFACENAME);
dalyk1fcb7392018-03-05 12:42:22 -0500153 lp.addDnsServer(InetAddress.getByName("3.3.3.3"));
154 lp.addDnsServer(InetAddress.getByName("4.4.4.4"));
155
156 // Send a validation event that is tracked on the alternate netId
chenbruce5d955622020-02-20 14:28:31 +0800157 mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
158 mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
159 mDnsManager.setDefaultDnsSystemProperties(lp.getDnsServers());
160 mDnsManager.flushVmDnsCache();
161 mDnsManager.updateTransportsForNetwork(TEST_NETID_ALTERNATE, TEST_TRANSPORT_TYPES);
162 mDnsManager.noteDnsServersForNetwork(TEST_NETID_ALTERNATE, lp);
163 mDnsManager.flushVmDnsCache();
dalyk1fcb7392018-03-05 12:42:22 -0500164 mDnsManager.updatePrivateDnsValidation(
165 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID_ALTERNATE,
166 InetAddress.parseNumericAddress("4.4.4.4"), "", true));
167 LinkProperties fixedLp = new LinkProperties(lp);
168 mDnsManager.updatePrivateDnsStatus(TEST_NETID, fixedLp);
169 assertFalse(fixedLp.isPrivateDnsActive());
170 assertNull(fixedLp.getPrivateDnsServerName());
171 fixedLp = new LinkProperties(lp);
172 mDnsManager.updatePrivateDnsStatus(TEST_NETID_ALTERNATE, fixedLp);
173 assertTrue(fixedLp.isPrivateDnsActive());
174 assertNull(fixedLp.getPrivateDnsServerName());
Chalard Jeanf0f364f2018-04-11 18:58:52 +0900175 assertEquals(Arrays.asList(InetAddress.getByName("4.4.4.4")),
176 fixedLp.getValidatedPrivateDnsServers());
dalyk1fcb7392018-03-05 12:42:22 -0500177
Chalard Jeanf0f364f2018-04-11 18:58:52 +0900178 // Set up addresses for strict mode and switch to it.
179 lp.addLinkAddress(new LinkAddress("192.0.2.4/24"));
180 lp.addRoute(new RouteInfo((IpPrefix) null, InetAddress.getByName("192.0.2.4"),
181 TEST_IFACENAME));
182 lp.addLinkAddress(new LinkAddress("2001:db8:1::1/64"));
183 lp.addRoute(new RouteInfo((IpPrefix) null, InetAddress.getByName("2001:db8:1::1"),
184 TEST_IFACENAME));
185
dalyk1fcb7392018-03-05 12:42:22 -0500186 Settings.Global.putString(mContentResolver,
Erik Kline19841792018-05-16 16:41:57 +0900187 PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
188 Settings.Global.putString(mContentResolver, PRIVATE_DNS_SPECIFIER, "strictmode.com");
dalyk1fcb7392018-03-05 12:42:22 -0500189 mDnsManager.updatePrivateDns(new Network(TEST_NETID),
Remi NGUYEN VANe67b0c32018-12-27 16:43:56 +0900190 new PrivateDnsConfig("strictmode.com", new InetAddress[] {
Chalard Jeanf0f364f2018-04-11 18:58:52 +0900191 InetAddress.parseNumericAddress("6.6.6.6"),
192 InetAddress.parseNumericAddress("2001:db8:66:66::1")
193 }));
chenbruce5d955622020-02-20 14:28:31 +0800194 mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
195 mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
196 mDnsManager.setDefaultDnsSystemProperties(lp.getDnsServers());
197 mDnsManager.flushVmDnsCache();
dalyk1fcb7392018-03-05 12:42:22 -0500198 fixedLp = new LinkProperties(lp);
199 mDnsManager.updatePrivateDnsStatus(TEST_NETID, fixedLp);
200 assertTrue(fixedLp.isPrivateDnsActive());
201 assertEquals("strictmode.com", fixedLp.getPrivateDnsServerName());
Chalard Jeanf0f364f2018-04-11 18:58:52 +0900202 // No validation events yet.
203 assertEquals(Arrays.asList(new InetAddress[0]), fixedLp.getValidatedPrivateDnsServers());
204 // Validate one.
205 mDnsManager.updatePrivateDnsValidation(
206 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID,
207 InetAddress.parseNumericAddress("6.6.6.6"), "strictmode.com", true));
dalyk1fcb7392018-03-05 12:42:22 -0500208 fixedLp = new LinkProperties(lp);
Chalard Jeanf0f364f2018-04-11 18:58:52 +0900209 mDnsManager.updatePrivateDnsStatus(TEST_NETID, fixedLp);
210 assertEquals(Arrays.asList(InetAddress.parseNumericAddress("6.6.6.6")),
211 fixedLp.getValidatedPrivateDnsServers());
212 // Validate the 2nd one.
213 mDnsManager.updatePrivateDnsValidation(
214 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID,
215 InetAddress.parseNumericAddress("2001:db8:66:66::1"), "strictmode.com", true));
216 fixedLp = new LinkProperties(lp);
217 mDnsManager.updatePrivateDnsStatus(TEST_NETID, fixedLp);
218 assertEquals(Arrays.asList(
219 InetAddress.parseNumericAddress("2001:db8:66:66::1"),
220 InetAddress.parseNumericAddress("6.6.6.6")),
221 fixedLp.getValidatedPrivateDnsServers());
dalyk1fcb7392018-03-05 12:42:22 -0500222 }
223
224 @Test
225 public void testIgnoreUntrackedValidationUpdates() throws Exception {
226 // The PrivateDnsConfig map is empty, so no validation events will
227 // be tracked.
228 LinkProperties lp = new LinkProperties();
229 lp.addDnsServer(InetAddress.getByName("3.3.3.3"));
chenbruce5d955622020-02-20 14:28:31 +0800230 mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
231 mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
232 mDnsManager.setDefaultDnsSystemProperties(lp.getDnsServers());
233 mDnsManager.flushVmDnsCache();
dalyk1fcb7392018-03-05 12:42:22 -0500234 mDnsManager.updatePrivateDnsValidation(
235 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID,
236 InetAddress.parseNumericAddress("3.3.3.3"), "", true));
237 mDnsManager.updatePrivateDnsStatus(TEST_NETID, lp);
238 assertFalse(lp.isPrivateDnsActive());
239 assertNull(lp.getPrivateDnsServerName());
240
241 // Validation event has untracked netId
242 mDnsManager.updatePrivateDns(new Network(TEST_NETID),
243 mDnsManager.getPrivateDnsConfig());
chenbruce5d955622020-02-20 14:28:31 +0800244 mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
245 mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
246 mDnsManager.setDefaultDnsSystemProperties(lp.getDnsServers());
247 mDnsManager.flushVmDnsCache();
dalyk1fcb7392018-03-05 12:42:22 -0500248 mDnsManager.updatePrivateDnsValidation(
249 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID_UNTRACKED,
250 InetAddress.parseNumericAddress("3.3.3.3"), "", true));
251 mDnsManager.updatePrivateDnsStatus(TEST_NETID, lp);
252 assertFalse(lp.isPrivateDnsActive());
253 assertNull(lp.getPrivateDnsServerName());
254
255 // Validation event has untracked ipAddress
256 mDnsManager.updatePrivateDnsValidation(
257 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID,
258 InetAddress.parseNumericAddress("4.4.4.4"), "", true));
259 mDnsManager.updatePrivateDnsStatus(TEST_NETID, lp);
260 assertFalse(lp.isPrivateDnsActive());
261 assertNull(lp.getPrivateDnsServerName());
262
263 // Validation event has untracked hostname
264 mDnsManager.updatePrivateDnsValidation(
265 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID,
266 InetAddress.parseNumericAddress("3.3.3.3"), "hostname",
267 true));
268 mDnsManager.updatePrivateDnsStatus(TEST_NETID, lp);
269 assertFalse(lp.isPrivateDnsActive());
270 assertNull(lp.getPrivateDnsServerName());
271
272 // Validation event failed
273 mDnsManager.updatePrivateDnsValidation(
274 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID,
275 InetAddress.parseNumericAddress("3.3.3.3"), "", false));
276 mDnsManager.updatePrivateDnsStatus(TEST_NETID, lp);
277 assertFalse(lp.isPrivateDnsActive());
278 assertNull(lp.getPrivateDnsServerName());
279
280 // Network removed
281 mDnsManager.removeNetwork(new Network(TEST_NETID));
282 mDnsManager.updatePrivateDnsValidation(
283 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID,
284 InetAddress.parseNumericAddress("3.3.3.3"), "", true));
285 mDnsManager.updatePrivateDnsStatus(TEST_NETID, lp);
286 assertFalse(lp.isPrivateDnsActive());
287 assertNull(lp.getPrivateDnsServerName());
288
289 // Turn private DNS mode off
Erik Kline19841792018-05-16 16:41:57 +0900290 Settings.Global.putString(mContentResolver, PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_OFF);
dalyk1fcb7392018-03-05 12:42:22 -0500291 mDnsManager.updatePrivateDns(new Network(TEST_NETID),
292 mDnsManager.getPrivateDnsConfig());
chenbruce5d955622020-02-20 14:28:31 +0800293 mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
294 mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
295 mDnsManager.setDefaultDnsSystemProperties(lp.getDnsServers());
296 mDnsManager.flushVmDnsCache();
dalyk1fcb7392018-03-05 12:42:22 -0500297 mDnsManager.updatePrivateDnsValidation(
298 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID,
299 InetAddress.parseNumericAddress("3.3.3.3"), "", true));
300 mDnsManager.updatePrivateDnsStatus(TEST_NETID, lp);
301 assertFalse(lp.isPrivateDnsActive());
302 assertNull(lp.getPrivateDnsServerName());
303 }
Erik Kline19841792018-05-16 16:41:57 +0900304
305 @Test
306 public void testOverrideDefaultMode() throws Exception {
307 // Hard-coded default is opportunistic mode.
308 final PrivateDnsConfig cfgAuto = DnsManager.getPrivateDnsConfig(mContentResolver);
309 assertTrue(cfgAuto.useTls);
310 assertEquals("", cfgAuto.hostname);
311 assertEquals(new InetAddress[0], cfgAuto.ips);
312
313 // Pretend a gservices push sets the default to "off".
314 Settings.Global.putString(mContentResolver, PRIVATE_DNS_DEFAULT_MODE, "off");
315 final PrivateDnsConfig cfgOff = DnsManager.getPrivateDnsConfig(mContentResolver);
316 assertFalse(cfgOff.useTls);
317 assertEquals("", cfgOff.hostname);
318 assertEquals(new InetAddress[0], cfgOff.ips);
319
320 // Strict mode still works.
321 Settings.Global.putString(
322 mContentResolver, PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
323 Settings.Global.putString(mContentResolver, PRIVATE_DNS_SPECIFIER, "strictmode.com");
324 final PrivateDnsConfig cfgStrict = DnsManager.getPrivateDnsConfig(mContentResolver);
325 assertTrue(cfgStrict.useTls);
326 assertEquals("strictmode.com", cfgStrict.hostname);
327 assertEquals(new InetAddress[0], cfgStrict.ips);
328 }
chenbruce5d955622020-02-20 14:28:31 +0800329
330 @Test
331 public void testSendDnsConfiguration() throws Exception {
332 reset(mMockDnsResolver);
333 mDnsManager.updatePrivateDns(new Network(TEST_NETID),
334 mDnsManager.getPrivateDnsConfig());
335 final LinkProperties lp = new LinkProperties();
336 lp.setInterfaceName(TEST_IFACENAME);
337 lp.addDnsServer(InetAddress.getByName("3.3.3.3"));
338 lp.addDnsServer(InetAddress.getByName("4.4.4.4"));
339 mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
340 mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
341 mDnsManager.setDefaultDnsSystemProperties(lp.getDnsServers());
342 mDnsManager.flushVmDnsCache();
343
344 final ArgumentCaptor<ResolverParamsParcel> resolverParamsParcelCaptor =
345 ArgumentCaptor.forClass(ResolverParamsParcel.class);
346 verify(mMockDnsResolver, times(1)).setResolverConfiguration(
347 resolverParamsParcelCaptor.capture());
348 final ResolverParamsParcel actualParams = resolverParamsParcelCaptor.getValue();
349 final ResolverParamsParcel expectedParams = new ResolverParamsParcel();
350 expectedParams.netId = TEST_NETID;
351 expectedParams.sampleValiditySeconds = TEST_DEFAULT_SAMPLE_VALIDITY_SECONDS;
352 expectedParams.successThreshold = TEST_DEFAULT_SUCCESS_THRESHOLD_PERCENT;
353 expectedParams.minSamples = TEST_DEFAULT_MIN_SAMPLES;
354 expectedParams.maxSamples = TEST_DEFAULT_MAX_SAMPLES;
355 expectedParams.servers = new String[]{"3.3.3.3", "4.4.4.4"};
356 expectedParams.domains = new String[]{};
357 expectedParams.tlsName = "";
358 expectedParams.tlsServers = new String[]{"3.3.3.3", "4.4.4.4"};
359 expectedParams.transportTypes = TEST_TRANSPORT_TYPES;
360 expectedParams.resolverOptions = new ResolverOptionsParcel();
361 assertResolverParamsEquals(actualParams, expectedParams);
362 }
Bruce Chen36ad02a2020-04-17 04:28:04 +0000363
364 @Test
365 public void testTransportTypesEqual() throws Exception {
366 SparseArray<String> ncTransTypes = MessageUtils.findMessageNames(
367 new Class[] { NetworkCapabilities.class }, new String[]{ "TRANSPORT_" });
368 SparseArray<String> dnsTransTypes = MessageUtils.findMessageNames(
369 new Class[] { IDnsResolver.class }, new String[]{ "TRANSPORT_" });
370 assertEquals(0, MIN_TRANSPORT);
371 assertEquals(MAX_TRANSPORT + 1, ncTransTypes.size());
372 // TRANSPORT_UNKNOWN in IDnsResolver is defined to -1 and only for resolver.
373 assertEquals("TRANSPORT_UNKNOWN", dnsTransTypes.get(-1));
374 assertEquals(ncTransTypes.size(), dnsTransTypes.size() - 1);
375 for (int i = MIN_TRANSPORT; i < MAX_TRANSPORT; i++) {
376 String name = ncTransTypes.get(i, null);
377 assertNotNull("Could not find NetworkCapabilies.TRANSPORT_* constant equal to "
378 + i, name);
379 assertEquals(name, dnsTransTypes.get(i));
380 }
381 }
dalyk1fcb7392018-03-05 12:42:22 -0500382}