Merge "Make ConnectivityManagerTest use the API shims."

This commit is contained in:
Treehugger Robot
2021-03-01 17:50:10 +00:00
committed by Gerrit Code Review
2 changed files with 27 additions and 7 deletions

View File

@@ -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",

View File

@@ -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;
}
} }