Merge "Make ConnectivityManagerTest use the API shims." am: c8761c98ae am: c7d509804b
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1611323 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I1b49229f76a378336c55d658e2e186973fe88a58
This commit is contained in:
@@ -43,7 +43,6 @@ java_defaults {
|
|||||||
static_libs: [
|
static_libs: [
|
||||||
"bouncycastle-unbundled",
|
"bouncycastle-unbundled",
|
||||||
"FrameworksNetCommonTests",
|
"FrameworksNetCommonTests",
|
||||||
"TestNetworkStackLib",
|
|
||||||
"core-tests-support",
|
"core-tests-support",
|
||||||
"cts-net-utils",
|
"cts-net-utils",
|
||||||
"ctstestrunner-axt",
|
"ctstestrunner-axt",
|
||||||
@@ -66,6 +65,10 @@ java_defaults {
|
|||||||
android_test {
|
android_test {
|
||||||
name: "CtsNetTestCases",
|
name: "CtsNetTestCases",
|
||||||
defaults: ["CtsNetTestCasesDefaults"],
|
defaults: ["CtsNetTestCasesDefaults"],
|
||||||
|
// TODO: CTS should not depend on the entirety of the networkstack code.
|
||||||
|
static_libs: [
|
||||||
|
"NetworkStackApiCurrentLib",
|
||||||
|
],
|
||||||
test_suites: [
|
test_suites: [
|
||||||
"cts",
|
"cts",
|
||||||
"general-tests",
|
"general-tests",
|
||||||
@@ -79,6 +82,10 @@ android_test {
|
|||||||
android_test {
|
android_test {
|
||||||
name: "CtsNetTestCasesLatestSdk",
|
name: "CtsNetTestCasesLatestSdk",
|
||||||
defaults: ["CtsNetTestCasesDefaults"],
|
defaults: ["CtsNetTestCasesDefaults"],
|
||||||
|
// TODO: CTS should not depend on the entirety of the networkstack code.
|
||||||
|
static_libs: [
|
||||||
|
"NetworkStackApiStableLib",
|
||||||
|
],
|
||||||
jni_uses_sdk_apis: true,
|
jni_uses_sdk_apis: true,
|
||||||
min_sdk_version: "29",
|
min_sdk_version: "29",
|
||||||
target_sdk_version: "30",
|
target_sdk_version: "30",
|
||||||
|
|||||||
@@ -110,6 +110,9 @@ import androidx.test.runner.AndroidJUnit4;
|
|||||||
|
|
||||||
import com.android.internal.util.ArrayUtils;
|
import com.android.internal.util.ArrayUtils;
|
||||||
import com.android.modules.utils.build.SdkLevel;
|
import com.android.modules.utils.build.SdkLevel;
|
||||||
|
import com.android.networkstack.apishim.ConnectivityManagerShimImpl;
|
||||||
|
import com.android.networkstack.apishim.ConstantsShim;
|
||||||
|
import com.android.networkstack.apishim.common.ConnectivityManagerShim;
|
||||||
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.RecorderCallback.CallbackEntry;
|
import com.android.testutils.RecorderCallback.CallbackEntry;
|
||||||
@@ -195,6 +198,7 @@ public class ConnectivityManagerTest {
|
|||||||
private Context mContext;
|
private Context mContext;
|
||||||
private Instrumentation mInstrumentation;
|
private Instrumentation mInstrumentation;
|
||||||
private ConnectivityManager mCm;
|
private ConnectivityManager mCm;
|
||||||
|
private ConnectivityManagerShim mCmShim;
|
||||||
private WifiManager mWifiManager;
|
private WifiManager mWifiManager;
|
||||||
private PackageManager mPackageManager;
|
private PackageManager mPackageManager;
|
||||||
private final HashMap<Integer, NetworkConfig> mNetworks =
|
private final HashMap<Integer, NetworkConfig> mNetworks =
|
||||||
@@ -207,6 +211,7 @@ public class ConnectivityManagerTest {
|
|||||||
mInstrumentation = InstrumentationRegistry.getInstrumentation();
|
mInstrumentation = InstrumentationRegistry.getInstrumentation();
|
||||||
mContext = mInstrumentation.getContext();
|
mContext = mInstrumentation.getContext();
|
||||||
mCm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
|
mCm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
|
mCmShim = ConnectivityManagerShimImpl.newInstance(mContext);
|
||||||
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);
|
||||||
@@ -522,9 +527,9 @@ public class ConnectivityManagerTest {
|
|||||||
mCm.registerDefaultNetworkCallback(defaultTrackingCallback);
|
mCm.registerDefaultNetworkCallback(defaultTrackingCallback);
|
||||||
|
|
||||||
final TestNetworkCallback systemDefaultTrackingCallback = new TestNetworkCallback();
|
final TestNetworkCallback systemDefaultTrackingCallback = new TestNetworkCallback();
|
||||||
if (SdkLevel.isAtLeastS()) {
|
if (shouldTestSApis()) {
|
||||||
runWithShellPermissionIdentity(() ->
|
runWithShellPermissionIdentity(() ->
|
||||||
mCm.registerSystemDefaultNetworkCallback(systemDefaultTrackingCallback,
|
mCmShim.registerSystemDefaultNetworkCallback(systemDefaultTrackingCallback,
|
||||||
new Handler(Looper.getMainLooper())),
|
new Handler(Looper.getMainLooper())),
|
||||||
NETWORK_SETTINGS);
|
NETWORK_SETTINGS);
|
||||||
}
|
}
|
||||||
@@ -544,7 +549,7 @@ public class ConnectivityManagerTest {
|
|||||||
assertNotNull("Did not receive onAvailable on default network callback",
|
assertNotNull("Did not receive onAvailable on default network callback",
|
||||||
defaultTrackingCallback.waitForAvailable());
|
defaultTrackingCallback.waitForAvailable());
|
||||||
|
|
||||||
if (SdkLevel.isAtLeastS()) {
|
if (shouldTestSApis()) {
|
||||||
assertNotNull("Did not receive onAvailable on system default network callback",
|
assertNotNull("Did not receive onAvailable on system default network callback",
|
||||||
systemDefaultTrackingCallback.waitForAvailable());
|
systemDefaultTrackingCallback.waitForAvailable());
|
||||||
}
|
}
|
||||||
@@ -553,7 +558,7 @@ public class ConnectivityManagerTest {
|
|||||||
} finally {
|
} finally {
|
||||||
mCm.unregisterNetworkCallback(callback);
|
mCm.unregisterNetworkCallback(callback);
|
||||||
mCm.unregisterNetworkCallback(defaultTrackingCallback);
|
mCm.unregisterNetworkCallback(defaultTrackingCallback);
|
||||||
if (SdkLevel.isAtLeastS()) {
|
if (shouldTestSApis()) {
|
||||||
runWithShellPermissionIdentity(
|
runWithShellPermissionIdentity(
|
||||||
() -> mCm.unregisterNetworkCallback(systemDefaultTrackingCallback),
|
() -> mCm.unregisterNetworkCallback(systemDefaultTrackingCallback),
|
||||||
NETWORK_SETTINGS);
|
NETWORK_SETTINGS);
|
||||||
@@ -1599,14 +1604,14 @@ public class ConnectivityManagerTest {
|
|||||||
// Verify background network cannot be requested without NETWORK_SETTINGS permission.
|
// Verify background network cannot be requested without NETWORK_SETTINGS permission.
|
||||||
final TestableNetworkCallback callback = new TestableNetworkCallback();
|
final TestableNetworkCallback callback = new TestableNetworkCallback();
|
||||||
assertThrows(SecurityException.class,
|
assertThrows(SecurityException.class,
|
||||||
() -> mCm.requestBackgroundNetwork(testRequest, null, callback));
|
() -> mCmShim.requestBackgroundNetwork(testRequest, null, callback));
|
||||||
|
|
||||||
Network testNetwork = null;
|
Network testNetwork = null;
|
||||||
try {
|
try {
|
||||||
// Request background test network via Shell identity which has NETWORK_SETTINGS
|
// Request background test network via Shell identity which has NETWORK_SETTINGS
|
||||||
// permission granted.
|
// permission granted.
|
||||||
runWithShellPermissionIdentity(
|
runWithShellPermissionIdentity(
|
||||||
() -> mCm.requestBackgroundNetwork(testRequest, null, callback),
|
() -> mCmShim.requestBackgroundNetwork(testRequest, null, callback),
|
||||||
new String[] { android.Manifest.permission.NETWORK_SETTINGS });
|
new String[] { android.Manifest.permission.NETWORK_SETTINGS });
|
||||||
|
|
||||||
// Register the test network agent which has no foreground request associated to it.
|
// Register the test network agent which has no foreground request associated to it.
|
||||||
@@ -1646,4 +1651,12 @@ public class ConnectivityManagerTest {
|
|||||||
mCm.unregisterNetworkCallback(callback);
|
mCm.unregisterNetworkCallback(callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to test S+ APIs. This requires a) that the test be running on an S+ device, and
|
||||||
|
* b) that the code be compiled against shims new enough to access these APIs.
|
||||||
|
*/
|
||||||
|
private boolean shouldTestSApis() {
|
||||||
|
return SdkLevel.isAtLeastS() && ConstantsShim.VERSION > Build.VERSION_CODES.R;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user