Merge "[Reland] VCN: Require capability matching on test networks for CTS"
This commit is contained in:
@@ -354,6 +354,7 @@ public final class VcnCellUnderlyingNetworkTemplate extends VcnUnderlyingNetwork
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
|
@Override
|
||||||
public Map<Integer, Integer> getCapabilitiesMatchCriteria() {
|
public Map<Integer, Integer> getCapabilitiesMatchCriteria() {
|
||||||
return Collections.unmodifiableMap(new HashMap<>(mCapabilitiesMatchCriteria));
|
return Collections.unmodifiableMap(new HashMap<>(mCapabilitiesMatchCriteria));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import com.android.internal.util.Preconditions;
|
|||||||
|
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -307,4 +308,7 @@ public abstract class VcnUnderlyingNetworkTemplate {
|
|||||||
public int getMinExitDownstreamBandwidthKbps() {
|
public int getMinExitDownstreamBandwidthKbps() {
|
||||||
return mMinExitDownstreamBandwidthKbps;
|
return mMinExitDownstreamBandwidthKbps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @hide */
|
||||||
|
public abstract Map<Integer, Integer> getCapabilitiesMatchCriteria();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,9 @@
|
|||||||
*/
|
*/
|
||||||
package android.net.vcn;
|
package android.net.vcn;
|
||||||
|
|
||||||
|
import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
|
||||||
|
import static android.net.vcn.VcnUnderlyingNetworkTemplate.MATCH_ANY;
|
||||||
|
|
||||||
import static com.android.internal.annotations.VisibleForTesting.Visibility;
|
import static com.android.internal.annotations.VisibleForTesting.Visibility;
|
||||||
import static com.android.server.vcn.util.PersistableBundleUtils.STRING_DESERIALIZER;
|
import static com.android.server.vcn.util.PersistableBundleUtils.STRING_DESERIALIZER;
|
||||||
import static com.android.server.vcn.util.PersistableBundleUtils.STRING_SERIALIZER;
|
import static com.android.server.vcn.util.PersistableBundleUtils.STRING_SERIALIZER;
|
||||||
@@ -23,6 +26,7 @@ import android.annotation.NonNull;
|
|||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.net.NetworkCapabilities;
|
import android.net.NetworkCapabilities;
|
||||||
|
import android.net.vcn.VcnUnderlyingNetworkTemplate.MatchCriteria;
|
||||||
import android.os.PersistableBundle;
|
import android.os.PersistableBundle;
|
||||||
import android.util.ArraySet;
|
import android.util.ArraySet;
|
||||||
|
|
||||||
@@ -32,6 +36,7 @@ import com.android.server.vcn.util.PersistableBundleUtils;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -162,6 +167,12 @@ public final class VcnWifiUnderlyingNetworkTemplate extends VcnUnderlyingNetwork
|
|||||||
return Collections.unmodifiableSet(mSsids);
|
return Collections.unmodifiableSet(mSsids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @hide */
|
||||||
|
@Override
|
||||||
|
public Map<Integer, Integer> getCapabilitiesMatchCriteria() {
|
||||||
|
return Collections.singletonMap(NET_CAPABILITY_INTERNET, MATCH_REQUIRED);
|
||||||
|
}
|
||||||
|
|
||||||
/** This class is used to incrementally build VcnWifiUnderlyingNetworkTemplate objects. */
|
/** This class is used to incrementally build VcnWifiUnderlyingNetworkTemplate objects. */
|
||||||
public static final class Builder {
|
public static final class Builder {
|
||||||
private int mMeteredMatchCriteria = MATCH_ANY;
|
private int mMeteredMatchCriteria = MATCH_ANY;
|
||||||
|
|||||||
@@ -171,6 +171,18 @@ class NetworkPriorityClassifier {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (Map.Entry<Integer, Integer> entry :
|
||||||
|
networkPriority.getCapabilitiesMatchCriteria().entrySet()) {
|
||||||
|
final int cap = entry.getKey();
|
||||||
|
final int matchCriteria = entry.getValue();
|
||||||
|
|
||||||
|
if (matchCriteria == MATCH_REQUIRED && !caps.hasCapability(cap)) {
|
||||||
|
return false;
|
||||||
|
} else if (matchCriteria == MATCH_FORBIDDEN && caps.hasCapability(cap)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (vcnContext.isInTestMode() && caps.hasTransport(TRANSPORT_TEST)) {
|
if (vcnContext.isInTestMode() && caps.hasTransport(TRANSPORT_TEST)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -319,18 +331,6 @@ class NetworkPriorityClassifier {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Map.Entry<Integer, Integer> entry :
|
|
||||||
networkPriority.getCapabilitiesMatchCriteria().entrySet()) {
|
|
||||||
final int cap = entry.getKey();
|
|
||||||
final int matchCriteria = entry.getValue();
|
|
||||||
|
|
||||||
if (matchCriteria == MATCH_REQUIRED && !caps.hasCapability(cap)) {
|
|
||||||
return false;
|
|
||||||
} else if (matchCriteria == MATCH_FORBIDDEN && caps.hasCapability(cap)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ public class NetworkPriorityClassifierTest {
|
|||||||
private static final NetworkCapabilities WIFI_NETWORK_CAPABILITIES =
|
private static final NetworkCapabilities WIFI_NETWORK_CAPABILITIES =
|
||||||
new NetworkCapabilities.Builder()
|
new NetworkCapabilities.Builder()
|
||||||
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
|
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
|
||||||
|
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|
||||||
.setSignalStrength(WIFI_RSSI)
|
.setSignalStrength(WIFI_RSSI)
|
||||||
.setSsid(SSID)
|
.setSsid(SSID)
|
||||||
.setLinkUpstreamBandwidthKbps(LINK_UPSTREAM_BANDWIDTH_KBPS)
|
.setLinkUpstreamBandwidthKbps(LINK_UPSTREAM_BANDWIDTH_KBPS)
|
||||||
@@ -509,12 +510,14 @@ public class NetworkPriorityClassifierTest {
|
|||||||
VcnCellUnderlyingNetworkTemplate template, boolean expectMatch) {
|
VcnCellUnderlyingNetworkTemplate template, boolean expectMatch) {
|
||||||
assertEquals(
|
assertEquals(
|
||||||
expectMatch,
|
expectMatch,
|
||||||
checkMatchesCellPriorityRule(
|
checkMatchesPriorityRule(
|
||||||
mVcnContext,
|
mVcnContext,
|
||||||
template,
|
template,
|
||||||
mCellNetworkRecord,
|
mCellNetworkRecord,
|
||||||
SUB_GROUP,
|
SUB_GROUP,
|
||||||
mSubscriptionSnapshot));
|
mSubscriptionSnapshot,
|
||||||
|
null /* currentlySelected */,
|
||||||
|
null /* carrierConfig */));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user