Merge "Add test for CM#[add|remove]DefaultNetworkActiveListener" am: 2086865010
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1827918 Change-Id: I2b1e5ed720d2ca97f740713ed3b24a119edc8f28
This commit is contained in:
@@ -75,6 +75,7 @@ import static com.android.compatibility.common.util.SystemUtil.runWithShellPermi
|
|||||||
import static com.android.modules.utils.build.SdkLevel.isAtLeastS;
|
import static com.android.modules.utils.build.SdkLevel.isAtLeastS;
|
||||||
import static com.android.networkstack.apishim.ConstantsShim.BLOCKED_REASON_LOCKDOWN_VPN;
|
import static com.android.networkstack.apishim.ConstantsShim.BLOCKED_REASON_LOCKDOWN_VPN;
|
||||||
import static com.android.networkstack.apishim.ConstantsShim.BLOCKED_REASON_NONE;
|
import static com.android.networkstack.apishim.ConstantsShim.BLOCKED_REASON_NONE;
|
||||||
|
import static com.android.testutils.Cleanup.testAndCleanup;
|
||||||
import static com.android.testutils.MiscAsserts.assertThrows;
|
import static com.android.testutils.MiscAsserts.assertThrows;
|
||||||
import static com.android.testutils.TestNetworkTrackerKt.initTestNetwork;
|
import static com.android.testutils.TestNetworkTrackerKt.initTestNetwork;
|
||||||
import static com.android.testutils.TestPermissionUtil.runAsShell;
|
import static com.android.testutils.TestPermissionUtil.runAsShell;
|
||||||
@@ -236,6 +237,7 @@ public class ConnectivityManagerTest {
|
|||||||
private static final int MIN_KEEPALIVE_INTERVAL = 10;
|
private static final int MIN_KEEPALIVE_INTERVAL = 10;
|
||||||
|
|
||||||
private static final int NETWORK_CALLBACK_TIMEOUT_MS = 30_000;
|
private static final int NETWORK_CALLBACK_TIMEOUT_MS = 30_000;
|
||||||
|
private static final int LISTEN_ACTIVITY_TIMEOUT_MS = 5_000;
|
||||||
private static final int NO_CALLBACK_TIMEOUT_MS = 100;
|
private static final int NO_CALLBACK_TIMEOUT_MS = 100;
|
||||||
private static final int NUM_TRIES_MULTIPATH_PREF_CHECK = 20;
|
private static final int NUM_TRIES_MULTIPATH_PREF_CHECK = 20;
|
||||||
private static final long INTERVAL_MULTIPATH_PREF_CHECK_MS = 500;
|
private static final long INTERVAL_MULTIPATH_PREF_CHECK_MS = 500;
|
||||||
@@ -278,6 +280,7 @@ public class ConnectivityManagerTest {
|
|||||||
private ConnectivityManagerShim mCmShim;
|
private ConnectivityManagerShim mCmShim;
|
||||||
private WifiManager mWifiManager;
|
private WifiManager mWifiManager;
|
||||||
private PackageManager mPackageManager;
|
private PackageManager mPackageManager;
|
||||||
|
private TelephonyManager mTm;
|
||||||
private final ArraySet<Integer> mNetworkTypes = new ArraySet<>();
|
private final ArraySet<Integer> mNetworkTypes = new ArraySet<>();
|
||||||
private UiAutomation mUiAutomation;
|
private UiAutomation mUiAutomation;
|
||||||
private CtsNetUtils mCtsNetUtils;
|
private CtsNetUtils mCtsNetUtils;
|
||||||
@@ -297,6 +300,7 @@ public class ConnectivityManagerTest {
|
|||||||
mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
|
mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
|
||||||
mPackageManager = mContext.getPackageManager();
|
mPackageManager = mContext.getPackageManager();
|
||||||
mCtsNetUtils = new CtsNetUtils(mContext);
|
mCtsNetUtils = new CtsNetUtils(mContext);
|
||||||
|
mTm = mContext.getSystemService(TelephonyManager.class);
|
||||||
|
|
||||||
if (DevSdkIgnoreRuleKt.isDevSdkInRange(null /* minExclusive */,
|
if (DevSdkIgnoreRuleKt.isDevSdkInRange(null /* minExclusive */,
|
||||||
Build.VERSION_CODES.R /* maxInclusive */)) {
|
Build.VERSION_CODES.R /* maxInclusive */)) {
|
||||||
@@ -2793,6 +2797,36 @@ public class ConnectivityManagerTest {
|
|||||||
System.currentTimeMillis() + WIFI_CONNECT_TIMEOUT_MS);
|
System.currentTimeMillis() + WIFI_CONNECT_TIMEOUT_MS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Need WiFi support to test the default active network")
|
||||||
|
@Test
|
||||||
|
public void testDefaultNetworkActiveListener() throws Exception {
|
||||||
|
final boolean supportWifi = mPackageManager.hasSystemFeature(FEATURE_WIFI);
|
||||||
|
final boolean supportTelephony = mPackageManager.hasSystemFeature(FEATURE_TELEPHONY);
|
||||||
|
assumeTrue("testDefaultNetworkActiveListener cannot execute"
|
||||||
|
+ " unless device supports WiFi or telephony", (supportWifi || supportTelephony));
|
||||||
|
|
||||||
|
if (supportWifi) {
|
||||||
|
mCtsNetUtils.ensureWifiDisconnected(null /* wifiNetworkToCheck */);
|
||||||
|
} else {
|
||||||
|
mCtsNetUtils.disconnectFromCell();
|
||||||
|
}
|
||||||
|
|
||||||
|
final CompletableFuture<Boolean> future = new CompletableFuture<>();
|
||||||
|
final ConnectivityManager.OnNetworkActiveListener listener = () -> future.complete(true);
|
||||||
|
mCm.addDefaultNetworkActiveListener(listener);
|
||||||
|
testAndCleanup(() -> {
|
||||||
|
// New default network connected will trigger a network activity notification.
|
||||||
|
if (supportWifi) {
|
||||||
|
mCtsNetUtils.ensureWifiConnected();
|
||||||
|
} else {
|
||||||
|
mCtsNetUtils.connectToCell();
|
||||||
|
}
|
||||||
|
assertTrue(future.get(LISTEN_ACTIVITY_TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
||||||
|
}, () -> {
|
||||||
|
mCm.removeDefaultNetworkActiveListener(listener);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
@Test
|
@Test
|
||||||
public void testMobileDataPreferredUids() throws Exception {
|
public void testMobileDataPreferredUids() throws Exception {
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ import static android.net.NetworkRequest.Type.REQUEST;
|
|||||||
import static android.net.NetworkRequest.Type.TRACK_DEFAULT;
|
import static android.net.NetworkRequest.Type.TRACK_DEFAULT;
|
||||||
import static android.net.NetworkRequest.Type.TRACK_SYSTEM_DEFAULT;
|
import static android.net.NetworkRequest.Type.TRACK_SYSTEM_DEFAULT;
|
||||||
|
|
||||||
|
import static com.android.testutils.MiscAsserts.assertThrows;
|
||||||
|
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
@@ -313,6 +315,19 @@ public class ConnectivityManagerTest {
|
|||||||
manager.requestNetwork(request, callback);
|
manager.requestNetwork(request, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDefaultNetworkActiveListener() throws Exception {
|
||||||
|
final ConnectivityManager manager = new ConnectivityManager(mCtx, mService);
|
||||||
|
final ConnectivityManager.OnNetworkActiveListener listener =
|
||||||
|
mock(ConnectivityManager.OnNetworkActiveListener.class);
|
||||||
|
assertThrows(IllegalArgumentException.class,
|
||||||
|
() -> manager.removeDefaultNetworkActiveListener(listener));
|
||||||
|
manager.addDefaultNetworkActiveListener(listener);
|
||||||
|
verify(mService, times(1)).registerNetworkActivityListener(any());
|
||||||
|
manager.removeDefaultNetworkActiveListener(listener);
|
||||||
|
verify(mService, times(1)).unregisterNetworkActivityListener(any());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testArgumentValidation() throws Exception {
|
public void testArgumentValidation() throws Exception {
|
||||||
ConnectivityManager manager = new ConnectivityManager(mCtx, mService);
|
ConnectivityManager manager = new ConnectivityManager(mCtx, mService);
|
||||||
|
|||||||
Reference in New Issue
Block a user