Merge "Verify if the VPN app has been added into power save whilte list" am: 70e2da5c75
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2115075 Change-Id: Id52dc76bc9d0f40d9bad3e479c671192bc5adcb8 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -45,6 +45,7 @@ import static org.junit.Assume.assumeTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.argThat;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
@@ -111,6 +112,7 @@ import android.os.ConditionVariable;
|
||||
import android.os.INetworkManagementService;
|
||||
import android.os.Looper;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
import android.os.PowerWhitelistManager;
|
||||
import android.os.Process;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
@@ -129,6 +131,7 @@ import com.android.internal.net.VpnConfig;
|
||||
import com.android.internal.net.VpnProfile;
|
||||
import com.android.internal.util.HexDump;
|
||||
import com.android.modules.utils.build.SdkLevel;
|
||||
import com.android.server.DeviceIdleInternal;
|
||||
import com.android.server.IpSecService;
|
||||
import com.android.server.vcn.util.PersistableBundleUtils;
|
||||
import com.android.testutils.DevSdkIgnoreRule;
|
||||
@@ -235,6 +238,7 @@ public class VpnTest {
|
||||
@Mock private ConnectivityManager mConnectivityManager;
|
||||
@Mock private IpSecService mIpSecService;
|
||||
@Mock private VpnProfileStore mVpnProfileStore;
|
||||
@Mock DeviceIdleInternal mDeviceIdleInternal;
|
||||
private final VpnProfile mVpnProfile;
|
||||
|
||||
private IpSecManager mIpSecManager;
|
||||
@@ -408,6 +412,12 @@ public class VpnTest {
|
||||
disallow);
|
||||
}
|
||||
|
||||
private void verifyPowerSaveTempWhitelistApp(String packageName) {
|
||||
verify(mDeviceIdleInternal).addPowerSaveTempWhitelistApp(anyInt(), eq(packageName),
|
||||
anyLong(), anyInt(), eq(false), eq(PowerWhitelistManager.REASON_VPN),
|
||||
eq("VpnManager event"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAlwaysAndOnGetLockDown() throws Exception {
|
||||
final Vpn vpn = createVpn(primaryUser.id);
|
||||
@@ -1144,6 +1154,8 @@ public class VpnTest {
|
||||
verifyPlatformVpnIsActivated(TEST_VPN_PKG);
|
||||
vpn.stopVpnProfile(TEST_VPN_PKG);
|
||||
verifyPlatformVpnIsDeactivated(TEST_VPN_PKG);
|
||||
verifyPowerSaveTempWhitelistApp(TEST_VPN_PKG);
|
||||
reset(mDeviceIdleInternal);
|
||||
// CATEGORY_EVENT_DEACTIVATED_BY_USER is not an error event, so both of errorClass and
|
||||
// errorCode won't be set.
|
||||
verifyVpnManagerEvent(sessionKey1, VpnManager.CATEGORY_EVENT_DEACTIVATED_BY_USER,
|
||||
@@ -1155,6 +1167,8 @@ public class VpnTest {
|
||||
verifyPlatformVpnIsActivated(TEST_VPN_PKG);
|
||||
vpn.prepare(TEST_VPN_PKG, "com.new.vpn" /* newPackage */, TYPE_VPN_PLATFORM);
|
||||
verifyPlatformVpnIsDeactivated(TEST_VPN_PKG);
|
||||
verifyPowerSaveTempWhitelistApp(TEST_VPN_PKG);
|
||||
reset(mDeviceIdleInternal);
|
||||
// CATEGORY_EVENT_DEACTIVATED_BY_USER is not an error event, so both of errorClass and
|
||||
// errorCode won't be set.
|
||||
verifyVpnManagerEvent(sessionKey2, VpnManager.CATEGORY_EVENT_DEACTIVATED_BY_USER,
|
||||
@@ -1170,6 +1184,8 @@ public class VpnTest {
|
||||
// Enable VPN always-on for PKGS[1].
|
||||
assertTrue(vpn.setAlwaysOnPackage(PKGS[1], false /* lockdown */,
|
||||
null /* lockdownAllowlist */));
|
||||
verifyPowerSaveTempWhitelistApp(PKGS[1]);
|
||||
reset(mDeviceIdleInternal);
|
||||
verifyVpnManagerEvent(null /* sessionKey */,
|
||||
VpnManager.CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED, -1 /* errorClass */,
|
||||
-1 /* errorCode */, new VpnProfileState(VpnProfileState.STATE_DISCONNECTED,
|
||||
@@ -1178,6 +1194,8 @@ public class VpnTest {
|
||||
// Enable VPN lockdown for PKGS[1].
|
||||
assertTrue(vpn.setAlwaysOnPackage(PKGS[1], true /* lockdown */,
|
||||
null /* lockdownAllowlist */));
|
||||
verifyPowerSaveTempWhitelistApp(PKGS[1]);
|
||||
reset(mDeviceIdleInternal);
|
||||
verifyVpnManagerEvent(null /* sessionKey */,
|
||||
VpnManager.CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED, -1 /* errorClass */,
|
||||
-1 /* errorCode */, new VpnProfileState(VpnProfileState.STATE_DISCONNECTED,
|
||||
@@ -1186,6 +1204,8 @@ public class VpnTest {
|
||||
// Disable VPN lockdown for PKGS[1].
|
||||
assertTrue(vpn.setAlwaysOnPackage(PKGS[1], false /* lockdown */,
|
||||
null /* lockdownAllowlist */));
|
||||
verifyPowerSaveTempWhitelistApp(PKGS[1]);
|
||||
reset(mDeviceIdleInternal);
|
||||
verifyVpnManagerEvent(null /* sessionKey */,
|
||||
VpnManager.CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED, -1 /* errorClass */,
|
||||
-1 /* errorCode */, new VpnProfileState(VpnProfileState.STATE_DISCONNECTED,
|
||||
@@ -1194,6 +1214,8 @@ public class VpnTest {
|
||||
// Disable VPN always-on.
|
||||
assertTrue(vpn.setAlwaysOnPackage(null, false /* lockdown */,
|
||||
null /* lockdownAllowlist */));
|
||||
verifyPowerSaveTempWhitelistApp(PKGS[1]);
|
||||
reset(mDeviceIdleInternal);
|
||||
verifyVpnManagerEvent(null /* sessionKey */,
|
||||
VpnManager.CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED, -1 /* errorClass */,
|
||||
-1 /* errorCode */, new VpnProfileState(VpnProfileState.STATE_DISCONNECTED,
|
||||
@@ -1202,6 +1224,8 @@ public class VpnTest {
|
||||
// Enable VPN always-on for PKGS[1] again.
|
||||
assertTrue(vpn.setAlwaysOnPackage(PKGS[1], false /* lockdown */,
|
||||
null /* lockdownAllowlist */));
|
||||
verifyPowerSaveTempWhitelistApp(PKGS[1]);
|
||||
reset(mDeviceIdleInternal);
|
||||
verifyVpnManagerEvent(null /* sessionKey */,
|
||||
VpnManager.CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED, -1 /* errorClass */,
|
||||
-1 /* errorCode */, new VpnProfileState(VpnProfileState.STATE_DISCONNECTED,
|
||||
@@ -1210,6 +1234,8 @@ public class VpnTest {
|
||||
// Enable VPN always-on for PKGS[2].
|
||||
assertTrue(vpn.setAlwaysOnPackage(PKGS[2], false /* lockdown */,
|
||||
null /* lockdownAllowlist */));
|
||||
verifyPowerSaveTempWhitelistApp(PKGS[2]);
|
||||
reset(mDeviceIdleInternal);
|
||||
// PKGS[1] is replaced with PKGS[2].
|
||||
// Pass 2 VpnProfileState objects to verifyVpnManagerEvent(), the first one is sent to
|
||||
// PKGS[1] to notify PKGS[1] that the VPN always-on is disabled, the second one is sent to
|
||||
@@ -1310,6 +1336,8 @@ public class VpnTest {
|
||||
final IkeSessionCallback ikeCb = captor.getValue();
|
||||
ikeCb.onClosedWithException(exception);
|
||||
|
||||
verifyPowerSaveTempWhitelistApp(TEST_VPN_PKG);
|
||||
reset(mDeviceIdleInternal);
|
||||
verifyVpnManagerEvent(sessionKey, category, errorType, errorCode, null /* profileState */);
|
||||
if (errorType == VpnManager.ERROR_CLASS_NOT_RECOVERABLE) {
|
||||
verify(mConnectivityManager, timeout(TEST_TIMEOUT_MS))
|
||||
@@ -1532,7 +1560,7 @@ public class VpnTest {
|
||||
}
|
||||
}
|
||||
|
||||
private static final class TestDeps extends Vpn.Dependencies {
|
||||
private final class TestDeps extends Vpn.Dependencies {
|
||||
public final CompletableFuture<String[]> racoonArgs = new CompletableFuture();
|
||||
public final CompletableFuture<String[]> mtpdArgs = new CompletableFuture();
|
||||
public final File mStateFile;
|
||||
@@ -1661,6 +1689,11 @@ public class VpnTest {
|
||||
|
||||
@Override
|
||||
public void setBlocking(FileDescriptor fd, boolean blocking) {}
|
||||
|
||||
@Override
|
||||
public DeviceIdleInternal getDeviceIdleInternal() {
|
||||
return mDeviceIdleInternal;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user