Snap for 6378851 from a23f461e1b75c50692c41e5eb4cb41e1922c9608 to rvc-release
Change-Id: I95095b7a4b626e3119f61e68a3e9de5355b740a3
This commit is contained in:
113
tests/net/common/java/android/net/DependenciesTest.java
Normal file
113
tests/net/common/java/android/net/DependenciesTest.java
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
* Copyright (C) 2020 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.net;
|
||||
|
||||
import static org.junit.Assert.assertArrayEquals;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
import androidx.test.runner.AndroidJUnit4;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* A simple class that tests dependencies to java standard tools from the
|
||||
* Network stack. These tests are not meant to be comprehensive tests of
|
||||
* the relevant APIs : such tests belong in the relevant test suite for
|
||||
* these dependencies. Instead, this just makes sure coverage is present
|
||||
* by calling the methods in the exact way (or a representative way of how)
|
||||
* they are called in the network stack.
|
||||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
@SmallTest
|
||||
public class DependenciesTest {
|
||||
// Used to in ipmemorystore's RegularMaintenanceJobService to convert
|
||||
// 24 hours into seconds
|
||||
@Test
|
||||
public void testTimeUnit() {
|
||||
final int hours = 24;
|
||||
final long inSeconds = TimeUnit.HOURS.toMillis(hours);
|
||||
assertEquals(inSeconds, hours * 60 * 60 * 1000);
|
||||
}
|
||||
|
||||
private byte[] makeTrivialArray(final int size) {
|
||||
final byte[] src = new byte[size];
|
||||
for (int i = 0; i < size; ++i) {
|
||||
src[i] = (byte) i;
|
||||
}
|
||||
return src;
|
||||
}
|
||||
|
||||
// Used in ApfFilter to find an IP address from a byte array
|
||||
@Test
|
||||
public void testArrays() {
|
||||
final int size = 128;
|
||||
final byte[] src = makeTrivialArray(size);
|
||||
|
||||
// Test copy
|
||||
final int copySize = 16;
|
||||
final int offset = 24;
|
||||
final byte[] expected = new byte[copySize];
|
||||
for (int i = 0; i < copySize; ++i) {
|
||||
expected[i] = (byte) (offset + i);
|
||||
}
|
||||
|
||||
final byte[] copy = Arrays.copyOfRange(src, offset, offset + copySize);
|
||||
assertArrayEquals(expected, copy);
|
||||
assertArrayEquals(new byte[0], Arrays.copyOfRange(src, size, size));
|
||||
}
|
||||
|
||||
// Used mainly in the Dhcp code
|
||||
@Test
|
||||
public void testCopyOf() {
|
||||
final byte[] src = makeTrivialArray(128);
|
||||
final byte[] copy = Arrays.copyOf(src, src.length);
|
||||
assertArrayEquals(src, copy);
|
||||
assertFalse(src == copy);
|
||||
|
||||
assertArrayEquals(new byte[0], Arrays.copyOf(src, 0));
|
||||
|
||||
final int excess = 16;
|
||||
final byte[] biggerCopy = Arrays.copyOf(src, src.length + excess);
|
||||
for (int i = src.length; i < src.length + excess; ++i) {
|
||||
assertEquals(0, biggerCopy[i]);
|
||||
}
|
||||
for (int i = src.length - 1; i >= 0; --i) {
|
||||
assertEquals(src[i], biggerCopy[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// Used mainly in DnsUtils but also various other places
|
||||
@Test
|
||||
public void testAsList() {
|
||||
final int size = 24;
|
||||
final Object[] src = new Object[size];
|
||||
final ArrayList<Object> expected = new ArrayList<>(size);
|
||||
for (int i = 0; i < size; ++i) {
|
||||
final Object o = new Object();
|
||||
src[i] = o;
|
||||
expected.add(o);
|
||||
}
|
||||
assertEquals(expected, Arrays.asList(src));
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,8 @@
|
||||
package android.net;
|
||||
|
||||
import static android.net.NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
|
||||
import static android.net.NetworkCapabilities.MAX_TRANSPORT;
|
||||
import static android.net.NetworkCapabilities.MIN_TRANSPORT;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_CBS;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_EIMS;
|
||||
@@ -32,10 +34,12 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVIT
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_WIFI_P2P;
|
||||
import static android.net.NetworkCapabilities.RESTRICTED_CAPABILITIES;
|
||||
import static android.net.NetworkCapabilities.SIGNAL_STRENGTH_UNSPECIFIED;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_TEST;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_VPN;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_WIFI_AWARE;
|
||||
import static android.net.NetworkCapabilities.UNRESTRICTED_CAPABILITIES;
|
||||
|
||||
import static com.android.testutils.ParcelUtilsKt.assertParcelSane;
|
||||
@@ -45,10 +49,15 @@ import static org.junit.Assert.assertArrayEquals;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import android.net.wifi.aware.DiscoverySession;
|
||||
import android.net.wifi.aware.PeerHandle;
|
||||
import android.net.wifi.aware.WifiAwareNetworkSpecifier;
|
||||
import android.os.Build;
|
||||
import android.os.Process;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
import android.util.ArraySet;
|
||||
|
||||
@@ -61,6 +70,7 @@ import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Set;
|
||||
@@ -74,6 +84,9 @@ public class NetworkCapabilitiesTest {
|
||||
@Rule
|
||||
public DevSdkIgnoreRule mDevSdkIgnoreRule = new DevSdkIgnoreRule();
|
||||
|
||||
private DiscoverySession mDiscoverySession = Mockito.mock(DiscoverySession.class);
|
||||
private PeerHandle mPeerHandle = Mockito.mock(PeerHandle.class);
|
||||
|
||||
private boolean isAtLeastR() {
|
||||
// BuildCompat.isAtLeastR() is used to check the Android version before releasing Android R.
|
||||
// Build.VERSION.SDK_INT > Build.VERSION_CODES.Q is used to check the Android version after
|
||||
@@ -685,4 +698,238 @@ public class NetworkCapabilitiesTest {
|
||||
assertEquals(TRANSPORT_VPN, transportTypes[2]);
|
||||
assertEquals(TRANSPORT_TEST, transportTypes[3]);
|
||||
}
|
||||
|
||||
@Test @IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||
public void testTelephonyNetworkSpecifier() {
|
||||
final TelephonyNetworkSpecifier specifier = new TelephonyNetworkSpecifier(1);
|
||||
final NetworkCapabilities nc1 = new NetworkCapabilities.Builder()
|
||||
.addTransportType(TRANSPORT_WIFI)
|
||||
.setNetworkSpecifier(specifier)
|
||||
.build();
|
||||
assertEquals(specifier, nc1.getNetworkSpecifier());
|
||||
try {
|
||||
final NetworkCapabilities nc2 = new NetworkCapabilities.Builder()
|
||||
.setNetworkSpecifier(specifier)
|
||||
.build();
|
||||
fail("Must have a single transport type. Without transport type or multiple transport"
|
||||
+ " types is invalid.");
|
||||
} catch (IllegalStateException expected) { }
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWifiAwareNetworkSpecifier() {
|
||||
final NetworkCapabilities nc = new NetworkCapabilities()
|
||||
.addTransportType(TRANSPORT_WIFI_AWARE);
|
||||
// If NetworkSpecifier is not set, the default value is null.
|
||||
assertNull(nc.getNetworkSpecifier());
|
||||
final WifiAwareNetworkSpecifier specifier = new WifiAwareNetworkSpecifier.Builder(
|
||||
mDiscoverySession, mPeerHandle).build();
|
||||
nc.setNetworkSpecifier(specifier);
|
||||
assertEquals(specifier, nc.getNetworkSpecifier());
|
||||
}
|
||||
|
||||
@Test @IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||
public void testAdministratorUidsAndOwnerUid() {
|
||||
// Test default owner uid.
|
||||
// If the owner uid is not set, the default value should be Process.INVALID_UID.
|
||||
final NetworkCapabilities nc1 = new NetworkCapabilities.Builder().build();
|
||||
assertEquals(Process.INVALID_UID, nc1.getOwnerUid());
|
||||
// Test setAdministratorUids and getAdministratorUids.
|
||||
final int[] administratorUids = {1001, 10001};
|
||||
final NetworkCapabilities nc2 = new NetworkCapabilities.Builder()
|
||||
.setAdministratorUids(administratorUids)
|
||||
.build();
|
||||
assertTrue(Arrays.equals(administratorUids, nc2.getAdministratorUids()));
|
||||
// Test setOwnerUid and getOwnerUid.
|
||||
// The owner UID must be included in administrator UIDs, or throw IllegalStateException.
|
||||
try {
|
||||
final NetworkCapabilities nc3 = new NetworkCapabilities.Builder()
|
||||
.setOwnerUid(1001)
|
||||
.build();
|
||||
fail("The owner UID must be included in administrator UIDs.");
|
||||
} catch (IllegalStateException expected) { }
|
||||
final NetworkCapabilities nc4 = new NetworkCapabilities.Builder()
|
||||
.setAdministratorUids(administratorUids)
|
||||
.setOwnerUid(1001)
|
||||
.build();
|
||||
assertEquals(1001, nc4.getOwnerUid());
|
||||
try {
|
||||
final NetworkCapabilities nc5 = new NetworkCapabilities.Builder()
|
||||
.setAdministratorUids(null)
|
||||
.build();
|
||||
fail("Should not set null into setAdministratorUids");
|
||||
} catch (NullPointerException expected) { }
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLinkBandwidthKbps() {
|
||||
final NetworkCapabilities nc = new NetworkCapabilities();
|
||||
// The default value of LinkDown/UpstreamBandwidthKbps should be LINK_BANDWIDTH_UNSPECIFIED.
|
||||
assertEquals(LINK_BANDWIDTH_UNSPECIFIED, nc.getLinkDownstreamBandwidthKbps());
|
||||
assertEquals(LINK_BANDWIDTH_UNSPECIFIED, nc.getLinkUpstreamBandwidthKbps());
|
||||
nc.setLinkDownstreamBandwidthKbps(512);
|
||||
nc.setLinkUpstreamBandwidthKbps(128);
|
||||
assertEquals(512, nc.getLinkDownstreamBandwidthKbps());
|
||||
assertNotEquals(128, nc.getLinkDownstreamBandwidthKbps());
|
||||
assertEquals(128, nc.getLinkUpstreamBandwidthKbps());
|
||||
assertNotEquals(512, nc.getLinkUpstreamBandwidthKbps());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSignalStrength() {
|
||||
final NetworkCapabilities nc = new NetworkCapabilities();
|
||||
// The default value of signal strength should be SIGNAL_STRENGTH_UNSPECIFIED.
|
||||
assertEquals(SIGNAL_STRENGTH_UNSPECIFIED, nc.getSignalStrength());
|
||||
nc.setSignalStrength(-80);
|
||||
assertEquals(-80, nc.getSignalStrength());
|
||||
assertNotEquals(-50, nc.getSignalStrength());
|
||||
}
|
||||
|
||||
@Test @IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||
public void testDeduceRestrictedCapability() {
|
||||
final NetworkCapabilities nc = new NetworkCapabilities();
|
||||
// Default capabilities don't have restricted capability.
|
||||
assertFalse(nc.deduceRestrictedCapability());
|
||||
// If there is a force restricted capability, then the network capabilities is restricted.
|
||||
nc.addCapability(NET_CAPABILITY_OEM_PAID);
|
||||
nc.addCapability(NET_CAPABILITY_INTERNET);
|
||||
assertTrue(nc.deduceRestrictedCapability());
|
||||
// Except for the force restricted capability, if there is any unrestricted capability in
|
||||
// capabilities, then the network capabilities is not restricted.
|
||||
nc.removeCapability(NET_CAPABILITY_OEM_PAID);
|
||||
nc.addCapability(NET_CAPABILITY_CBS);
|
||||
assertFalse(nc.deduceRestrictedCapability());
|
||||
// Except for the force restricted capability, the network capabilities will only be treated
|
||||
// as restricted when there is no any unrestricted capability.
|
||||
nc.removeCapability(NET_CAPABILITY_INTERNET);
|
||||
assertTrue(nc.deduceRestrictedCapability());
|
||||
}
|
||||
|
||||
private void assertNoTransport(NetworkCapabilities nc) {
|
||||
for (int i = MIN_TRANSPORT; i <= MAX_TRANSPORT; i++) {
|
||||
assertFalse(nc.hasTransport(i));
|
||||
}
|
||||
}
|
||||
|
||||
// Checks that all transport types from MIN_TRANSPORT to maxTransportType are set and all
|
||||
// transport types from maxTransportType + 1 to MAX_TRANSPORT are not set when positiveSequence
|
||||
// is true. If positiveSequence is false, then the check sequence is opposite.
|
||||
private void checkCurrentTransportTypes(NetworkCapabilities nc, int maxTransportType,
|
||||
boolean positiveSequence) {
|
||||
for (int i = MIN_TRANSPORT; i <= maxTransportType; i++) {
|
||||
if (positiveSequence) {
|
||||
assertTrue(nc.hasTransport(i));
|
||||
} else {
|
||||
assertFalse(nc.hasTransport(i));
|
||||
}
|
||||
}
|
||||
for (int i = MAX_TRANSPORT; i > maxTransportType; i--) {
|
||||
if (positiveSequence) {
|
||||
assertFalse(nc.hasTransport(i));
|
||||
} else {
|
||||
assertTrue(nc.hasTransport(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMultipleTransportTypes() {
|
||||
final NetworkCapabilities nc = new NetworkCapabilities();
|
||||
assertNoTransport(nc);
|
||||
// Test adding multiple transport types.
|
||||
for (int i = MIN_TRANSPORT; i <= MAX_TRANSPORT; i++) {
|
||||
nc.addTransportType(i);
|
||||
checkCurrentTransportTypes(nc, i, true /* positiveSequence */);
|
||||
}
|
||||
// Test removing multiple transport types.
|
||||
for (int i = MIN_TRANSPORT; i <= MAX_TRANSPORT; i++) {
|
||||
nc.removeTransportType(i);
|
||||
checkCurrentTransportTypes(nc, i, false /* positiveSequence */);
|
||||
}
|
||||
assertNoTransport(nc);
|
||||
nc.addTransportType(TRANSPORT_WIFI);
|
||||
assertTrue(nc.hasTransport(TRANSPORT_WIFI));
|
||||
assertFalse(nc.hasTransport(TRANSPORT_VPN));
|
||||
nc.addTransportType(TRANSPORT_VPN);
|
||||
assertTrue(nc.hasTransport(TRANSPORT_WIFI));
|
||||
assertTrue(nc.hasTransport(TRANSPORT_VPN));
|
||||
nc.removeTransportType(TRANSPORT_WIFI);
|
||||
assertFalse(nc.hasTransport(TRANSPORT_WIFI));
|
||||
assertTrue(nc.hasTransport(TRANSPORT_VPN));
|
||||
nc.removeTransportType(TRANSPORT_VPN);
|
||||
assertFalse(nc.hasTransport(TRANSPORT_WIFI));
|
||||
assertFalse(nc.hasTransport(TRANSPORT_VPN));
|
||||
assertNoTransport(nc);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddAndRemoveTransportType() {
|
||||
final NetworkCapabilities nc = new NetworkCapabilities();
|
||||
try {
|
||||
nc.addTransportType(-1);
|
||||
fail("Should not set invalid transport type into addTransportType");
|
||||
} catch (IllegalArgumentException expected) { }
|
||||
try {
|
||||
nc.removeTransportType(-1);
|
||||
fail("Should not set invalid transport type into removeTransportType");
|
||||
} catch (IllegalArgumentException e) { }
|
||||
}
|
||||
|
||||
private class TestTransportInfo implements TransportInfo {
|
||||
TestTransportInfo() {
|
||||
}
|
||||
}
|
||||
|
||||
@Test @IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||
public void testBuilder() {
|
||||
final int ownerUid = 1001;
|
||||
final int signalStrength = -80;
|
||||
final int requestUid = 10100;
|
||||
final int[] administratorUids = {ownerUid, 10001};
|
||||
final TelephonyNetworkSpecifier specifier = new TelephonyNetworkSpecifier(1);
|
||||
final TestTransportInfo transportInfo = new TestTransportInfo();
|
||||
final String ssid = "TEST_SSID";
|
||||
final String packageName = "com.google.test.networkcapabilities";
|
||||
final NetworkCapabilities nc = new NetworkCapabilities.Builder()
|
||||
.addTransportType(TRANSPORT_WIFI)
|
||||
.addTransportType(TRANSPORT_CELLULAR)
|
||||
.removeTransportType(TRANSPORT_CELLULAR)
|
||||
.addCapability(NET_CAPABILITY_EIMS)
|
||||
.addCapability(NET_CAPABILITY_CBS)
|
||||
.removeCapability(NET_CAPABILITY_CBS)
|
||||
.setAdministratorUids(administratorUids)
|
||||
.setOwnerUid(ownerUid)
|
||||
.setLinkDownstreamBandwidthKbps(512)
|
||||
.setLinkUpstreamBandwidthKbps(128)
|
||||
.setNetworkSpecifier(specifier)
|
||||
.setTransportInfo(transportInfo)
|
||||
.setSignalStrength(signalStrength)
|
||||
.setSsid(ssid)
|
||||
.setRequestorUid(requestUid)
|
||||
.setRequestorPackageName(packageName)
|
||||
.build();
|
||||
assertEquals(1, nc.getTransportTypes().length);
|
||||
assertEquals(TRANSPORT_WIFI, nc.getTransportTypes()[0]);
|
||||
assertTrue(nc.hasCapability(NET_CAPABILITY_EIMS));
|
||||
assertFalse(nc.hasCapability(NET_CAPABILITY_CBS));
|
||||
assertTrue(Arrays.equals(administratorUids, nc.getAdministratorUids()));
|
||||
assertEquals(ownerUid, nc.getOwnerUid());
|
||||
assertEquals(512, nc.getLinkDownstreamBandwidthKbps());
|
||||
assertNotEquals(128, nc.getLinkDownstreamBandwidthKbps());
|
||||
assertEquals(128, nc.getLinkUpstreamBandwidthKbps());
|
||||
assertNotEquals(512, nc.getLinkUpstreamBandwidthKbps());
|
||||
assertEquals(specifier, nc.getNetworkSpecifier());
|
||||
assertEquals(transportInfo, nc.getTransportInfo());
|
||||
assertEquals(signalStrength, nc.getSignalStrength());
|
||||
assertNotEquals(-50, nc.getSignalStrength());
|
||||
assertEquals(ssid, nc.getSsid());
|
||||
assertEquals(requestUid, nc.getRequestorUid());
|
||||
assertEquals(packageName, nc.getRequestorPackageName());
|
||||
// Cannot assign null into NetworkCapabilities.Builder
|
||||
try {
|
||||
final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder(null);
|
||||
fail("Should not set null into NetworkCapabilities.Builder");
|
||||
} catch (NullPointerException expected) { }
|
||||
assertEquals(nc, new NetworkCapabilities.Builder(nc).build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ import android.net.NetworkStats.TAG_NONE
|
||||
import android.os.Build
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.testutils.DevSdkIgnoreRule
|
||||
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo
|
||||
import com.android.testutils.assertFieldCountEquals
|
||||
import com.android.testutils.assertNetworkStatsEquals
|
||||
import com.android.testutils.assertParcelingIsLossless
|
||||
@@ -47,70 +46,22 @@ import kotlin.test.assertEquals
|
||||
class NetworkStatsApiTest {
|
||||
@Rule
|
||||
@JvmField
|
||||
val ignoreRule = DevSdkIgnoreRule()
|
||||
val ignoreRule = DevSdkIgnoreRule(ignoreClassUpTo = Build.VERSION_CODES.Q)
|
||||
|
||||
private val testStatsEmpty = NetworkStats(0L, 0)
|
||||
|
||||
// Note that these variables need to be initialized outside of constructor, initialize
|
||||
// here with methods that don't exist in Q devices will result in crash.
|
||||
|
||||
// stats1 and stats2 will have some entries with common keys, which are expected to
|
||||
// be merged if performing add on these 2 stats.
|
||||
private val testStats1 = NetworkStats(0L, 0)
|
||||
// Entries which only appear in set1.
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_YES, 20, 3, 57, 40, 3))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_YES, DEFAULT_NETWORK_NO, 31, 7, 24, 5, 8))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_YES, ROAMING_NO, DEFAULT_NETWORK_NO, 25, 3, 47, 8, 2))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_FOREGROUND, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 37, 52, 1, 10, 4))
|
||||
// Entries which are common for set1 and set2.
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 101, 2, 103, 4, 5))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, 0x80,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 17, 2, 11, 1, 0))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID2, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 40, 1, 0, 0, 8))
|
||||
.addEntry(Entry(IFACE_VT, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 3, 1, 6, 2, 0))
|
||||
|
||||
private val testStats2 = NetworkStats(0L, 0)
|
||||
// Entries which are common for set1 and set2.
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, 0x80,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 3, 15, 2, 31, 1))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_FOREGROUND, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 13, 61, 10, 1, 45))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID2, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 11, 2, 3, 4, 7))
|
||||
.addEntry(Entry(IFACE_VT, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 4, 3, 2, 1, 0))
|
||||
// Entry which only appears in set2.
|
||||
.addEntry(Entry(IFACE_VT, TEST_UID2, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 2, 3, 7, 8, 0))
|
||||
private lateinit var testStats1: NetworkStats
|
||||
private lateinit var testStats2: NetworkStats
|
||||
|
||||
// This is a result of adding stats1 and stats2, while the merging of common key items is
|
||||
// subject to test later, this should not be initialized with for a loop to add stats1
|
||||
// and stats2 above.
|
||||
private val testStats3 = NetworkStats(0L, 9)
|
||||
// Entries which are unique either in stats1 or stats2.
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 101, 2, 103, 4, 5))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_YES, DEFAULT_NETWORK_NO, 31, 7, 24, 5, 8))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_YES, ROAMING_NO, DEFAULT_NETWORK_NO, 25, 3, 47, 8, 2))
|
||||
.addEntry(Entry(IFACE_VT, TEST_UID2, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 2, 3, 7, 8, 0))
|
||||
// Entries which are common for stats1 and stats2 are being merged.
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_YES, 20, 3, 57, 40, 3))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, 0x80,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 20, 17, 13, 32, 1))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_FOREGROUND, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 50, 113, 11, 11, 49))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID2, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 51, 3, 3, 4, 15))
|
||||
.addEntry(Entry(IFACE_VT, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 7, 4, 8, 3, 0))
|
||||
private lateinit var testStats3: NetworkStats
|
||||
|
||||
companion object {
|
||||
private const val TEST_IFACE = "test0"
|
||||
@@ -120,13 +71,67 @@ class NetworkStatsApiTest {
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
testStats1 = NetworkStats(0L, 0)
|
||||
// Entries which only appear in set1.
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_YES, 20, 3, 57, 40, 3))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_YES, DEFAULT_NETWORK_NO, 31, 7, 24, 5, 8))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_YES, ROAMING_NO, DEFAULT_NETWORK_NO, 25, 3, 47, 8, 2))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_FOREGROUND, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 37, 52, 1, 10, 4))
|
||||
// Entries which are common for set1 and set2.
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 101, 2, 103, 4, 5))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, 0x80,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 17, 2, 11, 1, 0))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID2, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 40, 1, 0, 0, 8))
|
||||
.addEntry(Entry(IFACE_VT, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 3, 1, 6, 2, 0))
|
||||
assertEquals(8, testStats1.size())
|
||||
|
||||
testStats2 = NetworkStats(0L, 0)
|
||||
// Entries which are common for set1 and set2.
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, 0x80,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 3, 15, 2, 31, 1))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_FOREGROUND, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 13, 61, 10, 1, 45))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID2, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 11, 2, 3, 4, 7))
|
||||
.addEntry(Entry(IFACE_VT, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 4, 3, 2, 1, 0))
|
||||
// Entry which only appears in set2.
|
||||
.addEntry(Entry(IFACE_VT, TEST_UID2, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 2, 3, 7, 8, 0))
|
||||
assertEquals(5, testStats2.size())
|
||||
|
||||
testStats3 = NetworkStats(0L, 9)
|
||||
// Entries which are unique either in stats1 or stats2.
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 101, 2, 103, 4, 5))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_YES, DEFAULT_NETWORK_NO, 31, 7, 24, 5, 8))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_YES, ROAMING_NO, DEFAULT_NETWORK_NO, 25, 3, 47, 8, 2))
|
||||
.addEntry(Entry(IFACE_VT, TEST_UID2, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 2, 3, 7, 8, 0))
|
||||
// Entries which are common for stats1 and stats2 are being merged.
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_YES, 20, 3, 57, 40, 3))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, 0x80,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 20, 17, 13, 32, 1))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID1, SET_FOREGROUND, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 50, 113, 11, 11, 49))
|
||||
.addEntry(Entry(TEST_IFACE, TEST_UID2, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 51, 3, 3, 4, 15))
|
||||
.addEntry(Entry(IFACE_VT, TEST_UID1, SET_DEFAULT, TAG_NONE,
|
||||
METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 7, 4, 8, 3, 0))
|
||||
assertEquals(9, testStats3.size())
|
||||
}
|
||||
|
||||
@Test
|
||||
@IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||
fun testAddEntry() {
|
||||
val expectedEntriesInStats2 = arrayOf(
|
||||
Entry(TEST_IFACE, TEST_UID1, SET_DEFAULT, 0x80,
|
||||
@@ -156,7 +161,6 @@ class NetworkStatsApiTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||
fun testAdd() {
|
||||
var stats = NetworkStats(0L, 0)
|
||||
assertNetworkStatsEquals(testStatsEmpty, stats)
|
||||
@@ -168,7 +172,6 @@ class NetworkStatsApiTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||
fun testParcelUnparcel() {
|
||||
assertParcelingIsLossless(testStatsEmpty)
|
||||
assertParcelingIsLossless(testStats1)
|
||||
@@ -177,7 +180,6 @@ class NetworkStatsApiTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||
fun testDescribeContents() {
|
||||
assertEquals(0, testStatsEmpty.describeContents())
|
||||
assertEquals(0, testStats1.describeContents())
|
||||
@@ -186,7 +188,6 @@ class NetworkStatsApiTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||
fun testSubtract() {
|
||||
// STATS3 - STATS2 = STATS1
|
||||
assertNetworkStatsEquals(testStats1, testStats3.subtract(testStats2))
|
||||
@@ -195,7 +196,6 @@ class NetworkStatsApiTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||
fun testMethodsDontModifyReceiver() {
|
||||
listOf(testStatsEmpty, testStats1, testStats2, testStats3).forEach {
|
||||
val origStats = it.clone()
|
||||
|
||||
Reference in New Issue
Block a user