Merge changes from topics "ms56-historybuilder", "ms65.3"

* changes:
  [MS56.2] Add unit test for NetworkStatsHistory#Builder
  [MS65.4] Address comments at aosp/1954383
This commit is contained in:
Junyu Lai
2022-01-24 05:41:10 +00:00
committed by Gerrit Code Review
2 changed files with 128 additions and 1 deletions

View File

@@ -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<IllegalArgumentException> {
NetworkIdentity.Builder()
.setType(TYPE_ETHERNET)
.setWifiNetworkKey(TEST_WIFI_KEY)
.build()
}
// Assert non-mobile can't have ratType.
assertFailsWith<IllegalArgumentException> {
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<IllegalArgumentException> {
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<IllegalArgumentException> {
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<IllegalArgumentException> {
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)
}
}
}
}

View File

@@ -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<NetworkStatsHistory.Entry> 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));