Set TRANSPORT_PRIMARY for VCN NetworkOffers and NetworkAgents

This change sets TRANSPORT_PRIMARY for all NetworkScore objects passed
to ConnectivityService by the VCN. Without this patch, a VCN in safe
mode will never get any NetworkRequests, since the new Policy-based
NetworkRanker always prioritizes a existing satisfier of a network,
regardless of score. However, a higher-priority policy check ensures
that a TRANSPORT_PRIMARY request is used if it exists. This changes the
VCN to utilize that functionality.

Bug: 194122634
Test: atest FrameworksVcnTests
Change-Id: I3a298a6c4c594c6e224f3f05764614802c00e9b0
This commit is contained in:
Benedict Wong 2021-07-19 15:26:56 -07:00
parent 9ffdbe8b2a
commit 8d6f7c7280
2 changed files with 8 additions and 3 deletions

View File

@ -599,7 +599,12 @@ public class Vcn extends Handler {
/** Retrieves the network score for a VCN Network */
// Package visibility for use in VcnGatewayConnection and VcnNetworkProvider
static NetworkScore getNetworkScore() {
return new NetworkScore.Builder().setLegacyInt(VCN_LEGACY_SCORE_INT).build();
// TODO(b/193687515): Stop setting TRANSPORT_PRIMARY, define a TRANSPORT_VCN, and set in
// NetworkOffer/NetworkAgent.
return new NetworkScore.Builder()
.setLegacyInt(VCN_LEGACY_SCORE_INT)
.setTransportPrimary(true)
.build();
}
/** Callback used for passing status signals from a VcnGatewayConnection to its managing Vcn. */

View File

@ -87,8 +87,8 @@ public class VcnNetworkProviderTest {
eq(mVcnNetworkProvider),
argThat(
score ->
score.getLegacyInt()
== Vcn.getNetworkScore().getLegacyInt()),
score.getLegacyInt() == Vcn.getNetworkScore().getLegacyInt()
&& score.isTransportPrimary()),
any(),
any(),
cbCaptor.capture());