Merge "Check that cell network is available before tests"
diff --git a/staticlibs/testutils/app/connectivitychecker/src/com/android/testutils/connectivitychecker/ConnectivityCheckTest.kt b/staticlibs/testutils/app/connectivitychecker/src/com/android/testutils/connectivitychecker/ConnectivityCheckTest.kt
index 43b130b..f34ca22 100644
--- a/staticlibs/testutils/app/connectivitychecker/src/com/android/testutils/connectivitychecker/ConnectivityCheckTest.kt
+++ b/staticlibs/testutils/app/connectivitychecker/src/com/android/testutils/connectivitychecker/ConnectivityCheckTest.kt
@@ -18,10 +18,17 @@
import android.content.pm.PackageManager.FEATURE_TELEPHONY
import android.content.pm.PackageManager.FEATURE_WIFI
+import android.net.ConnectivityManager
+import android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET
+import android.net.NetworkCapabilities.TRANSPORT_CELLULAR
+import android.net.NetworkRequest
import android.telephony.TelephonyManager
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import com.android.testutils.ConnectUtil
+import com.android.testutils.RecorderCallback
+import com.android.testutils.TestableNetworkCallback
+import com.android.testutils.tryTest
import org.junit.Test
import org.junit.runner.RunWith
import kotlin.test.assertTrue
@@ -61,5 +68,20 @@
assertTrue(tm.isDataConnectivityPossible,
"The device is not setup with a SIM card that supports data connectivity. " +
commonError)
+ val cb = TestableNetworkCallback()
+ val cm = context.getSystemService(ConnectivityManager::class.java)
+ ?: fail("Could not get ConnectivityManager")
+ cm.registerNetworkCallback(
+ NetworkRequest.Builder()
+ .addTransportType(TRANSPORT_CELLULAR)
+ .addCapability(NET_CAPABILITY_INTERNET).build(), cb)
+ tryTest {
+ cb.eventuallyExpectOrNull<RecorderCallback.CallbackEntry.Available>()
+ ?: fail("The device does not have mobile data available. Check that it is " +
+ "setup with a SIM card that has a working data plan, and that the " +
+ "APN configuration is valid.")
+ } cleanup {
+ cm.unregisterNetworkCallback(cb)
+ }
}
}
\ No newline at end of file