Merge "Use async private DNS resolution for privdns CTS" into main
This commit is contained in:
commit
cc2e593d7b
2 changed files with 74 additions and 15 deletions
|
|
@ -23,6 +23,7 @@ import static android.net.DnsResolver.TYPE_A;
|
||||||
import static android.net.DnsResolver.TYPE_AAAA;
|
import static android.net.DnsResolver.TYPE_AAAA;
|
||||||
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
||||||
import static android.net.cts.util.CtsNetUtils.TestNetworkCallback;
|
import static android.net.cts.util.CtsNetUtils.TestNetworkCallback;
|
||||||
|
import static android.provider.DeviceConfig.NAMESPACE_CONNECTIVITY;
|
||||||
import static android.system.OsConstants.ETIMEDOUT;
|
import static android.system.OsConstants.ETIMEDOUT;
|
||||||
|
|
||||||
import static com.android.testutils.DevSdkIgnoreRuleKt.SC_V2;
|
import static com.android.testutils.DevSdkIgnoreRuleKt.SC_V2;
|
||||||
|
|
@ -59,11 +60,14 @@ import androidx.test.runner.AndroidJUnit4;
|
||||||
import com.android.net.module.util.DnsPacket;
|
import com.android.net.module.util.DnsPacket;
|
||||||
import com.android.testutils.DevSdkIgnoreRule;
|
import com.android.testutils.DevSdkIgnoreRule;
|
||||||
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
|
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
|
||||||
|
import com.android.testutils.DeviceConfigRule;
|
||||||
import com.android.testutils.DnsResolverModuleTest;
|
import com.android.testutils.DnsResolverModuleTest;
|
||||||
import com.android.testutils.SkipPresubmit;
|
import com.android.testutils.SkipPresubmit;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.ClassRule;
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
@ -80,6 +84,8 @@ import java.util.concurrent.TimeUnit;
|
||||||
@AppModeFull(reason = "WRITE_SECURE_SETTINGS permission can't be granted to instant apps")
|
@AppModeFull(reason = "WRITE_SECURE_SETTINGS permission can't be granted to instant apps")
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class DnsResolverTest {
|
public class DnsResolverTest {
|
||||||
|
@ClassRule
|
||||||
|
public static final DeviceConfigRule DEVICE_CONFIG_CLASS_RULE = new DeviceConfigRule();
|
||||||
@Rule
|
@Rule
|
||||||
public final DevSdkIgnoreRule ignoreRule = new DevSdkIgnoreRule();
|
public final DevSdkIgnoreRule ignoreRule = new DevSdkIgnoreRule();
|
||||||
|
|
||||||
|
|
@ -123,6 +129,20 @@ public class DnsResolverTest {
|
||||||
|
|
||||||
private TestNetworkCallback mWifiRequestCallback = null;
|
private TestNetworkCallback mWifiRequestCallback = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see BeforeClass
|
||||||
|
*/
|
||||||
|
@BeforeClass
|
||||||
|
public static void beforeClass() throws Exception {
|
||||||
|
// Use async private DNS resolution to avoid flakes due to races applying the setting
|
||||||
|
DEVICE_CONFIG_CLASS_RULE.setConfig(NAMESPACE_CONNECTIVITY,
|
||||||
|
"networkmonitor_async_privdns_resolution", "1");
|
||||||
|
// Make sure NetworkMonitor is restarted before and after the test so the flag is applied
|
||||||
|
// and cleaned up.
|
||||||
|
maybeToggleWifiAndCell();
|
||||||
|
DEVICE_CONFIG_CLASS_RULE.runAfterNextCleanup(DnsResolverTest::maybeToggleWifiAndCell);
|
||||||
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
mContext = InstrumentationRegistry.getContext();
|
mContext = InstrumentationRegistry.getContext();
|
||||||
|
|
@ -144,6 +164,12 @@ public class DnsResolverTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void maybeToggleWifiAndCell() throws Exception {
|
||||||
|
final CtsNetUtils utils = new CtsNetUtils(InstrumentationRegistry.getContext());
|
||||||
|
utils.reconnectWifiIfSupported();
|
||||||
|
utils.reconnectCellIfSupported();
|
||||||
|
}
|
||||||
|
|
||||||
private static String byteArrayToHexString(byte[] bytes) {
|
private static String byteArrayToHexString(byte[] bytes) {
|
||||||
char[] hexChars = new char[bytes.length * 2];
|
char[] hexChars = new char[bytes.length * 2];
|
||||||
for (int i = 0; i < bytes.length; ++i) {
|
for (int i = 0; i < bytes.length; ++i) {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,12 @@
|
||||||
package android.net.cts;
|
package android.net.cts;
|
||||||
|
|
||||||
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
||||||
|
import static android.provider.DeviceConfig.NAMESPACE_CONNECTIVITY;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
@ -28,9 +34,21 @@ import android.net.cts.util.CtsNetUtils;
|
||||||
import android.platform.test.annotations.AppModeFull;
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.system.ErrnoException;
|
import android.system.ErrnoException;
|
||||||
import android.system.OsConstants;
|
import android.system.OsConstants;
|
||||||
import android.test.AndroidTestCase;
|
|
||||||
|
|
||||||
public class MultinetworkApiTest extends AndroidTestCase {
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry;
|
||||||
|
|
||||||
|
import com.android.testutils.DeviceConfigRule;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class MultinetworkApiTest {
|
||||||
|
@Rule
|
||||||
|
public final DeviceConfigRule mDeviceConfigRule = new DeviceConfigRule();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
System.loadLibrary("nativemultinetwork_jni");
|
System.loadLibrary("nativemultinetwork_jni");
|
||||||
|
|
@ -58,20 +76,17 @@ public class MultinetworkApiTest extends AndroidTestCase {
|
||||||
private CtsNetUtils mCtsNetUtils;
|
private CtsNetUtils mCtsNetUtils;
|
||||||
private String mOldMode;
|
private String mOldMode;
|
||||||
private String mOldDnsSpecifier;
|
private String mOldDnsSpecifier;
|
||||||
|
private Context mContext;
|
||||||
|
|
||||||
@Override
|
@Before
|
||||||
protected void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
super.setUp();
|
mContext = InstrumentationRegistry.getInstrumentation().getContext();
|
||||||
mCM = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
|
mCM = mContext.getSystemService(ConnectivityManager.class);
|
||||||
mCR = getContext().getContentResolver();
|
mCR = mContext.getContentResolver();
|
||||||
mCtsNetUtils = new CtsNetUtils(getContext());
|
mCtsNetUtils = new CtsNetUtils(mContext);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void tearDown() throws Exception {
|
|
||||||
super.tearDown();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testGetaddrinfo() throws ErrnoException {
|
public void testGetaddrinfo() throws ErrnoException {
|
||||||
for (Network network : mCtsNetUtils.getTestableNetworks()) {
|
for (Network network : mCtsNetUtils.getTestableNetworks()) {
|
||||||
int errno = runGetaddrinfoCheck(network.getNetworkHandle());
|
int errno = runGetaddrinfoCheck(network.getNetworkHandle());
|
||||||
|
|
@ -82,6 +97,7 @@ public class MultinetworkApiTest extends AndroidTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@AppModeFull(reason = "CHANGE_NETWORK_STATE permission can't be granted to instant apps")
|
@AppModeFull(reason = "CHANGE_NETWORK_STATE permission can't be granted to instant apps")
|
||||||
public void testSetprocnetwork() throws ErrnoException {
|
public void testSetprocnetwork() throws ErrnoException {
|
||||||
// Hopefully no prior test in this process space has set a default network.
|
// Hopefully no prior test in this process space has set a default network.
|
||||||
|
|
@ -125,6 +141,7 @@ public class MultinetworkApiTest extends AndroidTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@AppModeFull(reason = "CHANGE_NETWORK_STATE permission can't be granted to instant apps")
|
@AppModeFull(reason = "CHANGE_NETWORK_STATE permission can't be granted to instant apps")
|
||||||
public void testSetsocknetwork() throws ErrnoException {
|
public void testSetsocknetwork() throws ErrnoException {
|
||||||
for (Network network : mCtsNetUtils.getTestableNetworks()) {
|
for (Network network : mCtsNetUtils.getTestableNetworks()) {
|
||||||
|
|
@ -136,6 +153,7 @@ public class MultinetworkApiTest extends AndroidTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testNativeDatagramTransmission() throws ErrnoException {
|
public void testNativeDatagramTransmission() throws ErrnoException {
|
||||||
for (Network network : mCtsNetUtils.getTestableNetworks()) {
|
for (Network network : mCtsNetUtils.getTestableNetworks()) {
|
||||||
int errno = runDatagramCheck(network.getNetworkHandle());
|
int errno = runDatagramCheck(network.getNetworkHandle());
|
||||||
|
|
@ -146,6 +164,7 @@ public class MultinetworkApiTest extends AndroidTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testNoSuchNetwork() {
|
public void testNoSuchNetwork() {
|
||||||
final Network eNoNet = new Network(54321);
|
final Network eNoNet = new Network(54321);
|
||||||
assertNull(mCM.getNetworkInfo(eNoNet));
|
assertNull(mCM.getNetworkInfo(eNoNet));
|
||||||
|
|
@ -158,6 +177,7 @@ public class MultinetworkApiTest extends AndroidTestCase {
|
||||||
// assertEquals(-OsConstants.ENONET, runGetaddrinfoCheck(eNoNetHandle));
|
// assertEquals(-OsConstants.ENONET, runGetaddrinfoCheck(eNoNetHandle));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testNetworkHandle() {
|
public void testNetworkHandle() {
|
||||||
// Test Network -> NetworkHandle -> Network results in the same Network.
|
// Test Network -> NetworkHandle -> Network results in the same Network.
|
||||||
for (Network network : mCtsNetUtils.getTestableNetworks()) {
|
for (Network network : mCtsNetUtils.getTestableNetworks()) {
|
||||||
|
|
@ -181,6 +201,7 @@ public class MultinetworkApiTest extends AndroidTestCase {
|
||||||
} catch (IllegalArgumentException e) {}
|
} catch (IllegalArgumentException e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testResNApi() throws Exception {
|
public void testResNApi() throws Exception {
|
||||||
final Network[] testNetworks = mCtsNetUtils.getTestableNetworks();
|
final Network[] testNetworks = mCtsNetUtils.getTestableNetworks();
|
||||||
|
|
||||||
|
|
@ -201,9 +222,21 @@ public class MultinetworkApiTest extends AndroidTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@AppModeFull(reason = "WRITE_SECURE_SETTINGS permission can't be granted to instant apps")
|
@AppModeFull(reason = "WRITE_SECURE_SETTINGS permission can't be granted to instant apps")
|
||||||
public void testResNApiNXDomainPrivateDns() throws InterruptedException {
|
public void testResNApiNXDomainPrivateDns() throws Exception {
|
||||||
|
// Use async private DNS resolution to avoid flakes due to races applying the setting
|
||||||
|
mDeviceConfigRule.setConfig(NAMESPACE_CONNECTIVITY,
|
||||||
|
"networkmonitor_async_privdns_resolution", "1");
|
||||||
|
mCtsNetUtils.reconnectWifiIfSupported();
|
||||||
|
mCtsNetUtils.reconnectCellIfSupported();
|
||||||
|
|
||||||
mCtsNetUtils.storePrivateDnsSetting();
|
mCtsNetUtils.storePrivateDnsSetting();
|
||||||
|
|
||||||
|
mDeviceConfigRule.runAfterNextCleanup(() -> {
|
||||||
|
mCtsNetUtils.reconnectWifiIfSupported();
|
||||||
|
mCtsNetUtils.reconnectCellIfSupported();
|
||||||
|
});
|
||||||
// Enable private DNS strict mode and set server to dns.google before doing NxDomain test.
|
// Enable private DNS strict mode and set server to dns.google before doing NxDomain test.
|
||||||
// b/144521720
|
// b/144521720
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue