Add a test for NetworkIdentity.getMetered() am: eaca5b1982

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1779526

Change-Id: Ia958a25ef14d416dbdf8e26f18c6ab2b785105dd
This commit is contained in:
Aaron Huang
2021-10-26 12:29:50 +00:00
committed by Automerger Merge Worker

View File

@@ -16,20 +16,38 @@
package android.net package android.net
import android.content.Context
import android.net.ConnectivityManager.TYPE_MOBILE
import android.net.NetworkIdentity.OEM_NONE import android.net.NetworkIdentity.OEM_NONE
import android.net.NetworkIdentity.OEM_PAID import android.net.NetworkIdentity.OEM_PAID
import android.net.NetworkIdentity.OEM_PRIVATE import android.net.NetworkIdentity.OEM_PRIVATE
import android.net.NetworkIdentity.getOemBitfield import android.net.NetworkIdentity.getOemBitfield
import android.telephony.TelephonyManager
import android.os.Build import android.os.Build
import com.android.testutils.DevSdkIgnoreRule import com.android.testutils.DevSdkIgnoreRule
import com.android.testutils.DevSdkIgnoreRunner import com.android.testutils.DevSdkIgnoreRunner
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.Mockito.mock
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertTrue
private const val TEST_IMSI = "testimsi"
@RunWith(DevSdkIgnoreRunner::class) @RunWith(DevSdkIgnoreRunner::class)
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.R) @DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.R)
class NetworkIdentityTest { class NetworkIdentityTest {
private val mockContext = mock(Context::class.java)
private fun buildMobileNetworkStateSnapshot(
caps: NetworkCapabilities,
subscriberId: String
): NetworkStateSnapshot {
return NetworkStateSnapshot(mock(Network::class.java), caps,
LinkProperties(), subscriberId, TYPE_MOBILE)
}
@Test @Test
fun testGetOemBitfield() { fun testGetOemBitfield() {
val oemNone = NetworkCapabilities().apply { val oemNone = NetworkCapabilities().apply {
@@ -54,4 +72,32 @@ class NetworkIdentityTest {
assertEquals(getOemBitfield(oemPrivate), OEM_PRIVATE) assertEquals(getOemBitfield(oemPrivate), OEM_PRIVATE)
assertEquals(getOemBitfield(oemAll), OEM_PAID or OEM_PRIVATE) assertEquals(getOemBitfield(oemAll), OEM_PAID or OEM_PRIVATE)
} }
@Test
fun testGetMetered() {
// Verify network is metered.
val netIdent1 = NetworkIdentity.buildNetworkIdentity(mockContext,
buildMobileNetworkStateSnapshot(NetworkCapabilities(), TEST_IMSI),
false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS)
assertTrue(netIdent1.getMetered())
// Verify network is not metered because it has NET_CAPABILITY_NOT_METERED capability.
val capsNotMetered = NetworkCapabilities.Builder().apply {
addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
}.build()
val netIdent2 = NetworkIdentity.buildNetworkIdentity(mockContext,
buildMobileNetworkStateSnapshot(capsNotMetered, TEST_IMSI),
false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS)
assertFalse(netIdent2.getMetered())
// Verify network is not metered because it has NET_CAPABILITY_TEMPORARILY_NOT_METERED
// capability .
val capsTempNotMetered = NetworkCapabilities().apply {
setCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED, true)
}
val netIdent3 = NetworkIdentity.buildNetworkIdentity(mockContext,
buildMobileNetworkStateSnapshot(capsTempNotMetered, TEST_IMSI),
false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS)
assertFalse(netIdent3.getMetered())
}
} }