Disable the remaining VPN CTS tests on watches.
- Watches don't support VPN apps. - The HostsideVpnTests CTS tests are already skipped on watches. - The tests for VpnManager VPNs do run on watches, but there isn't actually a way to start a VpnManager VPN on a watch because there is no way to display the consent dialog to the user. - The VpnService CTS tests verify the VpnService API on watches bypassing the consent dialogs. - Because there is no way to start a VPN app on a watch, there's no point requiring the VPN CTS tests to pass. This CL disables the remaining VPN CTS tests on watches. This allows watches to disable the VPN service, reducing startup time and memory usage. Bug: 286240194 Test: atest CtsNetTestCases FrameworksNetTests Change-Id: Idb7110232ae7e45cafc265cd4f955c2a6b22361c
This commit is contained in:
committed by
Lorenzo Colitti
parent
0546394310
commit
5bcbbc1ce9
@@ -34,12 +34,14 @@ import static org.junit.Assert.assertThrows;
|
|||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.junit.Assert.fail;
|
import static org.junit.Assert.fail;
|
||||||
import static org.junit.Assume.assumeTrue;
|
import static org.junit.Assume.assumeTrue;
|
||||||
|
import static org.junit.Assume.assumeFalse;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.app.AppOpsManager;
|
import android.app.AppOpsManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.Ikev2VpnProfile;
|
import android.net.Ikev2VpnProfile;
|
||||||
import android.net.IpSecAlgorithm;
|
import android.net.IpSecAlgorithm;
|
||||||
@@ -75,6 +77,7 @@ import com.android.testutils.TestableNetworkCallback;
|
|||||||
|
|
||||||
import org.bouncycastle.x509.X509V1CertificateGenerator;
|
import org.bouncycastle.x509.X509V1CertificateGenerator;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
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;
|
||||||
@@ -203,6 +206,12 @@ public class Ikev2VpnTest {
|
|||||||
mUserCertKey = generateRandomCertAndKeyPair();
|
mUserCertKey = generateRandomCertAndKeyPair();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
assumeFalse("Skipping test because watches don't support VPN",
|
||||||
|
sContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH));
|
||||||
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void tearDown() {
|
public void tearDown() {
|
||||||
for (TestableNetworkCallback callback : mCallbacksToUnregister) {
|
for (TestableNetworkCallback callback : mCallbacksToUnregister) {
|
||||||
|
|||||||
@@ -15,12 +15,28 @@
|
|||||||
*/
|
*/
|
||||||
package android.net.cts;
|
package android.net.cts;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assume.assumeFalse;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.net.VpnService;
|
import android.net.VpnService;
|
||||||
import android.os.ParcelFileDescriptor;
|
import android.os.ParcelFileDescriptor;
|
||||||
import android.platform.test.annotations.AppModeFull;
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
|
import androidx.test.InstrumentationRegistry;
|
||||||
|
import androidx.test.runner.AndroidJUnit4;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.DatagramSocket;
|
import java.net.DatagramSocket;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
@@ -30,12 +46,21 @@ import java.net.Socket;
|
|||||||
* blocks us from writing tests for positive cases. For now we only test for
|
* blocks us from writing tests for positive cases. For now we only test for
|
||||||
* negative cases, and we will try to cover the rest in the future.
|
* negative cases, and we will try to cover the rest in the future.
|
||||||
*/
|
*/
|
||||||
public class VpnServiceTest extends AndroidTestCase {
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class VpnServiceTest {
|
||||||
|
|
||||||
private static final String TAG = VpnServiceTest.class.getSimpleName();
|
private static final String TAG = VpnServiceTest.class.getSimpleName();
|
||||||
|
|
||||||
|
private final Context mContext = InstrumentationRegistry.getContext();
|
||||||
private VpnService mVpnService = new VpnService();
|
private VpnService mVpnService = new VpnService();
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
assumeFalse("Skipping test because watches don't support VPN",
|
||||||
|
mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@AppModeFull(reason = "PackageManager#queryIntentActivities cannot access in instant app mode")
|
@AppModeFull(reason = "PackageManager#queryIntentActivities cannot access in instant app mode")
|
||||||
public void testPrepare() throws Exception {
|
public void testPrepare() throws Exception {
|
||||||
// Should never return null since we are not prepared.
|
// Should never return null since we are not prepared.
|
||||||
@@ -47,6 +72,7 @@ public class VpnServiceTest extends AndroidTestCase {
|
|||||||
assertEquals(1, count);
|
assertEquals(1, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@AppModeFull(reason = "establish() requires prepare(), which requires PackageManager access")
|
@AppModeFull(reason = "establish() requires prepare(), which requires PackageManager access")
|
||||||
public void testEstablish() throws Exception {
|
public void testEstablish() throws Exception {
|
||||||
ParcelFileDescriptor descriptor = null;
|
ParcelFileDescriptor descriptor = null;
|
||||||
@@ -63,6 +89,7 @@ public class VpnServiceTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@AppModeFull(reason = "Protecting sockets requires prepare(), which requires PackageManager")
|
@AppModeFull(reason = "Protecting sockets requires prepare(), which requires PackageManager")
|
||||||
public void testProtect_DatagramSocket() throws Exception {
|
public void testProtect_DatagramSocket() throws Exception {
|
||||||
DatagramSocket socket = new DatagramSocket();
|
DatagramSocket socket = new DatagramSocket();
|
||||||
@@ -78,6 +105,7 @@ public class VpnServiceTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@AppModeFull(reason = "Protecting sockets requires prepare(), which requires PackageManager")
|
@AppModeFull(reason = "Protecting sockets requires prepare(), which requires PackageManager")
|
||||||
public void testProtect_Socket() throws Exception {
|
public void testProtect_Socket() throws Exception {
|
||||||
Socket socket = new Socket();
|
Socket socket = new Socket();
|
||||||
@@ -93,6 +121,7 @@ public class VpnServiceTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@AppModeFull(reason = "Protecting sockets requires prepare(), which requires PackageManager")
|
@AppModeFull(reason = "Protecting sockets requires prepare(), which requires PackageManager")
|
||||||
public void testProtect_int() throws Exception {
|
public void testProtect_int() throws Exception {
|
||||||
DatagramSocket socket = new DatagramSocket();
|
DatagramSocket socket = new DatagramSocket();
|
||||||
@@ -114,6 +143,7 @@ public class VpnServiceTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testTunDevice() throws Exception {
|
public void testTunDevice() throws Exception {
|
||||||
File file = new File("/dev/tun");
|
File file = new File("/dev/tun");
|
||||||
assertTrue(file.exists());
|
assertTrue(file.exists());
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package android.net;
|
|||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
|
import static org.junit.Assume.assumeFalse;
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Matchers.eq;
|
import static org.mockito.Matchers.eq;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
@@ -27,11 +28,13 @@ import static org.mockito.Mockito.when;
|
|||||||
|
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.test.mock.MockContext;
|
import android.test.mock.MockContext;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
|
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
import androidx.test.InstrumentationRegistry;
|
||||||
|
|
||||||
import com.android.internal.net.VpnProfile;
|
import com.android.internal.net.VpnProfile;
|
||||||
import com.android.internal.util.MessageUtils;
|
import com.android.internal.util.MessageUtils;
|
||||||
@@ -47,6 +50,7 @@ import org.junit.runner.RunWith;
|
|||||||
@RunWith(DevSdkIgnoreRunner.class)
|
@RunWith(DevSdkIgnoreRunner.class)
|
||||||
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.R)
|
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.R)
|
||||||
public class VpnManagerTest {
|
public class VpnManagerTest {
|
||||||
|
|
||||||
private static final String PKG_NAME = "fooPackage";
|
private static final String PKG_NAME = "fooPackage";
|
||||||
|
|
||||||
private static final String SESSION_NAME_STRING = "testSession";
|
private static final String SESSION_NAME_STRING = "testSession";
|
||||||
@@ -66,6 +70,9 @@ public class VpnManagerTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
|
assumeFalse("Skipping test because watches don't support VPN",
|
||||||
|
InstrumentationRegistry.getContext().getPackageManager().hasSystemFeature(
|
||||||
|
PackageManager.FEATURE_WATCH));
|
||||||
mMockService = mock(IVpnManager.class);
|
mMockService = mock(IVpnManager.class);
|
||||||
mVpnManager = new VpnManager(mMockContext, mMockService);
|
mVpnManager = new VpnManager(mMockContext, mMockService);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user