diff --git a/tests/unit/java/android/net/NetworkIdentityTest.kt b/tests/unit/java/android/net/NetworkIdentityTest.kt index 6ad8b06362..ec0420e119 100644 --- a/tests/unit/java/android/net/NetworkIdentityTest.kt +++ b/tests/unit/java/android/net/NetworkIdentityTest.kt @@ -17,7 +17,11 @@ package android.net import android.content.Context +import android.net.ConnectivityManager.MAX_NETWORK_TYPE +import android.net.ConnectivityManager.TYPE_ETHERNET import android.net.ConnectivityManager.TYPE_MOBILE +import android.net.ConnectivityManager.TYPE_NONE +import android.net.ConnectivityManager.TYPE_WIFI import android.net.NetworkIdentity.OEM_NONE import android.net.NetworkIdentity.OEM_PAID import android.net.NetworkIdentity.OEM_PRIVATE @@ -30,10 +34,12 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.mock import kotlin.test.assertEquals +import kotlin.test.assertFailsWith import kotlin.test.assertFalse import kotlin.test.assertTrue private const val TEST_IMSI = "testimsi" +private const val TEST_WIFI_KEY = "testwifikey" @RunWith(DevSdkIgnoreRunner::class) @DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.R) @@ -126,6 +132,92 @@ class NetworkIdentityTest { assertEquals(identFromLegacyBuild, identFromSnapshot) assertEquals(identFromConstructor, identFromSnapshot) - // TODO: Add test cases for wifiNetworkKey and ratType. + // Assert non-wifi can't have wifi network key. + assertFailsWith { + NetworkIdentity.Builder() + .setType(TYPE_ETHERNET) + .setWifiNetworkKey(TEST_WIFI_KEY) + .build() + } + + // Assert non-mobile can't have ratType. + assertFailsWith { + NetworkIdentity.Builder() + .setType(TYPE_WIFI) + .setRatType(TelephonyManager.NETWORK_TYPE_LTE) + .build() + } + } + + @Test + fun testBuilder_type() { + // Assert illegal type values cannot make an identity. + listOf(Integer.MIN_VALUE, TYPE_NONE - 1, MAX_NETWORK_TYPE + 1, Integer.MAX_VALUE) + .forEach { type -> + assertFailsWith { + NetworkIdentity.Builder().setType(type).build() + } + } + + // Verify legitimate type values can make an identity. + for (type in TYPE_NONE..MAX_NETWORK_TYPE) { + NetworkIdentity.Builder().setType(type).build().also { + assertEquals(it.type, type) + } + } + } + + @Test + fun testBuilder_ratType() { + // Assert illegal ratTypes cannot make an identity. + listOf(Integer.MIN_VALUE, NetworkTemplate.NETWORK_TYPE_ALL, + TelephonyManager.NETWORK_TYPE_UNKNOWN - 1, Integer.MAX_VALUE) + .forEach { + assertFailsWith { + NetworkIdentity.Builder() + .setType(TYPE_MOBILE) + .setRatType(it) + .build() + } + } + + // Verify legitimate ratTypes can make an identity. + TelephonyManager.getAllNetworkTypes().toMutableList().also { + it.add(TelephonyManager.NETWORK_TYPE_UNKNOWN) + }.forEach { rat -> + NetworkIdentity.Builder() + .setType(TYPE_MOBILE) + .setRatType(rat) + .build().also { + assertEquals(it.ratType, rat) + } + } + } + + @Test + fun testBuilder_oemManaged() { + // Assert illegal oemManage values cannot make an identity. + listOf(Integer.MIN_VALUE, NetworkTemplate.OEM_MANAGED_ALL, NetworkTemplate.OEM_MANAGED_YES, + Integer.MAX_VALUE) + .forEach { + assertFailsWith { + NetworkIdentity.Builder() + .setType(TYPE_MOBILE) + .setRatType(it) + .build() + } + } + + // Verify legitimate oem managed values can make an identity. + listOf(NetworkTemplate.OEM_MANAGED_NO, NetworkTemplate.OEM_MANAGED_PAID, + NetworkTemplate.OEM_MANAGED_PRIVATE, NetworkTemplate.OEM_MANAGED_PAID or + NetworkTemplate.OEM_MANAGED_PRIVATE) + .forEach { oemManaged -> + NetworkIdentity.Builder() + .setOemManaged(oemManaged) + .build().also { + assertEquals(it.oemManaged, oemManaged) + } + } } } diff --git a/tests/unit/java/android/net/NetworkStatsHistoryTest.java b/tests/unit/java/android/net/NetworkStatsHistoryTest.java index c5f8c00459..c17060545a 100644 --- a/tests/unit/java/android/net/NetworkStatsHistoryTest.java +++ b/tests/unit/java/android/net/NetworkStatsHistoryTest.java @@ -56,6 +56,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; +import java.util.List; import java.util.Random; @RunWith(DevSdkIgnoreRunner.class) @@ -532,6 +533,40 @@ public class NetworkStatsHistoryTest { assertEquals(512L + 4096L, stats.getTotalBytes()); } + @Test + public void testBuilder() { + final NetworkStatsHistory.Entry entry1 = new NetworkStatsHistory.Entry(10, 30, 40, + 4, 50, 5, 60); + final NetworkStatsHistory.Entry entry2 = new NetworkStatsHistory.Entry(30, 15, 3, + 41, 7, 1, 0); + final NetworkStatsHistory.Entry entry3 = new NetworkStatsHistory.Entry(7, 301, 11, + 14, 31, 2, 80); + + final NetworkStatsHistory statsEmpty = new NetworkStatsHistory + .Builder(HOUR_IN_MILLIS, 10).build(); + assertEquals(0, statsEmpty.getEntries().size()); + assertEquals(HOUR_IN_MILLIS, statsEmpty.getBucketDuration()); + + NetworkStatsHistory statsSingle = new NetworkStatsHistory + .Builder(HOUR_IN_MILLIS, 8) + .addEntry(entry1) + .build(); + assertEquals(1, statsSingle.getEntries().size()); + assertEquals(HOUR_IN_MILLIS, statsSingle.getBucketDuration()); + assertEquals(entry1, statsSingle.getEntries().get(0)); + + NetworkStatsHistory statsMultiple = new NetworkStatsHistory + .Builder(SECOND_IN_MILLIS, 0) + .addEntry(entry1).addEntry(entry2).addEntry(entry3) + .build(); + final List entries = statsMultiple.getEntries(); + assertEquals(3, entries.size()); + assertEquals(SECOND_IN_MILLIS, statsMultiple.getBucketDuration()); + assertEquals(entry1, entries.get(0)); + assertEquals(entry2, entries.get(1)); + assertEquals(entry3, entries.get(2)); + } + private static void assertIndexBeforeAfter( NetworkStatsHistory stats, int before, int after, long time) { assertEquals("unexpected before", before, stats.getIndexBefore(time));